// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import type {protobuf as $protobuf} from "google-gax";
import Long = require("long");
/** Namespace google. */
export namespace google {

    /** Namespace protobuf. */
    namespace protobuf {

        /** Properties of a Duration. */
        interface IDuration {

            /** Duration seconds */
            seconds?: (number|Long|string|null);

            /** Duration nanos */
            nanos?: (number|null);
        }

        /** Represents a Duration. */
        class Duration implements IDuration {

            /**
             * Constructs a new Duration.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IDuration);

            /** Duration seconds. */
            public seconds: (number|Long|string);

            /** Duration nanos. */
            public nanos: number;

            /**
             * Creates a new Duration instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Duration instance
             */
            public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration;

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

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

            /**
             * Decodes a Duration message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Duration
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration;

            /**
             * Decodes a Duration message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Duration
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration;

            /**
             * Verifies a Duration message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a FileDescriptorSet. */
        interface IFileDescriptorSet {

            /** FileDescriptorSet file */
            file?: (google.protobuf.IFileDescriptorProto[]|null);
        }

        /** Represents a FileDescriptorSet. */
        class FileDescriptorSet implements IFileDescriptorSet {

            /**
             * Constructs a new FileDescriptorSet.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFileDescriptorSet);

            /** FileDescriptorSet file. */
            public file: google.protobuf.IFileDescriptorProto[];

            /**
             * Creates a new FileDescriptorSet instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FileDescriptorSet instance
             */
            public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet;

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

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

            /**
             * Decodes a FileDescriptorSet message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FileDescriptorSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet;

            /**
             * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FileDescriptorSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet;

            /**
             * Verifies a FileDescriptorSet message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Edition enum. */
        enum Edition {
            EDITION_UNKNOWN = 0,
            EDITION_LEGACY = 900,
            EDITION_PROTO2 = 998,
            EDITION_PROTO3 = 999,
            EDITION_2023 = 1000,
            EDITION_2024 = 1001,
            EDITION_1_TEST_ONLY = 1,
            EDITION_2_TEST_ONLY = 2,
            EDITION_99997_TEST_ONLY = 99997,
            EDITION_99998_TEST_ONLY = 99998,
            EDITION_99999_TEST_ONLY = 99999,
            EDITION_MAX = 2147483647
        }

        /** Properties of a FileDescriptorProto. */
        interface IFileDescriptorProto {

            /** FileDescriptorProto name */
            name?: (string|null);

            /** FileDescriptorProto package */
            "package"?: (string|null);

            /** FileDescriptorProto dependency */
            dependency?: (string[]|null);

            /** FileDescriptorProto publicDependency */
            publicDependency?: (number[]|null);

            /** FileDescriptorProto weakDependency */
            weakDependency?: (number[]|null);

            /** FileDescriptorProto optionDependency */
            optionDependency?: (string[]|null);

            /** FileDescriptorProto messageType */
            messageType?: (google.protobuf.IDescriptorProto[]|null);

            /** FileDescriptorProto enumType */
            enumType?: (google.protobuf.IEnumDescriptorProto[]|null);

            /** FileDescriptorProto service */
            service?: (google.protobuf.IServiceDescriptorProto[]|null);

            /** FileDescriptorProto extension */
            extension?: (google.protobuf.IFieldDescriptorProto[]|null);

            /** FileDescriptorProto options */
            options?: (google.protobuf.IFileOptions|null);

            /** FileDescriptorProto sourceCodeInfo */
            sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);

            /** FileDescriptorProto syntax */
            syntax?: (string|null);

            /** FileDescriptorProto edition */
            edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
        }

        /** Represents a FileDescriptorProto. */
        class FileDescriptorProto implements IFileDescriptorProto {

            /**
             * Constructs a new FileDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFileDescriptorProto);

            /** FileDescriptorProto name. */
            public name: string;

            /** FileDescriptorProto package. */
            public package: string;

            /** FileDescriptorProto dependency. */
            public dependency: string[];

            /** FileDescriptorProto publicDependency. */
            public publicDependency: number[];

            /** FileDescriptorProto weakDependency. */
            public weakDependency: number[];

            /** FileDescriptorProto optionDependency. */
            public optionDependency: string[];

            /** FileDescriptorProto messageType. */
            public messageType: google.protobuf.IDescriptorProto[];

            /** FileDescriptorProto enumType. */
            public enumType: google.protobuf.IEnumDescriptorProto[];

            /** FileDescriptorProto service. */
            public service: google.protobuf.IServiceDescriptorProto[];

            /** FileDescriptorProto extension. */
            public extension: google.protobuf.IFieldDescriptorProto[];

            /** FileDescriptorProto options. */
            public options?: (google.protobuf.IFileOptions|null);

            /** FileDescriptorProto sourceCodeInfo. */
            public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);

            /** FileDescriptorProto syntax. */
            public syntax: string;

            /** FileDescriptorProto edition. */
            public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

            /**
             * Creates a new FileDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FileDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto;

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

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

            /**
             * Decodes a FileDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FileDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto;

            /**
             * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FileDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto;

            /**
             * Verifies a FileDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a DescriptorProto. */
        interface IDescriptorProto {

            /** DescriptorProto name */
            name?: (string|null);

            /** DescriptorProto field */
            field?: (google.protobuf.IFieldDescriptorProto[]|null);

            /** DescriptorProto extension */
            extension?: (google.protobuf.IFieldDescriptorProto[]|null);

            /** DescriptorProto nestedType */
            nestedType?: (google.protobuf.IDescriptorProto[]|null);

            /** DescriptorProto enumType */
            enumType?: (google.protobuf.IEnumDescriptorProto[]|null);

            /** DescriptorProto extensionRange */
            extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null);

            /** DescriptorProto oneofDecl */
            oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null);

            /** DescriptorProto options */
            options?: (google.protobuf.IMessageOptions|null);

            /** DescriptorProto reservedRange */
            reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null);

            /** DescriptorProto reservedName */
            reservedName?: (string[]|null);

            /** DescriptorProto visibility */
            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
        }

        /** Represents a DescriptorProto. */
        class DescriptorProto implements IDescriptorProto {

            /**
             * Constructs a new DescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IDescriptorProto);

            /** DescriptorProto name. */
            public name: string;

            /** DescriptorProto field. */
            public field: google.protobuf.IFieldDescriptorProto[];

            /** DescriptorProto extension. */
            public extension: google.protobuf.IFieldDescriptorProto[];

            /** DescriptorProto nestedType. */
            public nestedType: google.protobuf.IDescriptorProto[];

            /** DescriptorProto enumType. */
            public enumType: google.protobuf.IEnumDescriptorProto[];

            /** DescriptorProto extensionRange. */
            public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[];

            /** DescriptorProto oneofDecl. */
            public oneofDecl: google.protobuf.IOneofDescriptorProto[];

            /** DescriptorProto options. */
            public options?: (google.protobuf.IMessageOptions|null);

            /** DescriptorProto reservedRange. */
            public reservedRange: google.protobuf.DescriptorProto.IReservedRange[];

            /** DescriptorProto reservedName. */
            public reservedName: string[];

            /** DescriptorProto visibility. */
            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);

            /**
             * Creates a new DescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DescriptorProto instance
             */
            public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto;

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

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

            /**
             * Decodes a DescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto;

            /**
             * Decodes a DescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto;

            /**
             * Verifies a DescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace DescriptorProto {

            /** Properties of an ExtensionRange. */
            interface IExtensionRange {

                /** ExtensionRange start */
                start?: (number|null);

                /** ExtensionRange end */
                end?: (number|null);

                /** ExtensionRange options */
                options?: (google.protobuf.IExtensionRangeOptions|null);
            }

            /** Represents an ExtensionRange. */
            class ExtensionRange implements IExtensionRange {

                /**
                 * Constructs a new ExtensionRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange);

                /** ExtensionRange start. */
                public start: number;

                /** ExtensionRange end. */
                public end: number;

                /** ExtensionRange options. */
                public options?: (google.protobuf.IExtensionRangeOptions|null);

                /**
                 * Creates a new ExtensionRange instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ExtensionRange instance
                 */
                public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange;

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

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

                /**
                 * Decodes an ExtensionRange message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ExtensionRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange;

                /**
                 * Decodes an ExtensionRange message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ExtensionRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange;

                /**
                 * Verifies an ExtensionRange message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

            /** Properties of a ReservedRange. */
            interface IReservedRange {

                /** ReservedRange start */
                start?: (number|null);

                /** ReservedRange end */
                end?: (number|null);
            }

            /** Represents a ReservedRange. */
            class ReservedRange implements IReservedRange {

                /**
                 * Constructs a new ReservedRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.DescriptorProto.IReservedRange);

                /** ReservedRange start. */
                public start: number;

                /** ReservedRange end. */
                public end: number;

                /**
                 * Creates a new ReservedRange instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ReservedRange instance
                 */
                public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange;

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

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

                /**
                 * Decodes a ReservedRange message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange;

                /**
                 * Decodes a ReservedRange message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange;

                /**
                 * Verifies a ReservedRange message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of an ExtensionRangeOptions. */
        interface IExtensionRangeOptions {

            /** ExtensionRangeOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** ExtensionRangeOptions declaration */
            declaration?: (google.protobuf.ExtensionRangeOptions.IDeclaration[]|null);

            /** ExtensionRangeOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** ExtensionRangeOptions verification */
            verification?: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState|null);
        }

        /** Represents an ExtensionRangeOptions. */
        class ExtensionRangeOptions implements IExtensionRangeOptions {

            /**
             * Constructs a new ExtensionRangeOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IExtensionRangeOptions);

            /** ExtensionRangeOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /** ExtensionRangeOptions declaration. */
            public declaration: google.protobuf.ExtensionRangeOptions.IDeclaration[];

            /** ExtensionRangeOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** ExtensionRangeOptions verification. */
            public verification: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState);

            /**
             * Creates a new ExtensionRangeOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ExtensionRangeOptions instance
             */
            public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions;

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

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

            /**
             * Decodes an ExtensionRangeOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ExtensionRangeOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions;

            /**
             * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ExtensionRangeOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions;

            /**
             * Verifies an ExtensionRangeOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace ExtensionRangeOptions {

            /** Properties of a Declaration. */
            interface IDeclaration {

                /** Declaration number */
                number?: (number|null);

                /** Declaration fullName */
                fullName?: (string|null);

                /** Declaration type */
                type?: (string|null);

                /** Declaration reserved */
                reserved?: (boolean|null);

                /** Declaration repeated */
                repeated?: (boolean|null);
            }

            /** Represents a Declaration. */
            class Declaration implements IDeclaration {

                /**
                 * Constructs a new Declaration.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration);

                /** Declaration number. */
                public number: number;

                /** Declaration fullName. */
                public fullName: string;

                /** Declaration type. */
                public type: string;

                /** Declaration reserved. */
                public reserved: boolean;

                /** Declaration repeated. */
                public repeated: boolean;

                /**
                 * Creates a new Declaration instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Declaration instance
                 */
                public static create(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration): google.protobuf.ExtensionRangeOptions.Declaration;

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

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

                /**
                 * Decodes a Declaration message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Declaration
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions.Declaration;

                /**
                 * Decodes a Declaration message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Declaration
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions.Declaration;

                /**
                 * Verifies a Declaration message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

            /** VerificationState enum. */
            enum VerificationState {
                DECLARATION = 0,
                UNVERIFIED = 1
            }
        }

        /** Properties of a FieldDescriptorProto. */
        interface IFieldDescriptorProto {

            /** FieldDescriptorProto name */
            name?: (string|null);

            /** FieldDescriptorProto number */
            number?: (number|null);

            /** FieldDescriptorProto label */
            label?: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label|null);

            /** FieldDescriptorProto type */
            type?: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type|null);

            /** FieldDescriptorProto typeName */
            typeName?: (string|null);

            /** FieldDescriptorProto extendee */
            extendee?: (string|null);

            /** FieldDescriptorProto defaultValue */
            defaultValue?: (string|null);

            /** FieldDescriptorProto oneofIndex */
            oneofIndex?: (number|null);

            /** FieldDescriptorProto jsonName */
            jsonName?: (string|null);

            /** FieldDescriptorProto options */
            options?: (google.protobuf.IFieldOptions|null);

            /** FieldDescriptorProto proto3Optional */
            proto3Optional?: (boolean|null);
        }

        /** Represents a FieldDescriptorProto. */
        class FieldDescriptorProto implements IFieldDescriptorProto {

            /**
             * Constructs a new FieldDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFieldDescriptorProto);

            /** FieldDescriptorProto name. */
            public name: string;

            /** FieldDescriptorProto number. */
            public number: number;

            /** FieldDescriptorProto label. */
            public label: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label);

            /** FieldDescriptorProto type. */
            public type: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type);

            /** FieldDescriptorProto typeName. */
            public typeName: string;

            /** FieldDescriptorProto extendee. */
            public extendee: string;

            /** FieldDescriptorProto defaultValue. */
            public defaultValue: string;

            /** FieldDescriptorProto oneofIndex. */
            public oneofIndex: number;

            /** FieldDescriptorProto jsonName. */
            public jsonName: string;

            /** FieldDescriptorProto options. */
            public options?: (google.protobuf.IFieldOptions|null);

            /** FieldDescriptorProto proto3Optional. */
            public proto3Optional: boolean;

            /**
             * Creates a new FieldDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FieldDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto;

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

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

            /**
             * Decodes a FieldDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FieldDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto;

            /**
             * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FieldDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto;

            /**
             * Verifies a FieldDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace FieldDescriptorProto {

            /** Type enum. */
            enum Type {
                TYPE_DOUBLE = 1,
                TYPE_FLOAT = 2,
                TYPE_INT64 = 3,
                TYPE_UINT64 = 4,
                TYPE_INT32 = 5,
                TYPE_FIXED64 = 6,
                TYPE_FIXED32 = 7,
                TYPE_BOOL = 8,
                TYPE_STRING = 9,
                TYPE_GROUP = 10,
                TYPE_MESSAGE = 11,
                TYPE_BYTES = 12,
                TYPE_UINT32 = 13,
                TYPE_ENUM = 14,
                TYPE_SFIXED32 = 15,
                TYPE_SFIXED64 = 16,
                TYPE_SINT32 = 17,
                TYPE_SINT64 = 18
            }

            /** Label enum. */
            enum Label {
                LABEL_OPTIONAL = 1,
                LABEL_REPEATED = 3,
                LABEL_REQUIRED = 2
            }
        }

        /** Properties of an OneofDescriptorProto. */
        interface IOneofDescriptorProto {

            /** OneofDescriptorProto name */
            name?: (string|null);

            /** OneofDescriptorProto options */
            options?: (google.protobuf.IOneofOptions|null);
        }

        /** Represents an OneofDescriptorProto. */
        class OneofDescriptorProto implements IOneofDescriptorProto {

            /**
             * Constructs a new OneofDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IOneofDescriptorProto);

            /** OneofDescriptorProto name. */
            public name: string;

            /** OneofDescriptorProto options. */
            public options?: (google.protobuf.IOneofOptions|null);

            /**
             * Creates a new OneofDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns OneofDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto;

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

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

            /**
             * Decodes an OneofDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns OneofDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto;

            /**
             * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns OneofDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto;

            /**
             * Verifies an OneofDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of an EnumDescriptorProto. */
        interface IEnumDescriptorProto {

            /** EnumDescriptorProto name */
            name?: (string|null);

            /** EnumDescriptorProto value */
            value?: (google.protobuf.IEnumValueDescriptorProto[]|null);

            /** EnumDescriptorProto options */
            options?: (google.protobuf.IEnumOptions|null);

            /** EnumDescriptorProto reservedRange */
            reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null);

            /** EnumDescriptorProto reservedName */
            reservedName?: (string[]|null);

            /** EnumDescriptorProto visibility */
            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
        }

        /** Represents an EnumDescriptorProto. */
        class EnumDescriptorProto implements IEnumDescriptorProto {

            /**
             * Constructs a new EnumDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumDescriptorProto);

            /** EnumDescriptorProto name. */
            public name: string;

            /** EnumDescriptorProto value. */
            public value: google.protobuf.IEnumValueDescriptorProto[];

            /** EnumDescriptorProto options. */
            public options?: (google.protobuf.IEnumOptions|null);

            /** EnumDescriptorProto reservedRange. */
            public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[];

            /** EnumDescriptorProto reservedName. */
            public reservedName: string[];

            /** EnumDescriptorProto visibility. */
            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);

            /**
             * Creates a new EnumDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto;

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

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

            /**
             * Decodes an EnumDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto;

            /**
             * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto;

            /**
             * Verifies an EnumDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace EnumDescriptorProto {

            /** Properties of an EnumReservedRange. */
            interface IEnumReservedRange {

                /** EnumReservedRange start */
                start?: (number|null);

                /** EnumReservedRange end */
                end?: (number|null);
            }

            /** Represents an EnumReservedRange. */
            class EnumReservedRange implements IEnumReservedRange {

                /**
                 * Constructs a new EnumReservedRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange);

                /** EnumReservedRange start. */
                public start: number;

                /** EnumReservedRange end. */
                public end: number;

                /**
                 * Creates a new EnumReservedRange instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns EnumReservedRange instance
                 */
                public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange;

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

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

                /**
                 * Decodes an EnumReservedRange message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns EnumReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange;

                /**
                 * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns EnumReservedRange
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange;

                /**
                 * Verifies an EnumReservedRange message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of an EnumValueDescriptorProto. */
        interface IEnumValueDescriptorProto {

            /** EnumValueDescriptorProto name */
            name?: (string|null);

            /** EnumValueDescriptorProto number */
            number?: (number|null);

            /** EnumValueDescriptorProto options */
            options?: (google.protobuf.IEnumValueOptions|null);
        }

        /** Represents an EnumValueDescriptorProto. */
        class EnumValueDescriptorProto implements IEnumValueDescriptorProto {

            /**
             * Constructs a new EnumValueDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumValueDescriptorProto);

            /** EnumValueDescriptorProto name. */
            public name: string;

            /** EnumValueDescriptorProto number. */
            public number: number;

            /** EnumValueDescriptorProto options. */
            public options?: (google.protobuf.IEnumValueOptions|null);

            /**
             * Creates a new EnumValueDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumValueDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto;

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

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

            /**
             * Decodes an EnumValueDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumValueDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto;

            /**
             * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumValueDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto;

            /**
             * Verifies an EnumValueDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a ServiceDescriptorProto. */
        interface IServiceDescriptorProto {

            /** ServiceDescriptorProto name */
            name?: (string|null);

            /** ServiceDescriptorProto method */
            method?: (google.protobuf.IMethodDescriptorProto[]|null);

            /** ServiceDescriptorProto options */
            options?: (google.protobuf.IServiceOptions|null);
        }

        /** Represents a ServiceDescriptorProto. */
        class ServiceDescriptorProto implements IServiceDescriptorProto {

            /**
             * Constructs a new ServiceDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IServiceDescriptorProto);

            /** ServiceDescriptorProto name. */
            public name: string;

            /** ServiceDescriptorProto method. */
            public method: google.protobuf.IMethodDescriptorProto[];

            /** ServiceDescriptorProto options. */
            public options?: (google.protobuf.IServiceOptions|null);

            /**
             * Creates a new ServiceDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ServiceDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto;

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

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

            /**
             * Decodes a ServiceDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ServiceDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto;

            /**
             * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ServiceDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto;

            /**
             * Verifies a ServiceDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a MethodDescriptorProto. */
        interface IMethodDescriptorProto {

            /** MethodDescriptorProto name */
            name?: (string|null);

            /** MethodDescriptorProto inputType */
            inputType?: (string|null);

            /** MethodDescriptorProto outputType */
            outputType?: (string|null);

            /** MethodDescriptorProto options */
            options?: (google.protobuf.IMethodOptions|null);

            /** MethodDescriptorProto clientStreaming */
            clientStreaming?: (boolean|null);

            /** MethodDescriptorProto serverStreaming */
            serverStreaming?: (boolean|null);
        }

        /** Represents a MethodDescriptorProto. */
        class MethodDescriptorProto implements IMethodDescriptorProto {

            /**
             * Constructs a new MethodDescriptorProto.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMethodDescriptorProto);

            /** MethodDescriptorProto name. */
            public name: string;

            /** MethodDescriptorProto inputType. */
            public inputType: string;

            /** MethodDescriptorProto outputType. */
            public outputType: string;

            /** MethodDescriptorProto options. */
            public options?: (google.protobuf.IMethodOptions|null);

            /** MethodDescriptorProto clientStreaming. */
            public clientStreaming: boolean;

            /** MethodDescriptorProto serverStreaming. */
            public serverStreaming: boolean;

            /**
             * Creates a new MethodDescriptorProto instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MethodDescriptorProto instance
             */
            public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto;

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

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

            /**
             * Decodes a MethodDescriptorProto message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MethodDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto;

            /**
             * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MethodDescriptorProto
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto;

            /**
             * Verifies a MethodDescriptorProto message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a FileOptions. */
        interface IFileOptions {

            /** FileOptions javaPackage */
            javaPackage?: (string|null);

            /** FileOptions javaOuterClassname */
            javaOuterClassname?: (string|null);

            /** FileOptions javaMultipleFiles */
            javaMultipleFiles?: (boolean|null);

            /** FileOptions javaGenerateEqualsAndHash */
            javaGenerateEqualsAndHash?: (boolean|null);

            /** FileOptions javaStringCheckUtf8 */
            javaStringCheckUtf8?: (boolean|null);

            /** FileOptions optimizeFor */
            optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null);

            /** FileOptions goPackage */
            goPackage?: (string|null);

            /** FileOptions ccGenericServices */
            ccGenericServices?: (boolean|null);

            /** FileOptions javaGenericServices */
            javaGenericServices?: (boolean|null);

            /** FileOptions pyGenericServices */
            pyGenericServices?: (boolean|null);

            /** FileOptions deprecated */
            deprecated?: (boolean|null);

            /** FileOptions ccEnableArenas */
            ccEnableArenas?: (boolean|null);

            /** FileOptions objcClassPrefix */
            objcClassPrefix?: (string|null);

            /** FileOptions csharpNamespace */
            csharpNamespace?: (string|null);

            /** FileOptions swiftPrefix */
            swiftPrefix?: (string|null);

            /** FileOptions phpClassPrefix */
            phpClassPrefix?: (string|null);

            /** FileOptions phpNamespace */
            phpNamespace?: (string|null);

            /** FileOptions phpMetadataNamespace */
            phpMetadataNamespace?: (string|null);

            /** FileOptions rubyPackage */
            rubyPackage?: (string|null);

            /** FileOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** FileOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** FileOptions .google.api.resourceDefinition */
            ".google.api.resourceDefinition"?: (google.api.IResourceDescriptor[]|null);
        }

        /** Represents a FileOptions. */
        class FileOptions implements IFileOptions {

            /**
             * Constructs a new FileOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFileOptions);

            /** FileOptions javaPackage. */
            public javaPackage: string;

            /** FileOptions javaOuterClassname. */
            public javaOuterClassname: string;

            /** FileOptions javaMultipleFiles. */
            public javaMultipleFiles: boolean;

            /** FileOptions javaGenerateEqualsAndHash. */
            public javaGenerateEqualsAndHash: boolean;

            /** FileOptions javaStringCheckUtf8. */
            public javaStringCheckUtf8: boolean;

            /** FileOptions optimizeFor. */
            public optimizeFor: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode);

            /** FileOptions goPackage. */
            public goPackage: string;

            /** FileOptions ccGenericServices. */
            public ccGenericServices: boolean;

            /** FileOptions javaGenericServices. */
            public javaGenericServices: boolean;

            /** FileOptions pyGenericServices. */
            public pyGenericServices: boolean;

            /** FileOptions deprecated. */
            public deprecated: boolean;

            /** FileOptions ccEnableArenas. */
            public ccEnableArenas: boolean;

            /** FileOptions objcClassPrefix. */
            public objcClassPrefix: string;

            /** FileOptions csharpNamespace. */
            public csharpNamespace: string;

            /** FileOptions swiftPrefix. */
            public swiftPrefix: string;

            /** FileOptions phpClassPrefix. */
            public phpClassPrefix: string;

            /** FileOptions phpNamespace. */
            public phpNamespace: string;

            /** FileOptions phpMetadataNamespace. */
            public phpMetadataNamespace: string;

            /** FileOptions rubyPackage. */
            public rubyPackage: string;

            /** FileOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** FileOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new FileOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FileOptions instance
             */
            public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions;

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

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

            /**
             * Decodes a FileOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FileOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions;

            /**
             * Decodes a FileOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FileOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions;

            /**
             * Verifies a FileOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace FileOptions {

            /** OptimizeMode enum. */
            enum OptimizeMode {
                SPEED = 1,
                CODE_SIZE = 2,
                LITE_RUNTIME = 3
            }
        }

        /** Properties of a MessageOptions. */
        interface IMessageOptions {

            /** MessageOptions messageSetWireFormat */
            messageSetWireFormat?: (boolean|null);

            /** MessageOptions noStandardDescriptorAccessor */
            noStandardDescriptorAccessor?: (boolean|null);

            /** MessageOptions deprecated */
            deprecated?: (boolean|null);

            /** MessageOptions mapEntry */
            mapEntry?: (boolean|null);

            /** MessageOptions deprecatedLegacyJsonFieldConflicts */
            deprecatedLegacyJsonFieldConflicts?: (boolean|null);

            /** MessageOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** MessageOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** MessageOptions .google.api.resource */
            ".google.api.resource"?: (google.api.IResourceDescriptor|null);
        }

        /** Represents a MessageOptions. */
        class MessageOptions implements IMessageOptions {

            /**
             * Constructs a new MessageOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMessageOptions);

            /** MessageOptions messageSetWireFormat. */
            public messageSetWireFormat: boolean;

            /** MessageOptions noStandardDescriptorAccessor. */
            public noStandardDescriptorAccessor: boolean;

            /** MessageOptions deprecated. */
            public deprecated: boolean;

            /** MessageOptions mapEntry. */
            public mapEntry: boolean;

            /** MessageOptions deprecatedLegacyJsonFieldConflicts. */
            public deprecatedLegacyJsonFieldConflicts: boolean;

            /** MessageOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** MessageOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new MessageOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MessageOptions instance
             */
            public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions;

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

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

            /**
             * Decodes a MessageOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MessageOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions;

            /**
             * Decodes a MessageOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MessageOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions;

            /**
             * Verifies a MessageOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a FieldOptions. */
        interface IFieldOptions {

            /** FieldOptions ctype */
            ctype?: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType|null);

            /** FieldOptions packed */
            packed?: (boolean|null);

            /** FieldOptions jstype */
            jstype?: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType|null);

            /** FieldOptions lazy */
            lazy?: (boolean|null);

            /** FieldOptions unverifiedLazy */
            unverifiedLazy?: (boolean|null);

            /** FieldOptions deprecated */
            deprecated?: (boolean|null);

            /** FieldOptions weak */
            weak?: (boolean|null);

            /** FieldOptions debugRedact */
            debugRedact?: (boolean|null);

            /** FieldOptions retention */
            retention?: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention|null);

            /** FieldOptions targets */
            targets?: (google.protobuf.FieldOptions.OptionTargetType[]|null);

            /** FieldOptions editionDefaults */
            editionDefaults?: (google.protobuf.FieldOptions.IEditionDefault[]|null);

            /** FieldOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** FieldOptions featureSupport */
            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** FieldOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** FieldOptions .google.api.fieldBehavior */
            ".google.api.fieldBehavior"?: (google.api.FieldBehavior[]|null);

            /** FieldOptions .google.api.resourceReference */
            ".google.api.resourceReference"?: (google.api.IResourceReference|null);
        }

        /** Represents a FieldOptions. */
        class FieldOptions implements IFieldOptions {

            /**
             * Constructs a new FieldOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFieldOptions);

            /** FieldOptions ctype. */
            public ctype: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType);

            /** FieldOptions packed. */
            public packed: boolean;

            /** FieldOptions jstype. */
            public jstype: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType);

            /** FieldOptions lazy. */
            public lazy: boolean;

            /** FieldOptions unverifiedLazy. */
            public unverifiedLazy: boolean;

            /** FieldOptions deprecated. */
            public deprecated: boolean;

            /** FieldOptions weak. */
            public weak: boolean;

            /** FieldOptions debugRedact. */
            public debugRedact: boolean;

            /** FieldOptions retention. */
            public retention: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention);

            /** FieldOptions targets. */
            public targets: google.protobuf.FieldOptions.OptionTargetType[];

            /** FieldOptions editionDefaults. */
            public editionDefaults: google.protobuf.FieldOptions.IEditionDefault[];

            /** FieldOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** FieldOptions featureSupport. */
            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** FieldOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new FieldOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FieldOptions instance
             */
            public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions;

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

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

            /**
             * Decodes a FieldOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FieldOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions;

            /**
             * Decodes a FieldOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FieldOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions;

            /**
             * Verifies a FieldOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace FieldOptions {

            /** CType enum. */
            enum CType {
                STRING = 0,
                CORD = 1,
                STRING_PIECE = 2
            }

            /** JSType enum. */
            enum JSType {
                JS_NORMAL = 0,
                JS_STRING = 1,
                JS_NUMBER = 2
            }

            /** OptionRetention enum. */
            enum OptionRetention {
                RETENTION_UNKNOWN = 0,
                RETENTION_RUNTIME = 1,
                RETENTION_SOURCE = 2
            }

            /** OptionTargetType enum. */
            enum OptionTargetType {
                TARGET_TYPE_UNKNOWN = 0,
                TARGET_TYPE_FILE = 1,
                TARGET_TYPE_EXTENSION_RANGE = 2,
                TARGET_TYPE_MESSAGE = 3,
                TARGET_TYPE_FIELD = 4,
                TARGET_TYPE_ONEOF = 5,
                TARGET_TYPE_ENUM = 6,
                TARGET_TYPE_ENUM_ENTRY = 7,
                TARGET_TYPE_SERVICE = 8,
                TARGET_TYPE_METHOD = 9
            }

            /** Properties of an EditionDefault. */
            interface IEditionDefault {

                /** EditionDefault edition */
                edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** EditionDefault value */
                value?: (string|null);
            }

            /** Represents an EditionDefault. */
            class EditionDefault implements IEditionDefault {

                /**
                 * Constructs a new EditionDefault.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FieldOptions.IEditionDefault);

                /** EditionDefault edition. */
                public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** EditionDefault value. */
                public value: string;

                /**
                 * Creates a new EditionDefault instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns EditionDefault instance
                 */
                public static create(properties?: google.protobuf.FieldOptions.IEditionDefault): google.protobuf.FieldOptions.EditionDefault;

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

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

                /**
                 * Decodes an EditionDefault message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns EditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.EditionDefault;

                /**
                 * Decodes an EditionDefault message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns EditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.EditionDefault;

                /**
                 * Verifies an EditionDefault message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

            /** Properties of a FeatureSupport. */
            interface IFeatureSupport {

                /** FeatureSupport editionIntroduced */
                editionIntroduced?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** FeatureSupport editionDeprecated */
                editionDeprecated?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** FeatureSupport deprecationWarning */
                deprecationWarning?: (string|null);

                /** FeatureSupport editionRemoved */
                editionRemoved?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
            }

            /** Represents a FeatureSupport. */
            class FeatureSupport implements IFeatureSupport {

                /**
                 * Constructs a new FeatureSupport.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FieldOptions.IFeatureSupport);

                /** FeatureSupport editionIntroduced. */
                public editionIntroduced: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** FeatureSupport editionDeprecated. */
                public editionDeprecated: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** FeatureSupport deprecationWarning. */
                public deprecationWarning: string;

                /** FeatureSupport editionRemoved. */
                public editionRemoved: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /**
                 * Creates a new FeatureSupport instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns FeatureSupport instance
                 */
                public static create(properties?: google.protobuf.FieldOptions.IFeatureSupport): google.protobuf.FieldOptions.FeatureSupport;

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

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

                /**
                 * Decodes a FeatureSupport message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns FeatureSupport
                 * @throws {Error} If the payload is 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.FeatureSupport;

                /**
                 * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns FeatureSupport
                 * @throws {Error} If the 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.FeatureSupport;

                /**
                 * Verifies a FeatureSupport message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of an OneofOptions. */
        interface IOneofOptions {

            /** OneofOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** OneofOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an OneofOptions. */
        class OneofOptions implements IOneofOptions {

            /**
             * Constructs a new OneofOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IOneofOptions);

            /** OneofOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** OneofOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new OneofOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns OneofOptions instance
             */
            public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions;

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

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

            /**
             * Decodes an OneofOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns OneofOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions;

            /**
             * Decodes an OneofOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns OneofOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions;

            /**
             * Verifies an OneofOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of an EnumOptions. */
        interface IEnumOptions {

            /** EnumOptions allowAlias */
            allowAlias?: (boolean|null);

            /** EnumOptions deprecated */
            deprecated?: (boolean|null);

            /** EnumOptions deprecatedLegacyJsonFieldConflicts */
            deprecatedLegacyJsonFieldConflicts?: (boolean|null);

            /** EnumOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** EnumOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an EnumOptions. */
        class EnumOptions implements IEnumOptions {

            /**
             * Constructs a new EnumOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumOptions);

            /** EnumOptions allowAlias. */
            public allowAlias: boolean;

            /** EnumOptions deprecated. */
            public deprecated: boolean;

            /** EnumOptions deprecatedLegacyJsonFieldConflicts. */
            public deprecatedLegacyJsonFieldConflicts: boolean;

            /** EnumOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** EnumOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new EnumOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumOptions instance
             */
            public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions;

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

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

            /**
             * Decodes an EnumOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions;

            /**
             * Decodes an EnumOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions;

            /**
             * Verifies an EnumOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of an EnumValueOptions. */
        interface IEnumValueOptions {

            /** EnumValueOptions deprecated */
            deprecated?: (boolean|null);

            /** EnumValueOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** EnumValueOptions debugRedact */
            debugRedact?: (boolean|null);

            /** EnumValueOptions featureSupport */
            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** EnumValueOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an EnumValueOptions. */
        class EnumValueOptions implements IEnumValueOptions {

            /**
             * Constructs a new EnumValueOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEnumValueOptions);

            /** EnumValueOptions deprecated. */
            public deprecated: boolean;

            /** EnumValueOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** EnumValueOptions debugRedact. */
            public debugRedact: boolean;

            /** EnumValueOptions featureSupport. */
            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);

            /** EnumValueOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new EnumValueOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns EnumValueOptions instance
             */
            public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions;

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

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

            /**
             * Decodes an EnumValueOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns EnumValueOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions;

            /**
             * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns EnumValueOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions;

            /**
             * Verifies an EnumValueOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a ServiceOptions. */
        interface IServiceOptions {

            /** ServiceOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** ServiceOptions deprecated */
            deprecated?: (boolean|null);

            /** ServiceOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** ServiceOptions .google.api.defaultHost */
            ".google.api.defaultHost"?: (string|null);

            /** ServiceOptions .google.api.oauthScopes */
            ".google.api.oauthScopes"?: (string|null);

            /** ServiceOptions .google.api.apiVersion */
            ".google.api.apiVersion"?: (string|null);
        }

        /** Represents a ServiceOptions. */
        class ServiceOptions implements IServiceOptions {

            /**
             * Constructs a new ServiceOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IServiceOptions);

            /** ServiceOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** ServiceOptions deprecated. */
            public deprecated: boolean;

            /** ServiceOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new ServiceOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ServiceOptions instance
             */
            public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions;

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

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

            /**
             * Decodes a ServiceOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ServiceOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions;

            /**
             * Decodes a ServiceOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ServiceOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions;

            /**
             * Verifies a ServiceOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a MethodOptions. */
        interface IMethodOptions {

            /** MethodOptions deprecated */
            deprecated?: (boolean|null);

            /** MethodOptions idempotencyLevel */
            idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null);

            /** MethodOptions features */
            features?: (google.protobuf.IFeatureSet|null);

            /** MethodOptions uninterpretedOption */
            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);

            /** MethodOptions .google.api.http */
            ".google.api.http"?: (google.api.IHttpRule|null);

            /** MethodOptions .google.api.methodSignature */
            ".google.api.methodSignature"?: (string[]|null);

            /** MethodOptions .google.longrunning.operationInfo */
            ".google.longrunning.operationInfo"?: (google.longrunning.IOperationInfo|null);
        }

        /** Represents a MethodOptions. */
        class MethodOptions implements IMethodOptions {

            /**
             * Constructs a new MethodOptions.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IMethodOptions);

            /** MethodOptions deprecated. */
            public deprecated: boolean;

            /** MethodOptions idempotencyLevel. */
            public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel);

            /** MethodOptions features. */
            public features?: (google.protobuf.IFeatureSet|null);

            /** MethodOptions uninterpretedOption. */
            public uninterpretedOption: google.protobuf.IUninterpretedOption[];

            /**
             * Creates a new MethodOptions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MethodOptions instance
             */
            public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions;

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

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

            /**
             * Decodes a MethodOptions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MethodOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions;

            /**
             * Decodes a MethodOptions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MethodOptions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions;

            /**
             * Verifies a MethodOptions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace MethodOptions {

            /** IdempotencyLevel enum. */
            enum IdempotencyLevel {
                IDEMPOTENCY_UNKNOWN = 0,
                NO_SIDE_EFFECTS = 1,
                IDEMPOTENT = 2
            }
        }

        /** Properties of an UninterpretedOption. */
        interface IUninterpretedOption {

            /** UninterpretedOption name */
            name?: (google.protobuf.UninterpretedOption.INamePart[]|null);

            /** UninterpretedOption identifierValue */
            identifierValue?: (string|null);

            /** UninterpretedOption positiveIntValue */
            positiveIntValue?: (number|Long|string|null);

            /** UninterpretedOption negativeIntValue */
            negativeIntValue?: (number|Long|string|null);

            /** UninterpretedOption doubleValue */
            doubleValue?: (number|null);

            /** UninterpretedOption stringValue */
            stringValue?: (Uint8Array|Buffer|string|null);

            /** UninterpretedOption aggregateValue */
            aggregateValue?: (string|null);
        }

        /** Represents an UninterpretedOption. */
        class UninterpretedOption implements IUninterpretedOption {

            /**
             * Constructs a new UninterpretedOption.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IUninterpretedOption);

            /** UninterpretedOption name. */
            public name: google.protobuf.UninterpretedOption.INamePart[];

            /** UninterpretedOption identifierValue. */
            public identifierValue: string;

            /** UninterpretedOption positiveIntValue. */
            public positiveIntValue: (number|Long|string);

            /** UninterpretedOption negativeIntValue. */
            public negativeIntValue: (number|Long|string);

            /** UninterpretedOption doubleValue. */
            public doubleValue: number;

            /** UninterpretedOption stringValue. */
            public stringValue: (Uint8Array|Buffer|string);

            /** UninterpretedOption aggregateValue. */
            public aggregateValue: string;

            /**
             * Creates a new UninterpretedOption instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UninterpretedOption instance
             */
            public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption;

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

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

            /**
             * Decodes an UninterpretedOption message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UninterpretedOption
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption;

            /**
             * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UninterpretedOption
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption;

            /**
             * Verifies an UninterpretedOption message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace UninterpretedOption {

            /** Properties of a NamePart. */
            interface INamePart {

                /** NamePart namePart */
                namePart: string;

                /** NamePart isExtension */
                isExtension: boolean;
            }

            /** Represents a NamePart. */
            class NamePart implements INamePart {

                /**
                 * Constructs a new NamePart.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.UninterpretedOption.INamePart);

                /** NamePart namePart. */
                public namePart: string;

                /** NamePart isExtension. */
                public isExtension: boolean;

                /**
                 * Creates a new NamePart instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns NamePart instance
                 */
                public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart;

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

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

                /**
                 * Decodes a NamePart message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns NamePart
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart;

                /**
                 * Decodes a NamePart message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns NamePart
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart;

                /**
                 * Verifies a NamePart message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a FeatureSet. */
        interface IFeatureSet {

            /** FeatureSet fieldPresence */
            fieldPresence?: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence|null);

            /** FeatureSet enumType */
            enumType?: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType|null);

            /** FeatureSet repeatedFieldEncoding */
            repeatedFieldEncoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding|null);

            /** FeatureSet utf8Validation */
            utf8Validation?: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation|null);

            /** FeatureSet messageEncoding */
            messageEncoding?: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding|null);

            /** FeatureSet jsonFormat */
            jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);

            /** FeatureSet enforceNamingStyle */
            enforceNamingStyle?: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle|null);

            /** FeatureSet defaultSymbolVisibility */
            defaultSymbolVisibility?: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null);
        }

        /** Represents a FeatureSet. */
        class FeatureSet implements IFeatureSet {

            /**
             * Constructs a new FeatureSet.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFeatureSet);

            /** FeatureSet fieldPresence. */
            public fieldPresence: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence);

            /** FeatureSet enumType. */
            public enumType: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType);

            /** FeatureSet repeatedFieldEncoding. */
            public repeatedFieldEncoding: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding);

            /** FeatureSet utf8Validation. */
            public utf8Validation: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation);

            /** FeatureSet messageEncoding. */
            public messageEncoding: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding);

            /** FeatureSet jsonFormat. */
            public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);

            /** FeatureSet enforceNamingStyle. */
            public enforceNamingStyle: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle);

            /** FeatureSet defaultSymbolVisibility. */
            public defaultSymbolVisibility: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility);

            /**
             * Creates a new FeatureSet instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FeatureSet instance
             */
            public static create(properties?: google.protobuf.IFeatureSet): google.protobuf.FeatureSet;

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

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

            /**
             * Decodes a FeatureSet message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FeatureSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet;

            /**
             * Decodes a FeatureSet message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FeatureSet
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet;

            /**
             * Verifies a FeatureSet message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace FeatureSet {

            /** FieldPresence enum. */
            enum FieldPresence {
                FIELD_PRESENCE_UNKNOWN = 0,
                EXPLICIT = 1,
                IMPLICIT = 2,
                LEGACY_REQUIRED = 3
            }

            /** EnumType enum. */
            enum EnumType {
                ENUM_TYPE_UNKNOWN = 0,
                OPEN = 1,
                CLOSED = 2
            }

            /** RepeatedFieldEncoding enum. */
            enum RepeatedFieldEncoding {
                REPEATED_FIELD_ENCODING_UNKNOWN = 0,
                PACKED = 1,
                EXPANDED = 2
            }

            /** Utf8Validation enum. */
            enum Utf8Validation {
                UTF8_VALIDATION_UNKNOWN = 0,
                VERIFY = 2,
                NONE = 3
            }

            /** MessageEncoding enum. */
            enum MessageEncoding {
                MESSAGE_ENCODING_UNKNOWN = 0,
                LENGTH_PREFIXED = 1,
                DELIMITED = 2
            }

            /** JsonFormat enum. */
            enum JsonFormat {
                JSON_FORMAT_UNKNOWN = 0,
                ALLOW = 1,
                LEGACY_BEST_EFFORT = 2
            }

            /** EnforceNamingStyle enum. */
            enum EnforceNamingStyle {
                ENFORCE_NAMING_STYLE_UNKNOWN = 0,
                STYLE2024 = 1,
                STYLE_LEGACY = 2
            }

            /** Properties of a VisibilityFeature. */
            interface IVisibilityFeature {
            }

            /** Represents a VisibilityFeature. */
            class VisibilityFeature implements IVisibilityFeature {

                /**
                 * Constructs a new VisibilityFeature.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FeatureSet.IVisibilityFeature);

                /**
                 * Creates a new VisibilityFeature instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns VisibilityFeature instance
                 */
                public static create(properties?: google.protobuf.FeatureSet.IVisibilityFeature): google.protobuf.FeatureSet.VisibilityFeature;

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

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

                /**
                 * Decodes a VisibilityFeature message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns VisibilityFeature
                 * @throws {Error} If the payload is 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.VisibilityFeature;

                /**
                 * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns VisibilityFeature
                 * @throws {Error} If the 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.VisibilityFeature;

                /**
                 * Verifies a VisibilityFeature message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

            namespace VisibilityFeature {

                /** DefaultSymbolVisibility enum. */
                enum DefaultSymbolVisibility {
                    DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0,
                    EXPORT_ALL = 1,
                    EXPORT_TOP_LEVEL = 2,
                    LOCAL_ALL = 3,
                    STRICT = 4
                }
            }
        }

        /** Properties of a FeatureSetDefaults. */
        interface IFeatureSetDefaults {

            /** FeatureSetDefaults defaults */
            defaults?: (google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[]|null);

            /** FeatureSetDefaults minimumEdition */
            minimumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

            /** FeatureSetDefaults maximumEdition */
            maximumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
        }

        /** Represents a FeatureSetDefaults. */
        class FeatureSetDefaults implements IFeatureSetDefaults {

            /**
             * Constructs a new FeatureSetDefaults.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IFeatureSetDefaults);

            /** FeatureSetDefaults defaults. */
            public defaults: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[];

            /** FeatureSetDefaults minimumEdition. */
            public minimumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

            /** FeatureSetDefaults maximumEdition. */
            public maximumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

            /**
             * Creates a new FeatureSetDefaults instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FeatureSetDefaults instance
             */
            public static create(properties?: google.protobuf.IFeatureSetDefaults): google.protobuf.FeatureSetDefaults;

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

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

            /**
             * Decodes a FeatureSetDefaults message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FeatureSetDefaults
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults;

            /**
             * Decodes a FeatureSetDefaults message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FeatureSetDefaults
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults;

            /**
             * Verifies a FeatureSetDefaults message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace FeatureSetDefaults {

            /** Properties of a FeatureSetEditionDefault. */
            interface IFeatureSetEditionDefault {

                /** FeatureSetEditionDefault edition */
                edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);

                /** FeatureSetEditionDefault overridableFeatures */
                overridableFeatures?: (google.protobuf.IFeatureSet|null);

                /** FeatureSetEditionDefault fixedFeatures */
                fixedFeatures?: (google.protobuf.IFeatureSet|null);
            }

            /** Represents a FeatureSetEditionDefault. */
            class FeatureSetEditionDefault implements IFeatureSetEditionDefault {

                /**
                 * Constructs a new FeatureSetEditionDefault.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault);

                /** FeatureSetEditionDefault edition. */
                public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);

                /** FeatureSetEditionDefault overridableFeatures. */
                public overridableFeatures?: (google.protobuf.IFeatureSet|null);

                /** FeatureSetEditionDefault fixedFeatures. */
                public fixedFeatures?: (google.protobuf.IFeatureSet|null);

                /**
                 * Creates a new FeatureSetEditionDefault instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns FeatureSetEditionDefault instance
                 */
                public static create(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;

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

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

                /**
                 * Decodes a FeatureSetEditionDefault message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns FeatureSetEditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;

                /**
                 * Decodes a FeatureSetEditionDefault message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns FeatureSetEditionDefault
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;

                /**
                 * Verifies a FeatureSetEditionDefault message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a SourceCodeInfo. */
        interface ISourceCodeInfo {

            /** SourceCodeInfo location */
            location?: (google.protobuf.SourceCodeInfo.ILocation[]|null);
        }

        /** Represents a SourceCodeInfo. */
        class SourceCodeInfo implements ISourceCodeInfo {

            /**
             * Constructs a new SourceCodeInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.ISourceCodeInfo);

            /** SourceCodeInfo location. */
            public location: google.protobuf.SourceCodeInfo.ILocation[];

            /**
             * Creates a new SourceCodeInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns SourceCodeInfo instance
             */
            public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo;

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

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

            /**
             * Decodes a SourceCodeInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns SourceCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo;

            /**
             * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns SourceCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo;

            /**
             * Verifies a SourceCodeInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace SourceCodeInfo {

            /** Properties of a Location. */
            interface ILocation {

                /** Location path */
                path?: (number[]|null);

                /** Location span */
                span?: (number[]|null);

                /** Location leadingComments */
                leadingComments?: (string|null);

                /** Location trailingComments */
                trailingComments?: (string|null);

                /** Location leadingDetachedComments */
                leadingDetachedComments?: (string[]|null);
            }

            /** Represents a Location. */
            class Location implements ILocation {

                /**
                 * Constructs a new Location.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.SourceCodeInfo.ILocation);

                /** Location path. */
                public path: number[];

                /** Location span. */
                public span: number[];

                /** Location leadingComments. */
                public leadingComments: string;

                /** Location trailingComments. */
                public trailingComments: string;

                /** Location leadingDetachedComments. */
                public leadingDetachedComments: string[];

                /**
                 * Creates a new Location instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Location instance
                 */
                public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location;

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

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

                /**
                 * Decodes a Location message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Location
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location;

                /**
                 * Decodes a Location message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Location
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location;

                /**
                 * Verifies a Location message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a GeneratedCodeInfo. */
        interface IGeneratedCodeInfo {

            /** GeneratedCodeInfo annotation */
            annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null);
        }

        /** Represents a GeneratedCodeInfo. */
        class GeneratedCodeInfo implements IGeneratedCodeInfo {

            /**
             * Constructs a new GeneratedCodeInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IGeneratedCodeInfo);

            /** GeneratedCodeInfo annotation. */
            public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[];

            /**
             * Creates a new GeneratedCodeInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GeneratedCodeInfo instance
             */
            public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo;

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

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

            /**
             * Decodes a GeneratedCodeInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GeneratedCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo;

            /**
             * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GeneratedCodeInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo;

            /**
             * Verifies a GeneratedCodeInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace GeneratedCodeInfo {

            /** Properties of an Annotation. */
            interface IAnnotation {

                /** Annotation path */
                path?: (number[]|null);

                /** Annotation sourceFile */
                sourceFile?: (string|null);

                /** Annotation begin */
                begin?: (number|null);

                /** Annotation end */
                end?: (number|null);

                /** Annotation semantic */
                semantic?: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic|null);
            }

            /** Represents an Annotation. */
            class Annotation implements IAnnotation {

                /**
                 * Constructs a new Annotation.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation);

                /** Annotation path. */
                public path: number[];

                /** Annotation sourceFile. */
                public sourceFile: string;

                /** Annotation begin. */
                public begin: number;

                /** Annotation end. */
                public end: number;

                /** Annotation semantic. */
                public semantic: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic);

                /**
                 * Creates a new Annotation instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Annotation instance
                 */
                public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation;

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

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

                /**
                 * Decodes an Annotation message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Annotation
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation;

                /**
                 * Decodes an Annotation message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Annotation
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation;

                /**
                 * Verifies an Annotation message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

            namespace Annotation {

                /** Semantic enum. */
                enum Semantic {
                    NONE = 0,
                    SET = 1,
                    ALIAS = 2
                }
            }
        }

        /** SymbolVisibility enum. */
        enum SymbolVisibility {
            VISIBILITY_UNSET = 0,
            VISIBILITY_LOCAL = 1,
            VISIBILITY_EXPORT = 2
        }

        /** Properties of an Any. */
        interface IAny {

            /** Any type_url */
            type_url?: (string|null);

            /** Any value */
            value?: (Uint8Array|Buffer|string|null);
        }

        /** Represents an Any. */
        class Any implements IAny {

            /**
             * Constructs a new Any.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IAny);

            /** Any type_url. */
            public type_url: string;

            /** Any value. */
            public value: (Uint8Array|Buffer|string);

            /**
             * Creates a new Any instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Any instance
             */
            public static create(properties?: google.protobuf.IAny): google.protobuf.Any;

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

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

            /**
             * Decodes an Any message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Any
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Any;

            /**
             * Decodes an Any message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Any
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Any;

            /**
             * Verifies an Any message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of an Empty. */
        interface IEmpty {
        }

        /** Represents an Empty. */
        class Empty implements IEmpty {

            /**
             * Constructs a new Empty.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IEmpty);

            /**
             * Creates a new Empty instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Empty instance
             */
            public static create(properties?: google.protobuf.IEmpty): google.protobuf.Empty;

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

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

            /**
             * Decodes an Empty message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Empty
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Empty;

            /**
             * Decodes an Empty message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Empty
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Empty;

            /**
             * Verifies an Empty message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a 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;

            /**
             * Verifies a FieldMask message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a 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 a Timestamp. */
        interface ITimestamp {

            /** Timestamp seconds */
            seconds?: (number|Long|string|null);

            /** Timestamp nanos */
            nanos?: (number|null);
        }

        /** Represents a Timestamp. */
        class Timestamp implements ITimestamp {

            /**
             * Constructs a new Timestamp.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.ITimestamp);

            /** Timestamp seconds. */
            public seconds: (number|Long|string);

            /** Timestamp nanos. */
            public nanos: number;

            /**
             * Creates a new Timestamp instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Timestamp instance
             */
            public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp;

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

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

            /**
             * Decodes a Timestamp message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Timestamp
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp;

            /**
             * Decodes a Timestamp message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Timestamp
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp;

            /**
             * Verifies a Timestamp message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a Struct. */
        interface IStruct {

            /** Struct fields */
            fields?: ({ [k: string]: google.protobuf.IValue }|null);
        }

        /** Represents a Struct. */
        class Struct implements IStruct {

            /**
             * Constructs a new Struct.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IStruct);

            /** Struct fields. */
            public fields: { [k: string]: google.protobuf.IValue };

            /**
             * Creates a new Struct instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Struct instance
             */
            public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct;

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

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

            /**
             * Decodes a Struct message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Struct
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Struct;

            /**
             * Decodes a Struct message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Struct
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Struct;

            /**
             * Verifies a Struct message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a Value. */
        interface IValue {

            /** Value nullValue */
            nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null);

            /** Value numberValue */
            numberValue?: (number|null);

            /** Value stringValue */
            stringValue?: (string|null);

            /** Value boolValue */
            boolValue?: (boolean|null);

            /** Value structValue */
            structValue?: (google.protobuf.IStruct|null);

            /** Value listValue */
            listValue?: (google.protobuf.IListValue|null);
        }

        /** Represents a Value. */
        class Value implements IValue {

            /**
             * Constructs a new Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IValue);

            /** Value nullValue. */
            public nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null);

            /** Value numberValue. */
            public numberValue?: (number|null);

            /** Value stringValue. */
            public stringValue?: (string|null);

            /** Value boolValue. */
            public boolValue?: (boolean|null);

            /** Value structValue. */
            public structValue?: (google.protobuf.IStruct|null);

            /** Value listValue. */
            public listValue?: (google.protobuf.IListValue|null);

            /** Value kind. */
            public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue");

            /**
             * Creates a new Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Value instance
             */
            public static create(properties?: google.protobuf.IValue): google.protobuf.Value;

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

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

            /**
             * Decodes a Value message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Value;

            /**
             * Decodes a Value message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Value
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Value;

            /**
             * Verifies a Value message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** NullValue enum. */
        enum NullValue {
            NULL_VALUE = 0
        }

        /** Properties of a ListValue. */
        interface IListValue {

            /** ListValue values */
            values?: (google.protobuf.IValue[]|null);
        }

        /** Represents a ListValue. */
        class ListValue implements IListValue {

            /**
             * Constructs a new ListValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IListValue);

            /** ListValue values. */
            public values: google.protobuf.IValue[];

            /**
             * Creates a new ListValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ListValue instance
             */
            public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue;

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

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

            /**
             * Decodes a ListValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ListValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ListValue;

            /**
             * Decodes a ListValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ListValue
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ListValue;

            /**
             * Verifies a ListValue message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

    /** Namespace rpc. */
    namespace rpc {

        /** Properties of an ErrorInfo. */
        interface IErrorInfo {

            /** ErrorInfo reason */
            reason?: (string|null);

            /** ErrorInfo domain */
            domain?: (string|null);

            /** ErrorInfo metadata */
            metadata?: ({ [k: string]: string }|null);
        }

        /** Represents an ErrorInfo. */
        class ErrorInfo implements IErrorInfo {

            /**
             * Constructs a new ErrorInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IErrorInfo);

            /** ErrorInfo reason. */
            public reason: string;

            /** ErrorInfo domain. */
            public domain: string;

            /** ErrorInfo metadata. */
            public metadata: { [k: string]: string };

            /**
             * Creates a new ErrorInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ErrorInfo instance
             */
            public static create(properties?: google.rpc.IErrorInfo): google.rpc.ErrorInfo;

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

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

            /**
             * Decodes an ErrorInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ErrorInfo
             * @throws {Error} If the payload is 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.ErrorInfo;

            /**
             * Decodes an ErrorInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ErrorInfo
             * @throws {Error} If the 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.ErrorInfo;

            /**
             * Verifies an ErrorInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a RetryInfo. */
        interface IRetryInfo {

            /** RetryInfo retryDelay */
            retryDelay?: (google.protobuf.IDuration|null);
        }

        /** Represents a RetryInfo. */
        class RetryInfo implements IRetryInfo {

            /**
             * Constructs a new RetryInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IRetryInfo);

            /** RetryInfo retryDelay. */
            public retryDelay?: (google.protobuf.IDuration|null);

            /**
             * Creates a new RetryInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RetryInfo instance
             */
            public static create(properties?: google.rpc.IRetryInfo): google.rpc.RetryInfo;

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

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

            /**
             * Decodes a RetryInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RetryInfo
             * @throws {Error} If the payload is 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.RetryInfo;

            /**
             * Decodes a RetryInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RetryInfo
             * @throws {Error} If the 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.RetryInfo;

            /**
             * Verifies a RetryInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a DebugInfo. */
        interface IDebugInfo {

            /** DebugInfo stackEntries */
            stackEntries?: (string[]|null);

            /** DebugInfo detail */
            detail?: (string|null);
        }

        /** Represents a DebugInfo. */
        class DebugInfo implements IDebugInfo {

            /**
             * Constructs a new DebugInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IDebugInfo);

            /** DebugInfo stackEntries. */
            public stackEntries: string[];

            /** DebugInfo detail. */
            public detail: string;

            /**
             * Creates a new DebugInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DebugInfo instance
             */
            public static create(properties?: google.rpc.IDebugInfo): google.rpc.DebugInfo;

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

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

            /**
             * Decodes a DebugInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DebugInfo
             * @throws {Error} If the payload is 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.DebugInfo;

            /**
             * Decodes a DebugInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DebugInfo
             * @throws {Error} If the 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.DebugInfo;

            /**
             * Verifies a DebugInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a QuotaFailure. */
        interface IQuotaFailure {

            /** QuotaFailure violations */
            violations?: (google.rpc.QuotaFailure.IViolation[]|null);
        }

        /** Represents a QuotaFailure. */
        class QuotaFailure implements IQuotaFailure {

            /**
             * Constructs a new QuotaFailure.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IQuotaFailure);

            /** QuotaFailure violations. */
            public violations: google.rpc.QuotaFailure.IViolation[];

            /**
             * Creates a new QuotaFailure instance using the specified properties.
             * @param [properties] Properties to set
             * @returns QuotaFailure instance
             */
            public static create(properties?: google.rpc.IQuotaFailure): google.rpc.QuotaFailure;

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

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

            /**
             * Decodes a QuotaFailure message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns QuotaFailure
             * @throws {Error} If the payload is 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.QuotaFailure;

            /**
             * Decodes a QuotaFailure message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns QuotaFailure
             * @throws {Error} If the 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.QuotaFailure;

            /**
             * Verifies a QuotaFailure message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace QuotaFailure {

            /** Properties of a Violation. */
            interface IViolation {

                /** Violation subject */
                subject?: (string|null);

                /** Violation description */
                description?: (string|null);

                /** Violation apiService */
                apiService?: (string|null);

                /** Violation quotaMetric */
                quotaMetric?: (string|null);

                /** Violation quotaId */
                quotaId?: (string|null);

                /** Violation quotaDimensions */
                quotaDimensions?: ({ [k: string]: string }|null);

                /** Violation quotaValue */
                quotaValue?: (number|Long|string|null);

                /** Violation futureQuotaValue */
                futureQuotaValue?: (number|Long|string|null);
            }

            /** Represents a Violation. */
            class Violation implements IViolation {

                /**
                 * Constructs a new Violation.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.rpc.QuotaFailure.IViolation);

                /** Violation subject. */
                public subject: string;

                /** Violation description. */
                public description: string;

                /** Violation apiService. */
                public apiService: string;

                /** Violation quotaMetric. */
                public quotaMetric: string;

                /** Violation quotaId. */
                public quotaId: string;

                /** Violation quotaDimensions. */
                public quotaDimensions: { [k: string]: string };

                /** Violation quotaValue. */
                public quotaValue: (number|Long|string);

                /** Violation futureQuotaValue. */
                public futureQuotaValue?: (number|Long|string|null);

                /**
                 * Creates a new Violation instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Violation instance
                 */
                public static create(properties?: google.rpc.QuotaFailure.IViolation): google.rpc.QuotaFailure.Violation;

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

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

                /**
                 * Decodes a Violation message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Violation
                 * @throws {Error} If the payload is 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.QuotaFailure.Violation;

                /**
                 * Decodes a Violation message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Violation
                 * @throws {Error} If the 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.QuotaFailure.Violation;

                /**
                 * Verifies a Violation message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a PreconditionFailure. */
        interface IPreconditionFailure {

            /** PreconditionFailure violations */
            violations?: (google.rpc.PreconditionFailure.IViolation[]|null);
        }

        /** Represents a PreconditionFailure. */
        class PreconditionFailure implements IPreconditionFailure {

            /**
             * Constructs a new PreconditionFailure.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IPreconditionFailure);

            /** PreconditionFailure violations. */
            public violations: google.rpc.PreconditionFailure.IViolation[];

            /**
             * Creates a new PreconditionFailure instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PreconditionFailure instance
             */
            public static create(properties?: google.rpc.IPreconditionFailure): google.rpc.PreconditionFailure;

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

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

            /**
             * Decodes a PreconditionFailure message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PreconditionFailure
             * @throws {Error} If the payload is 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.PreconditionFailure;

            /**
             * Decodes a PreconditionFailure message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PreconditionFailure
             * @throws {Error} If the 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.PreconditionFailure;

            /**
             * Verifies a PreconditionFailure message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace PreconditionFailure {

            /** Properties of a Violation. */
            interface IViolation {

                /** Violation type */
                type?: (string|null);

                /** Violation subject */
                subject?: (string|null);

                /** Violation description */
                description?: (string|null);
            }

            /** Represents a Violation. */
            class Violation implements IViolation {

                /**
                 * Constructs a new Violation.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.rpc.PreconditionFailure.IViolation);

                /** Violation type. */
                public type: string;

                /** Violation subject. */
                public subject: string;

                /** Violation description. */
                public description: string;

                /**
                 * Creates a new Violation instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Violation instance
                 */
                public static create(properties?: google.rpc.PreconditionFailure.IViolation): google.rpc.PreconditionFailure.Violation;

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

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

                /**
                 * Decodes a Violation message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Violation
                 * @throws {Error} If the payload is 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.PreconditionFailure.Violation;

                /**
                 * Decodes a Violation message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Violation
                 * @throws {Error} If the 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.PreconditionFailure.Violation;

                /**
                 * Verifies a Violation message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a BadRequest. */
        interface IBadRequest {

            /** BadRequest fieldViolations */
            fieldViolations?: (google.rpc.BadRequest.IFieldViolation[]|null);
        }

        /** Represents a BadRequest. */
        class BadRequest implements IBadRequest {

            /**
             * Constructs a new BadRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IBadRequest);

            /** BadRequest fieldViolations. */
            public fieldViolations: google.rpc.BadRequest.IFieldViolation[];

            /**
             * Creates a new BadRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns BadRequest instance
             */
            public static create(properties?: google.rpc.IBadRequest): google.rpc.BadRequest;

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

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

            /**
             * Decodes a BadRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns BadRequest
             * @throws {Error} If the payload is 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.BadRequest;

            /**
             * Decodes a BadRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns BadRequest
             * @throws {Error} If the 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.BadRequest;

            /**
             * Verifies a BadRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace BadRequest {

            /** Properties of a FieldViolation. */
            interface IFieldViolation {

                /** FieldViolation field */
                field?: (string|null);

                /** FieldViolation description */
                description?: (string|null);

                /** FieldViolation reason */
                reason?: (string|null);

                /** FieldViolation localizedMessage */
                localizedMessage?: (google.rpc.ILocalizedMessage|null);
            }

            /** Represents a FieldViolation. */
            class FieldViolation implements IFieldViolation {

                /**
                 * Constructs a new FieldViolation.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.rpc.BadRequest.IFieldViolation);

                /** FieldViolation field. */
                public field: string;

                /** FieldViolation description. */
                public description: string;

                /** FieldViolation reason. */
                public reason: string;

                /** FieldViolation localizedMessage. */
                public localizedMessage?: (google.rpc.ILocalizedMessage|null);

                /**
                 * Creates a new FieldViolation instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns FieldViolation instance
                 */
                public static create(properties?: google.rpc.BadRequest.IFieldViolation): google.rpc.BadRequest.FieldViolation;

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

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

                /**
                 * Decodes a FieldViolation message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns FieldViolation
                 * @throws {Error} If the payload is 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.BadRequest.FieldViolation;

                /**
                 * Decodes a FieldViolation message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns FieldViolation
                 * @throws {Error} If the 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.BadRequest.FieldViolation;

                /**
                 * Verifies a FieldViolation message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a RequestInfo. */
        interface IRequestInfo {

            /** RequestInfo requestId */
            requestId?: (string|null);

            /** RequestInfo servingData */
            servingData?: (string|null);
        }

        /** Represents a RequestInfo. */
        class RequestInfo implements IRequestInfo {

            /**
             * Constructs a new RequestInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IRequestInfo);

            /** RequestInfo requestId. */
            public requestId: string;

            /** RequestInfo servingData. */
            public servingData: string;

            /**
             * Creates a new RequestInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RequestInfo instance
             */
            public static create(properties?: google.rpc.IRequestInfo): google.rpc.RequestInfo;

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

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

            /**
             * Decodes a RequestInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RequestInfo
             * @throws {Error} If the payload is 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.RequestInfo;

            /**
             * Decodes a RequestInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RequestInfo
             * @throws {Error} If the 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.RequestInfo;

            /**
             * Verifies a RequestInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a ResourceInfo. */
        interface IResourceInfo {

            /** ResourceInfo resourceType */
            resourceType?: (string|null);

            /** ResourceInfo resourceName */
            resourceName?: (string|null);

            /** ResourceInfo owner */
            owner?: (string|null);

            /** ResourceInfo description */
            description?: (string|null);
        }

        /** Represents a ResourceInfo. */
        class ResourceInfo implements IResourceInfo {

            /**
             * Constructs a new ResourceInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IResourceInfo);

            /** ResourceInfo resourceType. */
            public resourceType: string;

            /** ResourceInfo resourceName. */
            public resourceName: string;

            /** ResourceInfo owner. */
            public owner: string;

            /** ResourceInfo description. */
            public description: string;

            /**
             * Creates a new ResourceInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResourceInfo instance
             */
            public static create(properties?: google.rpc.IResourceInfo): google.rpc.ResourceInfo;

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

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

            /**
             * Decodes a ResourceInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResourceInfo
             * @throws {Error} If the payload is 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.ResourceInfo;

            /**
             * Decodes a ResourceInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResourceInfo
             * @throws {Error} If the 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.ResourceInfo;

            /**
             * Verifies a ResourceInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a Help. */
        interface IHelp {

            /** Help links */
            links?: (google.rpc.Help.ILink[]|null);
        }

        /** Represents a Help. */
        class Help implements IHelp {

            /**
             * Constructs a new Help.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IHelp);

            /** Help links. */
            public links: google.rpc.Help.ILink[];

            /**
             * Creates a new Help instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Help instance
             */
            public static create(properties?: google.rpc.IHelp): google.rpc.Help;

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

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

            /**
             * Decodes a Help message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Help
             * @throws {Error} If the payload is 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.Help;

            /**
             * Decodes a Help message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Help
             * @throws {Error} If the 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.Help;

            /**
             * Verifies a Help message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        namespace Help {

            /** Properties of a Link. */
            interface ILink {

                /** Link description */
                description?: (string|null);

                /** Link url */
                url?: (string|null);
            }

            /** Represents a Link. */
            class Link implements ILink {

                /**
                 * Constructs a new Link.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.rpc.Help.ILink);

                /** Link description. */
                public description: string;

                /** Link url. */
                public url: string;

                /**
                 * Creates a new Link instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Link instance
                 */
                public static create(properties?: google.rpc.Help.ILink): google.rpc.Help.Link;

                /**
                 * Encodes the specified Link message. Does not implicitly {@link google.rpc.Help.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: google.rpc.Help.ILink, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Link message, length delimited. Does not implicitly {@link google.rpc.Help.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: google.rpc.Help.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): google.rpc.Help.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)): google.rpc.Help.Link;

                /**
                 * Verifies a Link message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a 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 }): google.rpc.Help.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: google.rpc.Help.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 LocalizedMessage. */
        interface ILocalizedMessage {

            /** LocalizedMessage locale */
            locale?: (string|null);

            /** LocalizedMessage message */
            message?: (string|null);
        }

        /** Represents a LocalizedMessage. */
        class LocalizedMessage implements ILocalizedMessage {

            /**
             * Constructs a new LocalizedMessage.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.ILocalizedMessage);

            /** LocalizedMessage locale. */
            public locale: string;

            /** LocalizedMessage message. */
            public message: string;

            /**
             * Creates a new LocalizedMessage instance using the specified properties.
             * @param [properties] Properties to set
             * @returns LocalizedMessage instance
             */
            public static create(properties?: google.rpc.ILocalizedMessage): google.rpc.LocalizedMessage;

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

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

            /**
             * Decodes a LocalizedMessage message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns LocalizedMessage
             * @throws {Error} If the payload is 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.LocalizedMessage;

            /**
             * Decodes a LocalizedMessage message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns LocalizedMessage
             * @throws {Error} If the 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.LocalizedMessage;

            /**
             * Verifies a LocalizedMessage message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

        /** Properties of a Status. */
        interface IStatus {

            /** Status code */
            code?: (number|null);

            /** Status message */
            message?: (string|null);

            /** Status details */
            details?: (google.protobuf.IAny[]|null);
        }

        /** Represents a Status. */
        class Status implements IStatus {

            /**
             * Constructs a new Status.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.rpc.IStatus);

            /** Status code. */
            public code: number;

            /** Status message. */
            public message: string;

            /** Status details. */
            public details: google.protobuf.IAny[];

            /**
             * Creates a new Status instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Status instance
             */
            public static create(properties?: google.rpc.IStatus): google.rpc.Status;

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

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

            /**
             * Decodes a Status message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Status
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.rpc.Status;

            /**
             * Decodes a Status message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Status
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.rpc.Status;

            /**
             * Verifies a Status message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

    /** Namespace spanner. */
    namespace spanner {

        /** Namespace admin. */
        namespace admin {

            /** Namespace database. */
            namespace database {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of a Backup. */
                    interface IBackup {

                        /** Backup database */
                        database?: (string|null);

                        /** Backup versionTime */
                        versionTime?: (google.protobuf.ITimestamp|null);

                        /** Backup expireTime */
                        expireTime?: (google.protobuf.ITimestamp|null);

                        /** Backup name */
                        name?: (string|null);

                        /** Backup createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** Backup sizeBytes */
                        sizeBytes?: (number|Long|string|null);

                        /** Backup freeableSizeBytes */
                        freeableSizeBytes?: (number|Long|string|null);

                        /** Backup exclusiveSizeBytes */
                        exclusiveSizeBytes?: (number|Long|string|null);

                        /** Backup state */
                        state?: (google.spanner.admin.database.v1.Backup.State|keyof typeof google.spanner.admin.database.v1.Backup.State|null);

                        /** Backup referencingDatabases */
                        referencingDatabases?: (string[]|null);

                        /** Backup encryptionInfo */
                        encryptionInfo?: (google.spanner.admin.database.v1.IEncryptionInfo|null);

                        /** Backup encryptionInformation */
                        encryptionInformation?: (google.spanner.admin.database.v1.IEncryptionInfo[]|null);

                        /** Backup databaseDialect */
                        databaseDialect?: (google.spanner.admin.database.v1.DatabaseDialect|keyof typeof google.spanner.admin.database.v1.DatabaseDialect|null);

                        /** Backup referencingBackups */
                        referencingBackups?: (string[]|null);

                        /** Backup maxExpireTime */
                        maxExpireTime?: (google.protobuf.ITimestamp|null);

                        /** Backup backupSchedules */
                        backupSchedules?: (string[]|null);

                        /** Backup incrementalBackupChainId */
                        incrementalBackupChainId?: (string|null);

                        /** Backup oldestVersionTime */
                        oldestVersionTime?: (google.protobuf.ITimestamp|null);

                        /** Backup instancePartitions */
                        instancePartitions?: (google.spanner.admin.database.v1.IBackupInstancePartition[]|null);
                    }

                    /** Represents a Backup. */
                    class Backup implements IBackup {

                        /**
                         * Constructs a new Backup.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IBackup);

                        /** Backup database. */
                        public database: string;

                        /** Backup versionTime. */
                        public versionTime?: (google.protobuf.ITimestamp|null);

                        /** Backup expireTime. */
                        public expireTime?: (google.protobuf.ITimestamp|null);

                        /** Backup name. */
                        public name: string;

                        /** Backup createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** Backup sizeBytes. */
                        public sizeBytes: (number|Long|string);

                        /** Backup freeableSizeBytes. */
                        public freeableSizeBytes: (number|Long|string);

                        /** Backup exclusiveSizeBytes. */
                        public exclusiveSizeBytes: (number|Long|string);

                        /** Backup state. */
                        public state: (google.spanner.admin.database.v1.Backup.State|keyof typeof google.spanner.admin.database.v1.Backup.State);

                        /** Backup referencingDatabases. */
                        public referencingDatabases: string[];

                        /** Backup encryptionInfo. */
                        public encryptionInfo?: (google.spanner.admin.database.v1.IEncryptionInfo|null);

                        /** Backup encryptionInformation. */
                        public encryptionInformation: google.spanner.admin.database.v1.IEncryptionInfo[];

                        /** Backup databaseDialect. */
                        public databaseDialect: (google.spanner.admin.database.v1.DatabaseDialect|keyof typeof google.spanner.admin.database.v1.DatabaseDialect);

                        /** Backup referencingBackups. */
                        public referencingBackups: string[];

                        /** Backup maxExpireTime. */
                        public maxExpireTime?: (google.protobuf.ITimestamp|null);

                        /** Backup backupSchedules. */
                        public backupSchedules: string[];

                        /** Backup incrementalBackupChainId. */
                        public incrementalBackupChainId: string;

                        /** Backup oldestVersionTime. */
                        public oldestVersionTime?: (google.protobuf.ITimestamp|null);

                        /** Backup instancePartitions. */
                        public instancePartitions: google.spanner.admin.database.v1.IBackupInstancePartition[];

                        /**
                         * Creates a new Backup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Backup instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IBackup): google.spanner.admin.database.v1.Backup;

                        /**
                         * Encodes the specified Backup message. Does not implicitly {@link google.spanner.admin.database.v1.Backup.verify|verify} messages.
                         * @param message Backup message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IBackup, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a Backup message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Backup
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.Backup;

                        /**
                         * Decodes a Backup message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Backup
                         * @throws {Error} If the 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.spanner.admin.database.v1.Backup;

                        /**
                         * Verifies a Backup message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace Backup {

                        /** State enum. */
                        enum State {
                            STATE_UNSPECIFIED = 0,
                            CREATING = 1,
                            READY = 2
                        }
                    }

                    /** Properties of a CreateBackupRequest. */
                    interface ICreateBackupRequest {

                        /** CreateBackupRequest parent */
                        parent?: (string|null);

                        /** CreateBackupRequest backupId */
                        backupId?: (string|null);

                        /** CreateBackupRequest backup */
                        backup?: (google.spanner.admin.database.v1.IBackup|null);

                        /** CreateBackupRequest encryptionConfig */
                        encryptionConfig?: (google.spanner.admin.database.v1.ICreateBackupEncryptionConfig|null);
                    }

                    /** Represents a CreateBackupRequest. */
                    class CreateBackupRequest implements ICreateBackupRequest {

                        /**
                         * Constructs a new CreateBackupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICreateBackupRequest);

                        /** CreateBackupRequest parent. */
                        public parent: string;

                        /** CreateBackupRequest backupId. */
                        public backupId: string;

                        /** CreateBackupRequest backup. */
                        public backup?: (google.spanner.admin.database.v1.IBackup|null);

                        /** CreateBackupRequest encryptionConfig. */
                        public encryptionConfig?: (google.spanner.admin.database.v1.ICreateBackupEncryptionConfig|null);

                        /**
                         * Creates a new CreateBackupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateBackupRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICreateBackupRequest): google.spanner.admin.database.v1.CreateBackupRequest;

                        /**
                         * Encodes the specified CreateBackupRequest message. Does not implicitly {@link google.spanner.admin.database.v1.CreateBackupRequest.verify|verify} messages.
                         * @param message CreateBackupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICreateBackupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateBackupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateBackupRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CreateBackupRequest;

                        /**
                         * Decodes a CreateBackupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateBackupRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.CreateBackupRequest;

                        /**
                         * Verifies a CreateBackupRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateBackupMetadata. */
                    interface ICreateBackupMetadata {

                        /** CreateBackupMetadata name */
                        name?: (string|null);

                        /** CreateBackupMetadata database */
                        database?: (string|null);

                        /** CreateBackupMetadata progress */
                        progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** CreateBackupMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a CreateBackupMetadata. */
                    class CreateBackupMetadata implements ICreateBackupMetadata {

                        /**
                         * Constructs a new CreateBackupMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICreateBackupMetadata);

                        /** CreateBackupMetadata name. */
                        public name: string;

                        /** CreateBackupMetadata database. */
                        public database: string;

                        /** CreateBackupMetadata progress. */
                        public progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** CreateBackupMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new CreateBackupMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateBackupMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICreateBackupMetadata): google.spanner.admin.database.v1.CreateBackupMetadata;

                        /**
                         * Encodes the specified CreateBackupMetadata message. Does not implicitly {@link google.spanner.admin.database.v1.CreateBackupMetadata.verify|verify} messages.
                         * @param message CreateBackupMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICreateBackupMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateBackupMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateBackupMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CreateBackupMetadata;

                        /**
                         * Decodes a CreateBackupMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateBackupMetadata
                         * @throws {Error} If the 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.spanner.admin.database.v1.CreateBackupMetadata;

                        /**
                         * Verifies a CreateBackupMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CopyBackupRequest. */
                    interface ICopyBackupRequest {

                        /** CopyBackupRequest parent */
                        parent?: (string|null);

                        /** CopyBackupRequest backupId */
                        backupId?: (string|null);

                        /** CopyBackupRequest sourceBackup */
                        sourceBackup?: (string|null);

                        /** CopyBackupRequest expireTime */
                        expireTime?: (google.protobuf.ITimestamp|null);

                        /** CopyBackupRequest encryptionConfig */
                        encryptionConfig?: (google.spanner.admin.database.v1.ICopyBackupEncryptionConfig|null);
                    }

                    /** Represents a CopyBackupRequest. */
                    class CopyBackupRequest implements ICopyBackupRequest {

                        /**
                         * Constructs a new CopyBackupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICopyBackupRequest);

                        /** CopyBackupRequest parent. */
                        public parent: string;

                        /** CopyBackupRequest backupId. */
                        public backupId: string;

                        /** CopyBackupRequest sourceBackup. */
                        public sourceBackup: string;

                        /** CopyBackupRequest expireTime. */
                        public expireTime?: (google.protobuf.ITimestamp|null);

                        /** CopyBackupRequest encryptionConfig. */
                        public encryptionConfig?: (google.spanner.admin.database.v1.ICopyBackupEncryptionConfig|null);

                        /**
                         * Creates a new CopyBackupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CopyBackupRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICopyBackupRequest): google.spanner.admin.database.v1.CopyBackupRequest;

                        /**
                         * Encodes the specified CopyBackupRequest message. Does not implicitly {@link google.spanner.admin.database.v1.CopyBackupRequest.verify|verify} messages.
                         * @param message CopyBackupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICopyBackupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CopyBackupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CopyBackupRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CopyBackupRequest;

                        /**
                         * Decodes a CopyBackupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CopyBackupRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.CopyBackupRequest;

                        /**
                         * Verifies a CopyBackupRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CopyBackupMetadata. */
                    interface ICopyBackupMetadata {

                        /** CopyBackupMetadata name */
                        name?: (string|null);

                        /** CopyBackupMetadata sourceBackup */
                        sourceBackup?: (string|null);

                        /** CopyBackupMetadata progress */
                        progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** CopyBackupMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a CopyBackupMetadata. */
                    class CopyBackupMetadata implements ICopyBackupMetadata {

                        /**
                         * Constructs a new CopyBackupMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICopyBackupMetadata);

                        /** CopyBackupMetadata name. */
                        public name: string;

                        /** CopyBackupMetadata sourceBackup. */
                        public sourceBackup: string;

                        /** CopyBackupMetadata progress. */
                        public progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** CopyBackupMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new CopyBackupMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CopyBackupMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICopyBackupMetadata): google.spanner.admin.database.v1.CopyBackupMetadata;

                        /**
                         * Encodes the specified CopyBackupMetadata message. Does not implicitly {@link google.spanner.admin.database.v1.CopyBackupMetadata.verify|verify} messages.
                         * @param message CopyBackupMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICopyBackupMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CopyBackupMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CopyBackupMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CopyBackupMetadata;

                        /**
                         * Decodes a CopyBackupMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CopyBackupMetadata
                         * @throws {Error} If the 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.spanner.admin.database.v1.CopyBackupMetadata;

                        /**
                         * Verifies a CopyBackupMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateBackupRequest. */
                    interface IUpdateBackupRequest {

                        /** UpdateBackupRequest backup */
                        backup?: (google.spanner.admin.database.v1.IBackup|null);

                        /** UpdateBackupRequest updateMask */
                        updateMask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents an UpdateBackupRequest. */
                    class UpdateBackupRequest implements IUpdateBackupRequest {

                        /**
                         * Constructs a new UpdateBackupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IUpdateBackupRequest);

                        /** UpdateBackupRequest backup. */
                        public backup?: (google.spanner.admin.database.v1.IBackup|null);

                        /** UpdateBackupRequest updateMask. */
                        public updateMask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new UpdateBackupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateBackupRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IUpdateBackupRequest): google.spanner.admin.database.v1.UpdateBackupRequest;

                        /**
                         * Encodes the specified UpdateBackupRequest message. Does not implicitly {@link google.spanner.admin.database.v1.UpdateBackupRequest.verify|verify} messages.
                         * @param message UpdateBackupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IUpdateBackupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateBackupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateBackupRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.UpdateBackupRequest;

                        /**
                         * Decodes an UpdateBackupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateBackupRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.UpdateBackupRequest;

                        /**
                         * Verifies an UpdateBackupRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetBackupRequest. */
                    interface IGetBackupRequest {

                        /** GetBackupRequest name */
                        name?: (string|null);
                    }

                    /** Represents a GetBackupRequest. */
                    class GetBackupRequest implements IGetBackupRequest {

                        /**
                         * Constructs a new GetBackupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IGetBackupRequest);

                        /** GetBackupRequest name. */
                        public name: string;

                        /**
                         * Creates a new GetBackupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBackupRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IGetBackupRequest): google.spanner.admin.database.v1.GetBackupRequest;

                        /**
                         * Encodes the specified GetBackupRequest message. Does not implicitly {@link google.spanner.admin.database.v1.GetBackupRequest.verify|verify} messages.
                         * @param message GetBackupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IGetBackupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetBackupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetBackupRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.GetBackupRequest;

                        /**
                         * Decodes a GetBackupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBackupRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.GetBackupRequest;

                        /**
                         * Verifies a GetBackupRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a DeleteBackupRequest. */
                    interface IDeleteBackupRequest {

                        /** DeleteBackupRequest name */
                        name?: (string|null);
                    }

                    /** Represents a DeleteBackupRequest. */
                    class DeleteBackupRequest implements IDeleteBackupRequest {

                        /**
                         * Constructs a new DeleteBackupRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IDeleteBackupRequest);

                        /** DeleteBackupRequest name. */
                        public name: string;

                        /**
                         * Creates a new DeleteBackupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteBackupRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IDeleteBackupRequest): google.spanner.admin.database.v1.DeleteBackupRequest;

                        /**
                         * Encodes the specified DeleteBackupRequest message. Does not implicitly {@link google.spanner.admin.database.v1.DeleteBackupRequest.verify|verify} messages.
                         * @param message DeleteBackupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IDeleteBackupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DeleteBackupRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteBackupRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.DeleteBackupRequest;

                        /**
                         * Decodes a DeleteBackupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteBackupRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.DeleteBackupRequest;

                        /**
                         * Verifies a DeleteBackupRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListBackupsRequest. */
                    interface IListBackupsRequest {

                        /** ListBackupsRequest parent */
                        parent?: (string|null);

                        /** ListBackupsRequest filter */
                        filter?: (string|null);

                        /** ListBackupsRequest pageSize */
                        pageSize?: (number|null);

                        /** ListBackupsRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListBackupsRequest. */
                    class ListBackupsRequest implements IListBackupsRequest {

                        /**
                         * Constructs a new ListBackupsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListBackupsRequest);

                        /** ListBackupsRequest parent. */
                        public parent: string;

                        /** ListBackupsRequest filter. */
                        public filter: string;

                        /** ListBackupsRequest pageSize. */
                        public pageSize: number;

                        /** ListBackupsRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListBackupsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBackupsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListBackupsRequest): google.spanner.admin.database.v1.ListBackupsRequest;

                        /**
                         * Encodes the specified ListBackupsRequest message. Does not implicitly {@link google.spanner.admin.database.v1.ListBackupsRequest.verify|verify} messages.
                         * @param message ListBackupsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListBackupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListBackupsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBackupsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListBackupsRequest;

                        /**
                         * Decodes a ListBackupsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBackupsRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListBackupsRequest;

                        /**
                         * Verifies a ListBackupsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListBackupsResponse. */
                    interface IListBackupsResponse {

                        /** ListBackupsResponse backups */
                        backups?: (google.spanner.admin.database.v1.IBackup[]|null);

                        /** ListBackupsResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListBackupsResponse. */
                    class ListBackupsResponse implements IListBackupsResponse {

                        /**
                         * Constructs a new ListBackupsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListBackupsResponse);

                        /** ListBackupsResponse backups. */
                        public backups: google.spanner.admin.database.v1.IBackup[];

                        /** ListBackupsResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListBackupsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBackupsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListBackupsResponse): google.spanner.admin.database.v1.ListBackupsResponse;

                        /**
                         * Encodes the specified ListBackupsResponse message. Does not implicitly {@link google.spanner.admin.database.v1.ListBackupsResponse.verify|verify} messages.
                         * @param message ListBackupsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListBackupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListBackupsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBackupsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListBackupsResponse;

                        /**
                         * Decodes a ListBackupsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBackupsResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListBackupsResponse;

                        /**
                         * Verifies a ListBackupsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListBackupOperationsRequest. */
                    interface IListBackupOperationsRequest {

                        /** ListBackupOperationsRequest parent */
                        parent?: (string|null);

                        /** ListBackupOperationsRequest filter */
                        filter?: (string|null);

                        /** ListBackupOperationsRequest pageSize */
                        pageSize?: (number|null);

                        /** ListBackupOperationsRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListBackupOperationsRequest. */
                    class ListBackupOperationsRequest implements IListBackupOperationsRequest {

                        /**
                         * Constructs a new ListBackupOperationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListBackupOperationsRequest);

                        /** ListBackupOperationsRequest parent. */
                        public parent: string;

                        /** ListBackupOperationsRequest filter. */
                        public filter: string;

                        /** ListBackupOperationsRequest pageSize. */
                        public pageSize: number;

                        /** ListBackupOperationsRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListBackupOperationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBackupOperationsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListBackupOperationsRequest): google.spanner.admin.database.v1.ListBackupOperationsRequest;

                        /**
                         * Encodes the specified ListBackupOperationsRequest message. Does not implicitly {@link google.spanner.admin.database.v1.ListBackupOperationsRequest.verify|verify} messages.
                         * @param message ListBackupOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListBackupOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListBackupOperationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBackupOperationsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListBackupOperationsRequest;

                        /**
                         * Decodes a ListBackupOperationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBackupOperationsRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListBackupOperationsRequest;

                        /**
                         * Verifies a ListBackupOperationsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListBackupOperationsResponse. */
                    interface IListBackupOperationsResponse {

                        /** ListBackupOperationsResponse operations */
                        operations?: (google.longrunning.IOperation[]|null);

                        /** ListBackupOperationsResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListBackupOperationsResponse. */
                    class ListBackupOperationsResponse implements IListBackupOperationsResponse {

                        /**
                         * Constructs a new ListBackupOperationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListBackupOperationsResponse);

                        /** ListBackupOperationsResponse operations. */
                        public operations: google.longrunning.IOperation[];

                        /** ListBackupOperationsResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListBackupOperationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBackupOperationsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListBackupOperationsResponse): google.spanner.admin.database.v1.ListBackupOperationsResponse;

                        /**
                         * Encodes the specified ListBackupOperationsResponse message. Does not implicitly {@link google.spanner.admin.database.v1.ListBackupOperationsResponse.verify|verify} messages.
                         * @param message ListBackupOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListBackupOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListBackupOperationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBackupOperationsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListBackupOperationsResponse;

                        /**
                         * Decodes a ListBackupOperationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBackupOperationsResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListBackupOperationsResponse;

                        /**
                         * Verifies a ListBackupOperationsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a BackupInfo. */
                    interface IBackupInfo {

                        /** BackupInfo backup */
                        backup?: (string|null);

                        /** BackupInfo versionTime */
                        versionTime?: (google.protobuf.ITimestamp|null);

                        /** BackupInfo createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** BackupInfo sourceDatabase */
                        sourceDatabase?: (string|null);
                    }

                    /** Represents a BackupInfo. */
                    class BackupInfo implements IBackupInfo {

                        /**
                         * Constructs a new BackupInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IBackupInfo);

                        /** BackupInfo backup. */
                        public backup: string;

                        /** BackupInfo versionTime. */
                        public versionTime?: (google.protobuf.ITimestamp|null);

                        /** BackupInfo createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** BackupInfo sourceDatabase. */
                        public sourceDatabase: string;

                        /**
                         * Creates a new BackupInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BackupInfo instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IBackupInfo): google.spanner.admin.database.v1.BackupInfo;

                        /**
                         * Encodes the specified BackupInfo message. Does not implicitly {@link google.spanner.admin.database.v1.BackupInfo.verify|verify} messages.
                         * @param message BackupInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IBackupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a BackupInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BackupInfo
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.BackupInfo;

                        /**
                         * Decodes a BackupInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BackupInfo
                         * @throws {Error} If the 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.spanner.admin.database.v1.BackupInfo;

                        /**
                         * Verifies a BackupInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateBackupEncryptionConfig. */
                    interface ICreateBackupEncryptionConfig {

                        /** CreateBackupEncryptionConfig encryptionType */
                        encryptionType?: (google.spanner.admin.database.v1.CreateBackupEncryptionConfig.EncryptionType|keyof typeof google.spanner.admin.database.v1.CreateBackupEncryptionConfig.EncryptionType|null);

                        /** CreateBackupEncryptionConfig kmsKeyName */
                        kmsKeyName?: (string|null);

                        /** CreateBackupEncryptionConfig kmsKeyNames */
                        kmsKeyNames?: (string[]|null);
                    }

                    /** Represents a CreateBackupEncryptionConfig. */
                    class CreateBackupEncryptionConfig implements ICreateBackupEncryptionConfig {

                        /**
                         * Constructs a new CreateBackupEncryptionConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICreateBackupEncryptionConfig);

                        /** CreateBackupEncryptionConfig encryptionType. */
                        public encryptionType: (google.spanner.admin.database.v1.CreateBackupEncryptionConfig.EncryptionType|keyof typeof google.spanner.admin.database.v1.CreateBackupEncryptionConfig.EncryptionType);

                        /** CreateBackupEncryptionConfig kmsKeyName. */
                        public kmsKeyName: string;

                        /** CreateBackupEncryptionConfig kmsKeyNames. */
                        public kmsKeyNames: string[];

                        /**
                         * Creates a new CreateBackupEncryptionConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateBackupEncryptionConfig instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICreateBackupEncryptionConfig): google.spanner.admin.database.v1.CreateBackupEncryptionConfig;

                        /**
                         * Encodes the specified CreateBackupEncryptionConfig message. Does not implicitly {@link google.spanner.admin.database.v1.CreateBackupEncryptionConfig.verify|verify} messages.
                         * @param message CreateBackupEncryptionConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICreateBackupEncryptionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateBackupEncryptionConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateBackupEncryptionConfig
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CreateBackupEncryptionConfig;

                        /**
                         * Decodes a CreateBackupEncryptionConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateBackupEncryptionConfig
                         * @throws {Error} If the 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.spanner.admin.database.v1.CreateBackupEncryptionConfig;

                        /**
                         * Verifies a CreateBackupEncryptionConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace CreateBackupEncryptionConfig {

                        /** EncryptionType enum. */
                        enum EncryptionType {
                            ENCRYPTION_TYPE_UNSPECIFIED = 0,
                            USE_DATABASE_ENCRYPTION = 1,
                            GOOGLE_DEFAULT_ENCRYPTION = 2,
                            CUSTOMER_MANAGED_ENCRYPTION = 3
                        }
                    }

                    /** Properties of a CopyBackupEncryptionConfig. */
                    interface ICopyBackupEncryptionConfig {

                        /** CopyBackupEncryptionConfig encryptionType */
                        encryptionType?: (google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType|keyof typeof google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType|null);

                        /** CopyBackupEncryptionConfig kmsKeyName */
                        kmsKeyName?: (string|null);

                        /** CopyBackupEncryptionConfig kmsKeyNames */
                        kmsKeyNames?: (string[]|null);
                    }

                    /** Represents a CopyBackupEncryptionConfig. */
                    class CopyBackupEncryptionConfig implements ICopyBackupEncryptionConfig {

                        /**
                         * Constructs a new CopyBackupEncryptionConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICopyBackupEncryptionConfig);

                        /** CopyBackupEncryptionConfig encryptionType. */
                        public encryptionType: (google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType|keyof typeof google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType);

                        /** CopyBackupEncryptionConfig kmsKeyName. */
                        public kmsKeyName: string;

                        /** CopyBackupEncryptionConfig kmsKeyNames. */
                        public kmsKeyNames: string[];

                        /**
                         * Creates a new CopyBackupEncryptionConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CopyBackupEncryptionConfig instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICopyBackupEncryptionConfig): google.spanner.admin.database.v1.CopyBackupEncryptionConfig;

                        /**
                         * Encodes the specified CopyBackupEncryptionConfig message. Does not implicitly {@link google.spanner.admin.database.v1.CopyBackupEncryptionConfig.verify|verify} messages.
                         * @param message CopyBackupEncryptionConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICopyBackupEncryptionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CopyBackupEncryptionConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CopyBackupEncryptionConfig
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CopyBackupEncryptionConfig;

                        /**
                         * Decodes a CopyBackupEncryptionConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CopyBackupEncryptionConfig
                         * @throws {Error} If the 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.spanner.admin.database.v1.CopyBackupEncryptionConfig;

                        /**
                         * Verifies a CopyBackupEncryptionConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace CopyBackupEncryptionConfig {

                        /** EncryptionType enum. */
                        enum EncryptionType {
                            ENCRYPTION_TYPE_UNSPECIFIED = 0,
                            USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION = 1,
                            GOOGLE_DEFAULT_ENCRYPTION = 2,
                            CUSTOMER_MANAGED_ENCRYPTION = 3
                        }
                    }

                    /** Properties of a FullBackupSpec. */
                    interface IFullBackupSpec {
                    }

                    /** Represents a FullBackupSpec. */
                    class FullBackupSpec implements IFullBackupSpec {

                        /**
                         * Constructs a new FullBackupSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IFullBackupSpec);

                        /**
                         * Creates a new FullBackupSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FullBackupSpec instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IFullBackupSpec): google.spanner.admin.database.v1.FullBackupSpec;

                        /**
                         * Encodes the specified FullBackupSpec message. Does not implicitly {@link google.spanner.admin.database.v1.FullBackupSpec.verify|verify} messages.
                         * @param message FullBackupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IFullBackupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a FullBackupSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FullBackupSpec
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.FullBackupSpec;

                        /**
                         * Decodes a FullBackupSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FullBackupSpec
                         * @throws {Error} If the 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.spanner.admin.database.v1.FullBackupSpec;

                        /**
                         * Verifies a FullBackupSpec message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an IncrementalBackupSpec. */
                    interface IIncrementalBackupSpec {
                    }

                    /** Represents an IncrementalBackupSpec. */
                    class IncrementalBackupSpec implements IIncrementalBackupSpec {

                        /**
                         * Constructs a new IncrementalBackupSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IIncrementalBackupSpec);

                        /**
                         * Creates a new IncrementalBackupSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IncrementalBackupSpec instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IIncrementalBackupSpec): google.spanner.admin.database.v1.IncrementalBackupSpec;

                        /**
                         * Encodes the specified IncrementalBackupSpec message. Does not implicitly {@link google.spanner.admin.database.v1.IncrementalBackupSpec.verify|verify} messages.
                         * @param message IncrementalBackupSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IIncrementalBackupSpec, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an IncrementalBackupSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IncrementalBackupSpec
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.IncrementalBackupSpec;

                        /**
                         * Decodes an IncrementalBackupSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IncrementalBackupSpec
                         * @throws {Error} If the 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.spanner.admin.database.v1.IncrementalBackupSpec;

                        /**
                         * Verifies an IncrementalBackupSpec message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a BackupInstancePartition. */
                    interface IBackupInstancePartition {

                        /** BackupInstancePartition instancePartition */
                        instancePartition?: (string|null);
                    }

                    /** Represents a BackupInstancePartition. */
                    class BackupInstancePartition implements IBackupInstancePartition {

                        /**
                         * Constructs a new BackupInstancePartition.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IBackupInstancePartition);

                        /** BackupInstancePartition instancePartition. */
                        public instancePartition: string;

                        /**
                         * Creates a new BackupInstancePartition instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BackupInstancePartition instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IBackupInstancePartition): google.spanner.admin.database.v1.BackupInstancePartition;

                        /**
                         * Encodes the specified BackupInstancePartition message. Does not implicitly {@link google.spanner.admin.database.v1.BackupInstancePartition.verify|verify} messages.
                         * @param message BackupInstancePartition message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IBackupInstancePartition, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a BackupInstancePartition message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BackupInstancePartition
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.BackupInstancePartition;

                        /**
                         * Decodes a BackupInstancePartition message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BackupInstancePartition
                         * @throws {Error} If the 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.spanner.admin.database.v1.BackupInstancePartition;

                        /**
                         * Verifies a BackupInstancePartition message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an OperationProgress. */
                    interface IOperationProgress {

                        /** OperationProgress progressPercent */
                        progressPercent?: (number|null);

                        /** OperationProgress startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** OperationProgress endTime */
                        endTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an OperationProgress. */
                    class OperationProgress implements IOperationProgress {

                        /**
                         * Constructs a new OperationProgress.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IOperationProgress);

                        /** OperationProgress progressPercent. */
                        public progressPercent: number;

                        /** OperationProgress startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** OperationProgress endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new OperationProgress instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperationProgress instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IOperationProgress): google.spanner.admin.database.v1.OperationProgress;

                        /**
                         * Encodes the specified OperationProgress message. Does not implicitly {@link google.spanner.admin.database.v1.OperationProgress.verify|verify} messages.
                         * @param message OperationProgress message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IOperationProgress, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an OperationProgress message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperationProgress
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.OperationProgress;

                        /**
                         * Decodes an OperationProgress message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperationProgress
                         * @throws {Error} If the 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.spanner.admin.database.v1.OperationProgress;

                        /**
                         * Verifies an OperationProgress message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an EncryptionConfig. */
                    interface IEncryptionConfig {

                        /** EncryptionConfig kmsKeyName */
                        kmsKeyName?: (string|null);

                        /** EncryptionConfig kmsKeyNames */
                        kmsKeyNames?: (string[]|null);
                    }

                    /** Represents an EncryptionConfig. */
                    class EncryptionConfig implements IEncryptionConfig {

                        /**
                         * Constructs a new EncryptionConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IEncryptionConfig);

                        /** EncryptionConfig kmsKeyName. */
                        public kmsKeyName: string;

                        /** EncryptionConfig kmsKeyNames. */
                        public kmsKeyNames: string[];

                        /**
                         * Creates a new EncryptionConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EncryptionConfig instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IEncryptionConfig): google.spanner.admin.database.v1.EncryptionConfig;

                        /**
                         * Encodes the specified EncryptionConfig message. Does not implicitly {@link google.spanner.admin.database.v1.EncryptionConfig.verify|verify} messages.
                         * @param message EncryptionConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IEncryptionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an EncryptionConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EncryptionConfig
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.EncryptionConfig;

                        /**
                         * Decodes an EncryptionConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EncryptionConfig
                         * @throws {Error} If the 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.spanner.admin.database.v1.EncryptionConfig;

                        /**
                         * Verifies an EncryptionConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an EncryptionInfo. */
                    interface IEncryptionInfo {

                        /** EncryptionInfo encryptionType */
                        encryptionType?: (google.spanner.admin.database.v1.EncryptionInfo.Type|keyof typeof google.spanner.admin.database.v1.EncryptionInfo.Type|null);

                        /** EncryptionInfo encryptionStatus */
                        encryptionStatus?: (google.rpc.IStatus|null);

                        /** EncryptionInfo kmsKeyVersion */
                        kmsKeyVersion?: (string|null);
                    }

                    /** Represents an EncryptionInfo. */
                    class EncryptionInfo implements IEncryptionInfo {

                        /**
                         * Constructs a new EncryptionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IEncryptionInfo);

                        /** EncryptionInfo encryptionType. */
                        public encryptionType: (google.spanner.admin.database.v1.EncryptionInfo.Type|keyof typeof google.spanner.admin.database.v1.EncryptionInfo.Type);

                        /** EncryptionInfo encryptionStatus. */
                        public encryptionStatus?: (google.rpc.IStatus|null);

                        /** EncryptionInfo kmsKeyVersion. */
                        public kmsKeyVersion: string;

                        /**
                         * Creates a new EncryptionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EncryptionInfo instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IEncryptionInfo): google.spanner.admin.database.v1.EncryptionInfo;

                        /**
                         * Encodes the specified EncryptionInfo message. Does not implicitly {@link google.spanner.admin.database.v1.EncryptionInfo.verify|verify} messages.
                         * @param message EncryptionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IEncryptionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an EncryptionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns EncryptionInfo
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.EncryptionInfo;

                        /**
                         * Decodes an EncryptionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EncryptionInfo
                         * @throws {Error} If the 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.spanner.admin.database.v1.EncryptionInfo;

                        /**
                         * Verifies an EncryptionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace EncryptionInfo {

                        /** Type enum. */
                        enum Type {
                            TYPE_UNSPECIFIED = 0,
                            GOOGLE_DEFAULT_ENCRYPTION = 1,
                            CUSTOMER_MANAGED_ENCRYPTION = 2
                        }
                    }

                    /** DatabaseDialect enum. */
                    enum DatabaseDialect {
                        DATABASE_DIALECT_UNSPECIFIED = 0,
                        GOOGLE_STANDARD_SQL = 1,
                        POSTGRESQL = 2
                    }

                    /** Properties of a BackupScheduleSpec. */
                    interface IBackupScheduleSpec {

                        /** BackupScheduleSpec cronSpec */
                        cronSpec?: (google.spanner.admin.database.v1.ICrontabSpec|null);
                    }

                    /** Represents a BackupScheduleSpec. */
                    class BackupScheduleSpec implements IBackupScheduleSpec {

                        /**
                         * Constructs a new BackupScheduleSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IBackupScheduleSpec);

                        /** BackupScheduleSpec cronSpec. */
                        public cronSpec?: (google.spanner.admin.database.v1.ICrontabSpec|null);

                        /** BackupScheduleSpec scheduleSpec. */
                        public scheduleSpec?: "cronSpec";

                        /**
                         * Creates a new BackupScheduleSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BackupScheduleSpec instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IBackupScheduleSpec): google.spanner.admin.database.v1.BackupScheduleSpec;

                        /**
                         * Encodes the specified BackupScheduleSpec message. Does not implicitly {@link google.spanner.admin.database.v1.BackupScheduleSpec.verify|verify} messages.
                         * @param message BackupScheduleSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IBackupScheduleSpec, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a BackupScheduleSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BackupScheduleSpec
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.BackupScheduleSpec;

                        /**
                         * Decodes a BackupScheduleSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BackupScheduleSpec
                         * @throws {Error} If the 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.spanner.admin.database.v1.BackupScheduleSpec;

                        /**
                         * Verifies a BackupScheduleSpec message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a BackupSchedule. */
                    interface IBackupSchedule {

                        /** BackupSchedule name */
                        name?: (string|null);

                        /** BackupSchedule spec */
                        spec?: (google.spanner.admin.database.v1.IBackupScheduleSpec|null);

                        /** BackupSchedule retentionDuration */
                        retentionDuration?: (google.protobuf.IDuration|null);

                        /** BackupSchedule encryptionConfig */
                        encryptionConfig?: (google.spanner.admin.database.v1.ICreateBackupEncryptionConfig|null);

                        /** BackupSchedule fullBackupSpec */
                        fullBackupSpec?: (google.spanner.admin.database.v1.IFullBackupSpec|null);

                        /** BackupSchedule incrementalBackupSpec */
                        incrementalBackupSpec?: (google.spanner.admin.database.v1.IIncrementalBackupSpec|null);

                        /** BackupSchedule updateTime */
                        updateTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a BackupSchedule. */
                    class BackupSchedule implements IBackupSchedule {

                        /**
                         * Constructs a new BackupSchedule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IBackupSchedule);

                        /** BackupSchedule name. */
                        public name: string;

                        /** BackupSchedule spec. */
                        public spec?: (google.spanner.admin.database.v1.IBackupScheduleSpec|null);

                        /** BackupSchedule retentionDuration. */
                        public retentionDuration?: (google.protobuf.IDuration|null);

                        /** BackupSchedule encryptionConfig. */
                        public encryptionConfig?: (google.spanner.admin.database.v1.ICreateBackupEncryptionConfig|null);

                        /** BackupSchedule fullBackupSpec. */
                        public fullBackupSpec?: (google.spanner.admin.database.v1.IFullBackupSpec|null);

                        /** BackupSchedule incrementalBackupSpec. */
                        public incrementalBackupSpec?: (google.spanner.admin.database.v1.IIncrementalBackupSpec|null);

                        /** BackupSchedule updateTime. */
                        public updateTime?: (google.protobuf.ITimestamp|null);

                        /** BackupSchedule backupTypeSpec. */
                        public backupTypeSpec?: ("fullBackupSpec"|"incrementalBackupSpec");

                        /**
                         * Creates a new BackupSchedule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BackupSchedule instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IBackupSchedule): google.spanner.admin.database.v1.BackupSchedule;

                        /**
                         * Encodes the specified BackupSchedule message. Does not implicitly {@link google.spanner.admin.database.v1.BackupSchedule.verify|verify} messages.
                         * @param message BackupSchedule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IBackupSchedule, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a BackupSchedule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BackupSchedule
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.BackupSchedule;

                        /**
                         * Decodes a BackupSchedule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BackupSchedule
                         * @throws {Error} If the 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.spanner.admin.database.v1.BackupSchedule;

                        /**
                         * Verifies a BackupSchedule message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CrontabSpec. */
                    interface ICrontabSpec {

                        /** CrontabSpec text */
                        text?: (string|null);

                        /** CrontabSpec timeZone */
                        timeZone?: (string|null);

                        /** CrontabSpec creationWindow */
                        creationWindow?: (google.protobuf.IDuration|null);
                    }

                    /** Represents a CrontabSpec. */
                    class CrontabSpec implements ICrontabSpec {

                        /**
                         * Constructs a new CrontabSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICrontabSpec);

                        /** CrontabSpec text. */
                        public text: string;

                        /** CrontabSpec timeZone. */
                        public timeZone: string;

                        /** CrontabSpec creationWindow. */
                        public creationWindow?: (google.protobuf.IDuration|null);

                        /**
                         * Creates a new CrontabSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CrontabSpec instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICrontabSpec): google.spanner.admin.database.v1.CrontabSpec;

                        /**
                         * Encodes the specified CrontabSpec message. Does not implicitly {@link google.spanner.admin.database.v1.CrontabSpec.verify|verify} messages.
                         * @param message CrontabSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICrontabSpec, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CrontabSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CrontabSpec
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CrontabSpec;

                        /**
                         * Decodes a CrontabSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CrontabSpec
                         * @throws {Error} If the 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.spanner.admin.database.v1.CrontabSpec;

                        /**
                         * Verifies a CrontabSpec message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateBackupScheduleRequest. */
                    interface ICreateBackupScheduleRequest {

                        /** CreateBackupScheduleRequest parent */
                        parent?: (string|null);

                        /** CreateBackupScheduleRequest backupScheduleId */
                        backupScheduleId?: (string|null);

                        /** CreateBackupScheduleRequest backupSchedule */
                        backupSchedule?: (google.spanner.admin.database.v1.IBackupSchedule|null);
                    }

                    /** Represents a CreateBackupScheduleRequest. */
                    class CreateBackupScheduleRequest implements ICreateBackupScheduleRequest {

                        /**
                         * Constructs a new CreateBackupScheduleRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICreateBackupScheduleRequest);

                        /** CreateBackupScheduleRequest parent. */
                        public parent: string;

                        /** CreateBackupScheduleRequest backupScheduleId. */
                        public backupScheduleId: string;

                        /** CreateBackupScheduleRequest backupSchedule. */
                        public backupSchedule?: (google.spanner.admin.database.v1.IBackupSchedule|null);

                        /**
                         * Creates a new CreateBackupScheduleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateBackupScheduleRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICreateBackupScheduleRequest): google.spanner.admin.database.v1.CreateBackupScheduleRequest;

                        /**
                         * Encodes the specified CreateBackupScheduleRequest message. Does not implicitly {@link google.spanner.admin.database.v1.CreateBackupScheduleRequest.verify|verify} messages.
                         * @param message CreateBackupScheduleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICreateBackupScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateBackupScheduleRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateBackupScheduleRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CreateBackupScheduleRequest;

                        /**
                         * Decodes a CreateBackupScheduleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateBackupScheduleRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.CreateBackupScheduleRequest;

                        /**
                         * Verifies a CreateBackupScheduleRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetBackupScheduleRequest. */
                    interface IGetBackupScheduleRequest {

                        /** GetBackupScheduleRequest name */
                        name?: (string|null);
                    }

                    /** Represents a GetBackupScheduleRequest. */
                    class GetBackupScheduleRequest implements IGetBackupScheduleRequest {

                        /**
                         * Constructs a new GetBackupScheduleRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IGetBackupScheduleRequest);

                        /** GetBackupScheduleRequest name. */
                        public name: string;

                        /**
                         * Creates a new GetBackupScheduleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBackupScheduleRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IGetBackupScheduleRequest): google.spanner.admin.database.v1.GetBackupScheduleRequest;

                        /**
                         * Encodes the specified GetBackupScheduleRequest message. Does not implicitly {@link google.spanner.admin.database.v1.GetBackupScheduleRequest.verify|verify} messages.
                         * @param message GetBackupScheduleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IGetBackupScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetBackupScheduleRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetBackupScheduleRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.GetBackupScheduleRequest;

                        /**
                         * Decodes a GetBackupScheduleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBackupScheduleRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.GetBackupScheduleRequest;

                        /**
                         * Verifies a GetBackupScheduleRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a DeleteBackupScheduleRequest. */
                    interface IDeleteBackupScheduleRequest {

                        /** DeleteBackupScheduleRequest name */
                        name?: (string|null);
                    }

                    /** Represents a DeleteBackupScheduleRequest. */
                    class DeleteBackupScheduleRequest implements IDeleteBackupScheduleRequest {

                        /**
                         * Constructs a new DeleteBackupScheduleRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IDeleteBackupScheduleRequest);

                        /** DeleteBackupScheduleRequest name. */
                        public name: string;

                        /**
                         * Creates a new DeleteBackupScheduleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteBackupScheduleRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IDeleteBackupScheduleRequest): google.spanner.admin.database.v1.DeleteBackupScheduleRequest;

                        /**
                         * Encodes the specified DeleteBackupScheduleRequest message. Does not implicitly {@link google.spanner.admin.database.v1.DeleteBackupScheduleRequest.verify|verify} messages.
                         * @param message DeleteBackupScheduleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IDeleteBackupScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DeleteBackupScheduleRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteBackupScheduleRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.DeleteBackupScheduleRequest;

                        /**
                         * Decodes a DeleteBackupScheduleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteBackupScheduleRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.DeleteBackupScheduleRequest;

                        /**
                         * Verifies a DeleteBackupScheduleRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListBackupSchedulesRequest. */
                    interface IListBackupSchedulesRequest {

                        /** ListBackupSchedulesRequest parent */
                        parent?: (string|null);

                        /** ListBackupSchedulesRequest pageSize */
                        pageSize?: (number|null);

                        /** ListBackupSchedulesRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListBackupSchedulesRequest. */
                    class ListBackupSchedulesRequest implements IListBackupSchedulesRequest {

                        /**
                         * Constructs a new ListBackupSchedulesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListBackupSchedulesRequest);

                        /** ListBackupSchedulesRequest parent. */
                        public parent: string;

                        /** ListBackupSchedulesRequest pageSize. */
                        public pageSize: number;

                        /** ListBackupSchedulesRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListBackupSchedulesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBackupSchedulesRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListBackupSchedulesRequest): google.spanner.admin.database.v1.ListBackupSchedulesRequest;

                        /**
                         * Encodes the specified ListBackupSchedulesRequest message. Does not implicitly {@link google.spanner.admin.database.v1.ListBackupSchedulesRequest.verify|verify} messages.
                         * @param message ListBackupSchedulesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListBackupSchedulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListBackupSchedulesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBackupSchedulesRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListBackupSchedulesRequest;

                        /**
                         * Decodes a ListBackupSchedulesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBackupSchedulesRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListBackupSchedulesRequest;

                        /**
                         * Verifies a ListBackupSchedulesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListBackupSchedulesResponse. */
                    interface IListBackupSchedulesResponse {

                        /** ListBackupSchedulesResponse backupSchedules */
                        backupSchedules?: (google.spanner.admin.database.v1.IBackupSchedule[]|null);

                        /** ListBackupSchedulesResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListBackupSchedulesResponse. */
                    class ListBackupSchedulesResponse implements IListBackupSchedulesResponse {

                        /**
                         * Constructs a new ListBackupSchedulesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListBackupSchedulesResponse);

                        /** ListBackupSchedulesResponse backupSchedules. */
                        public backupSchedules: google.spanner.admin.database.v1.IBackupSchedule[];

                        /** ListBackupSchedulesResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListBackupSchedulesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListBackupSchedulesResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListBackupSchedulesResponse): google.spanner.admin.database.v1.ListBackupSchedulesResponse;

                        /**
                         * Encodes the specified ListBackupSchedulesResponse message. Does not implicitly {@link google.spanner.admin.database.v1.ListBackupSchedulesResponse.verify|verify} messages.
                         * @param message ListBackupSchedulesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListBackupSchedulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListBackupSchedulesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListBackupSchedulesResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListBackupSchedulesResponse;

                        /**
                         * Decodes a ListBackupSchedulesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListBackupSchedulesResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListBackupSchedulesResponse;

                        /**
                         * Verifies a ListBackupSchedulesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateBackupScheduleRequest. */
                    interface IUpdateBackupScheduleRequest {

                        /** UpdateBackupScheduleRequest backupSchedule */
                        backupSchedule?: (google.spanner.admin.database.v1.IBackupSchedule|null);

                        /** UpdateBackupScheduleRequest updateMask */
                        updateMask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents an UpdateBackupScheduleRequest. */
                    class UpdateBackupScheduleRequest implements IUpdateBackupScheduleRequest {

                        /**
                         * Constructs a new UpdateBackupScheduleRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IUpdateBackupScheduleRequest);

                        /** UpdateBackupScheduleRequest backupSchedule. */
                        public backupSchedule?: (google.spanner.admin.database.v1.IBackupSchedule|null);

                        /** UpdateBackupScheduleRequest updateMask. */
                        public updateMask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new UpdateBackupScheduleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateBackupScheduleRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IUpdateBackupScheduleRequest): google.spanner.admin.database.v1.UpdateBackupScheduleRequest;

                        /**
                         * Encodes the specified UpdateBackupScheduleRequest message. Does not implicitly {@link google.spanner.admin.database.v1.UpdateBackupScheduleRequest.verify|verify} messages.
                         * @param message UpdateBackupScheduleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IUpdateBackupScheduleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateBackupScheduleRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateBackupScheduleRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.UpdateBackupScheduleRequest;

                        /**
                         * Decodes an UpdateBackupScheduleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateBackupScheduleRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.UpdateBackupScheduleRequest;

                        /**
                         * Verifies an UpdateBackupScheduleRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Represents a DatabaseAdmin */
                    class DatabaseAdmin extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DatabaseAdmin 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 DatabaseAdmin 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): DatabaseAdmin;

                        /**
                         * Calls ListDatabases.
                         * @param request ListDatabasesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListDatabasesResponse
                         */
                        public listDatabases(request: google.spanner.admin.database.v1.IListDatabasesRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabasesCallback): void;

                        /**
                         * Calls ListDatabases.
                         * @param request ListDatabasesRequest message or plain object
                         * @returns Promise
                         */
                        public listDatabases(request: google.spanner.admin.database.v1.IListDatabasesRequest): Promise<google.spanner.admin.database.v1.ListDatabasesResponse>;

                        /**
                         * Calls CreateDatabase.
                         * @param request CreateDatabaseRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public createDatabase(request: google.spanner.admin.database.v1.ICreateDatabaseRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.CreateDatabaseCallback): void;

                        /**
                         * Calls CreateDatabase.
                         * @param request CreateDatabaseRequest message or plain object
                         * @returns Promise
                         */
                        public createDatabase(request: google.spanner.admin.database.v1.ICreateDatabaseRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls GetDatabase.
                         * @param request GetDatabaseRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Database
                         */
                        public getDatabase(request: google.spanner.admin.database.v1.IGetDatabaseRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseCallback): void;

                        /**
                         * Calls GetDatabase.
                         * @param request GetDatabaseRequest message or plain object
                         * @returns Promise
                         */
                        public getDatabase(request: google.spanner.admin.database.v1.IGetDatabaseRequest): Promise<google.spanner.admin.database.v1.Database>;

                        /**
                         * Calls UpdateDatabase.
                         * @param request UpdateDatabaseRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public updateDatabase(request: google.spanner.admin.database.v1.IUpdateDatabaseRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseCallback): void;

                        /**
                         * Calls UpdateDatabase.
                         * @param request UpdateDatabaseRequest message or plain object
                         * @returns Promise
                         */
                        public updateDatabase(request: google.spanner.admin.database.v1.IUpdateDatabaseRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls UpdateDatabaseDdl.
                         * @param request UpdateDatabaseDdlRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public updateDatabaseDdl(request: google.spanner.admin.database.v1.IUpdateDatabaseDdlRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdlCallback): void;

                        /**
                         * Calls UpdateDatabaseDdl.
                         * @param request UpdateDatabaseDdlRequest message or plain object
                         * @returns Promise
                         */
                        public updateDatabaseDdl(request: google.spanner.admin.database.v1.IUpdateDatabaseDdlRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls DropDatabase.
                         * @param request DropDatabaseRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public dropDatabase(request: google.spanner.admin.database.v1.IDropDatabaseRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.DropDatabaseCallback): void;

                        /**
                         * Calls DropDatabase.
                         * @param request DropDatabaseRequest message or plain object
                         * @returns Promise
                         */
                        public dropDatabase(request: google.spanner.admin.database.v1.IDropDatabaseRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls GetDatabaseDdl.
                         * @param request GetDatabaseDdlRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GetDatabaseDdlResponse
                         */
                        public getDatabaseDdl(request: google.spanner.admin.database.v1.IGetDatabaseDdlRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseDdlCallback): void;

                        /**
                         * Calls GetDatabaseDdl.
                         * @param request GetDatabaseDdlRequest message or plain object
                         * @returns Promise
                         */
                        public getDatabaseDdl(request: google.spanner.admin.database.v1.IGetDatabaseDdlRequest): Promise<google.spanner.admin.database.v1.GetDatabaseDdlResponse>;

                        /**
                         * Calls SetIamPolicy.
                         * @param request SetIamPolicyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Policy
                         */
                        public setIamPolicy(request: google.iam.v1.ISetIamPolicyRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.SetIamPolicyCallback): void;

                        /**
                         * Calls SetIamPolicy.
                         * @param request SetIamPolicyRequest message or plain object
                         * @returns Promise
                         */
                        public setIamPolicy(request: google.iam.v1.ISetIamPolicyRequest): Promise<google.iam.v1.Policy>;

                        /**
                         * Calls GetIamPolicy.
                         * @param request GetIamPolicyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Policy
                         */
                        public getIamPolicy(request: google.iam.v1.IGetIamPolicyRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.GetIamPolicyCallback): void;

                        /**
                         * Calls GetIamPolicy.
                         * @param request GetIamPolicyRequest message or plain object
                         * @returns Promise
                         */
                        public getIamPolicy(request: google.iam.v1.IGetIamPolicyRequest): Promise<google.iam.v1.Policy>;

                        /**
                         * Calls TestIamPermissions.
                         * @param request TestIamPermissionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and TestIamPermissionsResponse
                         */
                        public testIamPermissions(request: google.iam.v1.ITestIamPermissionsRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.TestIamPermissionsCallback): void;

                        /**
                         * Calls TestIamPermissions.
                         * @param request TestIamPermissionsRequest message or plain object
                         * @returns Promise
                         */
                        public testIamPermissions(request: google.iam.v1.ITestIamPermissionsRequest): Promise<google.iam.v1.TestIamPermissionsResponse>;

                        /**
                         * Calls CreateBackup.
                         * @param request CreateBackupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public createBackup(request: google.spanner.admin.database.v1.ICreateBackupRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackupCallback): void;

                        /**
                         * Calls CreateBackup.
                         * @param request CreateBackupRequest message or plain object
                         * @returns Promise
                         */
                        public createBackup(request: google.spanner.admin.database.v1.ICreateBackupRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls CopyBackup.
                         * @param request CopyBackupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public copyBackup(request: google.spanner.admin.database.v1.ICopyBackupRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.CopyBackupCallback): void;

                        /**
                         * Calls CopyBackup.
                         * @param request CopyBackupRequest message or plain object
                         * @returns Promise
                         */
                        public copyBackup(request: google.spanner.admin.database.v1.ICopyBackupRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls GetBackup.
                         * @param request GetBackupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Backup
                         */
                        public getBackup(request: google.spanner.admin.database.v1.IGetBackupRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.GetBackupCallback): void;

                        /**
                         * Calls GetBackup.
                         * @param request GetBackupRequest message or plain object
                         * @returns Promise
                         */
                        public getBackup(request: google.spanner.admin.database.v1.IGetBackupRequest): Promise<google.spanner.admin.database.v1.Backup>;

                        /**
                         * Calls UpdateBackup.
                         * @param request UpdateBackupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Backup
                         */
                        public updateBackup(request: google.spanner.admin.database.v1.IUpdateBackupRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackupCallback): void;

                        /**
                         * Calls UpdateBackup.
                         * @param request UpdateBackupRequest message or plain object
                         * @returns Promise
                         */
                        public updateBackup(request: google.spanner.admin.database.v1.IUpdateBackupRequest): Promise<google.spanner.admin.database.v1.Backup>;

                        /**
                         * Calls DeleteBackup.
                         * @param request DeleteBackupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public deleteBackup(request: google.spanner.admin.database.v1.IDeleteBackupRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackupCallback): void;

                        /**
                         * Calls DeleteBackup.
                         * @param request DeleteBackupRequest message or plain object
                         * @returns Promise
                         */
                        public deleteBackup(request: google.spanner.admin.database.v1.IDeleteBackupRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls ListBackups.
                         * @param request ListBackupsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBackupsResponse
                         */
                        public listBackups(request: google.spanner.admin.database.v1.IListBackupsRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupsCallback): void;

                        /**
                         * Calls ListBackups.
                         * @param request ListBackupsRequest message or plain object
                         * @returns Promise
                         */
                        public listBackups(request: google.spanner.admin.database.v1.IListBackupsRequest): Promise<google.spanner.admin.database.v1.ListBackupsResponse>;

                        /**
                         * Calls RestoreDatabase.
                         * @param request RestoreDatabaseRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public restoreDatabase(request: google.spanner.admin.database.v1.IRestoreDatabaseRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.RestoreDatabaseCallback): void;

                        /**
                         * Calls RestoreDatabase.
                         * @param request RestoreDatabaseRequest message or plain object
                         * @returns Promise
                         */
                        public restoreDatabase(request: google.spanner.admin.database.v1.IRestoreDatabaseRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls ListDatabaseOperations.
                         * @param request ListDatabaseOperationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListDatabaseOperationsResponse
                         */
                        public listDatabaseOperations(request: google.spanner.admin.database.v1.IListDatabaseOperationsRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseOperationsCallback): void;

                        /**
                         * Calls ListDatabaseOperations.
                         * @param request ListDatabaseOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public listDatabaseOperations(request: google.spanner.admin.database.v1.IListDatabaseOperationsRequest): Promise<google.spanner.admin.database.v1.ListDatabaseOperationsResponse>;

                        /**
                         * Calls ListBackupOperations.
                         * @param request ListBackupOperationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBackupOperationsResponse
                         */
                        public listBackupOperations(request: google.spanner.admin.database.v1.IListBackupOperationsRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupOperationsCallback): void;

                        /**
                         * Calls ListBackupOperations.
                         * @param request ListBackupOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public listBackupOperations(request: google.spanner.admin.database.v1.IListBackupOperationsRequest): Promise<google.spanner.admin.database.v1.ListBackupOperationsResponse>;

                        /**
                         * Calls ListDatabaseRoles.
                         * @param request ListDatabaseRolesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListDatabaseRolesResponse
                         */
                        public listDatabaseRoles(request: google.spanner.admin.database.v1.IListDatabaseRolesRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseRolesCallback): void;

                        /**
                         * Calls ListDatabaseRoles.
                         * @param request ListDatabaseRolesRequest message or plain object
                         * @returns Promise
                         */
                        public listDatabaseRoles(request: google.spanner.admin.database.v1.IListDatabaseRolesRequest): Promise<google.spanner.admin.database.v1.ListDatabaseRolesResponse>;

                        /**
                         * Calls AddSplitPoints.
                         * @param request AddSplitPointsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AddSplitPointsResponse
                         */
                        public addSplitPoints(request: google.spanner.admin.database.v1.IAddSplitPointsRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.AddSplitPointsCallback): void;

                        /**
                         * Calls AddSplitPoints.
                         * @param request AddSplitPointsRequest message or plain object
                         * @returns Promise
                         */
                        public addSplitPoints(request: google.spanner.admin.database.v1.IAddSplitPointsRequest): Promise<google.spanner.admin.database.v1.AddSplitPointsResponse>;

                        /**
                         * Calls CreateBackupSchedule.
                         * @param request CreateBackupScheduleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BackupSchedule
                         */
                        public createBackupSchedule(request: google.spanner.admin.database.v1.ICreateBackupScheduleRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackupScheduleCallback): void;

                        /**
                         * Calls CreateBackupSchedule.
                         * @param request CreateBackupScheduleRequest message or plain object
                         * @returns Promise
                         */
                        public createBackupSchedule(request: google.spanner.admin.database.v1.ICreateBackupScheduleRequest): Promise<google.spanner.admin.database.v1.BackupSchedule>;

                        /**
                         * Calls GetBackupSchedule.
                         * @param request GetBackupScheduleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BackupSchedule
                         */
                        public getBackupSchedule(request: google.spanner.admin.database.v1.IGetBackupScheduleRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.GetBackupScheduleCallback): void;

                        /**
                         * Calls GetBackupSchedule.
                         * @param request GetBackupScheduleRequest message or plain object
                         * @returns Promise
                         */
                        public getBackupSchedule(request: google.spanner.admin.database.v1.IGetBackupScheduleRequest): Promise<google.spanner.admin.database.v1.BackupSchedule>;

                        /**
                         * Calls UpdateBackupSchedule.
                         * @param request UpdateBackupScheduleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BackupSchedule
                         */
                        public updateBackupSchedule(request: google.spanner.admin.database.v1.IUpdateBackupScheduleRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackupScheduleCallback): void;

                        /**
                         * Calls UpdateBackupSchedule.
                         * @param request UpdateBackupScheduleRequest message or plain object
                         * @returns Promise
                         */
                        public updateBackupSchedule(request: google.spanner.admin.database.v1.IUpdateBackupScheduleRequest): Promise<google.spanner.admin.database.v1.BackupSchedule>;

                        /**
                         * Calls DeleteBackupSchedule.
                         * @param request DeleteBackupScheduleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public deleteBackupSchedule(request: google.spanner.admin.database.v1.IDeleteBackupScheduleRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackupScheduleCallback): void;

                        /**
                         * Calls DeleteBackupSchedule.
                         * @param request DeleteBackupScheduleRequest message or plain object
                         * @returns Promise
                         */
                        public deleteBackupSchedule(request: google.spanner.admin.database.v1.IDeleteBackupScheduleRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls ListBackupSchedules.
                         * @param request ListBackupSchedulesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListBackupSchedulesResponse
                         */
                        public listBackupSchedules(request: google.spanner.admin.database.v1.IListBackupSchedulesRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupSchedulesCallback): void;

                        /**
                         * Calls ListBackupSchedules.
                         * @param request ListBackupSchedulesRequest message or plain object
                         * @returns Promise
                         */
                        public listBackupSchedules(request: google.spanner.admin.database.v1.IListBackupSchedulesRequest): Promise<google.spanner.admin.database.v1.ListBackupSchedulesResponse>;

                        /**
                         * Calls InternalUpdateGraphOperation.
                         * @param request InternalUpdateGraphOperationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and InternalUpdateGraphOperationResponse
                         */
                        public internalUpdateGraphOperation(request: google.spanner.admin.database.v1.IInternalUpdateGraphOperationRequest, callback: google.spanner.admin.database.v1.DatabaseAdmin.InternalUpdateGraphOperationCallback): void;

                        /**
                         * Calls InternalUpdateGraphOperation.
                         * @param request InternalUpdateGraphOperationRequest message or plain object
                         * @returns Promise
                         */
                        public internalUpdateGraphOperation(request: google.spanner.admin.database.v1.IInternalUpdateGraphOperationRequest): Promise<google.spanner.admin.database.v1.InternalUpdateGraphOperationResponse>;
                    }

                    namespace DatabaseAdmin {

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|listDatabases}.
                         * @param error Error, if any
                         * @param [response] ListDatabasesResponse
                         */
                        type ListDatabasesCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.ListDatabasesResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|createDatabase}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type CreateDatabaseCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|getDatabase}.
                         * @param error Error, if any
                         * @param [response] Database
                         */
                        type GetDatabaseCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.Database) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|updateDatabase}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type UpdateDatabaseCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|updateDatabaseDdl}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type UpdateDatabaseDdlCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|dropDatabase}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type DropDatabaseCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|getDatabaseDdl}.
                         * @param error Error, if any
                         * @param [response] GetDatabaseDdlResponse
                         */
                        type GetDatabaseDdlCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.GetDatabaseDdlResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|setIamPolicy}.
                         * @param error Error, if any
                         * @param [response] Policy
                         */
                        type SetIamPolicyCallback = (error: (Error|null), response?: google.iam.v1.Policy) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|getIamPolicy}.
                         * @param error Error, if any
                         * @param [response] Policy
                         */
                        type GetIamPolicyCallback = (error: (Error|null), response?: google.iam.v1.Policy) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|testIamPermissions}.
                         * @param error Error, if any
                         * @param [response] TestIamPermissionsResponse
                         */
                        type TestIamPermissionsCallback = (error: (Error|null), response?: google.iam.v1.TestIamPermissionsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|createBackup}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type CreateBackupCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|copyBackup}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type CopyBackupCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|getBackup}.
                         * @param error Error, if any
                         * @param [response] Backup
                         */
                        type GetBackupCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.Backup) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|updateBackup}.
                         * @param error Error, if any
                         * @param [response] Backup
                         */
                        type UpdateBackupCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.Backup) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|deleteBackup}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type DeleteBackupCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|listBackups}.
                         * @param error Error, if any
                         * @param [response] ListBackupsResponse
                         */
                        type ListBackupsCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.ListBackupsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|restoreDatabase}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type RestoreDatabaseCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|listDatabaseOperations}.
                         * @param error Error, if any
                         * @param [response] ListDatabaseOperationsResponse
                         */
                        type ListDatabaseOperationsCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.ListDatabaseOperationsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|listBackupOperations}.
                         * @param error Error, if any
                         * @param [response] ListBackupOperationsResponse
                         */
                        type ListBackupOperationsCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.ListBackupOperationsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|listDatabaseRoles}.
                         * @param error Error, if any
                         * @param [response] ListDatabaseRolesResponse
                         */
                        type ListDatabaseRolesCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.ListDatabaseRolesResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|addSplitPoints}.
                         * @param error Error, if any
                         * @param [response] AddSplitPointsResponse
                         */
                        type AddSplitPointsCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.AddSplitPointsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|createBackupSchedule}.
                         * @param error Error, if any
                         * @param [response] BackupSchedule
                         */
                        type CreateBackupScheduleCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.BackupSchedule) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|getBackupSchedule}.
                         * @param error Error, if any
                         * @param [response] BackupSchedule
                         */
                        type GetBackupScheduleCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.BackupSchedule) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|updateBackupSchedule}.
                         * @param error Error, if any
                         * @param [response] BackupSchedule
                         */
                        type UpdateBackupScheduleCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.BackupSchedule) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|deleteBackupSchedule}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type DeleteBackupScheduleCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|listBackupSchedules}.
                         * @param error Error, if any
                         * @param [response] ListBackupSchedulesResponse
                         */
                        type ListBackupSchedulesCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.ListBackupSchedulesResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.database.v1.DatabaseAdmin|internalUpdateGraphOperation}.
                         * @param error Error, if any
                         * @param [response] InternalUpdateGraphOperationResponse
                         */
                        type InternalUpdateGraphOperationCallback = (error: (Error|null), response?: google.spanner.admin.database.v1.InternalUpdateGraphOperationResponse) => void;
                    }

                    /** Properties of a RestoreInfo. */
                    interface IRestoreInfo {

                        /** RestoreInfo sourceType */
                        sourceType?: (google.spanner.admin.database.v1.RestoreSourceType|keyof typeof google.spanner.admin.database.v1.RestoreSourceType|null);

                        /** RestoreInfo backupInfo */
                        backupInfo?: (google.spanner.admin.database.v1.IBackupInfo|null);
                    }

                    /** Represents a RestoreInfo. */
                    class RestoreInfo implements IRestoreInfo {

                        /**
                         * Constructs a new RestoreInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IRestoreInfo);

                        /** RestoreInfo sourceType. */
                        public sourceType: (google.spanner.admin.database.v1.RestoreSourceType|keyof typeof google.spanner.admin.database.v1.RestoreSourceType);

                        /** RestoreInfo backupInfo. */
                        public backupInfo?: (google.spanner.admin.database.v1.IBackupInfo|null);

                        /** RestoreInfo sourceInfo. */
                        public sourceInfo?: "backupInfo";

                        /**
                         * Creates a new RestoreInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RestoreInfo instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IRestoreInfo): google.spanner.admin.database.v1.RestoreInfo;

                        /**
                         * Encodes the specified RestoreInfo message. Does not implicitly {@link google.spanner.admin.database.v1.RestoreInfo.verify|verify} messages.
                         * @param message RestoreInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IRestoreInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a RestoreInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RestoreInfo
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.RestoreInfo;

                        /**
                         * Decodes a RestoreInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RestoreInfo
                         * @throws {Error} If the 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.spanner.admin.database.v1.RestoreInfo;

                        /**
                         * Verifies a RestoreInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a Database. */
                    interface IDatabase {

                        /** Database name */
                        name?: (string|null);

                        /** Database state */
                        state?: (google.spanner.admin.database.v1.Database.State|keyof typeof google.spanner.admin.database.v1.Database.State|null);

                        /** Database createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** Database restoreInfo */
                        restoreInfo?: (google.spanner.admin.database.v1.IRestoreInfo|null);

                        /** Database encryptionConfig */
                        encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                        /** Database encryptionInfo */
                        encryptionInfo?: (google.spanner.admin.database.v1.IEncryptionInfo[]|null);

                        /** Database versionRetentionPeriod */
                        versionRetentionPeriod?: (string|null);

                        /** Database earliestVersionTime */
                        earliestVersionTime?: (google.protobuf.ITimestamp|null);

                        /** Database defaultLeader */
                        defaultLeader?: (string|null);

                        /** Database databaseDialect */
                        databaseDialect?: (google.spanner.admin.database.v1.DatabaseDialect|keyof typeof google.spanner.admin.database.v1.DatabaseDialect|null);

                        /** Database enableDropProtection */
                        enableDropProtection?: (boolean|null);

                        /** Database reconciling */
                        reconciling?: (boolean|null);
                    }

                    /** Represents a Database. */
                    class Database implements IDatabase {

                        /**
                         * Constructs a new Database.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IDatabase);

                        /** Database name. */
                        public name: string;

                        /** Database state. */
                        public state: (google.spanner.admin.database.v1.Database.State|keyof typeof google.spanner.admin.database.v1.Database.State);

                        /** Database createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** Database restoreInfo. */
                        public restoreInfo?: (google.spanner.admin.database.v1.IRestoreInfo|null);

                        /** Database encryptionConfig. */
                        public encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                        /** Database encryptionInfo. */
                        public encryptionInfo: google.spanner.admin.database.v1.IEncryptionInfo[];

                        /** Database versionRetentionPeriod. */
                        public versionRetentionPeriod: string;

                        /** Database earliestVersionTime. */
                        public earliestVersionTime?: (google.protobuf.ITimestamp|null);

                        /** Database defaultLeader. */
                        public defaultLeader: string;

                        /** Database databaseDialect. */
                        public databaseDialect: (google.spanner.admin.database.v1.DatabaseDialect|keyof typeof google.spanner.admin.database.v1.DatabaseDialect);

                        /** Database enableDropProtection. */
                        public enableDropProtection: boolean;

                        /** Database reconciling. */
                        public reconciling: boolean;

                        /**
                         * Creates a new Database instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Database instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IDatabase): google.spanner.admin.database.v1.Database;

                        /**
                         * Encodes the specified Database message. Does not implicitly {@link google.spanner.admin.database.v1.Database.verify|verify} messages.
                         * @param message Database message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IDatabase, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a Database message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Database
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.Database;

                        /**
                         * Decodes a Database message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Database
                         * @throws {Error} If the 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.spanner.admin.database.v1.Database;

                        /**
                         * Verifies a Database message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace Database {

                        /** State enum. */
                        enum State {
                            STATE_UNSPECIFIED = 0,
                            CREATING = 1,
                            READY = 2,
                            READY_OPTIMIZING = 3
                        }
                    }

                    /** Properties of a ListDatabasesRequest. */
                    interface IListDatabasesRequest {

                        /** ListDatabasesRequest parent */
                        parent?: (string|null);

                        /** ListDatabasesRequest pageSize */
                        pageSize?: (number|null);

                        /** ListDatabasesRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListDatabasesRequest. */
                    class ListDatabasesRequest implements IListDatabasesRequest {

                        /**
                         * Constructs a new ListDatabasesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListDatabasesRequest);

                        /** ListDatabasesRequest parent. */
                        public parent: string;

                        /** ListDatabasesRequest pageSize. */
                        public pageSize: number;

                        /** ListDatabasesRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListDatabasesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListDatabasesRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListDatabasesRequest): google.spanner.admin.database.v1.ListDatabasesRequest;

                        /**
                         * Encodes the specified ListDatabasesRequest message. Does not implicitly {@link google.spanner.admin.database.v1.ListDatabasesRequest.verify|verify} messages.
                         * @param message ListDatabasesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListDatabasesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListDatabasesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListDatabasesRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListDatabasesRequest;

                        /**
                         * Decodes a ListDatabasesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListDatabasesRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListDatabasesRequest;

                        /**
                         * Verifies a ListDatabasesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListDatabasesResponse. */
                    interface IListDatabasesResponse {

                        /** ListDatabasesResponse databases */
                        databases?: (google.spanner.admin.database.v1.IDatabase[]|null);

                        /** ListDatabasesResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListDatabasesResponse. */
                    class ListDatabasesResponse implements IListDatabasesResponse {

                        /**
                         * Constructs a new ListDatabasesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListDatabasesResponse);

                        /** ListDatabasesResponse databases. */
                        public databases: google.spanner.admin.database.v1.IDatabase[];

                        /** ListDatabasesResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListDatabasesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListDatabasesResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListDatabasesResponse): google.spanner.admin.database.v1.ListDatabasesResponse;

                        /**
                         * Encodes the specified ListDatabasesResponse message. Does not implicitly {@link google.spanner.admin.database.v1.ListDatabasesResponse.verify|verify} messages.
                         * @param message ListDatabasesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListDatabasesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListDatabasesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListDatabasesResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListDatabasesResponse;

                        /**
                         * Decodes a ListDatabasesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListDatabasesResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListDatabasesResponse;

                        /**
                         * Verifies a ListDatabasesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateDatabaseRequest. */
                    interface ICreateDatabaseRequest {

                        /** CreateDatabaseRequest parent */
                        parent?: (string|null);

                        /** CreateDatabaseRequest createStatement */
                        createStatement?: (string|null);

                        /** CreateDatabaseRequest extraStatements */
                        extraStatements?: (string[]|null);

                        /** CreateDatabaseRequest encryptionConfig */
                        encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                        /** CreateDatabaseRequest databaseDialect */
                        databaseDialect?: (google.spanner.admin.database.v1.DatabaseDialect|keyof typeof google.spanner.admin.database.v1.DatabaseDialect|null);

                        /** CreateDatabaseRequest protoDescriptors */
                        protoDescriptors?: (Uint8Array|Buffer|string|null);
                    }

                    /** Represents a CreateDatabaseRequest. */
                    class CreateDatabaseRequest implements ICreateDatabaseRequest {

                        /**
                         * Constructs a new CreateDatabaseRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICreateDatabaseRequest);

                        /** CreateDatabaseRequest parent. */
                        public parent: string;

                        /** CreateDatabaseRequest createStatement. */
                        public createStatement: string;

                        /** CreateDatabaseRequest extraStatements. */
                        public extraStatements: string[];

                        /** CreateDatabaseRequest encryptionConfig. */
                        public encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                        /** CreateDatabaseRequest databaseDialect. */
                        public databaseDialect: (google.spanner.admin.database.v1.DatabaseDialect|keyof typeof google.spanner.admin.database.v1.DatabaseDialect);

                        /** CreateDatabaseRequest protoDescriptors. */
                        public protoDescriptors: (Uint8Array|Buffer|string);

                        /**
                         * Creates a new CreateDatabaseRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateDatabaseRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICreateDatabaseRequest): google.spanner.admin.database.v1.CreateDatabaseRequest;

                        /**
                         * Encodes the specified CreateDatabaseRequest message. Does not implicitly {@link google.spanner.admin.database.v1.CreateDatabaseRequest.verify|verify} messages.
                         * @param message CreateDatabaseRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICreateDatabaseRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateDatabaseRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateDatabaseRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CreateDatabaseRequest;

                        /**
                         * Decodes a CreateDatabaseRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateDatabaseRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.CreateDatabaseRequest;

                        /**
                         * Verifies a CreateDatabaseRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateDatabaseMetadata. */
                    interface ICreateDatabaseMetadata {

                        /** CreateDatabaseMetadata database */
                        database?: (string|null);
                    }

                    /** Represents a CreateDatabaseMetadata. */
                    class CreateDatabaseMetadata implements ICreateDatabaseMetadata {

                        /**
                         * Constructs a new CreateDatabaseMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ICreateDatabaseMetadata);

                        /** CreateDatabaseMetadata database. */
                        public database: string;

                        /**
                         * Creates a new CreateDatabaseMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateDatabaseMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ICreateDatabaseMetadata): google.spanner.admin.database.v1.CreateDatabaseMetadata;

                        /**
                         * Encodes the specified CreateDatabaseMetadata message. Does not implicitly {@link google.spanner.admin.database.v1.CreateDatabaseMetadata.verify|verify} messages.
                         * @param message CreateDatabaseMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ICreateDatabaseMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateDatabaseMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateDatabaseMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.CreateDatabaseMetadata;

                        /**
                         * Decodes a CreateDatabaseMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateDatabaseMetadata
                         * @throws {Error} If the 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.spanner.admin.database.v1.CreateDatabaseMetadata;

                        /**
                         * Verifies a CreateDatabaseMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetDatabaseRequest. */
                    interface IGetDatabaseRequest {

                        /** GetDatabaseRequest name */
                        name?: (string|null);
                    }

                    /** Represents a GetDatabaseRequest. */
                    class GetDatabaseRequest implements IGetDatabaseRequest {

                        /**
                         * Constructs a new GetDatabaseRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IGetDatabaseRequest);

                        /** GetDatabaseRequest name. */
                        public name: string;

                        /**
                         * Creates a new GetDatabaseRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDatabaseRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IGetDatabaseRequest): google.spanner.admin.database.v1.GetDatabaseRequest;

                        /**
                         * Encodes the specified GetDatabaseRequest message. Does not implicitly {@link google.spanner.admin.database.v1.GetDatabaseRequest.verify|verify} messages.
                         * @param message GetDatabaseRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IGetDatabaseRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetDatabaseRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetDatabaseRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.GetDatabaseRequest;

                        /**
                         * Decodes a GetDatabaseRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDatabaseRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.GetDatabaseRequest;

                        /**
                         * Verifies a GetDatabaseRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateDatabaseRequest. */
                    interface IUpdateDatabaseRequest {

                        /** UpdateDatabaseRequest database */
                        database?: (google.spanner.admin.database.v1.IDatabase|null);

                        /** UpdateDatabaseRequest updateMask */
                        updateMask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents an UpdateDatabaseRequest. */
                    class UpdateDatabaseRequest implements IUpdateDatabaseRequest {

                        /**
                         * Constructs a new UpdateDatabaseRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IUpdateDatabaseRequest);

                        /** UpdateDatabaseRequest database. */
                        public database?: (google.spanner.admin.database.v1.IDatabase|null);

                        /** UpdateDatabaseRequest updateMask. */
                        public updateMask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new UpdateDatabaseRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateDatabaseRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IUpdateDatabaseRequest): google.spanner.admin.database.v1.UpdateDatabaseRequest;

                        /**
                         * Encodes the specified UpdateDatabaseRequest message. Does not implicitly {@link google.spanner.admin.database.v1.UpdateDatabaseRequest.verify|verify} messages.
                         * @param message UpdateDatabaseRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IUpdateDatabaseRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateDatabaseRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateDatabaseRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.UpdateDatabaseRequest;

                        /**
                         * Decodes an UpdateDatabaseRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateDatabaseRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.UpdateDatabaseRequest;

                        /**
                         * Verifies an UpdateDatabaseRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateDatabaseMetadata. */
                    interface IUpdateDatabaseMetadata {

                        /** UpdateDatabaseMetadata request */
                        request?: (google.spanner.admin.database.v1.IUpdateDatabaseRequest|null);

                        /** UpdateDatabaseMetadata progress */
                        progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** UpdateDatabaseMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an UpdateDatabaseMetadata. */
                    class UpdateDatabaseMetadata implements IUpdateDatabaseMetadata {

                        /**
                         * Constructs a new UpdateDatabaseMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IUpdateDatabaseMetadata);

                        /** UpdateDatabaseMetadata request. */
                        public request?: (google.spanner.admin.database.v1.IUpdateDatabaseRequest|null);

                        /** UpdateDatabaseMetadata progress. */
                        public progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** UpdateDatabaseMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new UpdateDatabaseMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateDatabaseMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IUpdateDatabaseMetadata): google.spanner.admin.database.v1.UpdateDatabaseMetadata;

                        /**
                         * Encodes the specified UpdateDatabaseMetadata message. Does not implicitly {@link google.spanner.admin.database.v1.UpdateDatabaseMetadata.verify|verify} messages.
                         * @param message UpdateDatabaseMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IUpdateDatabaseMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateDatabaseMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateDatabaseMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.UpdateDatabaseMetadata;

                        /**
                         * Decodes an UpdateDatabaseMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateDatabaseMetadata
                         * @throws {Error} If the 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.spanner.admin.database.v1.UpdateDatabaseMetadata;

                        /**
                         * Verifies an UpdateDatabaseMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateDatabaseDdlRequest. */
                    interface IUpdateDatabaseDdlRequest {

                        /** UpdateDatabaseDdlRequest database */
                        database?: (string|null);

                        /** UpdateDatabaseDdlRequest statements */
                        statements?: (string[]|null);

                        /** UpdateDatabaseDdlRequest operationId */
                        operationId?: (string|null);

                        /** UpdateDatabaseDdlRequest protoDescriptors */
                        protoDescriptors?: (Uint8Array|Buffer|string|null);

                        /** UpdateDatabaseDdlRequest throughputMode */
                        throughputMode?: (boolean|null);
                    }

                    /** Represents an UpdateDatabaseDdlRequest. */
                    class UpdateDatabaseDdlRequest implements IUpdateDatabaseDdlRequest {

                        /**
                         * Constructs a new UpdateDatabaseDdlRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IUpdateDatabaseDdlRequest);

                        /** UpdateDatabaseDdlRequest database. */
                        public database: string;

                        /** UpdateDatabaseDdlRequest statements. */
                        public statements: string[];

                        /** UpdateDatabaseDdlRequest operationId. */
                        public operationId: string;

                        /** UpdateDatabaseDdlRequest protoDescriptors. */
                        public protoDescriptors: (Uint8Array|Buffer|string);

                        /** UpdateDatabaseDdlRequest throughputMode. */
                        public throughputMode: boolean;

                        /**
                         * Creates a new UpdateDatabaseDdlRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateDatabaseDdlRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IUpdateDatabaseDdlRequest): google.spanner.admin.database.v1.UpdateDatabaseDdlRequest;

                        /**
                         * Encodes the specified UpdateDatabaseDdlRequest message. Does not implicitly {@link google.spanner.admin.database.v1.UpdateDatabaseDdlRequest.verify|verify} messages.
                         * @param message UpdateDatabaseDdlRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IUpdateDatabaseDdlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateDatabaseDdlRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateDatabaseDdlRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.UpdateDatabaseDdlRequest;

                        /**
                         * Decodes an UpdateDatabaseDdlRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateDatabaseDdlRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.UpdateDatabaseDdlRequest;

                        /**
                         * Verifies an UpdateDatabaseDdlRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a DdlStatementActionInfo. */
                    interface IDdlStatementActionInfo {

                        /** DdlStatementActionInfo action */
                        action?: (string|null);

                        /** DdlStatementActionInfo entityType */
                        entityType?: (string|null);

                        /** DdlStatementActionInfo entityNames */
                        entityNames?: (string[]|null);
                    }

                    /** Represents a DdlStatementActionInfo. */
                    class DdlStatementActionInfo implements IDdlStatementActionInfo {

                        /**
                         * Constructs a new DdlStatementActionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IDdlStatementActionInfo);

                        /** DdlStatementActionInfo action. */
                        public action: string;

                        /** DdlStatementActionInfo entityType. */
                        public entityType: string;

                        /** DdlStatementActionInfo entityNames. */
                        public entityNames: string[];

                        /**
                         * Creates a new DdlStatementActionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DdlStatementActionInfo instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IDdlStatementActionInfo): google.spanner.admin.database.v1.DdlStatementActionInfo;

                        /**
                         * Encodes the specified DdlStatementActionInfo message. Does not implicitly {@link google.spanner.admin.database.v1.DdlStatementActionInfo.verify|verify} messages.
                         * @param message DdlStatementActionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IDdlStatementActionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DdlStatementActionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DdlStatementActionInfo
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.DdlStatementActionInfo;

                        /**
                         * Decodes a DdlStatementActionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DdlStatementActionInfo
                         * @throws {Error} If the 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.spanner.admin.database.v1.DdlStatementActionInfo;

                        /**
                         * Verifies a DdlStatementActionInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateDatabaseDdlMetadata. */
                    interface IUpdateDatabaseDdlMetadata {

                        /** UpdateDatabaseDdlMetadata database */
                        database?: (string|null);

                        /** UpdateDatabaseDdlMetadata statements */
                        statements?: (string[]|null);

                        /** UpdateDatabaseDdlMetadata commitTimestamps */
                        commitTimestamps?: (google.protobuf.ITimestamp[]|null);

                        /** UpdateDatabaseDdlMetadata throttled */
                        throttled?: (boolean|null);

                        /** UpdateDatabaseDdlMetadata progress */
                        progress?: (google.spanner.admin.database.v1.IOperationProgress[]|null);

                        /** UpdateDatabaseDdlMetadata actions */
                        actions?: (google.spanner.admin.database.v1.IDdlStatementActionInfo[]|null);
                    }

                    /** Represents an UpdateDatabaseDdlMetadata. */
                    class UpdateDatabaseDdlMetadata implements IUpdateDatabaseDdlMetadata {

                        /**
                         * Constructs a new UpdateDatabaseDdlMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IUpdateDatabaseDdlMetadata);

                        /** UpdateDatabaseDdlMetadata database. */
                        public database: string;

                        /** UpdateDatabaseDdlMetadata statements. */
                        public statements: string[];

                        /** UpdateDatabaseDdlMetadata commitTimestamps. */
                        public commitTimestamps: google.protobuf.ITimestamp[];

                        /** UpdateDatabaseDdlMetadata throttled. */
                        public throttled: boolean;

                        /** UpdateDatabaseDdlMetadata progress. */
                        public progress: google.spanner.admin.database.v1.IOperationProgress[];

                        /** UpdateDatabaseDdlMetadata actions. */
                        public actions: google.spanner.admin.database.v1.IDdlStatementActionInfo[];

                        /**
                         * Creates a new UpdateDatabaseDdlMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateDatabaseDdlMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IUpdateDatabaseDdlMetadata): google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;

                        /**
                         * Encodes the specified UpdateDatabaseDdlMetadata message. Does not implicitly {@link google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata.verify|verify} messages.
                         * @param message UpdateDatabaseDdlMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IUpdateDatabaseDdlMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateDatabaseDdlMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateDatabaseDdlMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;

                        /**
                         * Decodes an UpdateDatabaseDdlMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateDatabaseDdlMetadata
                         * @throws {Error} If the 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.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;

                        /**
                         * Verifies an UpdateDatabaseDdlMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a DropDatabaseRequest. */
                    interface IDropDatabaseRequest {

                        /** DropDatabaseRequest database */
                        database?: (string|null);
                    }

                    /** Represents a DropDatabaseRequest. */
                    class DropDatabaseRequest implements IDropDatabaseRequest {

                        /**
                         * Constructs a new DropDatabaseRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IDropDatabaseRequest);

                        /** DropDatabaseRequest database. */
                        public database: string;

                        /**
                         * Creates a new DropDatabaseRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DropDatabaseRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IDropDatabaseRequest): google.spanner.admin.database.v1.DropDatabaseRequest;

                        /**
                         * Encodes the specified DropDatabaseRequest message. Does not implicitly {@link google.spanner.admin.database.v1.DropDatabaseRequest.verify|verify} messages.
                         * @param message DropDatabaseRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IDropDatabaseRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DropDatabaseRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DropDatabaseRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.DropDatabaseRequest;

                        /**
                         * Decodes a DropDatabaseRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DropDatabaseRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.DropDatabaseRequest;

                        /**
                         * Verifies a DropDatabaseRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetDatabaseDdlRequest. */
                    interface IGetDatabaseDdlRequest {

                        /** GetDatabaseDdlRequest database */
                        database?: (string|null);
                    }

                    /** Represents a GetDatabaseDdlRequest. */
                    class GetDatabaseDdlRequest implements IGetDatabaseDdlRequest {

                        /**
                         * Constructs a new GetDatabaseDdlRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IGetDatabaseDdlRequest);

                        /** GetDatabaseDdlRequest database. */
                        public database: string;

                        /**
                         * Creates a new GetDatabaseDdlRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDatabaseDdlRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IGetDatabaseDdlRequest): google.spanner.admin.database.v1.GetDatabaseDdlRequest;

                        /**
                         * Encodes the specified GetDatabaseDdlRequest message. Does not implicitly {@link google.spanner.admin.database.v1.GetDatabaseDdlRequest.verify|verify} messages.
                         * @param message GetDatabaseDdlRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IGetDatabaseDdlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetDatabaseDdlRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetDatabaseDdlRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.GetDatabaseDdlRequest;

                        /**
                         * Decodes a GetDatabaseDdlRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDatabaseDdlRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.GetDatabaseDdlRequest;

                        /**
                         * Verifies a GetDatabaseDdlRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetDatabaseDdlResponse. */
                    interface IGetDatabaseDdlResponse {

                        /** GetDatabaseDdlResponse statements */
                        statements?: (string[]|null);

                        /** GetDatabaseDdlResponse protoDescriptors */
                        protoDescriptors?: (Uint8Array|Buffer|string|null);
                    }

                    /** Represents a GetDatabaseDdlResponse. */
                    class GetDatabaseDdlResponse implements IGetDatabaseDdlResponse {

                        /**
                         * Constructs a new GetDatabaseDdlResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IGetDatabaseDdlResponse);

                        /** GetDatabaseDdlResponse statements. */
                        public statements: string[];

                        /** GetDatabaseDdlResponse protoDescriptors. */
                        public protoDescriptors: (Uint8Array|Buffer|string);

                        /**
                         * Creates a new GetDatabaseDdlResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDatabaseDdlResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IGetDatabaseDdlResponse): google.spanner.admin.database.v1.GetDatabaseDdlResponse;

                        /**
                         * Encodes the specified GetDatabaseDdlResponse message. Does not implicitly {@link google.spanner.admin.database.v1.GetDatabaseDdlResponse.verify|verify} messages.
                         * @param message GetDatabaseDdlResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IGetDatabaseDdlResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetDatabaseDdlResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetDatabaseDdlResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.GetDatabaseDdlResponse;

                        /**
                         * Decodes a GetDatabaseDdlResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDatabaseDdlResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.GetDatabaseDdlResponse;

                        /**
                         * Verifies a GetDatabaseDdlResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListDatabaseOperationsRequest. */
                    interface IListDatabaseOperationsRequest {

                        /** ListDatabaseOperationsRequest parent */
                        parent?: (string|null);

                        /** ListDatabaseOperationsRequest filter */
                        filter?: (string|null);

                        /** ListDatabaseOperationsRequest pageSize */
                        pageSize?: (number|null);

                        /** ListDatabaseOperationsRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListDatabaseOperationsRequest. */
                    class ListDatabaseOperationsRequest implements IListDatabaseOperationsRequest {

                        /**
                         * Constructs a new ListDatabaseOperationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListDatabaseOperationsRequest);

                        /** ListDatabaseOperationsRequest parent. */
                        public parent: string;

                        /** ListDatabaseOperationsRequest filter. */
                        public filter: string;

                        /** ListDatabaseOperationsRequest pageSize. */
                        public pageSize: number;

                        /** ListDatabaseOperationsRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListDatabaseOperationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListDatabaseOperationsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListDatabaseOperationsRequest): google.spanner.admin.database.v1.ListDatabaseOperationsRequest;

                        /**
                         * Encodes the specified ListDatabaseOperationsRequest message. Does not implicitly {@link google.spanner.admin.database.v1.ListDatabaseOperationsRequest.verify|verify} messages.
                         * @param message ListDatabaseOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListDatabaseOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListDatabaseOperationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListDatabaseOperationsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListDatabaseOperationsRequest;

                        /**
                         * Decodes a ListDatabaseOperationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListDatabaseOperationsRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListDatabaseOperationsRequest;

                        /**
                         * Verifies a ListDatabaseOperationsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListDatabaseOperationsResponse. */
                    interface IListDatabaseOperationsResponse {

                        /** ListDatabaseOperationsResponse operations */
                        operations?: (google.longrunning.IOperation[]|null);

                        /** ListDatabaseOperationsResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListDatabaseOperationsResponse. */
                    class ListDatabaseOperationsResponse implements IListDatabaseOperationsResponse {

                        /**
                         * Constructs a new ListDatabaseOperationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListDatabaseOperationsResponse);

                        /** ListDatabaseOperationsResponse operations. */
                        public operations: google.longrunning.IOperation[];

                        /** ListDatabaseOperationsResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListDatabaseOperationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListDatabaseOperationsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListDatabaseOperationsResponse): google.spanner.admin.database.v1.ListDatabaseOperationsResponse;

                        /**
                         * Encodes the specified ListDatabaseOperationsResponse message. Does not implicitly {@link google.spanner.admin.database.v1.ListDatabaseOperationsResponse.verify|verify} messages.
                         * @param message ListDatabaseOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListDatabaseOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListDatabaseOperationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListDatabaseOperationsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListDatabaseOperationsResponse;

                        /**
                         * Decodes a ListDatabaseOperationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListDatabaseOperationsResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListDatabaseOperationsResponse;

                        /**
                         * Verifies a ListDatabaseOperationsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a RestoreDatabaseRequest. */
                    interface IRestoreDatabaseRequest {

                        /** RestoreDatabaseRequest parent */
                        parent?: (string|null);

                        /** RestoreDatabaseRequest databaseId */
                        databaseId?: (string|null);

                        /** RestoreDatabaseRequest backup */
                        backup?: (string|null);

                        /** RestoreDatabaseRequest encryptionConfig */
                        encryptionConfig?: (google.spanner.admin.database.v1.IRestoreDatabaseEncryptionConfig|null);
                    }

                    /** Represents a RestoreDatabaseRequest. */
                    class RestoreDatabaseRequest implements IRestoreDatabaseRequest {

                        /**
                         * Constructs a new RestoreDatabaseRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IRestoreDatabaseRequest);

                        /** RestoreDatabaseRequest parent. */
                        public parent: string;

                        /** RestoreDatabaseRequest databaseId. */
                        public databaseId: string;

                        /** RestoreDatabaseRequest backup. */
                        public backup?: (string|null);

                        /** RestoreDatabaseRequest encryptionConfig. */
                        public encryptionConfig?: (google.spanner.admin.database.v1.IRestoreDatabaseEncryptionConfig|null);

                        /** RestoreDatabaseRequest source. */
                        public source?: "backup";

                        /**
                         * Creates a new RestoreDatabaseRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RestoreDatabaseRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IRestoreDatabaseRequest): google.spanner.admin.database.v1.RestoreDatabaseRequest;

                        /**
                         * Encodes the specified RestoreDatabaseRequest message. Does not implicitly {@link google.spanner.admin.database.v1.RestoreDatabaseRequest.verify|verify} messages.
                         * @param message RestoreDatabaseRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IRestoreDatabaseRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a RestoreDatabaseRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RestoreDatabaseRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.RestoreDatabaseRequest;

                        /**
                         * Decodes a RestoreDatabaseRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RestoreDatabaseRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.RestoreDatabaseRequest;

                        /**
                         * Verifies a RestoreDatabaseRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a RestoreDatabaseEncryptionConfig. */
                    interface IRestoreDatabaseEncryptionConfig {

                        /** RestoreDatabaseEncryptionConfig encryptionType */
                        encryptionType?: (google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig.EncryptionType|keyof typeof google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig.EncryptionType|null);

                        /** RestoreDatabaseEncryptionConfig kmsKeyName */
                        kmsKeyName?: (string|null);

                        /** RestoreDatabaseEncryptionConfig kmsKeyNames */
                        kmsKeyNames?: (string[]|null);
                    }

                    /** Represents a RestoreDatabaseEncryptionConfig. */
                    class RestoreDatabaseEncryptionConfig implements IRestoreDatabaseEncryptionConfig {

                        /**
                         * Constructs a new RestoreDatabaseEncryptionConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IRestoreDatabaseEncryptionConfig);

                        /** RestoreDatabaseEncryptionConfig encryptionType. */
                        public encryptionType: (google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig.EncryptionType|keyof typeof google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig.EncryptionType);

                        /** RestoreDatabaseEncryptionConfig kmsKeyName. */
                        public kmsKeyName: string;

                        /** RestoreDatabaseEncryptionConfig kmsKeyNames. */
                        public kmsKeyNames: string[];

                        /**
                         * Creates a new RestoreDatabaseEncryptionConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RestoreDatabaseEncryptionConfig instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IRestoreDatabaseEncryptionConfig): google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig;

                        /**
                         * Encodes the specified RestoreDatabaseEncryptionConfig message. Does not implicitly {@link google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig.verify|verify} messages.
                         * @param message RestoreDatabaseEncryptionConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IRestoreDatabaseEncryptionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a RestoreDatabaseEncryptionConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RestoreDatabaseEncryptionConfig
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig;

                        /**
                         * Decodes a RestoreDatabaseEncryptionConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RestoreDatabaseEncryptionConfig
                         * @throws {Error} If the 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.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig;

                        /**
                         * Verifies a RestoreDatabaseEncryptionConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace RestoreDatabaseEncryptionConfig {

                        /** EncryptionType enum. */
                        enum EncryptionType {
                            ENCRYPTION_TYPE_UNSPECIFIED = 0,
                            USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION = 1,
                            GOOGLE_DEFAULT_ENCRYPTION = 2,
                            CUSTOMER_MANAGED_ENCRYPTION = 3
                        }
                    }

                    /** Properties of a RestoreDatabaseMetadata. */
                    interface IRestoreDatabaseMetadata {

                        /** RestoreDatabaseMetadata name */
                        name?: (string|null);

                        /** RestoreDatabaseMetadata sourceType */
                        sourceType?: (google.spanner.admin.database.v1.RestoreSourceType|keyof typeof google.spanner.admin.database.v1.RestoreSourceType|null);

                        /** RestoreDatabaseMetadata backupInfo */
                        backupInfo?: (google.spanner.admin.database.v1.IBackupInfo|null);

                        /** RestoreDatabaseMetadata progress */
                        progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** RestoreDatabaseMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);

                        /** RestoreDatabaseMetadata optimizeDatabaseOperationName */
                        optimizeDatabaseOperationName?: (string|null);
                    }

                    /** Represents a RestoreDatabaseMetadata. */
                    class RestoreDatabaseMetadata implements IRestoreDatabaseMetadata {

                        /**
                         * Constructs a new RestoreDatabaseMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IRestoreDatabaseMetadata);

                        /** RestoreDatabaseMetadata name. */
                        public name: string;

                        /** RestoreDatabaseMetadata sourceType. */
                        public sourceType: (google.spanner.admin.database.v1.RestoreSourceType|keyof typeof google.spanner.admin.database.v1.RestoreSourceType);

                        /** RestoreDatabaseMetadata backupInfo. */
                        public backupInfo?: (google.spanner.admin.database.v1.IBackupInfo|null);

                        /** RestoreDatabaseMetadata progress. */
                        public progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /** RestoreDatabaseMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /** RestoreDatabaseMetadata optimizeDatabaseOperationName. */
                        public optimizeDatabaseOperationName: string;

                        /** RestoreDatabaseMetadata sourceInfo. */
                        public sourceInfo?: "backupInfo";

                        /**
                         * Creates a new RestoreDatabaseMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RestoreDatabaseMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IRestoreDatabaseMetadata): google.spanner.admin.database.v1.RestoreDatabaseMetadata;

                        /**
                         * Encodes the specified RestoreDatabaseMetadata message. Does not implicitly {@link google.spanner.admin.database.v1.RestoreDatabaseMetadata.verify|verify} messages.
                         * @param message RestoreDatabaseMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IRestoreDatabaseMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a RestoreDatabaseMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RestoreDatabaseMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.RestoreDatabaseMetadata;

                        /**
                         * Decodes a RestoreDatabaseMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RestoreDatabaseMetadata
                         * @throws {Error} If the 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.spanner.admin.database.v1.RestoreDatabaseMetadata;

                        /**
                         * Verifies a RestoreDatabaseMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an OptimizeRestoredDatabaseMetadata. */
                    interface IOptimizeRestoredDatabaseMetadata {

                        /** OptimizeRestoredDatabaseMetadata name */
                        name?: (string|null);

                        /** OptimizeRestoredDatabaseMetadata progress */
                        progress?: (google.spanner.admin.database.v1.IOperationProgress|null);
                    }

                    /** Represents an OptimizeRestoredDatabaseMetadata. */
                    class OptimizeRestoredDatabaseMetadata implements IOptimizeRestoredDatabaseMetadata {

                        /**
                         * Constructs a new OptimizeRestoredDatabaseMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IOptimizeRestoredDatabaseMetadata);

                        /** OptimizeRestoredDatabaseMetadata name. */
                        public name: string;

                        /** OptimizeRestoredDatabaseMetadata progress. */
                        public progress?: (google.spanner.admin.database.v1.IOperationProgress|null);

                        /**
                         * Creates a new OptimizeRestoredDatabaseMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OptimizeRestoredDatabaseMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IOptimizeRestoredDatabaseMetadata): google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata;

                        /**
                         * Encodes the specified OptimizeRestoredDatabaseMetadata message. Does not implicitly {@link google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata.verify|verify} messages.
                         * @param message OptimizeRestoredDatabaseMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IOptimizeRestoredDatabaseMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an OptimizeRestoredDatabaseMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OptimizeRestoredDatabaseMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata;

                        /**
                         * Decodes an OptimizeRestoredDatabaseMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OptimizeRestoredDatabaseMetadata
                         * @throws {Error} If the 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.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata;

                        /**
                         * Verifies an OptimizeRestoredDatabaseMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** RestoreSourceType enum. */
                    enum RestoreSourceType {
                        TYPE_UNSPECIFIED = 0,
                        BACKUP = 1
                    }

                    /** Properties of a DatabaseRole. */
                    interface IDatabaseRole {

                        /** DatabaseRole name */
                        name?: (string|null);
                    }

                    /** Represents a DatabaseRole. */
                    class DatabaseRole implements IDatabaseRole {

                        /**
                         * Constructs a new DatabaseRole.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IDatabaseRole);

                        /** DatabaseRole name. */
                        public name: string;

                        /**
                         * Creates a new DatabaseRole instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DatabaseRole instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IDatabaseRole): google.spanner.admin.database.v1.DatabaseRole;

                        /**
                         * Encodes the specified DatabaseRole message. Does not implicitly {@link google.spanner.admin.database.v1.DatabaseRole.verify|verify} messages.
                         * @param message DatabaseRole message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IDatabaseRole, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DatabaseRole message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DatabaseRole
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.DatabaseRole;

                        /**
                         * Decodes a DatabaseRole message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DatabaseRole
                         * @throws {Error} If the 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.spanner.admin.database.v1.DatabaseRole;

                        /**
                         * Verifies a DatabaseRole message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListDatabaseRolesRequest. */
                    interface IListDatabaseRolesRequest {

                        /** ListDatabaseRolesRequest parent */
                        parent?: (string|null);

                        /** ListDatabaseRolesRequest pageSize */
                        pageSize?: (number|null);

                        /** ListDatabaseRolesRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListDatabaseRolesRequest. */
                    class ListDatabaseRolesRequest implements IListDatabaseRolesRequest {

                        /**
                         * Constructs a new ListDatabaseRolesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListDatabaseRolesRequest);

                        /** ListDatabaseRolesRequest parent. */
                        public parent: string;

                        /** ListDatabaseRolesRequest pageSize. */
                        public pageSize: number;

                        /** ListDatabaseRolesRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListDatabaseRolesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListDatabaseRolesRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListDatabaseRolesRequest): google.spanner.admin.database.v1.ListDatabaseRolesRequest;

                        /**
                         * Encodes the specified ListDatabaseRolesRequest message. Does not implicitly {@link google.spanner.admin.database.v1.ListDatabaseRolesRequest.verify|verify} messages.
                         * @param message ListDatabaseRolesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListDatabaseRolesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListDatabaseRolesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListDatabaseRolesRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListDatabaseRolesRequest;

                        /**
                         * Decodes a ListDatabaseRolesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListDatabaseRolesRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListDatabaseRolesRequest;

                        /**
                         * Verifies a ListDatabaseRolesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListDatabaseRolesResponse. */
                    interface IListDatabaseRolesResponse {

                        /** ListDatabaseRolesResponse databaseRoles */
                        databaseRoles?: (google.spanner.admin.database.v1.IDatabaseRole[]|null);

                        /** ListDatabaseRolesResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListDatabaseRolesResponse. */
                    class ListDatabaseRolesResponse implements IListDatabaseRolesResponse {

                        /**
                         * Constructs a new ListDatabaseRolesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IListDatabaseRolesResponse);

                        /** ListDatabaseRolesResponse databaseRoles. */
                        public databaseRoles: google.spanner.admin.database.v1.IDatabaseRole[];

                        /** ListDatabaseRolesResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListDatabaseRolesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListDatabaseRolesResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IListDatabaseRolesResponse): google.spanner.admin.database.v1.ListDatabaseRolesResponse;

                        /**
                         * Encodes the specified ListDatabaseRolesResponse message. Does not implicitly {@link google.spanner.admin.database.v1.ListDatabaseRolesResponse.verify|verify} messages.
                         * @param message ListDatabaseRolesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IListDatabaseRolesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListDatabaseRolesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListDatabaseRolesResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.ListDatabaseRolesResponse;

                        /**
                         * Decodes a ListDatabaseRolesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListDatabaseRolesResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.ListDatabaseRolesResponse;

                        /**
                         * Verifies a ListDatabaseRolesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an AddSplitPointsRequest. */
                    interface IAddSplitPointsRequest {

                        /** AddSplitPointsRequest database */
                        database?: (string|null);

                        /** AddSplitPointsRequest splitPoints */
                        splitPoints?: (google.spanner.admin.database.v1.ISplitPoints[]|null);

                        /** AddSplitPointsRequest initiator */
                        initiator?: (string|null);
                    }

                    /** Represents an AddSplitPointsRequest. */
                    class AddSplitPointsRequest implements IAddSplitPointsRequest {

                        /**
                         * Constructs a new AddSplitPointsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IAddSplitPointsRequest);

                        /** AddSplitPointsRequest database. */
                        public database: string;

                        /** AddSplitPointsRequest splitPoints. */
                        public splitPoints: google.spanner.admin.database.v1.ISplitPoints[];

                        /** AddSplitPointsRequest initiator. */
                        public initiator: string;

                        /**
                         * Creates a new AddSplitPointsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddSplitPointsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IAddSplitPointsRequest): google.spanner.admin.database.v1.AddSplitPointsRequest;

                        /**
                         * Encodes the specified AddSplitPointsRequest message. Does not implicitly {@link google.spanner.admin.database.v1.AddSplitPointsRequest.verify|verify} messages.
                         * @param message AddSplitPointsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IAddSplitPointsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an AddSplitPointsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddSplitPointsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.AddSplitPointsRequest;

                        /**
                         * Decodes an AddSplitPointsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddSplitPointsRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.AddSplitPointsRequest;

                        /**
                         * Verifies an AddSplitPointsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an AddSplitPointsResponse. */
                    interface IAddSplitPointsResponse {
                    }

                    /** Represents an AddSplitPointsResponse. */
                    class AddSplitPointsResponse implements IAddSplitPointsResponse {

                        /**
                         * Constructs a new AddSplitPointsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IAddSplitPointsResponse);

                        /**
                         * Creates a new AddSplitPointsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddSplitPointsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IAddSplitPointsResponse): google.spanner.admin.database.v1.AddSplitPointsResponse;

                        /**
                         * Encodes the specified AddSplitPointsResponse message. Does not implicitly {@link google.spanner.admin.database.v1.AddSplitPointsResponse.verify|verify} messages.
                         * @param message AddSplitPointsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IAddSplitPointsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an AddSplitPointsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AddSplitPointsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.AddSplitPointsResponse;

                        /**
                         * Decodes an AddSplitPointsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AddSplitPointsResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.AddSplitPointsResponse;

                        /**
                         * Verifies an AddSplitPointsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a SplitPoints. */
                    interface ISplitPoints {

                        /** SplitPoints table */
                        table?: (string|null);

                        /** SplitPoints index */
                        index?: (string|null);

                        /** SplitPoints keys */
                        keys?: (google.spanner.admin.database.v1.SplitPoints.IKey[]|null);

                        /** SplitPoints expireTime */
                        expireTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a SplitPoints. */
                    class SplitPoints implements ISplitPoints {

                        /**
                         * Constructs a new SplitPoints.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.ISplitPoints);

                        /** SplitPoints table. */
                        public table: string;

                        /** SplitPoints index. */
                        public index: string;

                        /** SplitPoints keys. */
                        public keys: google.spanner.admin.database.v1.SplitPoints.IKey[];

                        /** SplitPoints expireTime. */
                        public expireTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new SplitPoints instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SplitPoints instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.ISplitPoints): google.spanner.admin.database.v1.SplitPoints;

                        /**
                         * Encodes the specified SplitPoints message. Does not implicitly {@link google.spanner.admin.database.v1.SplitPoints.verify|verify} messages.
                         * @param message SplitPoints message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.ISplitPoints, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a SplitPoints message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SplitPoints
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.SplitPoints;

                        /**
                         * Decodes a SplitPoints message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SplitPoints
                         * @throws {Error} If the 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.spanner.admin.database.v1.SplitPoints;

                        /**
                         * Verifies a SplitPoints message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace SplitPoints {

                        /** Properties of a Key. */
                        interface IKey {

                            /** Key keyParts */
                            keyParts?: (google.protobuf.IListValue|null);
                        }

                        /** Represents a Key. */
                        class Key implements IKey {

                            /**
                             * Constructs a new Key.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.spanner.admin.database.v1.SplitPoints.IKey);

                            /** Key keyParts. */
                            public keyParts?: (google.protobuf.IListValue|null);

                            /**
                             * Creates a new Key instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Key instance
                             */
                            public static create(properties?: google.spanner.admin.database.v1.SplitPoints.IKey): google.spanner.admin.database.v1.SplitPoints.Key;

                            /**
                             * Encodes the specified Key message. Does not implicitly {@link google.spanner.admin.database.v1.SplitPoints.Key.verify|verify} messages.
                             * @param message Key message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.spanner.admin.database.v1.SplitPoints.IKey, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Key message, length delimited. Does not implicitly {@link google.spanner.admin.database.v1.SplitPoints.Key.verify|verify} messages.
                             * @param message Key message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.spanner.admin.database.v1.SplitPoints.IKey, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Key message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Key
                             * @throws {Error} If the payload is 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.spanner.admin.database.v1.SplitPoints.Key;

                            /**
                             * Decodes a Key message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Key
                             * @throws {Error} If the 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.spanner.admin.database.v1.SplitPoints.Key;

                            /**
                             * Verifies a Key message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Key message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Key
                             */
                            public static fromObject(object: { [k: string]: any }): google.spanner.admin.database.v1.SplitPoints.Key;

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

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

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

                    /** Properties of an InternalUpdateGraphOperationRequest. */
                    interface IInternalUpdateGraphOperationRequest {

                        /** InternalUpdateGraphOperationRequest database */
                        database?: (string|null);

                        /** InternalUpdateGraphOperationRequest operationId */
                        operationId?: (string|null);

                        /** InternalUpdateGraphOperationRequest vmIdentityToken */
                        vmIdentityToken?: (string|null);

                        /** InternalUpdateGraphOperationRequest progress */
                        progress?: (number|null);

                        /** InternalUpdateGraphOperationRequest status */
                        status?: (google.rpc.IStatus|null);
                    }

                    /** Represents an InternalUpdateGraphOperationRequest. */
                    class InternalUpdateGraphOperationRequest implements IInternalUpdateGraphOperationRequest {

                        /**
                         * Constructs a new InternalUpdateGraphOperationRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IInternalUpdateGraphOperationRequest);

                        /** InternalUpdateGraphOperationRequest database. */
                        public database: string;

                        /** InternalUpdateGraphOperationRequest operationId. */
                        public operationId: string;

                        /** InternalUpdateGraphOperationRequest vmIdentityToken. */
                        public vmIdentityToken: string;

                        /** InternalUpdateGraphOperationRequest progress. */
                        public progress: number;

                        /** InternalUpdateGraphOperationRequest status. */
                        public status?: (google.rpc.IStatus|null);

                        /**
                         * Creates a new InternalUpdateGraphOperationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InternalUpdateGraphOperationRequest instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IInternalUpdateGraphOperationRequest): google.spanner.admin.database.v1.InternalUpdateGraphOperationRequest;

                        /**
                         * Encodes the specified InternalUpdateGraphOperationRequest message. Does not implicitly {@link google.spanner.admin.database.v1.InternalUpdateGraphOperationRequest.verify|verify} messages.
                         * @param message InternalUpdateGraphOperationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IInternalUpdateGraphOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an InternalUpdateGraphOperationRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InternalUpdateGraphOperationRequest
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.InternalUpdateGraphOperationRequest;

                        /**
                         * Decodes an InternalUpdateGraphOperationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InternalUpdateGraphOperationRequest
                         * @throws {Error} If the 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.spanner.admin.database.v1.InternalUpdateGraphOperationRequest;

                        /**
                         * Verifies an InternalUpdateGraphOperationRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an InternalUpdateGraphOperationResponse. */
                    interface IInternalUpdateGraphOperationResponse {
                    }

                    /** Represents an InternalUpdateGraphOperationResponse. */
                    class InternalUpdateGraphOperationResponse implements IInternalUpdateGraphOperationResponse {

                        /**
                         * Constructs a new InternalUpdateGraphOperationResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.database.v1.IInternalUpdateGraphOperationResponse);

                        /**
                         * Creates a new InternalUpdateGraphOperationResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InternalUpdateGraphOperationResponse instance
                         */
                        public static create(properties?: google.spanner.admin.database.v1.IInternalUpdateGraphOperationResponse): google.spanner.admin.database.v1.InternalUpdateGraphOperationResponse;

                        /**
                         * Encodes the specified InternalUpdateGraphOperationResponse message. Does not implicitly {@link google.spanner.admin.database.v1.InternalUpdateGraphOperationResponse.verify|verify} messages.
                         * @param message InternalUpdateGraphOperationResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.database.v1.IInternalUpdateGraphOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an InternalUpdateGraphOperationResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InternalUpdateGraphOperationResponse
                         * @throws {Error} If the payload is 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.spanner.admin.database.v1.InternalUpdateGraphOperationResponse;

                        /**
                         * Decodes an InternalUpdateGraphOperationResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InternalUpdateGraphOperationResponse
                         * @throws {Error} If the 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.spanner.admin.database.v1.InternalUpdateGraphOperationResponse;

                        /**
                         * Verifies an InternalUpdateGraphOperationResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

            /** Namespace instance. */
            namespace instance {

                /** Namespace v1. */
                namespace v1 {

                    /** Properties of an OperationProgress. */
                    interface IOperationProgress {

                        /** OperationProgress progressPercent */
                        progressPercent?: (number|null);

                        /** OperationProgress startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** OperationProgress endTime */
                        endTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an OperationProgress. */
                    class OperationProgress implements IOperationProgress {

                        /**
                         * Constructs a new OperationProgress.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IOperationProgress);

                        /** OperationProgress progressPercent. */
                        public progressPercent: number;

                        /** OperationProgress startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** OperationProgress endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new OperationProgress instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperationProgress instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IOperationProgress): google.spanner.admin.instance.v1.OperationProgress;

                        /**
                         * Encodes the specified OperationProgress message. Does not implicitly {@link google.spanner.admin.instance.v1.OperationProgress.verify|verify} messages.
                         * @param message OperationProgress message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IOperationProgress, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an OperationProgress message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OperationProgress
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.OperationProgress;

                        /**
                         * Decodes an OperationProgress message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OperationProgress
                         * @throws {Error} If the 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.spanner.admin.instance.v1.OperationProgress;

                        /**
                         * Verifies an OperationProgress message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** FulfillmentPeriod enum. */
                    enum FulfillmentPeriod {
                        FULFILLMENT_PERIOD_UNSPECIFIED = 0,
                        FULFILLMENT_PERIOD_NORMAL = 1,
                        FULFILLMENT_PERIOD_EXTENDED = 2
                    }

                    /** Properties of a ReplicaSelection. */
                    interface IReplicaSelection {

                        /** ReplicaSelection location */
                        location?: (string|null);
                    }

                    /** Represents a ReplicaSelection. */
                    class ReplicaSelection implements IReplicaSelection {

                        /**
                         * Constructs a new ReplicaSelection.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IReplicaSelection);

                        /** ReplicaSelection location. */
                        public location: string;

                        /**
                         * Creates a new ReplicaSelection instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplicaSelection instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IReplicaSelection): google.spanner.admin.instance.v1.ReplicaSelection;

                        /**
                         * Encodes the specified ReplicaSelection message. Does not implicitly {@link google.spanner.admin.instance.v1.ReplicaSelection.verify|verify} messages.
                         * @param message ReplicaSelection message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IReplicaSelection, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ReplicaSelection message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplicaSelection
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ReplicaSelection;

                        /**
                         * Decodes a ReplicaSelection message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplicaSelection
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ReplicaSelection;

                        /**
                         * Verifies a ReplicaSelection message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Represents an InstanceAdmin */
                    class InstanceAdmin extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new InstanceAdmin 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 InstanceAdmin 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): InstanceAdmin;

                        /**
                         * Calls ListInstanceConfigs.
                         * @param request ListInstanceConfigsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListInstanceConfigsResponse
                         */
                        public listInstanceConfigs(request: google.spanner.admin.instance.v1.IListInstanceConfigsRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.ListInstanceConfigsCallback): void;

                        /**
                         * Calls ListInstanceConfigs.
                         * @param request ListInstanceConfigsRequest message or plain object
                         * @returns Promise
                         */
                        public listInstanceConfigs(request: google.spanner.admin.instance.v1.IListInstanceConfigsRequest): Promise<google.spanner.admin.instance.v1.ListInstanceConfigsResponse>;

                        /**
                         * Calls GetInstanceConfig.
                         * @param request GetInstanceConfigRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and InstanceConfig
                         */
                        public getInstanceConfig(request: google.spanner.admin.instance.v1.IGetInstanceConfigRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.GetInstanceConfigCallback): void;

                        /**
                         * Calls GetInstanceConfig.
                         * @param request GetInstanceConfigRequest message or plain object
                         * @returns Promise
                         */
                        public getInstanceConfig(request: google.spanner.admin.instance.v1.IGetInstanceConfigRequest): Promise<google.spanner.admin.instance.v1.InstanceConfig>;

                        /**
                         * Calls CreateInstanceConfig.
                         * @param request CreateInstanceConfigRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public createInstanceConfig(request: google.spanner.admin.instance.v1.ICreateInstanceConfigRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.CreateInstanceConfigCallback): void;

                        /**
                         * Calls CreateInstanceConfig.
                         * @param request CreateInstanceConfigRequest message or plain object
                         * @returns Promise
                         */
                        public createInstanceConfig(request: google.spanner.admin.instance.v1.ICreateInstanceConfigRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls UpdateInstanceConfig.
                         * @param request UpdateInstanceConfigRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public updateInstanceConfig(request: google.spanner.admin.instance.v1.IUpdateInstanceConfigRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstanceConfigCallback): void;

                        /**
                         * Calls UpdateInstanceConfig.
                         * @param request UpdateInstanceConfigRequest message or plain object
                         * @returns Promise
                         */
                        public updateInstanceConfig(request: google.spanner.admin.instance.v1.IUpdateInstanceConfigRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls DeleteInstanceConfig.
                         * @param request DeleteInstanceConfigRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public deleteInstanceConfig(request: google.spanner.admin.instance.v1.IDeleteInstanceConfigRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.DeleteInstanceConfigCallback): void;

                        /**
                         * Calls DeleteInstanceConfig.
                         * @param request DeleteInstanceConfigRequest message or plain object
                         * @returns Promise
                         */
                        public deleteInstanceConfig(request: google.spanner.admin.instance.v1.IDeleteInstanceConfigRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls ListInstanceConfigOperations.
                         * @param request ListInstanceConfigOperationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListInstanceConfigOperationsResponse
                         */
                        public listInstanceConfigOperations(request: google.spanner.admin.instance.v1.IListInstanceConfigOperationsRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.ListInstanceConfigOperationsCallback): void;

                        /**
                         * Calls ListInstanceConfigOperations.
                         * @param request ListInstanceConfigOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public listInstanceConfigOperations(request: google.spanner.admin.instance.v1.IListInstanceConfigOperationsRequest): Promise<google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse>;

                        /**
                         * Calls ListInstances.
                         * @param request ListInstancesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListInstancesResponse
                         */
                        public listInstances(request: google.spanner.admin.instance.v1.IListInstancesRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.ListInstancesCallback): void;

                        /**
                         * Calls ListInstances.
                         * @param request ListInstancesRequest message or plain object
                         * @returns Promise
                         */
                        public listInstances(request: google.spanner.admin.instance.v1.IListInstancesRequest): Promise<google.spanner.admin.instance.v1.ListInstancesResponse>;

                        /**
                         * Calls ListInstancePartitions.
                         * @param request ListInstancePartitionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListInstancePartitionsResponse
                         */
                        public listInstancePartitions(request: google.spanner.admin.instance.v1.IListInstancePartitionsRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.ListInstancePartitionsCallback): void;

                        /**
                         * Calls ListInstancePartitions.
                         * @param request ListInstancePartitionsRequest message or plain object
                         * @returns Promise
                         */
                        public listInstancePartitions(request: google.spanner.admin.instance.v1.IListInstancePartitionsRequest): Promise<google.spanner.admin.instance.v1.ListInstancePartitionsResponse>;

                        /**
                         * Calls GetInstance.
                         * @param request GetInstanceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Instance
                         */
                        public getInstance(request: google.spanner.admin.instance.v1.IGetInstanceRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.GetInstanceCallback): void;

                        /**
                         * Calls GetInstance.
                         * @param request GetInstanceRequest message or plain object
                         * @returns Promise
                         */
                        public getInstance(request: google.spanner.admin.instance.v1.IGetInstanceRequest): Promise<google.spanner.admin.instance.v1.Instance>;

                        /**
                         * Calls CreateInstance.
                         * @param request CreateInstanceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public createInstance(request: google.spanner.admin.instance.v1.ICreateInstanceRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.CreateInstanceCallback): void;

                        /**
                         * Calls CreateInstance.
                         * @param request CreateInstanceRequest message or plain object
                         * @returns Promise
                         */
                        public createInstance(request: google.spanner.admin.instance.v1.ICreateInstanceRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls UpdateInstance.
                         * @param request UpdateInstanceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public updateInstance(request: google.spanner.admin.instance.v1.IUpdateInstanceRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstanceCallback): void;

                        /**
                         * Calls UpdateInstance.
                         * @param request UpdateInstanceRequest message or plain object
                         * @returns Promise
                         */
                        public updateInstance(request: google.spanner.admin.instance.v1.IUpdateInstanceRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls DeleteInstance.
                         * @param request DeleteInstanceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public deleteInstance(request: google.spanner.admin.instance.v1.IDeleteInstanceRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.DeleteInstanceCallback): void;

                        /**
                         * Calls DeleteInstance.
                         * @param request DeleteInstanceRequest message or plain object
                         * @returns Promise
                         */
                        public deleteInstance(request: google.spanner.admin.instance.v1.IDeleteInstanceRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls SetIamPolicy.
                         * @param request SetIamPolicyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Policy
                         */
                        public setIamPolicy(request: google.iam.v1.ISetIamPolicyRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.SetIamPolicyCallback): void;

                        /**
                         * Calls SetIamPolicy.
                         * @param request SetIamPolicyRequest message or plain object
                         * @returns Promise
                         */
                        public setIamPolicy(request: google.iam.v1.ISetIamPolicyRequest): Promise<google.iam.v1.Policy>;

                        /**
                         * Calls GetIamPolicy.
                         * @param request GetIamPolicyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Policy
                         */
                        public getIamPolicy(request: google.iam.v1.IGetIamPolicyRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.GetIamPolicyCallback): void;

                        /**
                         * Calls GetIamPolicy.
                         * @param request GetIamPolicyRequest message or plain object
                         * @returns Promise
                         */
                        public getIamPolicy(request: google.iam.v1.IGetIamPolicyRequest): Promise<google.iam.v1.Policy>;

                        /**
                         * Calls TestIamPermissions.
                         * @param request TestIamPermissionsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and TestIamPermissionsResponse
                         */
                        public testIamPermissions(request: google.iam.v1.ITestIamPermissionsRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.TestIamPermissionsCallback): void;

                        /**
                         * Calls TestIamPermissions.
                         * @param request TestIamPermissionsRequest message or plain object
                         * @returns Promise
                         */
                        public testIamPermissions(request: google.iam.v1.ITestIamPermissionsRequest): Promise<google.iam.v1.TestIamPermissionsResponse>;

                        /**
                         * Calls GetInstancePartition.
                         * @param request GetInstancePartitionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and InstancePartition
                         */
                        public getInstancePartition(request: google.spanner.admin.instance.v1.IGetInstancePartitionRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.GetInstancePartitionCallback): void;

                        /**
                         * Calls GetInstancePartition.
                         * @param request GetInstancePartitionRequest message or plain object
                         * @returns Promise
                         */
                        public getInstancePartition(request: google.spanner.admin.instance.v1.IGetInstancePartitionRequest): Promise<google.spanner.admin.instance.v1.InstancePartition>;

                        /**
                         * Calls CreateInstancePartition.
                         * @param request CreateInstancePartitionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public createInstancePartition(request: google.spanner.admin.instance.v1.ICreateInstancePartitionRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.CreateInstancePartitionCallback): void;

                        /**
                         * Calls CreateInstancePartition.
                         * @param request CreateInstancePartitionRequest message or plain object
                         * @returns Promise
                         */
                        public createInstancePartition(request: google.spanner.admin.instance.v1.ICreateInstancePartitionRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls DeleteInstancePartition.
                         * @param request DeleteInstancePartitionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public deleteInstancePartition(request: google.spanner.admin.instance.v1.IDeleteInstancePartitionRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.DeleteInstancePartitionCallback): void;

                        /**
                         * Calls DeleteInstancePartition.
                         * @param request DeleteInstancePartitionRequest message or plain object
                         * @returns Promise
                         */
                        public deleteInstancePartition(request: google.spanner.admin.instance.v1.IDeleteInstancePartitionRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls UpdateInstancePartition.
                         * @param request UpdateInstancePartitionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public updateInstancePartition(request: google.spanner.admin.instance.v1.IUpdateInstancePartitionRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstancePartitionCallback): void;

                        /**
                         * Calls UpdateInstancePartition.
                         * @param request UpdateInstancePartitionRequest message or plain object
                         * @returns Promise
                         */
                        public updateInstancePartition(request: google.spanner.admin.instance.v1.IUpdateInstancePartitionRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls ListInstancePartitionOperations.
                         * @param request ListInstancePartitionOperationsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListInstancePartitionOperationsResponse
                         */
                        public listInstancePartitionOperations(request: google.spanner.admin.instance.v1.IListInstancePartitionOperationsRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.ListInstancePartitionOperationsCallback): void;

                        /**
                         * Calls ListInstancePartitionOperations.
                         * @param request ListInstancePartitionOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public listInstancePartitionOperations(request: google.spanner.admin.instance.v1.IListInstancePartitionOperationsRequest): Promise<google.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse>;

                        /**
                         * Calls MoveInstance.
                         * @param request MoveInstanceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public moveInstance(request: google.spanner.admin.instance.v1.IMoveInstanceRequest, callback: google.spanner.admin.instance.v1.InstanceAdmin.MoveInstanceCallback): void;

                        /**
                         * Calls MoveInstance.
                         * @param request MoveInstanceRequest message or plain object
                         * @returns Promise
                         */
                        public moveInstance(request: google.spanner.admin.instance.v1.IMoveInstanceRequest): Promise<google.longrunning.Operation>;
                    }

                    namespace InstanceAdmin {

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|listInstanceConfigs}.
                         * @param error Error, if any
                         * @param [response] ListInstanceConfigsResponse
                         */
                        type ListInstanceConfigsCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.ListInstanceConfigsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|getInstanceConfig}.
                         * @param error Error, if any
                         * @param [response] InstanceConfig
                         */
                        type GetInstanceConfigCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.InstanceConfig) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|createInstanceConfig}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type CreateInstanceConfigCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|updateInstanceConfig}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type UpdateInstanceConfigCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|deleteInstanceConfig}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type DeleteInstanceConfigCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|listInstanceConfigOperations}.
                         * @param error Error, if any
                         * @param [response] ListInstanceConfigOperationsResponse
                         */
                        type ListInstanceConfigOperationsCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|listInstances}.
                         * @param error Error, if any
                         * @param [response] ListInstancesResponse
                         */
                        type ListInstancesCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.ListInstancesResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|listInstancePartitions}.
                         * @param error Error, if any
                         * @param [response] ListInstancePartitionsResponse
                         */
                        type ListInstancePartitionsCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.ListInstancePartitionsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|getInstance}.
                         * @param error Error, if any
                         * @param [response] Instance
                         */
                        type GetInstanceCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.Instance) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|createInstance}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type CreateInstanceCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|updateInstance}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type UpdateInstanceCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|deleteInstance}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type DeleteInstanceCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|setIamPolicy}.
                         * @param error Error, if any
                         * @param [response] Policy
                         */
                        type SetIamPolicyCallback = (error: (Error|null), response?: google.iam.v1.Policy) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|getIamPolicy}.
                         * @param error Error, if any
                         * @param [response] Policy
                         */
                        type GetIamPolicyCallback = (error: (Error|null), response?: google.iam.v1.Policy) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|testIamPermissions}.
                         * @param error Error, if any
                         * @param [response] TestIamPermissionsResponse
                         */
                        type TestIamPermissionsCallback = (error: (Error|null), response?: google.iam.v1.TestIamPermissionsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|getInstancePartition}.
                         * @param error Error, if any
                         * @param [response] InstancePartition
                         */
                        type GetInstancePartitionCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.InstancePartition) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|createInstancePartition}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type CreateInstancePartitionCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|deleteInstancePartition}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type DeleteInstancePartitionCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|updateInstancePartition}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type UpdateInstancePartitionCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|listInstancePartitionOperations}.
                         * @param error Error, if any
                         * @param [response] ListInstancePartitionOperationsResponse
                         */
                        type ListInstancePartitionOperationsCallback = (error: (Error|null), response?: google.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse) => void;

                        /**
                         * Callback as used by {@link google.spanner.admin.instance.v1.InstanceAdmin|moveInstance}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type MoveInstanceCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                    }

                    /** Properties of a ReplicaInfo. */
                    interface IReplicaInfo {

                        /** ReplicaInfo location */
                        location?: (string|null);

                        /** ReplicaInfo type */
                        type?: (google.spanner.admin.instance.v1.ReplicaInfo.ReplicaType|keyof typeof google.spanner.admin.instance.v1.ReplicaInfo.ReplicaType|null);

                        /** ReplicaInfo defaultLeaderLocation */
                        defaultLeaderLocation?: (boolean|null);
                    }

                    /** Represents a ReplicaInfo. */
                    class ReplicaInfo implements IReplicaInfo {

                        /**
                         * Constructs a new ReplicaInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IReplicaInfo);

                        /** ReplicaInfo location. */
                        public location: string;

                        /** ReplicaInfo type. */
                        public type: (google.spanner.admin.instance.v1.ReplicaInfo.ReplicaType|keyof typeof google.spanner.admin.instance.v1.ReplicaInfo.ReplicaType);

                        /** ReplicaInfo defaultLeaderLocation. */
                        public defaultLeaderLocation: boolean;

                        /**
                         * Creates a new ReplicaInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplicaInfo instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IReplicaInfo): google.spanner.admin.instance.v1.ReplicaInfo;

                        /**
                         * Encodes the specified ReplicaInfo message. Does not implicitly {@link google.spanner.admin.instance.v1.ReplicaInfo.verify|verify} messages.
                         * @param message ReplicaInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IReplicaInfo, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ReplicaInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplicaInfo
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ReplicaInfo;

                        /**
                         * Decodes a ReplicaInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplicaInfo
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ReplicaInfo;

                        /**
                         * Verifies a ReplicaInfo message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace ReplicaInfo {

                        /** ReplicaType enum. */
                        enum ReplicaType {
                            TYPE_UNSPECIFIED = 0,
                            READ_WRITE = 1,
                            READ_ONLY = 2,
                            WITNESS = 3
                        }
                    }

                    /** Properties of an InstanceConfig. */
                    interface IInstanceConfig {

                        /** InstanceConfig name */
                        name?: (string|null);

                        /** InstanceConfig displayName */
                        displayName?: (string|null);

                        /** InstanceConfig configType */
                        configType?: (google.spanner.admin.instance.v1.InstanceConfig.Type|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.Type|null);

                        /** InstanceConfig replicas */
                        replicas?: (google.spanner.admin.instance.v1.IReplicaInfo[]|null);

                        /** InstanceConfig optionalReplicas */
                        optionalReplicas?: (google.spanner.admin.instance.v1.IReplicaInfo[]|null);

                        /** InstanceConfig baseConfig */
                        baseConfig?: (string|null);

                        /** InstanceConfig labels */
                        labels?: ({ [k: string]: string }|null);

                        /** InstanceConfig etag */
                        etag?: (string|null);

                        /** InstanceConfig leaderOptions */
                        leaderOptions?: (string[]|null);

                        /** InstanceConfig reconciling */
                        reconciling?: (boolean|null);

                        /** InstanceConfig state */
                        state?: (google.spanner.admin.instance.v1.InstanceConfig.State|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.State|null);

                        /** InstanceConfig freeInstanceAvailability */
                        freeInstanceAvailability?: (google.spanner.admin.instance.v1.InstanceConfig.FreeInstanceAvailability|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.FreeInstanceAvailability|null);

                        /** InstanceConfig quorumType */
                        quorumType?: (google.spanner.admin.instance.v1.InstanceConfig.QuorumType|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.QuorumType|null);

                        /** InstanceConfig storageLimitPerProcessingUnit */
                        storageLimitPerProcessingUnit?: (number|Long|string|null);
                    }

                    /** Represents an InstanceConfig. */
                    class InstanceConfig implements IInstanceConfig {

                        /**
                         * Constructs a new InstanceConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IInstanceConfig);

                        /** InstanceConfig name. */
                        public name: string;

                        /** InstanceConfig displayName. */
                        public displayName: string;

                        /** InstanceConfig configType. */
                        public configType: (google.spanner.admin.instance.v1.InstanceConfig.Type|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.Type);

                        /** InstanceConfig replicas. */
                        public replicas: google.spanner.admin.instance.v1.IReplicaInfo[];

                        /** InstanceConfig optionalReplicas. */
                        public optionalReplicas: google.spanner.admin.instance.v1.IReplicaInfo[];

                        /** InstanceConfig baseConfig. */
                        public baseConfig: string;

                        /** InstanceConfig labels. */
                        public labels: { [k: string]: string };

                        /** InstanceConfig etag. */
                        public etag: string;

                        /** InstanceConfig leaderOptions. */
                        public leaderOptions: string[];

                        /** InstanceConfig reconciling. */
                        public reconciling: boolean;

                        /** InstanceConfig state. */
                        public state: (google.spanner.admin.instance.v1.InstanceConfig.State|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.State);

                        /** InstanceConfig freeInstanceAvailability. */
                        public freeInstanceAvailability: (google.spanner.admin.instance.v1.InstanceConfig.FreeInstanceAvailability|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.FreeInstanceAvailability);

                        /** InstanceConfig quorumType. */
                        public quorumType: (google.spanner.admin.instance.v1.InstanceConfig.QuorumType|keyof typeof google.spanner.admin.instance.v1.InstanceConfig.QuorumType);

                        /** InstanceConfig storageLimitPerProcessingUnit. */
                        public storageLimitPerProcessingUnit: (number|Long|string);

                        /**
                         * Creates a new InstanceConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InstanceConfig instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IInstanceConfig): google.spanner.admin.instance.v1.InstanceConfig;

                        /**
                         * Encodes the specified InstanceConfig message. Does not implicitly {@link google.spanner.admin.instance.v1.InstanceConfig.verify|verify} messages.
                         * @param message InstanceConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IInstanceConfig, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an InstanceConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InstanceConfig
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.InstanceConfig;

                        /**
                         * Decodes an InstanceConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InstanceConfig
                         * @throws {Error} If the 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.spanner.admin.instance.v1.InstanceConfig;

                        /**
                         * Verifies an InstanceConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace InstanceConfig {

                        /** Type enum. */
                        enum Type {
                            TYPE_UNSPECIFIED = 0,
                            GOOGLE_MANAGED = 1,
                            USER_MANAGED = 2
                        }

                        /** State enum. */
                        enum State {
                            STATE_UNSPECIFIED = 0,
                            CREATING = 1,
                            READY = 2
                        }

                        /** FreeInstanceAvailability enum. */
                        enum FreeInstanceAvailability {
                            FREE_INSTANCE_AVAILABILITY_UNSPECIFIED = 0,
                            AVAILABLE = 1,
                            UNSUPPORTED = 2,
                            DISABLED = 3,
                            QUOTA_EXCEEDED = 4
                        }

                        /** QuorumType enum. */
                        enum QuorumType {
                            QUORUM_TYPE_UNSPECIFIED = 0,
                            REGION = 1,
                            DUAL_REGION = 2,
                            MULTI_REGION = 3
                        }
                    }

                    /** Properties of a ReplicaComputeCapacity. */
                    interface IReplicaComputeCapacity {

                        /** ReplicaComputeCapacity replicaSelection */
                        replicaSelection?: (google.spanner.admin.instance.v1.IReplicaSelection|null);

                        /** ReplicaComputeCapacity nodeCount */
                        nodeCount?: (number|null);

                        /** ReplicaComputeCapacity processingUnits */
                        processingUnits?: (number|null);
                    }

                    /** Represents a ReplicaComputeCapacity. */
                    class ReplicaComputeCapacity implements IReplicaComputeCapacity {

                        /**
                         * Constructs a new ReplicaComputeCapacity.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IReplicaComputeCapacity);

                        /** ReplicaComputeCapacity replicaSelection. */
                        public replicaSelection?: (google.spanner.admin.instance.v1.IReplicaSelection|null);

                        /** ReplicaComputeCapacity nodeCount. */
                        public nodeCount?: (number|null);

                        /** ReplicaComputeCapacity processingUnits. */
                        public processingUnits?: (number|null);

                        /** ReplicaComputeCapacity computeCapacity. */
                        public computeCapacity?: ("nodeCount"|"processingUnits");

                        /**
                         * Creates a new ReplicaComputeCapacity instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplicaComputeCapacity instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IReplicaComputeCapacity): google.spanner.admin.instance.v1.ReplicaComputeCapacity;

                        /**
                         * Encodes the specified ReplicaComputeCapacity message. Does not implicitly {@link google.spanner.admin.instance.v1.ReplicaComputeCapacity.verify|verify} messages.
                         * @param message ReplicaComputeCapacity message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IReplicaComputeCapacity, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ReplicaComputeCapacity message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplicaComputeCapacity
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ReplicaComputeCapacity;

                        /**
                         * Decodes a ReplicaComputeCapacity message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplicaComputeCapacity
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ReplicaComputeCapacity;

                        /**
                         * Verifies a ReplicaComputeCapacity message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an AutoscalingConfig. */
                    interface IAutoscalingConfig {

                        /** AutoscalingConfig autoscalingLimits */
                        autoscalingLimits?: (google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits|null);

                        /** AutoscalingConfig autoscalingTargets */
                        autoscalingTargets?: (google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingTargets|null);

                        /** AutoscalingConfig asymmetricAutoscalingOptions */
                        asymmetricAutoscalingOptions?: (google.spanner.admin.instance.v1.AutoscalingConfig.IAsymmetricAutoscalingOption[]|null);
                    }

                    /** Represents an AutoscalingConfig. */
                    class AutoscalingConfig implements IAutoscalingConfig {

                        /**
                         * Constructs a new AutoscalingConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IAutoscalingConfig);

                        /** AutoscalingConfig autoscalingLimits. */
                        public autoscalingLimits?: (google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits|null);

                        /** AutoscalingConfig autoscalingTargets. */
                        public autoscalingTargets?: (google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingTargets|null);

                        /** AutoscalingConfig asymmetricAutoscalingOptions. */
                        public asymmetricAutoscalingOptions: google.spanner.admin.instance.v1.AutoscalingConfig.IAsymmetricAutoscalingOption[];

                        /**
                         * Creates a new AutoscalingConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AutoscalingConfig instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IAutoscalingConfig): google.spanner.admin.instance.v1.AutoscalingConfig;

                        /**
                         * Encodes the specified AutoscalingConfig message. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.verify|verify} messages.
                         * @param message AutoscalingConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IAutoscalingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an AutoscalingConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AutoscalingConfig
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.AutoscalingConfig;

                        /**
                         * Decodes an AutoscalingConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AutoscalingConfig
                         * @throws {Error} If the 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.spanner.admin.instance.v1.AutoscalingConfig;

                        /**
                         * Verifies an AutoscalingConfig message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace AutoscalingConfig {

                        /** Properties of an AutoscalingLimits. */
                        interface IAutoscalingLimits {

                            /** AutoscalingLimits minNodes */
                            minNodes?: (number|null);

                            /** AutoscalingLimits minProcessingUnits */
                            minProcessingUnits?: (number|null);

                            /** AutoscalingLimits maxNodes */
                            maxNodes?: (number|null);

                            /** AutoscalingLimits maxProcessingUnits */
                            maxProcessingUnits?: (number|null);
                        }

                        /** Represents an AutoscalingLimits. */
                        class AutoscalingLimits implements IAutoscalingLimits {

                            /**
                             * Constructs a new AutoscalingLimits.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits);

                            /** AutoscalingLimits minNodes. */
                            public minNodes?: (number|null);

                            /** AutoscalingLimits minProcessingUnits. */
                            public minProcessingUnits?: (number|null);

                            /** AutoscalingLimits maxNodes. */
                            public maxNodes?: (number|null);

                            /** AutoscalingLimits maxProcessingUnits. */
                            public maxProcessingUnits?: (number|null);

                            /** AutoscalingLimits minLimit. */
                            public minLimit?: ("minNodes"|"minProcessingUnits");

                            /** AutoscalingLimits maxLimit. */
                            public maxLimit?: ("maxNodes"|"maxProcessingUnits");

                            /**
                             * Creates a new AutoscalingLimits instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AutoscalingLimits instance
                             */
                            public static create(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits): google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingLimits;

                            /**
                             * Encodes the specified AutoscalingLimits message. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingLimits.verify|verify} messages.
                             * @param message AutoscalingLimits message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AutoscalingLimits message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingLimits.verify|verify} messages.
                             * @param message AutoscalingLimits message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AutoscalingLimits message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AutoscalingLimits
                             * @throws {Error} If the payload is 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.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingLimits;

                            /**
                             * Decodes an AutoscalingLimits message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AutoscalingLimits
                             * @throws {Error} If the 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.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingLimits;

                            /**
                             * Verifies an AutoscalingLimits message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                        /** Properties of an AutoscalingTargets. */
                        interface IAutoscalingTargets {

                            /** AutoscalingTargets highPriorityCpuUtilizationPercent */
                            highPriorityCpuUtilizationPercent?: (number|null);

                            /** AutoscalingTargets storageUtilizationPercent */
                            storageUtilizationPercent?: (number|null);
                        }

                        /** Represents an AutoscalingTargets. */
                        class AutoscalingTargets implements IAutoscalingTargets {

                            /**
                             * Constructs a new AutoscalingTargets.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingTargets);

                            /** AutoscalingTargets highPriorityCpuUtilizationPercent. */
                            public highPriorityCpuUtilizationPercent: number;

                            /** AutoscalingTargets storageUtilizationPercent. */
                            public storageUtilizationPercent: number;

                            /**
                             * Creates a new AutoscalingTargets instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AutoscalingTargets instance
                             */
                            public static create(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingTargets): google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets;

                            /**
                             * Encodes the specified AutoscalingTargets message. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets.verify|verify} messages.
                             * @param message AutoscalingTargets message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingTargets, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AutoscalingTargets message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets.verify|verify} messages.
                             * @param message AutoscalingTargets message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingTargets, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AutoscalingTargets message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AutoscalingTargets
                             * @throws {Error} If the payload is 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.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets;

                            /**
                             * Decodes an AutoscalingTargets message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AutoscalingTargets
                             * @throws {Error} If the 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.spanner.admin.instance.v1.AutoscalingConfig.AutoscalingTargets;

                            /**
                             * Verifies an AutoscalingTargets message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                        /** Properties of an AsymmetricAutoscalingOption. */
                        interface IAsymmetricAutoscalingOption {

                            /** AsymmetricAutoscalingOption replicaSelection */
                            replicaSelection?: (google.spanner.admin.instance.v1.IReplicaSelection|null);

                            /** AsymmetricAutoscalingOption overrides */
                            overrides?: (google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.IAutoscalingConfigOverrides|null);
                        }

                        /** Represents an AsymmetricAutoscalingOption. */
                        class AsymmetricAutoscalingOption implements IAsymmetricAutoscalingOption {

                            /**
                             * Constructs a new AsymmetricAutoscalingOption.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.IAsymmetricAutoscalingOption);

                            /** AsymmetricAutoscalingOption replicaSelection. */
                            public replicaSelection?: (google.spanner.admin.instance.v1.IReplicaSelection|null);

                            /** AsymmetricAutoscalingOption overrides. */
                            public overrides?: (google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.IAutoscalingConfigOverrides|null);

                            /**
                             * Creates a new AsymmetricAutoscalingOption instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AsymmetricAutoscalingOption instance
                             */
                            public static create(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.IAsymmetricAutoscalingOption): google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption;

                            /**
                             * Encodes the specified AsymmetricAutoscalingOption message. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.verify|verify} messages.
                             * @param message AsymmetricAutoscalingOption message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.spanner.admin.instance.v1.AutoscalingConfig.IAsymmetricAutoscalingOption, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AsymmetricAutoscalingOption message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.verify|verify} messages.
                             * @param message AsymmetricAutoscalingOption message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.spanner.admin.instance.v1.AutoscalingConfig.IAsymmetricAutoscalingOption, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AsymmetricAutoscalingOption message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AsymmetricAutoscalingOption
                             * @throws {Error} If the payload is 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.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption;

                            /**
                             * Decodes an AsymmetricAutoscalingOption message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AsymmetricAutoscalingOption
                             * @throws {Error} If the 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.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption;

                            /**
                             * Verifies an AsymmetricAutoscalingOption message.
                             * @param message Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                        namespace AsymmetricAutoscalingOption {

                            /** Properties of an AutoscalingConfigOverrides. */
                            interface IAutoscalingConfigOverrides {

                                /** AutoscalingConfigOverrides autoscalingLimits */
                                autoscalingLimits?: (google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits|null);

                                /** AutoscalingConfigOverrides autoscalingTargetHighPriorityCpuUtilizationPercent */
                                autoscalingTargetHighPriorityCpuUtilizationPercent?: (number|null);
                            }

                            /** Represents an AutoscalingConfigOverrides. */
                            class AutoscalingConfigOverrides implements IAutoscalingConfigOverrides {

                                /**
                                 * Constructs a new AutoscalingConfigOverrides.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.IAutoscalingConfigOverrides);

                                /** AutoscalingConfigOverrides autoscalingLimits. */
                                public autoscalingLimits?: (google.spanner.admin.instance.v1.AutoscalingConfig.IAutoscalingLimits|null);

                                /** AutoscalingConfigOverrides autoscalingTargetHighPriorityCpuUtilizationPercent. */
                                public autoscalingTargetHighPriorityCpuUtilizationPercent: number;

                                /**
                                 * Creates a new AutoscalingConfigOverrides instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns AutoscalingConfigOverrides instance
                                 */
                                public static create(properties?: google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.IAutoscalingConfigOverrides): google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides;

                                /**
                                 * Encodes the specified AutoscalingConfigOverrides message. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.verify|verify} messages.
                                 * @param message AutoscalingConfigOverrides message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.IAutoscalingConfigOverrides, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified AutoscalingConfigOverrides message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides.verify|verify} messages.
                                 * @param message AutoscalingConfigOverrides message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.IAutoscalingConfigOverrides, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes an AutoscalingConfigOverrides message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns AutoscalingConfigOverrides
                                 * @throws {Error} If the payload is 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.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides;

                                /**
                                 * Decodes an AutoscalingConfigOverrides message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns AutoscalingConfigOverrides
                                 * @throws {Error} If the 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.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides;

                                /**
                                 * Verifies an AutoscalingConfigOverrides message.
                                 * @param message Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(message: { [k: string]: any }): (string|null);

                                /**
                                 * Creates an AutoscalingConfigOverrides message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns AutoscalingConfigOverrides
                                 */
                                public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.AutoscalingConfig.AsymmetricAutoscalingOption.AutoscalingConfigOverrides;

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

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

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

                    /** Properties of an Instance. */
                    interface IInstance {

                        /** Instance name */
                        name?: (string|null);

                        /** Instance config */
                        config?: (string|null);

                        /** Instance displayName */
                        displayName?: (string|null);

                        /** Instance nodeCount */
                        nodeCount?: (number|null);

                        /** Instance processingUnits */
                        processingUnits?: (number|null);

                        /** Instance replicaComputeCapacity */
                        replicaComputeCapacity?: (google.spanner.admin.instance.v1.IReplicaComputeCapacity[]|null);

                        /** Instance autoscalingConfig */
                        autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                        /** Instance state */
                        state?: (google.spanner.admin.instance.v1.Instance.State|keyof typeof google.spanner.admin.instance.v1.Instance.State|null);

                        /** Instance labels */
                        labels?: ({ [k: string]: string }|null);

                        /** Instance instanceType */
                        instanceType?: (google.spanner.admin.instance.v1.Instance.InstanceType|keyof typeof google.spanner.admin.instance.v1.Instance.InstanceType|null);

                        /** Instance endpointUris */
                        endpointUris?: (string[]|null);

                        /** Instance createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** Instance updateTime */
                        updateTime?: (google.protobuf.ITimestamp|null);

                        /** Instance freeInstanceMetadata */
                        freeInstanceMetadata?: (google.spanner.admin.instance.v1.IFreeInstanceMetadata|null);

                        /** Instance edition */
                        edition?: (google.spanner.admin.instance.v1.Instance.Edition|keyof typeof google.spanner.admin.instance.v1.Instance.Edition|null);

                        /** Instance defaultBackupScheduleType */
                        defaultBackupScheduleType?: (google.spanner.admin.instance.v1.Instance.DefaultBackupScheduleType|keyof typeof google.spanner.admin.instance.v1.Instance.DefaultBackupScheduleType|null);
                    }

                    /** Represents an Instance. */
                    class Instance implements IInstance {

                        /**
                         * Constructs a new Instance.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IInstance);

                        /** Instance name. */
                        public name: string;

                        /** Instance config. */
                        public config: string;

                        /** Instance displayName. */
                        public displayName: string;

                        /** Instance nodeCount. */
                        public nodeCount: number;

                        /** Instance processingUnits. */
                        public processingUnits: number;

                        /** Instance replicaComputeCapacity. */
                        public replicaComputeCapacity: google.spanner.admin.instance.v1.IReplicaComputeCapacity[];

                        /** Instance autoscalingConfig. */
                        public autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                        /** Instance state. */
                        public state: (google.spanner.admin.instance.v1.Instance.State|keyof typeof google.spanner.admin.instance.v1.Instance.State);

                        /** Instance labels. */
                        public labels: { [k: string]: string };

                        /** Instance instanceType. */
                        public instanceType: (google.spanner.admin.instance.v1.Instance.InstanceType|keyof typeof google.spanner.admin.instance.v1.Instance.InstanceType);

                        /** Instance endpointUris. */
                        public endpointUris: string[];

                        /** Instance createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** Instance updateTime. */
                        public updateTime?: (google.protobuf.ITimestamp|null);

                        /** Instance freeInstanceMetadata. */
                        public freeInstanceMetadata?: (google.spanner.admin.instance.v1.IFreeInstanceMetadata|null);

                        /** Instance edition. */
                        public edition: (google.spanner.admin.instance.v1.Instance.Edition|keyof typeof google.spanner.admin.instance.v1.Instance.Edition);

                        /** Instance defaultBackupScheduleType. */
                        public defaultBackupScheduleType: (google.spanner.admin.instance.v1.Instance.DefaultBackupScheduleType|keyof typeof google.spanner.admin.instance.v1.Instance.DefaultBackupScheduleType);

                        /**
                         * Creates a new Instance instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Instance instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IInstance): google.spanner.admin.instance.v1.Instance;

                        /**
                         * Encodes the specified Instance message. Does not implicitly {@link google.spanner.admin.instance.v1.Instance.verify|verify} messages.
                         * @param message Instance message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IInstance, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an Instance message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Instance
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.Instance;

                        /**
                         * Decodes an Instance message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Instance
                         * @throws {Error} If the 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.spanner.admin.instance.v1.Instance;

                        /**
                         * Verifies an Instance message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace Instance {

                        /** State enum. */
                        enum State {
                            STATE_UNSPECIFIED = 0,
                            CREATING = 1,
                            READY = 2
                        }

                        /** InstanceType enum. */
                        enum InstanceType {
                            INSTANCE_TYPE_UNSPECIFIED = 0,
                            PROVISIONED = 1,
                            FREE_INSTANCE = 2
                        }

                        /** Edition enum. */
                        enum Edition {
                            EDITION_UNSPECIFIED = 0,
                            STANDARD = 1,
                            ENTERPRISE = 2,
                            ENTERPRISE_PLUS = 3
                        }

                        /** DefaultBackupScheduleType enum. */
                        enum DefaultBackupScheduleType {
                            DEFAULT_BACKUP_SCHEDULE_TYPE_UNSPECIFIED = 0,
                            NONE = 1,
                            AUTOMATIC = 2
                        }
                    }

                    /** Properties of a ListInstanceConfigsRequest. */
                    interface IListInstanceConfigsRequest {

                        /** ListInstanceConfigsRequest parent */
                        parent?: (string|null);

                        /** ListInstanceConfigsRequest pageSize */
                        pageSize?: (number|null);

                        /** ListInstanceConfigsRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListInstanceConfigsRequest. */
                    class ListInstanceConfigsRequest implements IListInstanceConfigsRequest {

                        /**
                         * Constructs a new ListInstanceConfigsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstanceConfigsRequest);

                        /** ListInstanceConfigsRequest parent. */
                        public parent: string;

                        /** ListInstanceConfigsRequest pageSize. */
                        public pageSize: number;

                        /** ListInstanceConfigsRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListInstanceConfigsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstanceConfigsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstanceConfigsRequest): google.spanner.admin.instance.v1.ListInstanceConfigsRequest;

                        /**
                         * Encodes the specified ListInstanceConfigsRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstanceConfigsRequest.verify|verify} messages.
                         * @param message ListInstanceConfigsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstanceConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListInstanceConfigsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstanceConfigsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstanceConfigsRequest;

                        /**
                         * Decodes a ListInstanceConfigsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstanceConfigsRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstanceConfigsRequest;

                        /**
                         * Verifies a ListInstanceConfigsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListInstanceConfigsResponse. */
                    interface IListInstanceConfigsResponse {

                        /** ListInstanceConfigsResponse instanceConfigs */
                        instanceConfigs?: (google.spanner.admin.instance.v1.IInstanceConfig[]|null);

                        /** ListInstanceConfigsResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListInstanceConfigsResponse. */
                    class ListInstanceConfigsResponse implements IListInstanceConfigsResponse {

                        /**
                         * Constructs a new ListInstanceConfigsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstanceConfigsResponse);

                        /** ListInstanceConfigsResponse instanceConfigs. */
                        public instanceConfigs: google.spanner.admin.instance.v1.IInstanceConfig[];

                        /** ListInstanceConfigsResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListInstanceConfigsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstanceConfigsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstanceConfigsResponse): google.spanner.admin.instance.v1.ListInstanceConfigsResponse;

                        /**
                         * Encodes the specified ListInstanceConfigsResponse message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstanceConfigsResponse.verify|verify} messages.
                         * @param message ListInstanceConfigsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstanceConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListInstanceConfigsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstanceConfigsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstanceConfigsResponse;

                        /**
                         * Decodes a ListInstanceConfigsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstanceConfigsResponse
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstanceConfigsResponse;

                        /**
                         * Verifies a ListInstanceConfigsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetInstanceConfigRequest. */
                    interface IGetInstanceConfigRequest {

                        /** GetInstanceConfigRequest name */
                        name?: (string|null);
                    }

                    /** Represents a GetInstanceConfigRequest. */
                    class GetInstanceConfigRequest implements IGetInstanceConfigRequest {

                        /**
                         * Constructs a new GetInstanceConfigRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IGetInstanceConfigRequest);

                        /** GetInstanceConfigRequest name. */
                        public name: string;

                        /**
                         * Creates a new GetInstanceConfigRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetInstanceConfigRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IGetInstanceConfigRequest): google.spanner.admin.instance.v1.GetInstanceConfigRequest;

                        /**
                         * Encodes the specified GetInstanceConfigRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.GetInstanceConfigRequest.verify|verify} messages.
                         * @param message GetInstanceConfigRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IGetInstanceConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetInstanceConfigRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetInstanceConfigRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.GetInstanceConfigRequest;

                        /**
                         * Decodes a GetInstanceConfigRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetInstanceConfigRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.GetInstanceConfigRequest;

                        /**
                         * Verifies a GetInstanceConfigRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateInstanceConfigRequest. */
                    interface ICreateInstanceConfigRequest {

                        /** CreateInstanceConfigRequest parent */
                        parent?: (string|null);

                        /** CreateInstanceConfigRequest instanceConfigId */
                        instanceConfigId?: (string|null);

                        /** CreateInstanceConfigRequest instanceConfig */
                        instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** CreateInstanceConfigRequest validateOnly */
                        validateOnly?: (boolean|null);
                    }

                    /** Represents a CreateInstanceConfigRequest. */
                    class CreateInstanceConfigRequest implements ICreateInstanceConfigRequest {

                        /**
                         * Constructs a new CreateInstanceConfigRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.ICreateInstanceConfigRequest);

                        /** CreateInstanceConfigRequest parent. */
                        public parent: string;

                        /** CreateInstanceConfigRequest instanceConfigId. */
                        public instanceConfigId: string;

                        /** CreateInstanceConfigRequest instanceConfig. */
                        public instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** CreateInstanceConfigRequest validateOnly. */
                        public validateOnly: boolean;

                        /**
                         * Creates a new CreateInstanceConfigRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateInstanceConfigRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.ICreateInstanceConfigRequest): google.spanner.admin.instance.v1.CreateInstanceConfigRequest;

                        /**
                         * Encodes the specified CreateInstanceConfigRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.CreateInstanceConfigRequest.verify|verify} messages.
                         * @param message CreateInstanceConfigRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.ICreateInstanceConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateInstanceConfigRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateInstanceConfigRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.CreateInstanceConfigRequest;

                        /**
                         * Decodes a CreateInstanceConfigRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateInstanceConfigRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.CreateInstanceConfigRequest;

                        /**
                         * Verifies a CreateInstanceConfigRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateInstanceConfigRequest. */
                    interface IUpdateInstanceConfigRequest {

                        /** UpdateInstanceConfigRequest instanceConfig */
                        instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** UpdateInstanceConfigRequest updateMask */
                        updateMask?: (google.protobuf.IFieldMask|null);

                        /** UpdateInstanceConfigRequest validateOnly */
                        validateOnly?: (boolean|null);
                    }

                    /** Represents an UpdateInstanceConfigRequest. */
                    class UpdateInstanceConfigRequest implements IUpdateInstanceConfigRequest {

                        /**
                         * Constructs a new UpdateInstanceConfigRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IUpdateInstanceConfigRequest);

                        /** UpdateInstanceConfigRequest instanceConfig. */
                        public instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** UpdateInstanceConfigRequest updateMask. */
                        public updateMask?: (google.protobuf.IFieldMask|null);

                        /** UpdateInstanceConfigRequest validateOnly. */
                        public validateOnly: boolean;

                        /**
                         * Creates a new UpdateInstanceConfigRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateInstanceConfigRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IUpdateInstanceConfigRequest): google.spanner.admin.instance.v1.UpdateInstanceConfigRequest;

                        /**
                         * Encodes the specified UpdateInstanceConfigRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.UpdateInstanceConfigRequest.verify|verify} messages.
                         * @param message UpdateInstanceConfigRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IUpdateInstanceConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateInstanceConfigRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateInstanceConfigRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.UpdateInstanceConfigRequest;

                        /**
                         * Decodes an UpdateInstanceConfigRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateInstanceConfigRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.UpdateInstanceConfigRequest;

                        /**
                         * Verifies an UpdateInstanceConfigRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a DeleteInstanceConfigRequest. */
                    interface IDeleteInstanceConfigRequest {

                        /** DeleteInstanceConfigRequest name */
                        name?: (string|null);

                        /** DeleteInstanceConfigRequest etag */
                        etag?: (string|null);

                        /** DeleteInstanceConfigRequest validateOnly */
                        validateOnly?: (boolean|null);
                    }

                    /** Represents a DeleteInstanceConfigRequest. */
                    class DeleteInstanceConfigRequest implements IDeleteInstanceConfigRequest {

                        /**
                         * Constructs a new DeleteInstanceConfigRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IDeleteInstanceConfigRequest);

                        /** DeleteInstanceConfigRequest name. */
                        public name: string;

                        /** DeleteInstanceConfigRequest etag. */
                        public etag: string;

                        /** DeleteInstanceConfigRequest validateOnly. */
                        public validateOnly: boolean;

                        /**
                         * Creates a new DeleteInstanceConfigRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteInstanceConfigRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IDeleteInstanceConfigRequest): google.spanner.admin.instance.v1.DeleteInstanceConfigRequest;

                        /**
                         * Encodes the specified DeleteInstanceConfigRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.DeleteInstanceConfigRequest.verify|verify} messages.
                         * @param message DeleteInstanceConfigRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IDeleteInstanceConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DeleteInstanceConfigRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteInstanceConfigRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.DeleteInstanceConfigRequest;

                        /**
                         * Decodes a DeleteInstanceConfigRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteInstanceConfigRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.DeleteInstanceConfigRequest;

                        /**
                         * Verifies a DeleteInstanceConfigRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListInstanceConfigOperationsRequest. */
                    interface IListInstanceConfigOperationsRequest {

                        /** ListInstanceConfigOperationsRequest parent */
                        parent?: (string|null);

                        /** ListInstanceConfigOperationsRequest filter */
                        filter?: (string|null);

                        /** ListInstanceConfigOperationsRequest pageSize */
                        pageSize?: (number|null);

                        /** ListInstanceConfigOperationsRequest pageToken */
                        pageToken?: (string|null);
                    }

                    /** Represents a ListInstanceConfigOperationsRequest. */
                    class ListInstanceConfigOperationsRequest implements IListInstanceConfigOperationsRequest {

                        /**
                         * Constructs a new ListInstanceConfigOperationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstanceConfigOperationsRequest);

                        /** ListInstanceConfigOperationsRequest parent. */
                        public parent: string;

                        /** ListInstanceConfigOperationsRequest filter. */
                        public filter: string;

                        /** ListInstanceConfigOperationsRequest pageSize. */
                        public pageSize: number;

                        /** ListInstanceConfigOperationsRequest pageToken. */
                        public pageToken: string;

                        /**
                         * Creates a new ListInstanceConfigOperationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstanceConfigOperationsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstanceConfigOperationsRequest): google.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest;

                        /**
                         * Encodes the specified ListInstanceConfigOperationsRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest.verify|verify} messages.
                         * @param message ListInstanceConfigOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstanceConfigOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListInstanceConfigOperationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstanceConfigOperationsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest;

                        /**
                         * Decodes a ListInstanceConfigOperationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstanceConfigOperationsRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest;

                        /**
                         * Verifies a ListInstanceConfigOperationsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListInstanceConfigOperationsResponse. */
                    interface IListInstanceConfigOperationsResponse {

                        /** ListInstanceConfigOperationsResponse operations */
                        operations?: (google.longrunning.IOperation[]|null);

                        /** ListInstanceConfigOperationsResponse nextPageToken */
                        nextPageToken?: (string|null);
                    }

                    /** Represents a ListInstanceConfigOperationsResponse. */
                    class ListInstanceConfigOperationsResponse implements IListInstanceConfigOperationsResponse {

                        /**
                         * Constructs a new ListInstanceConfigOperationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstanceConfigOperationsResponse);

                        /** ListInstanceConfigOperationsResponse operations. */
                        public operations: google.longrunning.IOperation[];

                        /** ListInstanceConfigOperationsResponse nextPageToken. */
                        public nextPageToken: string;

                        /**
                         * Creates a new ListInstanceConfigOperationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstanceConfigOperationsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstanceConfigOperationsResponse): google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse;

                        /**
                         * Encodes the specified ListInstanceConfigOperationsResponse message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse.verify|verify} messages.
                         * @param message ListInstanceConfigOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstanceConfigOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListInstanceConfigOperationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstanceConfigOperationsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse;

                        /**
                         * Decodes a ListInstanceConfigOperationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstanceConfigOperationsResponse
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse;

                        /**
                         * Verifies a ListInstanceConfigOperationsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetInstanceRequest. */
                    interface IGetInstanceRequest {

                        /** GetInstanceRequest name */
                        name?: (string|null);

                        /** GetInstanceRequest fieldMask */
                        fieldMask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents a GetInstanceRequest. */
                    class GetInstanceRequest implements IGetInstanceRequest {

                        /**
                         * Constructs a new GetInstanceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IGetInstanceRequest);

                        /** GetInstanceRequest name. */
                        public name: string;

                        /** GetInstanceRequest fieldMask. */
                        public fieldMask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new GetInstanceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetInstanceRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IGetInstanceRequest): google.spanner.admin.instance.v1.GetInstanceRequest;

                        /**
                         * Encodes the specified GetInstanceRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.GetInstanceRequest.verify|verify} messages.
                         * @param message GetInstanceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IGetInstanceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetInstanceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetInstanceRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.GetInstanceRequest;

                        /**
                         * Decodes a GetInstanceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetInstanceRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.GetInstanceRequest;

                        /**
                         * Verifies a GetInstanceRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateInstanceRequest. */
                    interface ICreateInstanceRequest {

                        /** CreateInstanceRequest parent */
                        parent?: (string|null);

                        /** CreateInstanceRequest instanceId */
                        instanceId?: (string|null);

                        /** CreateInstanceRequest instance */
                        instance?: (google.spanner.admin.instance.v1.IInstance|null);
                    }

                    /** Represents a CreateInstanceRequest. */
                    class CreateInstanceRequest implements ICreateInstanceRequest {

                        /**
                         * Constructs a new CreateInstanceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.ICreateInstanceRequest);

                        /** CreateInstanceRequest parent. */
                        public parent: string;

                        /** CreateInstanceRequest instanceId. */
                        public instanceId: string;

                        /** CreateInstanceRequest instance. */
                        public instance?: (google.spanner.admin.instance.v1.IInstance|null);

                        /**
                         * Creates a new CreateInstanceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateInstanceRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.ICreateInstanceRequest): google.spanner.admin.instance.v1.CreateInstanceRequest;

                        /**
                         * Encodes the specified CreateInstanceRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.CreateInstanceRequest.verify|verify} messages.
                         * @param message CreateInstanceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.ICreateInstanceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateInstanceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateInstanceRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.CreateInstanceRequest;

                        /**
                         * Decodes a CreateInstanceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateInstanceRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.CreateInstanceRequest;

                        /**
                         * Verifies a CreateInstanceRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListInstancesRequest. */
                    interface IListInstancesRequest {

                        /** ListInstancesRequest parent */
                        parent?: (string|null);

                        /** ListInstancesRequest pageSize */
                        pageSize?: (number|null);

                        /** ListInstancesRequest pageToken */
                        pageToken?: (string|null);

                        /** ListInstancesRequest filter */
                        filter?: (string|null);

                        /** ListInstancesRequest instanceDeadline */
                        instanceDeadline?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a ListInstancesRequest. */
                    class ListInstancesRequest implements IListInstancesRequest {

                        /**
                         * Constructs a new ListInstancesRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstancesRequest);

                        /** ListInstancesRequest parent. */
                        public parent: string;

                        /** ListInstancesRequest pageSize. */
                        public pageSize: number;

                        /** ListInstancesRequest pageToken. */
                        public pageToken: string;

                        /** ListInstancesRequest filter. */
                        public filter: string;

                        /** ListInstancesRequest instanceDeadline. */
                        public instanceDeadline?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new ListInstancesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstancesRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstancesRequest): google.spanner.admin.instance.v1.ListInstancesRequest;

                        /**
                         * Encodes the specified ListInstancesRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancesRequest.verify|verify} messages.
                         * @param message ListInstancesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstancesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListInstancesRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstancesRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstancesRequest;

                        /**
                         * Decodes a ListInstancesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstancesRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstancesRequest;

                        /**
                         * Verifies a ListInstancesRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a ListInstancesResponse. */
                    interface IListInstancesResponse {

                        /** ListInstancesResponse instances */
                        instances?: (google.spanner.admin.instance.v1.IInstance[]|null);

                        /** ListInstancesResponse nextPageToken */
                        nextPageToken?: (string|null);

                        /** ListInstancesResponse unreachable */
                        unreachable?: (string[]|null);
                    }

                    /** Represents a ListInstancesResponse. */
                    class ListInstancesResponse implements IListInstancesResponse {

                        /**
                         * Constructs a new ListInstancesResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstancesResponse);

                        /** ListInstancesResponse instances. */
                        public instances: google.spanner.admin.instance.v1.IInstance[];

                        /** ListInstancesResponse nextPageToken. */
                        public nextPageToken: string;

                        /** ListInstancesResponse unreachable. */
                        public unreachable: string[];

                        /**
                         * Creates a new ListInstancesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstancesResponse instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstancesResponse): google.spanner.admin.instance.v1.ListInstancesResponse;

                        /**
                         * Encodes the specified ListInstancesResponse message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancesResponse.verify|verify} messages.
                         * @param message ListInstancesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstancesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a ListInstancesResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstancesResponse
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstancesResponse;

                        /**
                         * Decodes a ListInstancesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstancesResponse
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstancesResponse;

                        /**
                         * Verifies a ListInstancesResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateInstanceRequest. */
                    interface IUpdateInstanceRequest {

                        /** UpdateInstanceRequest instance */
                        instance?: (google.spanner.admin.instance.v1.IInstance|null);

                        /** UpdateInstanceRequest fieldMask */
                        fieldMask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents an UpdateInstanceRequest. */
                    class UpdateInstanceRequest implements IUpdateInstanceRequest {

                        /**
                         * Constructs a new UpdateInstanceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IUpdateInstanceRequest);

                        /** UpdateInstanceRequest instance. */
                        public instance?: (google.spanner.admin.instance.v1.IInstance|null);

                        /** UpdateInstanceRequest fieldMask. */
                        public fieldMask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new UpdateInstanceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateInstanceRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IUpdateInstanceRequest): google.spanner.admin.instance.v1.UpdateInstanceRequest;

                        /**
                         * Encodes the specified UpdateInstanceRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.UpdateInstanceRequest.verify|verify} messages.
                         * @param message UpdateInstanceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IUpdateInstanceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateInstanceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateInstanceRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.UpdateInstanceRequest;

                        /**
                         * Decodes an UpdateInstanceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateInstanceRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.UpdateInstanceRequest;

                        /**
                         * Verifies an UpdateInstanceRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a DeleteInstanceRequest. */
                    interface IDeleteInstanceRequest {

                        /** DeleteInstanceRequest name */
                        name?: (string|null);
                    }

                    /** Represents a DeleteInstanceRequest. */
                    class DeleteInstanceRequest implements IDeleteInstanceRequest {

                        /**
                         * Constructs a new DeleteInstanceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IDeleteInstanceRequest);

                        /** DeleteInstanceRequest name. */
                        public name: string;

                        /**
                         * Creates a new DeleteInstanceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteInstanceRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IDeleteInstanceRequest): google.spanner.admin.instance.v1.DeleteInstanceRequest;

                        /**
                         * Encodes the specified DeleteInstanceRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.DeleteInstanceRequest.verify|verify} messages.
                         * @param message DeleteInstanceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IDeleteInstanceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DeleteInstanceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteInstanceRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.DeleteInstanceRequest;

                        /**
                         * Decodes a DeleteInstanceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteInstanceRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.DeleteInstanceRequest;

                        /**
                         * Verifies a DeleteInstanceRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateInstanceMetadata. */
                    interface ICreateInstanceMetadata {

                        /** CreateInstanceMetadata instance */
                        instance?: (google.spanner.admin.instance.v1.IInstance|null);

                        /** CreateInstanceMetadata startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstanceMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstanceMetadata endTime */
                        endTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstanceMetadata expectedFulfillmentPeriod */
                        expectedFulfillmentPeriod?: (google.spanner.admin.instance.v1.FulfillmentPeriod|keyof typeof google.spanner.admin.instance.v1.FulfillmentPeriod|null);
                    }

                    /** Represents a CreateInstanceMetadata. */
                    class CreateInstanceMetadata implements ICreateInstanceMetadata {

                        /**
                         * Constructs a new CreateInstanceMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.ICreateInstanceMetadata);

                        /** CreateInstanceMetadata instance. */
                        public instance?: (google.spanner.admin.instance.v1.IInstance|null);

                        /** CreateInstanceMetadata startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstanceMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstanceMetadata endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstanceMetadata expectedFulfillmentPeriod. */
                        public expectedFulfillmentPeriod: (google.spanner.admin.instance.v1.FulfillmentPeriod|keyof typeof google.spanner.admin.instance.v1.FulfillmentPeriod);

                        /**
                         * Creates a new CreateInstanceMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateInstanceMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.ICreateInstanceMetadata): google.spanner.admin.instance.v1.CreateInstanceMetadata;

                        /**
                         * Encodes the specified CreateInstanceMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.CreateInstanceMetadata.verify|verify} messages.
                         * @param message CreateInstanceMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.ICreateInstanceMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateInstanceMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateInstanceMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.CreateInstanceMetadata;

                        /**
                         * Decodes a CreateInstanceMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateInstanceMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.CreateInstanceMetadata;

                        /**
                         * Verifies a CreateInstanceMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateInstanceMetadata. */
                    interface IUpdateInstanceMetadata {

                        /** UpdateInstanceMetadata instance */
                        instance?: (google.spanner.admin.instance.v1.IInstance|null);

                        /** UpdateInstanceMetadata startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstanceMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstanceMetadata endTime */
                        endTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstanceMetadata expectedFulfillmentPeriod */
                        expectedFulfillmentPeriod?: (google.spanner.admin.instance.v1.FulfillmentPeriod|keyof typeof google.spanner.admin.instance.v1.FulfillmentPeriod|null);
                    }

                    /** Represents an UpdateInstanceMetadata. */
                    class UpdateInstanceMetadata implements IUpdateInstanceMetadata {

                        /**
                         * Constructs a new UpdateInstanceMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IUpdateInstanceMetadata);

                        /** UpdateInstanceMetadata instance. */
                        public instance?: (google.spanner.admin.instance.v1.IInstance|null);

                        /** UpdateInstanceMetadata startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstanceMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstanceMetadata endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstanceMetadata expectedFulfillmentPeriod. */
                        public expectedFulfillmentPeriod: (google.spanner.admin.instance.v1.FulfillmentPeriod|keyof typeof google.spanner.admin.instance.v1.FulfillmentPeriod);

                        /**
                         * Creates a new UpdateInstanceMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateInstanceMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IUpdateInstanceMetadata): google.spanner.admin.instance.v1.UpdateInstanceMetadata;

                        /**
                         * Encodes the specified UpdateInstanceMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.UpdateInstanceMetadata.verify|verify} messages.
                         * @param message UpdateInstanceMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IUpdateInstanceMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateInstanceMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateInstanceMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.UpdateInstanceMetadata;

                        /**
                         * Decodes an UpdateInstanceMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateInstanceMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.UpdateInstanceMetadata;

                        /**
                         * Verifies an UpdateInstanceMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a FreeInstanceMetadata. */
                    interface IFreeInstanceMetadata {

                        /** FreeInstanceMetadata expireTime */
                        expireTime?: (google.protobuf.ITimestamp|null);

                        /** FreeInstanceMetadata upgradeTime */
                        upgradeTime?: (google.protobuf.ITimestamp|null);

                        /** FreeInstanceMetadata expireBehavior */
                        expireBehavior?: (google.spanner.admin.instance.v1.FreeInstanceMetadata.ExpireBehavior|keyof typeof google.spanner.admin.instance.v1.FreeInstanceMetadata.ExpireBehavior|null);
                    }

                    /** Represents a FreeInstanceMetadata. */
                    class FreeInstanceMetadata implements IFreeInstanceMetadata {

                        /**
                         * Constructs a new FreeInstanceMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IFreeInstanceMetadata);

                        /** FreeInstanceMetadata expireTime. */
                        public expireTime?: (google.protobuf.ITimestamp|null);

                        /** FreeInstanceMetadata upgradeTime. */
                        public upgradeTime?: (google.protobuf.ITimestamp|null);

                        /** FreeInstanceMetadata expireBehavior. */
                        public expireBehavior: (google.spanner.admin.instance.v1.FreeInstanceMetadata.ExpireBehavior|keyof typeof google.spanner.admin.instance.v1.FreeInstanceMetadata.ExpireBehavior);

                        /**
                         * Creates a new FreeInstanceMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FreeInstanceMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IFreeInstanceMetadata): google.spanner.admin.instance.v1.FreeInstanceMetadata;

                        /**
                         * Encodes the specified FreeInstanceMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.FreeInstanceMetadata.verify|verify} messages.
                         * @param message FreeInstanceMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IFreeInstanceMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a FreeInstanceMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FreeInstanceMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.FreeInstanceMetadata;

                        /**
                         * Decodes a FreeInstanceMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FreeInstanceMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.FreeInstanceMetadata;

                        /**
                         * Verifies a FreeInstanceMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace FreeInstanceMetadata {

                        /** ExpireBehavior enum. */
                        enum ExpireBehavior {
                            EXPIRE_BEHAVIOR_UNSPECIFIED = 0,
                            FREE_TO_PROVISIONED = 1,
                            REMOVE_AFTER_GRACE_PERIOD = 2
                        }
                    }

                    /** Properties of a CreateInstanceConfigMetadata. */
                    interface ICreateInstanceConfigMetadata {

                        /** CreateInstanceConfigMetadata instanceConfig */
                        instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** CreateInstanceConfigMetadata progress */
                        progress?: (google.spanner.admin.instance.v1.IOperationProgress|null);

                        /** CreateInstanceConfigMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a CreateInstanceConfigMetadata. */
                    class CreateInstanceConfigMetadata implements ICreateInstanceConfigMetadata {

                        /**
                         * Constructs a new CreateInstanceConfigMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.ICreateInstanceConfigMetadata);

                        /** CreateInstanceConfigMetadata instanceConfig. */
                        public instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** CreateInstanceConfigMetadata progress. */
                        public progress?: (google.spanner.admin.instance.v1.IOperationProgress|null);

                        /** CreateInstanceConfigMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new CreateInstanceConfigMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateInstanceConfigMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.ICreateInstanceConfigMetadata): google.spanner.admin.instance.v1.CreateInstanceConfigMetadata;

                        /**
                         * Encodes the specified CreateInstanceConfigMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.CreateInstanceConfigMetadata.verify|verify} messages.
                         * @param message CreateInstanceConfigMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.ICreateInstanceConfigMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateInstanceConfigMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateInstanceConfigMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.CreateInstanceConfigMetadata;

                        /**
                         * Decodes a CreateInstanceConfigMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateInstanceConfigMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.CreateInstanceConfigMetadata;

                        /**
                         * Verifies a CreateInstanceConfigMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateInstanceConfigMetadata. */
                    interface IUpdateInstanceConfigMetadata {

                        /** UpdateInstanceConfigMetadata instanceConfig */
                        instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** UpdateInstanceConfigMetadata progress */
                        progress?: (google.spanner.admin.instance.v1.IOperationProgress|null);

                        /** UpdateInstanceConfigMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an UpdateInstanceConfigMetadata. */
                    class UpdateInstanceConfigMetadata implements IUpdateInstanceConfigMetadata {

                        /**
                         * Constructs a new UpdateInstanceConfigMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IUpdateInstanceConfigMetadata);

                        /** UpdateInstanceConfigMetadata instanceConfig. */
                        public instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                        /** UpdateInstanceConfigMetadata progress. */
                        public progress?: (google.spanner.admin.instance.v1.IOperationProgress|null);

                        /** UpdateInstanceConfigMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new UpdateInstanceConfigMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateInstanceConfigMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IUpdateInstanceConfigMetadata): google.spanner.admin.instance.v1.UpdateInstanceConfigMetadata;

                        /**
                         * Encodes the specified UpdateInstanceConfigMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.UpdateInstanceConfigMetadata.verify|verify} messages.
                         * @param message UpdateInstanceConfigMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IUpdateInstanceConfigMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateInstanceConfigMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateInstanceConfigMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.UpdateInstanceConfigMetadata;

                        /**
                         * Decodes an UpdateInstanceConfigMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateInstanceConfigMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.UpdateInstanceConfigMetadata;

                        /**
                         * Verifies an UpdateInstanceConfigMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an InstancePartition. */
                    interface IInstancePartition {

                        /** InstancePartition name */
                        name?: (string|null);

                        /** InstancePartition config */
                        config?: (string|null);

                        /** InstancePartition displayName */
                        displayName?: (string|null);

                        /** InstancePartition nodeCount */
                        nodeCount?: (number|null);

                        /** InstancePartition processingUnits */
                        processingUnits?: (number|null);

                        /** InstancePartition autoscalingConfig */
                        autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                        /** InstancePartition state */
                        state?: (google.spanner.admin.instance.v1.InstancePartition.State|keyof typeof google.spanner.admin.instance.v1.InstancePartition.State|null);

                        /** InstancePartition createTime */
                        createTime?: (google.protobuf.ITimestamp|null);

                        /** InstancePartition updateTime */
                        updateTime?: (google.protobuf.ITimestamp|null);

                        /** InstancePartition referencingDatabases */
                        referencingDatabases?: (string[]|null);

                        /** InstancePartition referencingBackups */
                        referencingBackups?: (string[]|null);

                        /** InstancePartition etag */
                        etag?: (string|null);
                    }

                    /** Represents an InstancePartition. */
                    class InstancePartition implements IInstancePartition {

                        /**
                         * Constructs a new InstancePartition.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IInstancePartition);

                        /** InstancePartition name. */
                        public name: string;

                        /** InstancePartition config. */
                        public config: string;

                        /** InstancePartition displayName. */
                        public displayName: string;

                        /** InstancePartition nodeCount. */
                        public nodeCount?: (number|null);

                        /** InstancePartition processingUnits. */
                        public processingUnits?: (number|null);

                        /** InstancePartition autoscalingConfig. */
                        public autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                        /** InstancePartition state. */
                        public state: (google.spanner.admin.instance.v1.InstancePartition.State|keyof typeof google.spanner.admin.instance.v1.InstancePartition.State);

                        /** InstancePartition createTime. */
                        public createTime?: (google.protobuf.ITimestamp|null);

                        /** InstancePartition updateTime. */
                        public updateTime?: (google.protobuf.ITimestamp|null);

                        /** InstancePartition referencingDatabases. */
                        public referencingDatabases: string[];

                        /** InstancePartition referencingBackups. */
                        public referencingBackups: string[];

                        /** InstancePartition etag. */
                        public etag: string;

                        /** InstancePartition computeCapacity. */
                        public computeCapacity?: ("nodeCount"|"processingUnits");

                        /**
                         * Creates a new InstancePartition instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InstancePartition instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IInstancePartition): google.spanner.admin.instance.v1.InstancePartition;

                        /**
                         * Encodes the specified InstancePartition message. Does not implicitly {@link google.spanner.admin.instance.v1.InstancePartition.verify|verify} messages.
                         * @param message InstancePartition message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IInstancePartition, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an InstancePartition message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InstancePartition
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.InstancePartition;

                        /**
                         * Decodes an InstancePartition message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InstancePartition
                         * @throws {Error} If the 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.spanner.admin.instance.v1.InstancePartition;

                        /**
                         * Verifies an InstancePartition message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    namespace InstancePartition {

                        /** State enum. */
                        enum State {
                            STATE_UNSPECIFIED = 0,
                            CREATING = 1,
                            READY = 2
                        }
                    }

                    /** Properties of a CreateInstancePartitionMetadata. */
                    interface ICreateInstancePartitionMetadata {

                        /** CreateInstancePartitionMetadata instancePartition */
                        instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);

                        /** CreateInstancePartitionMetadata startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstancePartitionMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstancePartitionMetadata endTime */
                        endTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a CreateInstancePartitionMetadata. */
                    class CreateInstancePartitionMetadata implements ICreateInstancePartitionMetadata {

                        /**
                         * Constructs a new CreateInstancePartitionMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.ICreateInstancePartitionMetadata);

                        /** CreateInstancePartitionMetadata instancePartition. */
                        public instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);

                        /** CreateInstancePartitionMetadata startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstancePartitionMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /** CreateInstancePartitionMetadata endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new CreateInstancePartitionMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateInstancePartitionMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.ICreateInstancePartitionMetadata): google.spanner.admin.instance.v1.CreateInstancePartitionMetadata;

                        /**
                         * Encodes the specified CreateInstancePartitionMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.CreateInstancePartitionMetadata.verify|verify} messages.
                         * @param message CreateInstancePartitionMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.ICreateInstancePartitionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateInstancePartitionMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateInstancePartitionMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.CreateInstancePartitionMetadata;

                        /**
                         * Decodes a CreateInstancePartitionMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateInstancePartitionMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.CreateInstancePartitionMetadata;

                        /**
                         * Verifies a CreateInstancePartitionMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a CreateInstancePartitionRequest. */
                    interface ICreateInstancePartitionRequest {

                        /** CreateInstancePartitionRequest parent */
                        parent?: (string|null);

                        /** CreateInstancePartitionRequest instancePartitionId */
                        instancePartitionId?: (string|null);

                        /** CreateInstancePartitionRequest instancePartition */
                        instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);
                    }

                    /** Represents a CreateInstancePartitionRequest. */
                    class CreateInstancePartitionRequest implements ICreateInstancePartitionRequest {

                        /**
                         * Constructs a new CreateInstancePartitionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.ICreateInstancePartitionRequest);

                        /** CreateInstancePartitionRequest parent. */
                        public parent: string;

                        /** CreateInstancePartitionRequest instancePartitionId. */
                        public instancePartitionId: string;

                        /** CreateInstancePartitionRequest instancePartition. */
                        public instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);

                        /**
                         * Creates a new CreateInstancePartitionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateInstancePartitionRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.ICreateInstancePartitionRequest): google.spanner.admin.instance.v1.CreateInstancePartitionRequest;

                        /**
                         * Encodes the specified CreateInstancePartitionRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.CreateInstancePartitionRequest.verify|verify} messages.
                         * @param message CreateInstancePartitionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.ICreateInstancePartitionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a CreateInstancePartitionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CreateInstancePartitionRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.CreateInstancePartitionRequest;

                        /**
                         * Decodes a CreateInstancePartitionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateInstancePartitionRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.CreateInstancePartitionRequest;

                        /**
                         * Verifies a CreateInstancePartitionRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a DeleteInstancePartitionRequest. */
                    interface IDeleteInstancePartitionRequest {

                        /** DeleteInstancePartitionRequest name */
                        name?: (string|null);

                        /** DeleteInstancePartitionRequest etag */
                        etag?: (string|null);
                    }

                    /** Represents a DeleteInstancePartitionRequest. */
                    class DeleteInstancePartitionRequest implements IDeleteInstancePartitionRequest {

                        /**
                         * Constructs a new DeleteInstancePartitionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IDeleteInstancePartitionRequest);

                        /** DeleteInstancePartitionRequest name. */
                        public name: string;

                        /** DeleteInstancePartitionRequest etag. */
                        public etag: string;

                        /**
                         * Creates a new DeleteInstancePartitionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DeleteInstancePartitionRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IDeleteInstancePartitionRequest): google.spanner.admin.instance.v1.DeleteInstancePartitionRequest;

                        /**
                         * Encodes the specified DeleteInstancePartitionRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.DeleteInstancePartitionRequest.verify|verify} messages.
                         * @param message DeleteInstancePartitionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IDeleteInstancePartitionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a DeleteInstancePartitionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DeleteInstancePartitionRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.DeleteInstancePartitionRequest;

                        /**
                         * Decodes a DeleteInstancePartitionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DeleteInstancePartitionRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.DeleteInstancePartitionRequest;

                        /**
                         * Verifies a DeleteInstancePartitionRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of a GetInstancePartitionRequest. */
                    interface IGetInstancePartitionRequest {

                        /** GetInstancePartitionRequest name */
                        name?: (string|null);
                    }

                    /** Represents a GetInstancePartitionRequest. */
                    class GetInstancePartitionRequest implements IGetInstancePartitionRequest {

                        /**
                         * Constructs a new GetInstancePartitionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IGetInstancePartitionRequest);

                        /** GetInstancePartitionRequest name. */
                        public name: string;

                        /**
                         * Creates a new GetInstancePartitionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetInstancePartitionRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IGetInstancePartitionRequest): google.spanner.admin.instance.v1.GetInstancePartitionRequest;

                        /**
                         * Encodes the specified GetInstancePartitionRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.GetInstancePartitionRequest.verify|verify} messages.
                         * @param message GetInstancePartitionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IGetInstancePartitionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes a GetInstancePartitionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GetInstancePartitionRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.GetInstancePartitionRequest;

                        /**
                         * Decodes a GetInstancePartitionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetInstancePartitionRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.GetInstancePartitionRequest;

                        /**
                         * Verifies a GetInstancePartitionRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

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

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

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

                    /** Properties of an UpdateInstancePartitionRequest. */
                    interface IUpdateInstancePartitionRequest {

                        /** UpdateInstancePartitionRequest instancePartition */
                        instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);

                        /** UpdateInstancePartitionRequest fieldMask */
                        fieldMask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents an UpdateInstancePartitionRequest. */
                    class UpdateInstancePartitionRequest implements IUpdateInstancePartitionRequest {

                        /**
                         * Constructs a new UpdateInstancePartitionRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IUpdateInstancePartitionRequest);

                        /** UpdateInstancePartitionRequest instancePartition. */
                        public instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);

                        /** UpdateInstancePartitionRequest fieldMask. */
                        public fieldMask?: (google.protobuf.IFieldMask|null);

                        /**
                         * Creates a new UpdateInstancePartitionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateInstancePartitionRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IUpdateInstancePartitionRequest): google.spanner.admin.instance.v1.UpdateInstancePartitionRequest;

                        /**
                         * Encodes the specified UpdateInstancePartitionRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.UpdateInstancePartitionRequest.verify|verify} messages.
                         * @param message UpdateInstancePartitionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IUpdateInstancePartitionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

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

                        /**
                         * Decodes an UpdateInstancePartitionRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateInstancePartitionRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.UpdateInstancePartitionRequest;

                        /**
                         * Decodes an UpdateInstancePartitionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateInstancePartitionRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.UpdateInstancePartitionRequest;

                        /**
                         * Verifies an UpdateInstancePartitionRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

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

                        /**
                         * Creates a plain object from an UpdateInstancePartitionRequest message. Also converts values to other types if specified.
                         * @param message UpdateInstancePartitionRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.UpdateInstancePartitionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateInstancePartitionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateInstancePartitionRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateInstancePartitionMetadata. */
                    interface IUpdateInstancePartitionMetadata {

                        /** UpdateInstancePartitionMetadata instancePartition */
                        instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);

                        /** UpdateInstancePartitionMetadata startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstancePartitionMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstancePartitionMetadata endTime */
                        endTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents an UpdateInstancePartitionMetadata. */
                    class UpdateInstancePartitionMetadata implements IUpdateInstancePartitionMetadata {

                        /**
                         * Constructs a new UpdateInstancePartitionMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IUpdateInstancePartitionMetadata);

                        /** UpdateInstancePartitionMetadata instancePartition. */
                        public instancePartition?: (google.spanner.admin.instance.v1.IInstancePartition|null);

                        /** UpdateInstancePartitionMetadata startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstancePartitionMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /** UpdateInstancePartitionMetadata endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new UpdateInstancePartitionMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateInstancePartitionMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IUpdateInstancePartitionMetadata): google.spanner.admin.instance.v1.UpdateInstancePartitionMetadata;

                        /**
                         * Encodes the specified UpdateInstancePartitionMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.UpdateInstancePartitionMetadata.verify|verify} messages.
                         * @param message UpdateInstancePartitionMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IUpdateInstancePartitionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateInstancePartitionMetadata message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.UpdateInstancePartitionMetadata.verify|verify} messages.
                         * @param message UpdateInstancePartitionMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IUpdateInstancePartitionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateInstancePartitionMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateInstancePartitionMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.UpdateInstancePartitionMetadata;

                        /**
                         * Decodes an UpdateInstancePartitionMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateInstancePartitionMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.UpdateInstancePartitionMetadata;

                        /**
                         * Verifies an UpdateInstancePartitionMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UpdateInstancePartitionMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateInstancePartitionMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.UpdateInstancePartitionMetadata;

                        /**
                         * Creates a plain object from an UpdateInstancePartitionMetadata message. Also converts values to other types if specified.
                         * @param message UpdateInstancePartitionMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.UpdateInstancePartitionMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateInstancePartitionMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateInstancePartitionMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListInstancePartitionsRequest. */
                    interface IListInstancePartitionsRequest {

                        /** ListInstancePartitionsRequest parent */
                        parent?: (string|null);

                        /** ListInstancePartitionsRequest pageSize */
                        pageSize?: (number|null);

                        /** ListInstancePartitionsRequest pageToken */
                        pageToken?: (string|null);

                        /** ListInstancePartitionsRequest instancePartitionDeadline */
                        instancePartitionDeadline?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a ListInstancePartitionsRequest. */
                    class ListInstancePartitionsRequest implements IListInstancePartitionsRequest {

                        /**
                         * Constructs a new ListInstancePartitionsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstancePartitionsRequest);

                        /** ListInstancePartitionsRequest parent. */
                        public parent: string;

                        /** ListInstancePartitionsRequest pageSize. */
                        public pageSize: number;

                        /** ListInstancePartitionsRequest pageToken. */
                        public pageToken: string;

                        /** ListInstancePartitionsRequest instancePartitionDeadline. */
                        public instancePartitionDeadline?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new ListInstancePartitionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstancePartitionsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstancePartitionsRequest): google.spanner.admin.instance.v1.ListInstancePartitionsRequest;

                        /**
                         * Encodes the specified ListInstancePartitionsRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionsRequest.verify|verify} messages.
                         * @param message ListInstancePartitionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstancePartitionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInstancePartitionsRequest message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionsRequest.verify|verify} messages.
                         * @param message ListInstancePartitionsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IListInstancePartitionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInstancePartitionsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstancePartitionsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstancePartitionsRequest;

                        /**
                         * Decodes a ListInstancePartitionsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstancePartitionsRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstancePartitionsRequest;

                        /**
                         * Verifies a ListInstancePartitionsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInstancePartitionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInstancePartitionsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.ListInstancePartitionsRequest;

                        /**
                         * Creates a plain object from a ListInstancePartitionsRequest message. Also converts values to other types if specified.
                         * @param message ListInstancePartitionsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.ListInstancePartitionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInstancePartitionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInstancePartitionsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListInstancePartitionsResponse. */
                    interface IListInstancePartitionsResponse {

                        /** ListInstancePartitionsResponse instancePartitions */
                        instancePartitions?: (google.spanner.admin.instance.v1.IInstancePartition[]|null);

                        /** ListInstancePartitionsResponse nextPageToken */
                        nextPageToken?: (string|null);

                        /** ListInstancePartitionsResponse unreachable */
                        unreachable?: (string[]|null);
                    }

                    /** Represents a ListInstancePartitionsResponse. */
                    class ListInstancePartitionsResponse implements IListInstancePartitionsResponse {

                        /**
                         * Constructs a new ListInstancePartitionsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstancePartitionsResponse);

                        /** ListInstancePartitionsResponse instancePartitions. */
                        public instancePartitions: google.spanner.admin.instance.v1.IInstancePartition[];

                        /** ListInstancePartitionsResponse nextPageToken. */
                        public nextPageToken: string;

                        /** ListInstancePartitionsResponse unreachable. */
                        public unreachable: string[];

                        /**
                         * Creates a new ListInstancePartitionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstancePartitionsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstancePartitionsResponse): google.spanner.admin.instance.v1.ListInstancePartitionsResponse;

                        /**
                         * Encodes the specified ListInstancePartitionsResponse message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionsResponse.verify|verify} messages.
                         * @param message ListInstancePartitionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstancePartitionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInstancePartitionsResponse message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionsResponse.verify|verify} messages.
                         * @param message ListInstancePartitionsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IListInstancePartitionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInstancePartitionsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstancePartitionsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstancePartitionsResponse;

                        /**
                         * Decodes a ListInstancePartitionsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstancePartitionsResponse
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstancePartitionsResponse;

                        /**
                         * Verifies a ListInstancePartitionsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInstancePartitionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInstancePartitionsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.ListInstancePartitionsResponse;

                        /**
                         * Creates a plain object from a ListInstancePartitionsResponse message. Also converts values to other types if specified.
                         * @param message ListInstancePartitionsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.ListInstancePartitionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInstancePartitionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInstancePartitionsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListInstancePartitionOperationsRequest. */
                    interface IListInstancePartitionOperationsRequest {

                        /** ListInstancePartitionOperationsRequest parent */
                        parent?: (string|null);

                        /** ListInstancePartitionOperationsRequest filter */
                        filter?: (string|null);

                        /** ListInstancePartitionOperationsRequest pageSize */
                        pageSize?: (number|null);

                        /** ListInstancePartitionOperationsRequest pageToken */
                        pageToken?: (string|null);

                        /** ListInstancePartitionOperationsRequest instancePartitionDeadline */
                        instancePartitionDeadline?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a ListInstancePartitionOperationsRequest. */
                    class ListInstancePartitionOperationsRequest implements IListInstancePartitionOperationsRequest {

                        /**
                         * Constructs a new ListInstancePartitionOperationsRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstancePartitionOperationsRequest);

                        /** ListInstancePartitionOperationsRequest parent. */
                        public parent: string;

                        /** ListInstancePartitionOperationsRequest filter. */
                        public filter: string;

                        /** ListInstancePartitionOperationsRequest pageSize. */
                        public pageSize: number;

                        /** ListInstancePartitionOperationsRequest pageToken. */
                        public pageToken: string;

                        /** ListInstancePartitionOperationsRequest instancePartitionDeadline. */
                        public instancePartitionDeadline?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new ListInstancePartitionOperationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstancePartitionOperationsRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstancePartitionOperationsRequest): google.spanner.admin.instance.v1.ListInstancePartitionOperationsRequest;

                        /**
                         * Encodes the specified ListInstancePartitionOperationsRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionOperationsRequest.verify|verify} messages.
                         * @param message ListInstancePartitionOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstancePartitionOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInstancePartitionOperationsRequest message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionOperationsRequest.verify|verify} messages.
                         * @param message ListInstancePartitionOperationsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IListInstancePartitionOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInstancePartitionOperationsRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstancePartitionOperationsRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstancePartitionOperationsRequest;

                        /**
                         * Decodes a ListInstancePartitionOperationsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstancePartitionOperationsRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstancePartitionOperationsRequest;

                        /**
                         * Verifies a ListInstancePartitionOperationsRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInstancePartitionOperationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInstancePartitionOperationsRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.ListInstancePartitionOperationsRequest;

                        /**
                         * Creates a plain object from a ListInstancePartitionOperationsRequest message. Also converts values to other types if specified.
                         * @param message ListInstancePartitionOperationsRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.ListInstancePartitionOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInstancePartitionOperationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInstancePartitionOperationsRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ListInstancePartitionOperationsResponse. */
                    interface IListInstancePartitionOperationsResponse {

                        /** ListInstancePartitionOperationsResponse operations */
                        operations?: (google.longrunning.IOperation[]|null);

                        /** ListInstancePartitionOperationsResponse nextPageToken */
                        nextPageToken?: (string|null);

                        /** ListInstancePartitionOperationsResponse unreachableInstancePartitions */
                        unreachableInstancePartitions?: (string[]|null);
                    }

                    /** Represents a ListInstancePartitionOperationsResponse. */
                    class ListInstancePartitionOperationsResponse implements IListInstancePartitionOperationsResponse {

                        /**
                         * Constructs a new ListInstancePartitionOperationsResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IListInstancePartitionOperationsResponse);

                        /** ListInstancePartitionOperationsResponse operations. */
                        public operations: google.longrunning.IOperation[];

                        /** ListInstancePartitionOperationsResponse nextPageToken. */
                        public nextPageToken: string;

                        /** ListInstancePartitionOperationsResponse unreachableInstancePartitions. */
                        public unreachableInstancePartitions: string[];

                        /**
                         * Creates a new ListInstancePartitionOperationsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInstancePartitionOperationsResponse instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IListInstancePartitionOperationsResponse): google.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse;

                        /**
                         * Encodes the specified ListInstancePartitionOperationsResponse message. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse.verify|verify} messages.
                         * @param message ListInstancePartitionOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IListInstancePartitionOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInstancePartitionOperationsResponse message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse.verify|verify} messages.
                         * @param message ListInstancePartitionOperationsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IListInstancePartitionOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInstancePartitionOperationsResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ListInstancePartitionOperationsResponse
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse;

                        /**
                         * Decodes a ListInstancePartitionOperationsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListInstancePartitionOperationsResponse
                         * @throws {Error} If the 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.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse;

                        /**
                         * Verifies a ListInstancePartitionOperationsResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInstancePartitionOperationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ListInstancePartitionOperationsResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse;

                        /**
                         * Creates a plain object from a ListInstancePartitionOperationsResponse message. Also converts values to other types if specified.
                         * @param message ListInstancePartitionOperationsResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.ListInstancePartitionOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInstancePartitionOperationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ListInstancePartitionOperationsResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MoveInstanceRequest. */
                    interface IMoveInstanceRequest {

                        /** MoveInstanceRequest name */
                        name?: (string|null);

                        /** MoveInstanceRequest targetConfig */
                        targetConfig?: (string|null);
                    }

                    /** Represents a MoveInstanceRequest. */
                    class MoveInstanceRequest implements IMoveInstanceRequest {

                        /**
                         * Constructs a new MoveInstanceRequest.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IMoveInstanceRequest);

                        /** MoveInstanceRequest name. */
                        public name: string;

                        /** MoveInstanceRequest targetConfig. */
                        public targetConfig: string;

                        /**
                         * Creates a new MoveInstanceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MoveInstanceRequest instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IMoveInstanceRequest): google.spanner.admin.instance.v1.MoveInstanceRequest;

                        /**
                         * Encodes the specified MoveInstanceRequest message. Does not implicitly {@link google.spanner.admin.instance.v1.MoveInstanceRequest.verify|verify} messages.
                         * @param message MoveInstanceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IMoveInstanceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveInstanceRequest message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.MoveInstanceRequest.verify|verify} messages.
                         * @param message MoveInstanceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IMoveInstanceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveInstanceRequest message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MoveInstanceRequest
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.MoveInstanceRequest;

                        /**
                         * Decodes a MoveInstanceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MoveInstanceRequest
                         * @throws {Error} If the 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.spanner.admin.instance.v1.MoveInstanceRequest;

                        /**
                         * Verifies a MoveInstanceRequest message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveInstanceRequest message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MoveInstanceRequest
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.MoveInstanceRequest;

                        /**
                         * Creates a plain object from a MoveInstanceRequest message. Also converts values to other types if specified.
                         * @param message MoveInstanceRequest
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.MoveInstanceRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveInstanceRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MoveInstanceRequest
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MoveInstanceResponse. */
                    interface IMoveInstanceResponse {
                    }

                    /** Represents a MoveInstanceResponse. */
                    class MoveInstanceResponse implements IMoveInstanceResponse {

                        /**
                         * Constructs a new MoveInstanceResponse.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IMoveInstanceResponse);

                        /**
                         * Creates a new MoveInstanceResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MoveInstanceResponse instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IMoveInstanceResponse): google.spanner.admin.instance.v1.MoveInstanceResponse;

                        /**
                         * Encodes the specified MoveInstanceResponse message. Does not implicitly {@link google.spanner.admin.instance.v1.MoveInstanceResponse.verify|verify} messages.
                         * @param message MoveInstanceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IMoveInstanceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveInstanceResponse message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.MoveInstanceResponse.verify|verify} messages.
                         * @param message MoveInstanceResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IMoveInstanceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveInstanceResponse message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MoveInstanceResponse
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.MoveInstanceResponse;

                        /**
                         * Decodes a MoveInstanceResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MoveInstanceResponse
                         * @throws {Error} If the 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.spanner.admin.instance.v1.MoveInstanceResponse;

                        /**
                         * Verifies a MoveInstanceResponse message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveInstanceResponse message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MoveInstanceResponse
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.MoveInstanceResponse;

                        /**
                         * Creates a plain object from a MoveInstanceResponse message. Also converts values to other types if specified.
                         * @param message MoveInstanceResponse
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.MoveInstanceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveInstanceResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MoveInstanceResponse
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MoveInstanceMetadata. */
                    interface IMoveInstanceMetadata {

                        /** MoveInstanceMetadata targetConfig */
                        targetConfig?: (string|null);

                        /** MoveInstanceMetadata progress */
                        progress?: (google.spanner.admin.instance.v1.IOperationProgress|null);

                        /** MoveInstanceMetadata cancelTime */
                        cancelTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a MoveInstanceMetadata. */
                    class MoveInstanceMetadata implements IMoveInstanceMetadata {

                        /**
                         * Constructs a new MoveInstanceMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.admin.instance.v1.IMoveInstanceMetadata);

                        /** MoveInstanceMetadata targetConfig. */
                        public targetConfig: string;

                        /** MoveInstanceMetadata progress. */
                        public progress?: (google.spanner.admin.instance.v1.IOperationProgress|null);

                        /** MoveInstanceMetadata cancelTime. */
                        public cancelTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new MoveInstanceMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MoveInstanceMetadata instance
                         */
                        public static create(properties?: google.spanner.admin.instance.v1.IMoveInstanceMetadata): google.spanner.admin.instance.v1.MoveInstanceMetadata;

                        /**
                         * Encodes the specified MoveInstanceMetadata message. Does not implicitly {@link google.spanner.admin.instance.v1.MoveInstanceMetadata.verify|verify} messages.
                         * @param message MoveInstanceMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.admin.instance.v1.IMoveInstanceMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveInstanceMetadata message, length delimited. Does not implicitly {@link google.spanner.admin.instance.v1.MoveInstanceMetadata.verify|verify} messages.
                         * @param message MoveInstanceMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.admin.instance.v1.IMoveInstanceMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveInstanceMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MoveInstanceMetadata
                         * @throws {Error} If the payload is 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.spanner.admin.instance.v1.MoveInstanceMetadata;

                        /**
                         * Decodes a MoveInstanceMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MoveInstanceMetadata
                         * @throws {Error} If the 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.spanner.admin.instance.v1.MoveInstanceMetadata;

                        /**
                         * Verifies a MoveInstanceMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveInstanceMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MoveInstanceMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.admin.instance.v1.MoveInstanceMetadata;

                        /**
                         * Creates a plain object from a MoveInstanceMetadata message. Also converts values to other types if specified.
                         * @param message MoveInstanceMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.admin.instance.v1.MoveInstanceMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveInstanceMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MoveInstanceMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }
        }

        /** Namespace executor. */
        namespace executor {

            /** Namespace v1. */
            namespace v1 {

                /** Represents a SpannerExecutorProxy */
                class SpannerExecutorProxy extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new SpannerExecutorProxy 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 SpannerExecutorProxy 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): SpannerExecutorProxy;

                    /**
                     * Calls ExecuteActionAsync.
                     * @param request SpannerAsyncActionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SpannerAsyncActionResponse
                     */
                    public executeActionAsync(request: google.spanner.executor.v1.ISpannerAsyncActionRequest, callback: google.spanner.executor.v1.SpannerExecutorProxy.ExecuteActionAsyncCallback): void;

                    /**
                     * Calls ExecuteActionAsync.
                     * @param request SpannerAsyncActionRequest message or plain object
                     * @returns Promise
                     */
                    public executeActionAsync(request: google.spanner.executor.v1.ISpannerAsyncActionRequest): Promise<google.spanner.executor.v1.SpannerAsyncActionResponse>;
                }

                namespace SpannerExecutorProxy {

                    /**
                     * Callback as used by {@link google.spanner.executor.v1.SpannerExecutorProxy|executeActionAsync}.
                     * @param error Error, if any
                     * @param [response] SpannerAsyncActionResponse
                     */
                    type ExecuteActionAsyncCallback = (error: (Error|null), response?: google.spanner.executor.v1.SpannerAsyncActionResponse) => void;
                }

                /** Properties of a SpannerAsyncActionRequest. */
                interface ISpannerAsyncActionRequest {

                    /** SpannerAsyncActionRequest actionId */
                    actionId?: (number|null);

                    /** SpannerAsyncActionRequest action */
                    action?: (google.spanner.executor.v1.ISpannerAction|null);
                }

                /** Represents a SpannerAsyncActionRequest. */
                class SpannerAsyncActionRequest implements ISpannerAsyncActionRequest {

                    /**
                     * Constructs a new SpannerAsyncActionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ISpannerAsyncActionRequest);

                    /** SpannerAsyncActionRequest actionId. */
                    public actionId: number;

                    /** SpannerAsyncActionRequest action. */
                    public action?: (google.spanner.executor.v1.ISpannerAction|null);

                    /**
                     * Creates a new SpannerAsyncActionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SpannerAsyncActionRequest instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ISpannerAsyncActionRequest): google.spanner.executor.v1.SpannerAsyncActionRequest;

                    /**
                     * Encodes the specified SpannerAsyncActionRequest message. Does not implicitly {@link google.spanner.executor.v1.SpannerAsyncActionRequest.verify|verify} messages.
                     * @param message SpannerAsyncActionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ISpannerAsyncActionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SpannerAsyncActionRequest message, length delimited. Does not implicitly {@link google.spanner.executor.v1.SpannerAsyncActionRequest.verify|verify} messages.
                     * @param message SpannerAsyncActionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ISpannerAsyncActionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SpannerAsyncActionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SpannerAsyncActionRequest
                     * @throws {Error} If the payload is 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.spanner.executor.v1.SpannerAsyncActionRequest;

                    /**
                     * Decodes a SpannerAsyncActionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SpannerAsyncActionRequest
                     * @throws {Error} If the 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.spanner.executor.v1.SpannerAsyncActionRequest;

                    /**
                     * Verifies a SpannerAsyncActionRequest message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SpannerAsyncActionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SpannerAsyncActionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.SpannerAsyncActionRequest;

                    /**
                     * Creates a plain object from a SpannerAsyncActionRequest message. Also converts values to other types if specified.
                     * @param message SpannerAsyncActionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.SpannerAsyncActionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SpannerAsyncActionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SpannerAsyncActionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SpannerAsyncActionResponse. */
                interface ISpannerAsyncActionResponse {

                    /** SpannerAsyncActionResponse actionId */
                    actionId?: (number|null);

                    /** SpannerAsyncActionResponse outcome */
                    outcome?: (google.spanner.executor.v1.ISpannerActionOutcome|null);
                }

                /** Represents a SpannerAsyncActionResponse. */
                class SpannerAsyncActionResponse implements ISpannerAsyncActionResponse {

                    /**
                     * Constructs a new SpannerAsyncActionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ISpannerAsyncActionResponse);

                    /** SpannerAsyncActionResponse actionId. */
                    public actionId: number;

                    /** SpannerAsyncActionResponse outcome. */
                    public outcome?: (google.spanner.executor.v1.ISpannerActionOutcome|null);

                    /**
                     * Creates a new SpannerAsyncActionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SpannerAsyncActionResponse instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ISpannerAsyncActionResponse): google.spanner.executor.v1.SpannerAsyncActionResponse;

                    /**
                     * Encodes the specified SpannerAsyncActionResponse message. Does not implicitly {@link google.spanner.executor.v1.SpannerAsyncActionResponse.verify|verify} messages.
                     * @param message SpannerAsyncActionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ISpannerAsyncActionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SpannerAsyncActionResponse message, length delimited. Does not implicitly {@link google.spanner.executor.v1.SpannerAsyncActionResponse.verify|verify} messages.
                     * @param message SpannerAsyncActionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ISpannerAsyncActionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SpannerAsyncActionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SpannerAsyncActionResponse
                     * @throws {Error} If the payload is 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.spanner.executor.v1.SpannerAsyncActionResponse;

                    /**
                     * Decodes a SpannerAsyncActionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SpannerAsyncActionResponse
                     * @throws {Error} If the 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.spanner.executor.v1.SpannerAsyncActionResponse;

                    /**
                     * Verifies a SpannerAsyncActionResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SpannerAsyncActionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SpannerAsyncActionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.SpannerAsyncActionResponse;

                    /**
                     * Creates a plain object from a SpannerAsyncActionResponse message. Also converts values to other types if specified.
                     * @param message SpannerAsyncActionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.SpannerAsyncActionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SpannerAsyncActionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SpannerAsyncActionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SpannerAction. */
                interface ISpannerAction {

                    /** SpannerAction databasePath */
                    databasePath?: (string|null);

                    /** SpannerAction spannerOptions */
                    spannerOptions?: (google.spanner.executor.v1.ISpannerOptions|null);

                    /** SpannerAction start */
                    start?: (google.spanner.executor.v1.IStartTransactionAction|null);

                    /** SpannerAction finish */
                    finish?: (google.spanner.executor.v1.IFinishTransactionAction|null);

                    /** SpannerAction read */
                    read?: (google.spanner.executor.v1.IReadAction|null);

                    /** SpannerAction query */
                    query?: (google.spanner.executor.v1.IQueryAction|null);

                    /** SpannerAction mutation */
                    mutation?: (google.spanner.executor.v1.IMutationAction|null);

                    /** SpannerAction dml */
                    dml?: (google.spanner.executor.v1.IDmlAction|null);

                    /** SpannerAction batchDml */
                    batchDml?: (google.spanner.executor.v1.IBatchDmlAction|null);

                    /** SpannerAction write */
                    write?: (google.spanner.executor.v1.IWriteMutationsAction|null);

                    /** SpannerAction partitionedUpdate */
                    partitionedUpdate?: (google.spanner.executor.v1.IPartitionedUpdateAction|null);

                    /** SpannerAction admin */
                    admin?: (google.spanner.executor.v1.IAdminAction|null);

                    /** SpannerAction startBatchTxn */
                    startBatchTxn?: (google.spanner.executor.v1.IStartBatchTransactionAction|null);

                    /** SpannerAction closeBatchTxn */
                    closeBatchTxn?: (google.spanner.executor.v1.ICloseBatchTransactionAction|null);

                    /** SpannerAction generateDbPartitionsRead */
                    generateDbPartitionsRead?: (google.spanner.executor.v1.IGenerateDbPartitionsForReadAction|null);

                    /** SpannerAction generateDbPartitionsQuery */
                    generateDbPartitionsQuery?: (google.spanner.executor.v1.IGenerateDbPartitionsForQueryAction|null);

                    /** SpannerAction executePartition */
                    executePartition?: (google.spanner.executor.v1.IExecutePartitionAction|null);

                    /** SpannerAction executeChangeStreamQuery */
                    executeChangeStreamQuery?: (google.spanner.executor.v1.IExecuteChangeStreamQuery|null);

                    /** SpannerAction queryCancellation */
                    queryCancellation?: (google.spanner.executor.v1.IQueryCancellationAction|null);
                }

                /** Represents a SpannerAction. */
                class SpannerAction implements ISpannerAction {

                    /**
                     * Constructs a new SpannerAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ISpannerAction);

                    /** SpannerAction databasePath. */
                    public databasePath: string;

                    /** SpannerAction spannerOptions. */
                    public spannerOptions?: (google.spanner.executor.v1.ISpannerOptions|null);

                    /** SpannerAction start. */
                    public start?: (google.spanner.executor.v1.IStartTransactionAction|null);

                    /** SpannerAction finish. */
                    public finish?: (google.spanner.executor.v1.IFinishTransactionAction|null);

                    /** SpannerAction read. */
                    public read?: (google.spanner.executor.v1.IReadAction|null);

                    /** SpannerAction query. */
                    public query?: (google.spanner.executor.v1.IQueryAction|null);

                    /** SpannerAction mutation. */
                    public mutation?: (google.spanner.executor.v1.IMutationAction|null);

                    /** SpannerAction dml. */
                    public dml?: (google.spanner.executor.v1.IDmlAction|null);

                    /** SpannerAction batchDml. */
                    public batchDml?: (google.spanner.executor.v1.IBatchDmlAction|null);

                    /** SpannerAction write. */
                    public write?: (google.spanner.executor.v1.IWriteMutationsAction|null);

                    /** SpannerAction partitionedUpdate. */
                    public partitionedUpdate?: (google.spanner.executor.v1.IPartitionedUpdateAction|null);

                    /** SpannerAction admin. */
                    public admin?: (google.spanner.executor.v1.IAdminAction|null);

                    /** SpannerAction startBatchTxn. */
                    public startBatchTxn?: (google.spanner.executor.v1.IStartBatchTransactionAction|null);

                    /** SpannerAction closeBatchTxn. */
                    public closeBatchTxn?: (google.spanner.executor.v1.ICloseBatchTransactionAction|null);

                    /** SpannerAction generateDbPartitionsRead. */
                    public generateDbPartitionsRead?: (google.spanner.executor.v1.IGenerateDbPartitionsForReadAction|null);

                    /** SpannerAction generateDbPartitionsQuery. */
                    public generateDbPartitionsQuery?: (google.spanner.executor.v1.IGenerateDbPartitionsForQueryAction|null);

                    /** SpannerAction executePartition. */
                    public executePartition?: (google.spanner.executor.v1.IExecutePartitionAction|null);

                    /** SpannerAction executeChangeStreamQuery. */
                    public executeChangeStreamQuery?: (google.spanner.executor.v1.IExecuteChangeStreamQuery|null);

                    /** SpannerAction queryCancellation. */
                    public queryCancellation?: (google.spanner.executor.v1.IQueryCancellationAction|null);

                    /** SpannerAction action. */
                    public action?: ("start"|"finish"|"read"|"query"|"mutation"|"dml"|"batchDml"|"write"|"partitionedUpdate"|"admin"|"startBatchTxn"|"closeBatchTxn"|"generateDbPartitionsRead"|"generateDbPartitionsQuery"|"executePartition"|"executeChangeStreamQuery"|"queryCancellation");

                    /**
                     * Creates a new SpannerAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SpannerAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ISpannerAction): google.spanner.executor.v1.SpannerAction;

                    /**
                     * Encodes the specified SpannerAction message. Does not implicitly {@link google.spanner.executor.v1.SpannerAction.verify|verify} messages.
                     * @param message SpannerAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ISpannerAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SpannerAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.SpannerAction.verify|verify} messages.
                     * @param message SpannerAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ISpannerAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SpannerAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SpannerAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.SpannerAction;

                    /**
                     * Decodes a SpannerAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SpannerAction
                     * @throws {Error} If the 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.spanner.executor.v1.SpannerAction;

                    /**
                     * Verifies a SpannerAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SpannerAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SpannerAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.SpannerAction;

                    /**
                     * Creates a plain object from a SpannerAction message. Also converts values to other types if specified.
                     * @param message SpannerAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.SpannerAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SpannerAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SpannerAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ReadAction. */
                interface IReadAction {

                    /** ReadAction table */
                    table?: (string|null);

                    /** ReadAction index */
                    index?: (string|null);

                    /** ReadAction column */
                    column?: (string[]|null);

                    /** ReadAction keys */
                    keys?: (google.spanner.executor.v1.IKeySet|null);

                    /** ReadAction limit */
                    limit?: (number|null);
                }

                /** Represents a ReadAction. */
                class ReadAction implements IReadAction {

                    /**
                     * Constructs a new ReadAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IReadAction);

                    /** ReadAction table. */
                    public table: string;

                    /** ReadAction index. */
                    public index?: (string|null);

                    /** ReadAction column. */
                    public column: string[];

                    /** ReadAction keys. */
                    public keys?: (google.spanner.executor.v1.IKeySet|null);

                    /** ReadAction limit. */
                    public limit: number;

                    /**
                     * Creates a new ReadAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReadAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IReadAction): google.spanner.executor.v1.ReadAction;

                    /**
                     * Encodes the specified ReadAction message. Does not implicitly {@link google.spanner.executor.v1.ReadAction.verify|verify} messages.
                     * @param message ReadAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IReadAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReadAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ReadAction.verify|verify} messages.
                     * @param message ReadAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IReadAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReadAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReadAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ReadAction;

                    /**
                     * Decodes a ReadAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReadAction
                     * @throws {Error} If the 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.spanner.executor.v1.ReadAction;

                    /**
                     * Verifies a ReadAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ReadAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReadAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ReadAction;

                    /**
                     * Creates a plain object from a ReadAction message. Also converts values to other types if specified.
                     * @param message ReadAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ReadAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReadAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReadAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a QueryAction. */
                interface IQueryAction {

                    /** QueryAction sql */
                    sql?: (string|null);

                    /** QueryAction params */
                    params?: (google.spanner.executor.v1.QueryAction.IParameter[]|null);
                }

                /** Represents a QueryAction. */
                class QueryAction implements IQueryAction {

                    /**
                     * Constructs a new QueryAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IQueryAction);

                    /** QueryAction sql. */
                    public sql: string;

                    /** QueryAction params. */
                    public params: google.spanner.executor.v1.QueryAction.IParameter[];

                    /**
                     * Creates a new QueryAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IQueryAction): google.spanner.executor.v1.QueryAction;

                    /**
                     * Encodes the specified QueryAction message. Does not implicitly {@link google.spanner.executor.v1.QueryAction.verify|verify} messages.
                     * @param message QueryAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IQueryAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.QueryAction.verify|verify} messages.
                     * @param message QueryAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IQueryAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QueryAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QueryAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.QueryAction;

                    /**
                     * Decodes a QueryAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QueryAction
                     * @throws {Error} If the 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.spanner.executor.v1.QueryAction;

                    /**
                     * Verifies a QueryAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a QueryAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QueryAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.QueryAction;

                    /**
                     * Creates a plain object from a QueryAction message. Also converts values to other types if specified.
                     * @param message QueryAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.QueryAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QueryAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QueryAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace QueryAction {

                    /** Properties of a Parameter. */
                    interface IParameter {

                        /** Parameter name */
                        name?: (string|null);

                        /** Parameter type */
                        type?: (google.spanner.v1.IType|null);

                        /** Parameter value */
                        value?: (google.spanner.executor.v1.IValue|null);
                    }

                    /** Represents a Parameter. */
                    class Parameter implements IParameter {

                        /**
                         * Constructs a new Parameter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.QueryAction.IParameter);

                        /** Parameter name. */
                        public name: string;

                        /** Parameter type. */
                        public type?: (google.spanner.v1.IType|null);

                        /** Parameter value. */
                        public value?: (google.spanner.executor.v1.IValue|null);

                        /**
                         * Creates a new Parameter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Parameter instance
                         */
                        public static create(properties?: google.spanner.executor.v1.QueryAction.IParameter): google.spanner.executor.v1.QueryAction.Parameter;

                        /**
                         * Encodes the specified Parameter message. Does not implicitly {@link google.spanner.executor.v1.QueryAction.Parameter.verify|verify} messages.
                         * @param message Parameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.QueryAction.IParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Parameter message, length delimited. Does not implicitly {@link google.spanner.executor.v1.QueryAction.Parameter.verify|verify} messages.
                         * @param message Parameter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.QueryAction.IParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Parameter message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Parameter
                         * @throws {Error} If the payload is 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.spanner.executor.v1.QueryAction.Parameter;

                        /**
                         * Decodes a Parameter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Parameter
                         * @throws {Error} If the 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.spanner.executor.v1.QueryAction.Parameter;

                        /**
                         * Verifies a Parameter message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Parameter message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Parameter
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.QueryAction.Parameter;

                        /**
                         * Creates a plain object from a Parameter message. Also converts values to other types if specified.
                         * @param message Parameter
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.QueryAction.Parameter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Parameter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Parameter
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a DmlAction. */
                interface IDmlAction {

                    /** DmlAction update */
                    update?: (google.spanner.executor.v1.IQueryAction|null);

                    /** DmlAction autocommitIfSupported */
                    autocommitIfSupported?: (boolean|null);
                }

                /** Represents a DmlAction. */
                class DmlAction implements IDmlAction {

                    /**
                     * Constructs a new DmlAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IDmlAction);

                    /** DmlAction update. */
                    public update?: (google.spanner.executor.v1.IQueryAction|null);

                    /** DmlAction autocommitIfSupported. */
                    public autocommitIfSupported?: (boolean|null);

                    /**
                     * Creates a new DmlAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DmlAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IDmlAction): google.spanner.executor.v1.DmlAction;

                    /**
                     * Encodes the specified DmlAction message. Does not implicitly {@link google.spanner.executor.v1.DmlAction.verify|verify} messages.
                     * @param message DmlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IDmlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DmlAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DmlAction.verify|verify} messages.
                     * @param message DmlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IDmlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DmlAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DmlAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.DmlAction;

                    /**
                     * Decodes a DmlAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DmlAction
                     * @throws {Error} If the 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.spanner.executor.v1.DmlAction;

                    /**
                     * Verifies a DmlAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DmlAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DmlAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DmlAction;

                    /**
                     * Creates a plain object from a DmlAction message. Also converts values to other types if specified.
                     * @param message DmlAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.DmlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DmlAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DmlAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchDmlAction. */
                interface IBatchDmlAction {

                    /** BatchDmlAction updates */
                    updates?: (google.spanner.executor.v1.IQueryAction[]|null);
                }

                /** Represents a BatchDmlAction. */
                class BatchDmlAction implements IBatchDmlAction {

                    /**
                     * Constructs a new BatchDmlAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IBatchDmlAction);

                    /** BatchDmlAction updates. */
                    public updates: google.spanner.executor.v1.IQueryAction[];

                    /**
                     * Creates a new BatchDmlAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchDmlAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IBatchDmlAction): google.spanner.executor.v1.BatchDmlAction;

                    /**
                     * Encodes the specified BatchDmlAction message. Does not implicitly {@link google.spanner.executor.v1.BatchDmlAction.verify|verify} messages.
                     * @param message BatchDmlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IBatchDmlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchDmlAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.BatchDmlAction.verify|verify} messages.
                     * @param message BatchDmlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IBatchDmlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchDmlAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchDmlAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.BatchDmlAction;

                    /**
                     * Decodes a BatchDmlAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchDmlAction
                     * @throws {Error} If the 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.spanner.executor.v1.BatchDmlAction;

                    /**
                     * Verifies a BatchDmlAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a BatchDmlAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchDmlAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.BatchDmlAction;

                    /**
                     * Creates a plain object from a BatchDmlAction message. Also converts values to other types if specified.
                     * @param message BatchDmlAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.BatchDmlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchDmlAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchDmlAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Value. */
                interface IValue {

                    /** Value isNull */
                    isNull?: (boolean|null);

                    /** Value intValue */
                    intValue?: (number|Long|string|null);

                    /** Value boolValue */
                    boolValue?: (boolean|null);

                    /** Value doubleValue */
                    doubleValue?: (number|null);

                    /** Value bytesValue */
                    bytesValue?: (Uint8Array|Buffer|string|null);

                    /** Value stringValue */
                    stringValue?: (string|null);

                    /** Value structValue */
                    structValue?: (google.spanner.executor.v1.IValueList|null);

                    /** Value timestampValue */
                    timestampValue?: (google.protobuf.ITimestamp|null);

                    /** Value dateDaysValue */
                    dateDaysValue?: (number|null);

                    /** Value isCommitTimestamp */
                    isCommitTimestamp?: (boolean|null);

                    /** Value arrayValue */
                    arrayValue?: (google.spanner.executor.v1.IValueList|null);

                    /** Value arrayType */
                    arrayType?: (google.spanner.v1.IType|null);
                }

                /** Represents a Value. */
                class Value implements IValue {

                    /**
                     * Constructs a new Value.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IValue);

                    /** Value isNull. */
                    public isNull?: (boolean|null);

                    /** Value intValue. */
                    public intValue?: (number|Long|string|null);

                    /** Value boolValue. */
                    public boolValue?: (boolean|null);

                    /** Value doubleValue. */
                    public doubleValue?: (number|null);

                    /** Value bytesValue. */
                    public bytesValue?: (Uint8Array|Buffer|string|null);

                    /** Value stringValue. */
                    public stringValue?: (string|null);

                    /** Value structValue. */
                    public structValue?: (google.spanner.executor.v1.IValueList|null);

                    /** Value timestampValue. */
                    public timestampValue?: (google.protobuf.ITimestamp|null);

                    /** Value dateDaysValue. */
                    public dateDaysValue?: (number|null);

                    /** Value isCommitTimestamp. */
                    public isCommitTimestamp?: (boolean|null);

                    /** Value arrayValue. */
                    public arrayValue?: (google.spanner.executor.v1.IValueList|null);

                    /** Value arrayType. */
                    public arrayType?: (google.spanner.v1.IType|null);

                    /** Value valueType. */
                    public valueType?: ("isNull"|"intValue"|"boolValue"|"doubleValue"|"bytesValue"|"stringValue"|"structValue"|"timestampValue"|"dateDaysValue"|"isCommitTimestamp"|"arrayValue");

                    /**
                     * Creates a new Value instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Value instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IValue): google.spanner.executor.v1.Value;

                    /**
                     * Encodes the specified Value message. Does not implicitly {@link google.spanner.executor.v1.Value.verify|verify} messages.
                     * @param message Value message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Value message, length delimited. Does not implicitly {@link google.spanner.executor.v1.Value.verify|verify} messages.
                     * @param message Value message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Value message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Value
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.executor.v1.Value;

                    /**
                     * Decodes a Value message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Value
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.executor.v1.Value;

                    /**
                     * Verifies a Value message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Value message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Value
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.Value;

                    /**
                     * Creates a plain object from a Value message. Also converts values to other types if specified.
                     * @param message Value
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.Value, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Value to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Value
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a KeyRange. */
                interface IKeyRange {

                    /** KeyRange start */
                    start?: (google.spanner.executor.v1.IValueList|null);

                    /** KeyRange limit */
                    limit?: (google.spanner.executor.v1.IValueList|null);

                    /** KeyRange type */
                    type?: (google.spanner.executor.v1.KeyRange.Type|keyof typeof google.spanner.executor.v1.KeyRange.Type|null);
                }

                /** Represents a KeyRange. */
                class KeyRange implements IKeyRange {

                    /**
                     * Constructs a new KeyRange.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IKeyRange);

                    /** KeyRange start. */
                    public start?: (google.spanner.executor.v1.IValueList|null);

                    /** KeyRange limit. */
                    public limit?: (google.spanner.executor.v1.IValueList|null);

                    /** KeyRange type. */
                    public type?: (google.spanner.executor.v1.KeyRange.Type|keyof typeof google.spanner.executor.v1.KeyRange.Type|null);

                    /**
                     * Creates a new KeyRange instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns KeyRange instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IKeyRange): google.spanner.executor.v1.KeyRange;

                    /**
                     * Encodes the specified KeyRange message. Does not implicitly {@link google.spanner.executor.v1.KeyRange.verify|verify} messages.
                     * @param message KeyRange message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified KeyRange message, length delimited. Does not implicitly {@link google.spanner.executor.v1.KeyRange.verify|verify} messages.
                     * @param message KeyRange message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a KeyRange message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns KeyRange
                     * @throws {Error} If the payload is 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.spanner.executor.v1.KeyRange;

                    /**
                     * Decodes a KeyRange message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns KeyRange
                     * @throws {Error} If the 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.spanner.executor.v1.KeyRange;

                    /**
                     * Verifies a KeyRange message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a KeyRange message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns KeyRange
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.KeyRange;

                    /**
                     * Creates a plain object from a KeyRange message. Also converts values to other types if specified.
                     * @param message KeyRange
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.KeyRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this KeyRange to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for KeyRange
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace KeyRange {

                    /** Type enum. */
                    enum Type {
                        TYPE_UNSPECIFIED = 0,
                        CLOSED_CLOSED = 1,
                        CLOSED_OPEN = 2,
                        OPEN_CLOSED = 3,
                        OPEN_OPEN = 4
                    }
                }

                /** Properties of a KeySet. */
                interface IKeySet {

                    /** KeySet point */
                    point?: (google.spanner.executor.v1.IValueList[]|null);

                    /** KeySet range */
                    range?: (google.spanner.executor.v1.IKeyRange[]|null);

                    /** KeySet all */
                    all?: (boolean|null);
                }

                /** Represents a KeySet. */
                class KeySet implements IKeySet {

                    /**
                     * Constructs a new KeySet.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IKeySet);

                    /** KeySet point. */
                    public point: google.spanner.executor.v1.IValueList[];

                    /** KeySet range. */
                    public range: google.spanner.executor.v1.IKeyRange[];

                    /** KeySet all. */
                    public all: boolean;

                    /**
                     * Creates a new KeySet instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns KeySet instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IKeySet): google.spanner.executor.v1.KeySet;

                    /**
                     * Encodes the specified KeySet message. Does not implicitly {@link google.spanner.executor.v1.KeySet.verify|verify} messages.
                     * @param message KeySet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified KeySet message, length delimited. Does not implicitly {@link google.spanner.executor.v1.KeySet.verify|verify} messages.
                     * @param message KeySet message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a KeySet message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns KeySet
                     * @throws {Error} If the payload is 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.spanner.executor.v1.KeySet;

                    /**
                     * Decodes a KeySet message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns KeySet
                     * @throws {Error} If the 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.spanner.executor.v1.KeySet;

                    /**
                     * Verifies a KeySet message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a KeySet message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns KeySet
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.KeySet;

                    /**
                     * Creates a plain object from a KeySet message. Also converts values to other types if specified.
                     * @param message KeySet
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.KeySet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this KeySet to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for KeySet
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ValueList. */
                interface IValueList {

                    /** ValueList value */
                    value?: (google.spanner.executor.v1.IValue[]|null);
                }

                /** Represents a ValueList. */
                class ValueList implements IValueList {

                    /**
                     * Constructs a new ValueList.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IValueList);

                    /** ValueList value. */
                    public value: google.spanner.executor.v1.IValue[];

                    /**
                     * Creates a new ValueList instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ValueList instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IValueList): google.spanner.executor.v1.ValueList;

                    /**
                     * Encodes the specified ValueList message. Does not implicitly {@link google.spanner.executor.v1.ValueList.verify|verify} messages.
                     * @param message ValueList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IValueList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ValueList message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ValueList.verify|verify} messages.
                     * @param message ValueList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IValueList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ValueList message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ValueList
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ValueList;

                    /**
                     * Decodes a ValueList message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ValueList
                     * @throws {Error} If the 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.spanner.executor.v1.ValueList;

                    /**
                     * Verifies a ValueList message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ValueList message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ValueList
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ValueList;

                    /**
                     * Creates a plain object from a ValueList message. Also converts values to other types if specified.
                     * @param message ValueList
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ValueList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ValueList to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ValueList
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MutationAction. */
                interface IMutationAction {

                    /** MutationAction mod */
                    mod?: (google.spanner.executor.v1.MutationAction.IMod[]|null);
                }

                /** Represents a MutationAction. */
                class MutationAction implements IMutationAction {

                    /**
                     * Constructs a new MutationAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IMutationAction);

                    /** MutationAction mod. */
                    public mod: google.spanner.executor.v1.MutationAction.IMod[];

                    /**
                     * Creates a new MutationAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MutationAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IMutationAction): google.spanner.executor.v1.MutationAction;

                    /**
                     * Encodes the specified MutationAction message. Does not implicitly {@link google.spanner.executor.v1.MutationAction.verify|verify} messages.
                     * @param message MutationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IMutationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MutationAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.MutationAction.verify|verify} messages.
                     * @param message MutationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IMutationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MutationAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MutationAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.MutationAction;

                    /**
                     * Decodes a MutationAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MutationAction
                     * @throws {Error} If the 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.spanner.executor.v1.MutationAction;

                    /**
                     * Verifies a MutationAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a MutationAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MutationAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.MutationAction;

                    /**
                     * Creates a plain object from a MutationAction message. Also converts values to other types if specified.
                     * @param message MutationAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.MutationAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MutationAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MutationAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace MutationAction {

                    /** Properties of an InsertArgs. */
                    interface IInsertArgs {

                        /** InsertArgs column */
                        column?: (string[]|null);

                        /** InsertArgs type */
                        type?: (google.spanner.v1.IType[]|null);

                        /** InsertArgs values */
                        values?: (google.spanner.executor.v1.IValueList[]|null);
                    }

                    /** Represents an InsertArgs. */
                    class InsertArgs implements IInsertArgs {

                        /**
                         * Constructs a new InsertArgs.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.MutationAction.IInsertArgs);

                        /** InsertArgs column. */
                        public column: string[];

                        /** InsertArgs type. */
                        public type: google.spanner.v1.IType[];

                        /** InsertArgs values. */
                        public values: google.spanner.executor.v1.IValueList[];

                        /**
                         * Creates a new InsertArgs instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns InsertArgs instance
                         */
                        public static create(properties?: google.spanner.executor.v1.MutationAction.IInsertArgs): google.spanner.executor.v1.MutationAction.InsertArgs;

                        /**
                         * Encodes the specified InsertArgs message. Does not implicitly {@link google.spanner.executor.v1.MutationAction.InsertArgs.verify|verify} messages.
                         * @param message InsertArgs message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.MutationAction.IInsertArgs, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InsertArgs message, length delimited. Does not implicitly {@link google.spanner.executor.v1.MutationAction.InsertArgs.verify|verify} messages.
                         * @param message InsertArgs message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.MutationAction.IInsertArgs, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InsertArgs message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns InsertArgs
                         * @throws {Error} If the payload is 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.spanner.executor.v1.MutationAction.InsertArgs;

                        /**
                         * Decodes an InsertArgs message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns InsertArgs
                         * @throws {Error} If the 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.spanner.executor.v1.MutationAction.InsertArgs;

                        /**
                         * Verifies an InsertArgs message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an InsertArgs message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns InsertArgs
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.MutationAction.InsertArgs;

                        /**
                         * Creates a plain object from an InsertArgs message. Also converts values to other types if specified.
                         * @param message InsertArgs
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.MutationAction.InsertArgs, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InsertArgs to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for InsertArgs
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an UpdateArgs. */
                    interface IUpdateArgs {

                        /** UpdateArgs column */
                        column?: (string[]|null);

                        /** UpdateArgs type */
                        type?: (google.spanner.v1.IType[]|null);

                        /** UpdateArgs values */
                        values?: (google.spanner.executor.v1.IValueList[]|null);
                    }

                    /** Represents an UpdateArgs. */
                    class UpdateArgs implements IUpdateArgs {

                        /**
                         * Constructs a new UpdateArgs.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.MutationAction.IUpdateArgs);

                        /** UpdateArgs column. */
                        public column: string[];

                        /** UpdateArgs type. */
                        public type: google.spanner.v1.IType[];

                        /** UpdateArgs values. */
                        public values: google.spanner.executor.v1.IValueList[];

                        /**
                         * Creates a new UpdateArgs instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UpdateArgs instance
                         */
                        public static create(properties?: google.spanner.executor.v1.MutationAction.IUpdateArgs): google.spanner.executor.v1.MutationAction.UpdateArgs;

                        /**
                         * Encodes the specified UpdateArgs message. Does not implicitly {@link google.spanner.executor.v1.MutationAction.UpdateArgs.verify|verify} messages.
                         * @param message UpdateArgs message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.MutationAction.IUpdateArgs, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UpdateArgs message, length delimited. Does not implicitly {@link google.spanner.executor.v1.MutationAction.UpdateArgs.verify|verify} messages.
                         * @param message UpdateArgs message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.MutationAction.IUpdateArgs, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UpdateArgs message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UpdateArgs
                         * @throws {Error} If the payload is 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.spanner.executor.v1.MutationAction.UpdateArgs;

                        /**
                         * Decodes an UpdateArgs message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UpdateArgs
                         * @throws {Error} If the 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.spanner.executor.v1.MutationAction.UpdateArgs;

                        /**
                         * Verifies an UpdateArgs message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UpdateArgs message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UpdateArgs
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.MutationAction.UpdateArgs;

                        /**
                         * Creates a plain object from an UpdateArgs message. Also converts values to other types if specified.
                         * @param message UpdateArgs
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.MutationAction.UpdateArgs, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UpdateArgs to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UpdateArgs
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Mod. */
                    interface IMod {

                        /** Mod table */
                        table?: (string|null);

                        /** Mod insert */
                        insert?: (google.spanner.executor.v1.MutationAction.IInsertArgs|null);

                        /** Mod update */
                        update?: (google.spanner.executor.v1.MutationAction.IUpdateArgs|null);

                        /** Mod insertOrUpdate */
                        insertOrUpdate?: (google.spanner.executor.v1.MutationAction.IInsertArgs|null);

                        /** Mod replace */
                        replace?: (google.spanner.executor.v1.MutationAction.IInsertArgs|null);

                        /** Mod deleteKeys */
                        deleteKeys?: (google.spanner.executor.v1.IKeySet|null);
                    }

                    /** Represents a Mod. */
                    class Mod implements IMod {

                        /**
                         * Constructs a new Mod.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.MutationAction.IMod);

                        /** Mod table. */
                        public table: string;

                        /** Mod insert. */
                        public insert?: (google.spanner.executor.v1.MutationAction.IInsertArgs|null);

                        /** Mod update. */
                        public update?: (google.spanner.executor.v1.MutationAction.IUpdateArgs|null);

                        /** Mod insertOrUpdate. */
                        public insertOrUpdate?: (google.spanner.executor.v1.MutationAction.IInsertArgs|null);

                        /** Mod replace. */
                        public replace?: (google.spanner.executor.v1.MutationAction.IInsertArgs|null);

                        /** Mod deleteKeys. */
                        public deleteKeys?: (google.spanner.executor.v1.IKeySet|null);

                        /**
                         * Creates a new Mod instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Mod instance
                         */
                        public static create(properties?: google.spanner.executor.v1.MutationAction.IMod): google.spanner.executor.v1.MutationAction.Mod;

                        /**
                         * Encodes the specified Mod message. Does not implicitly {@link google.spanner.executor.v1.MutationAction.Mod.verify|verify} messages.
                         * @param message Mod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.MutationAction.IMod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Mod message, length delimited. Does not implicitly {@link google.spanner.executor.v1.MutationAction.Mod.verify|verify} messages.
                         * @param message Mod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.MutationAction.IMod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Mod message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Mod
                         * @throws {Error} If the payload is 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.spanner.executor.v1.MutationAction.Mod;

                        /**
                         * Decodes a Mod message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Mod
                         * @throws {Error} If the 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.spanner.executor.v1.MutationAction.Mod;

                        /**
                         * Verifies a Mod message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Mod message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Mod
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.MutationAction.Mod;

                        /**
                         * Creates a plain object from a Mod message. Also converts values to other types if specified.
                         * @param message Mod
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.MutationAction.Mod, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Mod to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Mod
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a WriteMutationsAction. */
                interface IWriteMutationsAction {

                    /** WriteMutationsAction mutation */
                    mutation?: (google.spanner.executor.v1.IMutationAction|null);
                }

                /** Represents a WriteMutationsAction. */
                class WriteMutationsAction implements IWriteMutationsAction {

                    /**
                     * Constructs a new WriteMutationsAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IWriteMutationsAction);

                    /** WriteMutationsAction mutation. */
                    public mutation?: (google.spanner.executor.v1.IMutationAction|null);

                    /**
                     * Creates a new WriteMutationsAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WriteMutationsAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IWriteMutationsAction): google.spanner.executor.v1.WriteMutationsAction;

                    /**
                     * Encodes the specified WriteMutationsAction message. Does not implicitly {@link google.spanner.executor.v1.WriteMutationsAction.verify|verify} messages.
                     * @param message WriteMutationsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IWriteMutationsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WriteMutationsAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.WriteMutationsAction.verify|verify} messages.
                     * @param message WriteMutationsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IWriteMutationsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WriteMutationsAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WriteMutationsAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.WriteMutationsAction;

                    /**
                     * Decodes a WriteMutationsAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WriteMutationsAction
                     * @throws {Error} If the 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.spanner.executor.v1.WriteMutationsAction;

                    /**
                     * Verifies a WriteMutationsAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a WriteMutationsAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WriteMutationsAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.WriteMutationsAction;

                    /**
                     * Creates a plain object from a WriteMutationsAction message. Also converts values to other types if specified.
                     * @param message WriteMutationsAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.WriteMutationsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WriteMutationsAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WriteMutationsAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PartitionedUpdateAction. */
                interface IPartitionedUpdateAction {

                    /** PartitionedUpdateAction options */
                    options?: (google.spanner.executor.v1.PartitionedUpdateAction.IExecutePartitionedUpdateOptions|null);

                    /** PartitionedUpdateAction update */
                    update?: (google.spanner.executor.v1.IQueryAction|null);
                }

                /** Represents a PartitionedUpdateAction. */
                class PartitionedUpdateAction implements IPartitionedUpdateAction {

                    /**
                     * Constructs a new PartitionedUpdateAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IPartitionedUpdateAction);

                    /** PartitionedUpdateAction options. */
                    public options?: (google.spanner.executor.v1.PartitionedUpdateAction.IExecutePartitionedUpdateOptions|null);

                    /** PartitionedUpdateAction update. */
                    public update?: (google.spanner.executor.v1.IQueryAction|null);

                    /**
                     * Creates a new PartitionedUpdateAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PartitionedUpdateAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IPartitionedUpdateAction): google.spanner.executor.v1.PartitionedUpdateAction;

                    /**
                     * Encodes the specified PartitionedUpdateAction message. Does not implicitly {@link google.spanner.executor.v1.PartitionedUpdateAction.verify|verify} messages.
                     * @param message PartitionedUpdateAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IPartitionedUpdateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PartitionedUpdateAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.PartitionedUpdateAction.verify|verify} messages.
                     * @param message PartitionedUpdateAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IPartitionedUpdateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PartitionedUpdateAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PartitionedUpdateAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.PartitionedUpdateAction;

                    /**
                     * Decodes a PartitionedUpdateAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PartitionedUpdateAction
                     * @throws {Error} If the 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.spanner.executor.v1.PartitionedUpdateAction;

                    /**
                     * Verifies a PartitionedUpdateAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PartitionedUpdateAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PartitionedUpdateAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.PartitionedUpdateAction;

                    /**
                     * Creates a plain object from a PartitionedUpdateAction message. Also converts values to other types if specified.
                     * @param message PartitionedUpdateAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.PartitionedUpdateAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PartitionedUpdateAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PartitionedUpdateAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PartitionedUpdateAction {

                    /** Properties of an ExecutePartitionedUpdateOptions. */
                    interface IExecutePartitionedUpdateOptions {

                        /** ExecutePartitionedUpdateOptions rpcPriority */
                        rpcPriority?: (google.spanner.v1.RequestOptions.Priority|keyof typeof google.spanner.v1.RequestOptions.Priority|null);

                        /** ExecutePartitionedUpdateOptions tag */
                        tag?: (string|null);
                    }

                    /** Represents an ExecutePartitionedUpdateOptions. */
                    class ExecutePartitionedUpdateOptions implements IExecutePartitionedUpdateOptions {

                        /**
                         * Constructs a new ExecutePartitionedUpdateOptions.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.PartitionedUpdateAction.IExecutePartitionedUpdateOptions);

                        /** ExecutePartitionedUpdateOptions rpcPriority. */
                        public rpcPriority?: (google.spanner.v1.RequestOptions.Priority|keyof typeof google.spanner.v1.RequestOptions.Priority|null);

                        /** ExecutePartitionedUpdateOptions tag. */
                        public tag?: (string|null);

                        /**
                         * Creates a new ExecutePartitionedUpdateOptions instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExecutePartitionedUpdateOptions instance
                         */
                        public static create(properties?: google.spanner.executor.v1.PartitionedUpdateAction.IExecutePartitionedUpdateOptions): google.spanner.executor.v1.PartitionedUpdateAction.ExecutePartitionedUpdateOptions;

                        /**
                         * Encodes the specified ExecutePartitionedUpdateOptions message. Does not implicitly {@link google.spanner.executor.v1.PartitionedUpdateAction.ExecutePartitionedUpdateOptions.verify|verify} messages.
                         * @param message ExecutePartitionedUpdateOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.PartitionedUpdateAction.IExecutePartitionedUpdateOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExecutePartitionedUpdateOptions message, length delimited. Does not implicitly {@link google.spanner.executor.v1.PartitionedUpdateAction.ExecutePartitionedUpdateOptions.verify|verify} messages.
                         * @param message ExecutePartitionedUpdateOptions message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.PartitionedUpdateAction.IExecutePartitionedUpdateOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExecutePartitionedUpdateOptions message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ExecutePartitionedUpdateOptions
                         * @throws {Error} If the payload is 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.spanner.executor.v1.PartitionedUpdateAction.ExecutePartitionedUpdateOptions;

                        /**
                         * Decodes an ExecutePartitionedUpdateOptions message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExecutePartitionedUpdateOptions
                         * @throws {Error} If the 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.spanner.executor.v1.PartitionedUpdateAction.ExecutePartitionedUpdateOptions;

                        /**
                         * Verifies an ExecutePartitionedUpdateOptions message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExecutePartitionedUpdateOptions message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ExecutePartitionedUpdateOptions
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.PartitionedUpdateAction.ExecutePartitionedUpdateOptions;

                        /**
                         * Creates a plain object from an ExecutePartitionedUpdateOptions message. Also converts values to other types if specified.
                         * @param message ExecutePartitionedUpdateOptions
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.PartitionedUpdateAction.ExecutePartitionedUpdateOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExecutePartitionedUpdateOptions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ExecutePartitionedUpdateOptions
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a StartTransactionAction. */
                interface IStartTransactionAction {

                    /** StartTransactionAction concurrency */
                    concurrency?: (google.spanner.executor.v1.IConcurrency|null);

                    /** StartTransactionAction table */
                    table?: (google.spanner.executor.v1.ITableMetadata[]|null);

                    /** StartTransactionAction transactionSeed */
                    transactionSeed?: (string|null);

                    /** StartTransactionAction executionOptions */
                    executionOptions?: (google.spanner.executor.v1.ITransactionExecutionOptions|null);
                }

                /** Represents a StartTransactionAction. */
                class StartTransactionAction implements IStartTransactionAction {

                    /**
                     * Constructs a new StartTransactionAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IStartTransactionAction);

                    /** StartTransactionAction concurrency. */
                    public concurrency?: (google.spanner.executor.v1.IConcurrency|null);

                    /** StartTransactionAction table. */
                    public table: google.spanner.executor.v1.ITableMetadata[];

                    /** StartTransactionAction transactionSeed. */
                    public transactionSeed: string;

                    /** StartTransactionAction executionOptions. */
                    public executionOptions?: (google.spanner.executor.v1.ITransactionExecutionOptions|null);

                    /**
                     * Creates a new StartTransactionAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartTransactionAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IStartTransactionAction): google.spanner.executor.v1.StartTransactionAction;

                    /**
                     * Encodes the specified StartTransactionAction message. Does not implicitly {@link google.spanner.executor.v1.StartTransactionAction.verify|verify} messages.
                     * @param message StartTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IStartTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartTransactionAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.StartTransactionAction.verify|verify} messages.
                     * @param message StartTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IStartTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartTransactionAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartTransactionAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.StartTransactionAction;

                    /**
                     * Decodes a StartTransactionAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartTransactionAction
                     * @throws {Error} If the 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.spanner.executor.v1.StartTransactionAction;

                    /**
                     * Verifies a StartTransactionAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a StartTransactionAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartTransactionAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.StartTransactionAction;

                    /**
                     * Creates a plain object from a StartTransactionAction message. Also converts values to other types if specified.
                     * @param message StartTransactionAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.StartTransactionAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartTransactionAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartTransactionAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Concurrency. */
                interface IConcurrency {

                    /** Concurrency stalenessSeconds */
                    stalenessSeconds?: (number|null);

                    /** Concurrency minReadTimestampMicros */
                    minReadTimestampMicros?: (number|Long|string|null);

                    /** Concurrency maxStalenessSeconds */
                    maxStalenessSeconds?: (number|null);

                    /** Concurrency exactTimestampMicros */
                    exactTimestampMicros?: (number|Long|string|null);

                    /** Concurrency strong */
                    strong?: (boolean|null);

                    /** Concurrency batch */
                    batch?: (boolean|null);

                    /** Concurrency snapshotEpochRead */
                    snapshotEpochRead?: (boolean|null);

                    /** Concurrency snapshotEpochRootTable */
                    snapshotEpochRootTable?: (string|null);

                    /** Concurrency batchReadTimestampMicros */
                    batchReadTimestampMicros?: (number|Long|string|null);
                }

                /** Represents a Concurrency. */
                class Concurrency implements IConcurrency {

                    /**
                     * Constructs a new Concurrency.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IConcurrency);

                    /** Concurrency stalenessSeconds. */
                    public stalenessSeconds?: (number|null);

                    /** Concurrency minReadTimestampMicros. */
                    public minReadTimestampMicros?: (number|Long|string|null);

                    /** Concurrency maxStalenessSeconds. */
                    public maxStalenessSeconds?: (number|null);

                    /** Concurrency exactTimestampMicros. */
                    public exactTimestampMicros?: (number|Long|string|null);

                    /** Concurrency strong. */
                    public strong?: (boolean|null);

                    /** Concurrency batch. */
                    public batch?: (boolean|null);

                    /** Concurrency snapshotEpochRead. */
                    public snapshotEpochRead: boolean;

                    /** Concurrency snapshotEpochRootTable. */
                    public snapshotEpochRootTable: string;

                    /** Concurrency batchReadTimestampMicros. */
                    public batchReadTimestampMicros: (number|Long|string);

                    /** Concurrency concurrencyMode. */
                    public concurrencyMode?: ("stalenessSeconds"|"minReadTimestampMicros"|"maxStalenessSeconds"|"exactTimestampMicros"|"strong"|"batch");

                    /**
                     * Creates a new Concurrency instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Concurrency instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IConcurrency): google.spanner.executor.v1.Concurrency;

                    /**
                     * Encodes the specified Concurrency message. Does not implicitly {@link google.spanner.executor.v1.Concurrency.verify|verify} messages.
                     * @param message Concurrency message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IConcurrency, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Concurrency message, length delimited. Does not implicitly {@link google.spanner.executor.v1.Concurrency.verify|verify} messages.
                     * @param message Concurrency message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IConcurrency, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Concurrency message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Concurrency
                     * @throws {Error} If the payload is 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.spanner.executor.v1.Concurrency;

                    /**
                     * Decodes a Concurrency message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Concurrency
                     * @throws {Error} If the 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.spanner.executor.v1.Concurrency;

                    /**
                     * Verifies a Concurrency message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Concurrency message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Concurrency
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.Concurrency;

                    /**
                     * Creates a plain object from a Concurrency message. Also converts values to other types if specified.
                     * @param message Concurrency
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.Concurrency, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Concurrency to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Concurrency
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TableMetadata. */
                interface ITableMetadata {

                    /** TableMetadata name */
                    name?: (string|null);

                    /** TableMetadata column */
                    column?: (google.spanner.executor.v1.IColumnMetadata[]|null);

                    /** TableMetadata keyColumn */
                    keyColumn?: (google.spanner.executor.v1.IColumnMetadata[]|null);
                }

                /** Represents a TableMetadata. */
                class TableMetadata implements ITableMetadata {

                    /**
                     * Constructs a new TableMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ITableMetadata);

                    /** TableMetadata name. */
                    public name: string;

                    /** TableMetadata column. */
                    public column: google.spanner.executor.v1.IColumnMetadata[];

                    /** TableMetadata keyColumn. */
                    public keyColumn: google.spanner.executor.v1.IColumnMetadata[];

                    /**
                     * Creates a new TableMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TableMetadata instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ITableMetadata): google.spanner.executor.v1.TableMetadata;

                    /**
                     * Encodes the specified TableMetadata message. Does not implicitly {@link google.spanner.executor.v1.TableMetadata.verify|verify} messages.
                     * @param message TableMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ITableMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TableMetadata message, length delimited. Does not implicitly {@link google.spanner.executor.v1.TableMetadata.verify|verify} messages.
                     * @param message TableMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ITableMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TableMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TableMetadata
                     * @throws {Error} If the payload is 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.spanner.executor.v1.TableMetadata;

                    /**
                     * Decodes a TableMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TableMetadata
                     * @throws {Error} If the 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.spanner.executor.v1.TableMetadata;

                    /**
                     * Verifies a TableMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TableMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TableMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.TableMetadata;

                    /**
                     * Creates a plain object from a TableMetadata message. Also converts values to other types if specified.
                     * @param message TableMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.TableMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TableMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TableMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ColumnMetadata. */
                interface IColumnMetadata {

                    /** ColumnMetadata name */
                    name?: (string|null);

                    /** ColumnMetadata type */
                    type?: (google.spanner.v1.IType|null);
                }

                /** Represents a ColumnMetadata. */
                class ColumnMetadata implements IColumnMetadata {

                    /**
                     * Constructs a new ColumnMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IColumnMetadata);

                    /** ColumnMetadata name. */
                    public name: string;

                    /** ColumnMetadata type. */
                    public type?: (google.spanner.v1.IType|null);

                    /**
                     * Creates a new ColumnMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ColumnMetadata instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IColumnMetadata): google.spanner.executor.v1.ColumnMetadata;

                    /**
                     * Encodes the specified ColumnMetadata message. Does not implicitly {@link google.spanner.executor.v1.ColumnMetadata.verify|verify} messages.
                     * @param message ColumnMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IColumnMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ColumnMetadata message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ColumnMetadata.verify|verify} messages.
                     * @param message ColumnMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IColumnMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ColumnMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ColumnMetadata
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ColumnMetadata;

                    /**
                     * Decodes a ColumnMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ColumnMetadata
                     * @throws {Error} If the 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.spanner.executor.v1.ColumnMetadata;

                    /**
                     * Verifies a ColumnMetadata message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ColumnMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ColumnMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ColumnMetadata;

                    /**
                     * Creates a plain object from a ColumnMetadata message. Also converts values to other types if specified.
                     * @param message ColumnMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ColumnMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ColumnMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ColumnMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TransactionExecutionOptions. */
                interface ITransactionExecutionOptions {

                    /** TransactionExecutionOptions optimistic */
                    optimistic?: (boolean|null);
                }

                /** Represents a TransactionExecutionOptions. */
                class TransactionExecutionOptions implements ITransactionExecutionOptions {

                    /**
                     * Constructs a new TransactionExecutionOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ITransactionExecutionOptions);

                    /** TransactionExecutionOptions optimistic. */
                    public optimistic: boolean;

                    /**
                     * Creates a new TransactionExecutionOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TransactionExecutionOptions instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ITransactionExecutionOptions): google.spanner.executor.v1.TransactionExecutionOptions;

                    /**
                     * Encodes the specified TransactionExecutionOptions message. Does not implicitly {@link google.spanner.executor.v1.TransactionExecutionOptions.verify|verify} messages.
                     * @param message TransactionExecutionOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ITransactionExecutionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TransactionExecutionOptions message, length delimited. Does not implicitly {@link google.spanner.executor.v1.TransactionExecutionOptions.verify|verify} messages.
                     * @param message TransactionExecutionOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ITransactionExecutionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TransactionExecutionOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TransactionExecutionOptions
                     * @throws {Error} If the payload is 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.spanner.executor.v1.TransactionExecutionOptions;

                    /**
                     * Decodes a TransactionExecutionOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TransactionExecutionOptions
                     * @throws {Error} If the 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.spanner.executor.v1.TransactionExecutionOptions;

                    /**
                     * Verifies a TransactionExecutionOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a TransactionExecutionOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TransactionExecutionOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.TransactionExecutionOptions;

                    /**
                     * Creates a plain object from a TransactionExecutionOptions message. Also converts values to other types if specified.
                     * @param message TransactionExecutionOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.TransactionExecutionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TransactionExecutionOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TransactionExecutionOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FinishTransactionAction. */
                interface IFinishTransactionAction {

                    /** FinishTransactionAction mode */
                    mode?: (google.spanner.executor.v1.FinishTransactionAction.Mode|keyof typeof google.spanner.executor.v1.FinishTransactionAction.Mode|null);
                }

                /** Represents a FinishTransactionAction. */
                class FinishTransactionAction implements IFinishTransactionAction {

                    /**
                     * Constructs a new FinishTransactionAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IFinishTransactionAction);

                    /** FinishTransactionAction mode. */
                    public mode: (google.spanner.executor.v1.FinishTransactionAction.Mode|keyof typeof google.spanner.executor.v1.FinishTransactionAction.Mode);

                    /**
                     * Creates a new FinishTransactionAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FinishTransactionAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IFinishTransactionAction): google.spanner.executor.v1.FinishTransactionAction;

                    /**
                     * Encodes the specified FinishTransactionAction message. Does not implicitly {@link google.spanner.executor.v1.FinishTransactionAction.verify|verify} messages.
                     * @param message FinishTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IFinishTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FinishTransactionAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.FinishTransactionAction.verify|verify} messages.
                     * @param message FinishTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IFinishTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FinishTransactionAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FinishTransactionAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.FinishTransactionAction;

                    /**
                     * Decodes a FinishTransactionAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FinishTransactionAction
                     * @throws {Error} If the 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.spanner.executor.v1.FinishTransactionAction;

                    /**
                     * Verifies a FinishTransactionAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a FinishTransactionAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FinishTransactionAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.FinishTransactionAction;

                    /**
                     * Creates a plain object from a FinishTransactionAction message. Also converts values to other types if specified.
                     * @param message FinishTransactionAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.FinishTransactionAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FinishTransactionAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FinishTransactionAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace FinishTransactionAction {

                    /** Mode enum. */
                    enum Mode {
                        MODE_UNSPECIFIED = 0,
                        COMMIT = 1,
                        ABANDON = 2
                    }
                }

                /** Properties of an AdminAction. */
                interface IAdminAction {

                    /** AdminAction createUserInstanceConfig */
                    createUserInstanceConfig?: (google.spanner.executor.v1.ICreateUserInstanceConfigAction|null);

                    /** AdminAction updateUserInstanceConfig */
                    updateUserInstanceConfig?: (google.spanner.executor.v1.IUpdateUserInstanceConfigAction|null);

                    /** AdminAction deleteUserInstanceConfig */
                    deleteUserInstanceConfig?: (google.spanner.executor.v1.IDeleteUserInstanceConfigAction|null);

                    /** AdminAction getCloudInstanceConfig */
                    getCloudInstanceConfig?: (google.spanner.executor.v1.IGetCloudInstanceConfigAction|null);

                    /** AdminAction listInstanceConfigs */
                    listInstanceConfigs?: (google.spanner.executor.v1.IListCloudInstanceConfigsAction|null);

                    /** AdminAction createCloudInstance */
                    createCloudInstance?: (google.spanner.executor.v1.ICreateCloudInstanceAction|null);

                    /** AdminAction updateCloudInstance */
                    updateCloudInstance?: (google.spanner.executor.v1.IUpdateCloudInstanceAction|null);

                    /** AdminAction deleteCloudInstance */
                    deleteCloudInstance?: (google.spanner.executor.v1.IDeleteCloudInstanceAction|null);

                    /** AdminAction listCloudInstances */
                    listCloudInstances?: (google.spanner.executor.v1.IListCloudInstancesAction|null);

                    /** AdminAction getCloudInstance */
                    getCloudInstance?: (google.spanner.executor.v1.IGetCloudInstanceAction|null);

                    /** AdminAction createCloudDatabase */
                    createCloudDatabase?: (google.spanner.executor.v1.ICreateCloudDatabaseAction|null);

                    /** AdminAction updateCloudDatabaseDdl */
                    updateCloudDatabaseDdl?: (google.spanner.executor.v1.IUpdateCloudDatabaseDdlAction|null);

                    /** AdminAction updateCloudDatabase */
                    updateCloudDatabase?: (google.spanner.executor.v1.IUpdateCloudDatabaseAction|null);

                    /** AdminAction dropCloudDatabase */
                    dropCloudDatabase?: (google.spanner.executor.v1.IDropCloudDatabaseAction|null);

                    /** AdminAction listCloudDatabases */
                    listCloudDatabases?: (google.spanner.executor.v1.IListCloudDatabasesAction|null);

                    /** AdminAction listCloudDatabaseOperations */
                    listCloudDatabaseOperations?: (google.spanner.executor.v1.IListCloudDatabaseOperationsAction|null);

                    /** AdminAction restoreCloudDatabase */
                    restoreCloudDatabase?: (google.spanner.executor.v1.IRestoreCloudDatabaseAction|null);

                    /** AdminAction getCloudDatabase */
                    getCloudDatabase?: (google.spanner.executor.v1.IGetCloudDatabaseAction|null);

                    /** AdminAction createCloudBackup */
                    createCloudBackup?: (google.spanner.executor.v1.ICreateCloudBackupAction|null);

                    /** AdminAction copyCloudBackup */
                    copyCloudBackup?: (google.spanner.executor.v1.ICopyCloudBackupAction|null);

                    /** AdminAction getCloudBackup */
                    getCloudBackup?: (google.spanner.executor.v1.IGetCloudBackupAction|null);

                    /** AdminAction updateCloudBackup */
                    updateCloudBackup?: (google.spanner.executor.v1.IUpdateCloudBackupAction|null);

                    /** AdminAction deleteCloudBackup */
                    deleteCloudBackup?: (google.spanner.executor.v1.IDeleteCloudBackupAction|null);

                    /** AdminAction listCloudBackups */
                    listCloudBackups?: (google.spanner.executor.v1.IListCloudBackupsAction|null);

                    /** AdminAction listCloudBackupOperations */
                    listCloudBackupOperations?: (google.spanner.executor.v1.IListCloudBackupOperationsAction|null);

                    /** AdminAction getOperation */
                    getOperation?: (google.spanner.executor.v1.IGetOperationAction|null);

                    /** AdminAction cancelOperation */
                    cancelOperation?: (google.spanner.executor.v1.ICancelOperationAction|null);

                    /** AdminAction changeQuorumCloudDatabase */
                    changeQuorumCloudDatabase?: (google.spanner.executor.v1.IChangeQuorumCloudDatabaseAction|null);
                }

                /** Represents an AdminAction. */
                class AdminAction implements IAdminAction {

                    /**
                     * Constructs a new AdminAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IAdminAction);

                    /** AdminAction createUserInstanceConfig. */
                    public createUserInstanceConfig?: (google.spanner.executor.v1.ICreateUserInstanceConfigAction|null);

                    /** AdminAction updateUserInstanceConfig. */
                    public updateUserInstanceConfig?: (google.spanner.executor.v1.IUpdateUserInstanceConfigAction|null);

                    /** AdminAction deleteUserInstanceConfig. */
                    public deleteUserInstanceConfig?: (google.spanner.executor.v1.IDeleteUserInstanceConfigAction|null);

                    /** AdminAction getCloudInstanceConfig. */
                    public getCloudInstanceConfig?: (google.spanner.executor.v1.IGetCloudInstanceConfigAction|null);

                    /** AdminAction listInstanceConfigs. */
                    public listInstanceConfigs?: (google.spanner.executor.v1.IListCloudInstanceConfigsAction|null);

                    /** AdminAction createCloudInstance. */
                    public createCloudInstance?: (google.spanner.executor.v1.ICreateCloudInstanceAction|null);

                    /** AdminAction updateCloudInstance. */
                    public updateCloudInstance?: (google.spanner.executor.v1.IUpdateCloudInstanceAction|null);

                    /** AdminAction deleteCloudInstance. */
                    public deleteCloudInstance?: (google.spanner.executor.v1.IDeleteCloudInstanceAction|null);

                    /** AdminAction listCloudInstances. */
                    public listCloudInstances?: (google.spanner.executor.v1.IListCloudInstancesAction|null);

                    /** AdminAction getCloudInstance. */
                    public getCloudInstance?: (google.spanner.executor.v1.IGetCloudInstanceAction|null);

                    /** AdminAction createCloudDatabase. */
                    public createCloudDatabase?: (google.spanner.executor.v1.ICreateCloudDatabaseAction|null);

                    /** AdminAction updateCloudDatabaseDdl. */
                    public updateCloudDatabaseDdl?: (google.spanner.executor.v1.IUpdateCloudDatabaseDdlAction|null);

                    /** AdminAction updateCloudDatabase. */
                    public updateCloudDatabase?: (google.spanner.executor.v1.IUpdateCloudDatabaseAction|null);

                    /** AdminAction dropCloudDatabase. */
                    public dropCloudDatabase?: (google.spanner.executor.v1.IDropCloudDatabaseAction|null);

                    /** AdminAction listCloudDatabases. */
                    public listCloudDatabases?: (google.spanner.executor.v1.IListCloudDatabasesAction|null);

                    /** AdminAction listCloudDatabaseOperations. */
                    public listCloudDatabaseOperations?: (google.spanner.executor.v1.IListCloudDatabaseOperationsAction|null);

                    /** AdminAction restoreCloudDatabase. */
                    public restoreCloudDatabase?: (google.spanner.executor.v1.IRestoreCloudDatabaseAction|null);

                    /** AdminAction getCloudDatabase. */
                    public getCloudDatabase?: (google.spanner.executor.v1.IGetCloudDatabaseAction|null);

                    /** AdminAction createCloudBackup. */
                    public createCloudBackup?: (google.spanner.executor.v1.ICreateCloudBackupAction|null);

                    /** AdminAction copyCloudBackup. */
                    public copyCloudBackup?: (google.spanner.executor.v1.ICopyCloudBackupAction|null);

                    /** AdminAction getCloudBackup. */
                    public getCloudBackup?: (google.spanner.executor.v1.IGetCloudBackupAction|null);

                    /** AdminAction updateCloudBackup. */
                    public updateCloudBackup?: (google.spanner.executor.v1.IUpdateCloudBackupAction|null);

                    /** AdminAction deleteCloudBackup. */
                    public deleteCloudBackup?: (google.spanner.executor.v1.IDeleteCloudBackupAction|null);

                    /** AdminAction listCloudBackups. */
                    public listCloudBackups?: (google.spanner.executor.v1.IListCloudBackupsAction|null);

                    /** AdminAction listCloudBackupOperations. */
                    public listCloudBackupOperations?: (google.spanner.executor.v1.IListCloudBackupOperationsAction|null);

                    /** AdminAction getOperation. */
                    public getOperation?: (google.spanner.executor.v1.IGetOperationAction|null);

                    /** AdminAction cancelOperation. */
                    public cancelOperation?: (google.spanner.executor.v1.ICancelOperationAction|null);

                    /** AdminAction changeQuorumCloudDatabase. */
                    public changeQuorumCloudDatabase?: (google.spanner.executor.v1.IChangeQuorumCloudDatabaseAction|null);

                    /** AdminAction action. */
                    public action?: ("createUserInstanceConfig"|"updateUserInstanceConfig"|"deleteUserInstanceConfig"|"getCloudInstanceConfig"|"listInstanceConfigs"|"createCloudInstance"|"updateCloudInstance"|"deleteCloudInstance"|"listCloudInstances"|"getCloudInstance"|"createCloudDatabase"|"updateCloudDatabaseDdl"|"updateCloudDatabase"|"dropCloudDatabase"|"listCloudDatabases"|"listCloudDatabaseOperations"|"restoreCloudDatabase"|"getCloudDatabase"|"createCloudBackup"|"copyCloudBackup"|"getCloudBackup"|"updateCloudBackup"|"deleteCloudBackup"|"listCloudBackups"|"listCloudBackupOperations"|"getOperation"|"cancelOperation"|"changeQuorumCloudDatabase");

                    /**
                     * Creates a new AdminAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AdminAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IAdminAction): google.spanner.executor.v1.AdminAction;

                    /**
                     * Encodes the specified AdminAction message. Does not implicitly {@link google.spanner.executor.v1.AdminAction.verify|verify} messages.
                     * @param message AdminAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IAdminAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AdminAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.AdminAction.verify|verify} messages.
                     * @param message AdminAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IAdminAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AdminAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AdminAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.AdminAction;

                    /**
                     * Decodes an AdminAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AdminAction
                     * @throws {Error} If the 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.spanner.executor.v1.AdminAction;

                    /**
                     * Verifies an AdminAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an AdminAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AdminAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.AdminAction;

                    /**
                     * Creates a plain object from an AdminAction message. Also converts values to other types if specified.
                     * @param message AdminAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.AdminAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AdminAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AdminAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateUserInstanceConfigAction. */
                interface ICreateUserInstanceConfigAction {

                    /** CreateUserInstanceConfigAction userConfigId */
                    userConfigId?: (string|null);

                    /** CreateUserInstanceConfigAction projectId */
                    projectId?: (string|null);

                    /** CreateUserInstanceConfigAction baseConfigId */
                    baseConfigId?: (string|null);

                    /** CreateUserInstanceConfigAction replicas */
                    replicas?: (google.spanner.admin.instance.v1.IReplicaInfo[]|null);
                }

                /** Represents a CreateUserInstanceConfigAction. */
                class CreateUserInstanceConfigAction implements ICreateUserInstanceConfigAction {

                    /**
                     * Constructs a new CreateUserInstanceConfigAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICreateUserInstanceConfigAction);

                    /** CreateUserInstanceConfigAction userConfigId. */
                    public userConfigId: string;

                    /** CreateUserInstanceConfigAction projectId. */
                    public projectId: string;

                    /** CreateUserInstanceConfigAction baseConfigId. */
                    public baseConfigId: string;

                    /** CreateUserInstanceConfigAction replicas. */
                    public replicas: google.spanner.admin.instance.v1.IReplicaInfo[];

                    /**
                     * Creates a new CreateUserInstanceConfigAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateUserInstanceConfigAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICreateUserInstanceConfigAction): google.spanner.executor.v1.CreateUserInstanceConfigAction;

                    /**
                     * Encodes the specified CreateUserInstanceConfigAction message. Does not implicitly {@link google.spanner.executor.v1.CreateUserInstanceConfigAction.verify|verify} messages.
                     * @param message CreateUserInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICreateUserInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateUserInstanceConfigAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CreateUserInstanceConfigAction.verify|verify} messages.
                     * @param message CreateUserInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICreateUserInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateUserInstanceConfigAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateUserInstanceConfigAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CreateUserInstanceConfigAction;

                    /**
                     * Decodes a CreateUserInstanceConfigAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateUserInstanceConfigAction
                     * @throws {Error} If the 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.spanner.executor.v1.CreateUserInstanceConfigAction;

                    /**
                     * Verifies a CreateUserInstanceConfigAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateUserInstanceConfigAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateUserInstanceConfigAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CreateUserInstanceConfigAction;

                    /**
                     * Creates a plain object from a CreateUserInstanceConfigAction message. Also converts values to other types if specified.
                     * @param message CreateUserInstanceConfigAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CreateUserInstanceConfigAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateUserInstanceConfigAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateUserInstanceConfigAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateUserInstanceConfigAction. */
                interface IUpdateUserInstanceConfigAction {

                    /** UpdateUserInstanceConfigAction userConfigId */
                    userConfigId?: (string|null);

                    /** UpdateUserInstanceConfigAction projectId */
                    projectId?: (string|null);

                    /** UpdateUserInstanceConfigAction displayName */
                    displayName?: (string|null);

                    /** UpdateUserInstanceConfigAction labels */
                    labels?: ({ [k: string]: string }|null);
                }

                /** Represents an UpdateUserInstanceConfigAction. */
                class UpdateUserInstanceConfigAction implements IUpdateUserInstanceConfigAction {

                    /**
                     * Constructs a new UpdateUserInstanceConfigAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IUpdateUserInstanceConfigAction);

                    /** UpdateUserInstanceConfigAction userConfigId. */
                    public userConfigId: string;

                    /** UpdateUserInstanceConfigAction projectId. */
                    public projectId: string;

                    /** UpdateUserInstanceConfigAction displayName. */
                    public displayName?: (string|null);

                    /** UpdateUserInstanceConfigAction labels. */
                    public labels: { [k: string]: string };

                    /**
                     * Creates a new UpdateUserInstanceConfigAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateUserInstanceConfigAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IUpdateUserInstanceConfigAction): google.spanner.executor.v1.UpdateUserInstanceConfigAction;

                    /**
                     * Encodes the specified UpdateUserInstanceConfigAction message. Does not implicitly {@link google.spanner.executor.v1.UpdateUserInstanceConfigAction.verify|verify} messages.
                     * @param message UpdateUserInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IUpdateUserInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateUserInstanceConfigAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.UpdateUserInstanceConfigAction.verify|verify} messages.
                     * @param message UpdateUserInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IUpdateUserInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateUserInstanceConfigAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateUserInstanceConfigAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.UpdateUserInstanceConfigAction;

                    /**
                     * Decodes an UpdateUserInstanceConfigAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateUserInstanceConfigAction
                     * @throws {Error} If the 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.spanner.executor.v1.UpdateUserInstanceConfigAction;

                    /**
                     * Verifies an UpdateUserInstanceConfigAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateUserInstanceConfigAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateUserInstanceConfigAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.UpdateUserInstanceConfigAction;

                    /**
                     * Creates a plain object from an UpdateUserInstanceConfigAction message. Also converts values to other types if specified.
                     * @param message UpdateUserInstanceConfigAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.UpdateUserInstanceConfigAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateUserInstanceConfigAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateUserInstanceConfigAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCloudInstanceConfigAction. */
                interface IGetCloudInstanceConfigAction {

                    /** GetCloudInstanceConfigAction instanceConfigId */
                    instanceConfigId?: (string|null);

                    /** GetCloudInstanceConfigAction projectId */
                    projectId?: (string|null);
                }

                /** Represents a GetCloudInstanceConfigAction. */
                class GetCloudInstanceConfigAction implements IGetCloudInstanceConfigAction {

                    /**
                     * Constructs a new GetCloudInstanceConfigAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IGetCloudInstanceConfigAction);

                    /** GetCloudInstanceConfigAction instanceConfigId. */
                    public instanceConfigId: string;

                    /** GetCloudInstanceConfigAction projectId. */
                    public projectId: string;

                    /**
                     * Creates a new GetCloudInstanceConfigAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCloudInstanceConfigAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IGetCloudInstanceConfigAction): google.spanner.executor.v1.GetCloudInstanceConfigAction;

                    /**
                     * Encodes the specified GetCloudInstanceConfigAction message. Does not implicitly {@link google.spanner.executor.v1.GetCloudInstanceConfigAction.verify|verify} messages.
                     * @param message GetCloudInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IGetCloudInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCloudInstanceConfigAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.GetCloudInstanceConfigAction.verify|verify} messages.
                     * @param message GetCloudInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IGetCloudInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCloudInstanceConfigAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCloudInstanceConfigAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.GetCloudInstanceConfigAction;

                    /**
                     * Decodes a GetCloudInstanceConfigAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCloudInstanceConfigAction
                     * @throws {Error} If the 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.spanner.executor.v1.GetCloudInstanceConfigAction;

                    /**
                     * Verifies a GetCloudInstanceConfigAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetCloudInstanceConfigAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCloudInstanceConfigAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.GetCloudInstanceConfigAction;

                    /**
                     * Creates a plain object from a GetCloudInstanceConfigAction message. Also converts values to other types if specified.
                     * @param message GetCloudInstanceConfigAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.GetCloudInstanceConfigAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCloudInstanceConfigAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCloudInstanceConfigAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteUserInstanceConfigAction. */
                interface IDeleteUserInstanceConfigAction {

                    /** DeleteUserInstanceConfigAction userConfigId */
                    userConfigId?: (string|null);

                    /** DeleteUserInstanceConfigAction projectId */
                    projectId?: (string|null);
                }

                /** Represents a DeleteUserInstanceConfigAction. */
                class DeleteUserInstanceConfigAction implements IDeleteUserInstanceConfigAction {

                    /**
                     * Constructs a new DeleteUserInstanceConfigAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IDeleteUserInstanceConfigAction);

                    /** DeleteUserInstanceConfigAction userConfigId. */
                    public userConfigId: string;

                    /** DeleteUserInstanceConfigAction projectId. */
                    public projectId: string;

                    /**
                     * Creates a new DeleteUserInstanceConfigAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteUserInstanceConfigAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IDeleteUserInstanceConfigAction): google.spanner.executor.v1.DeleteUserInstanceConfigAction;

                    /**
                     * Encodes the specified DeleteUserInstanceConfigAction message. Does not implicitly {@link google.spanner.executor.v1.DeleteUserInstanceConfigAction.verify|verify} messages.
                     * @param message DeleteUserInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IDeleteUserInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteUserInstanceConfigAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DeleteUserInstanceConfigAction.verify|verify} messages.
                     * @param message DeleteUserInstanceConfigAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IDeleteUserInstanceConfigAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteUserInstanceConfigAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteUserInstanceConfigAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.DeleteUserInstanceConfigAction;

                    /**
                     * Decodes a DeleteUserInstanceConfigAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteUserInstanceConfigAction
                     * @throws {Error} If the 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.spanner.executor.v1.DeleteUserInstanceConfigAction;

                    /**
                     * Verifies a DeleteUserInstanceConfigAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteUserInstanceConfigAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteUserInstanceConfigAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DeleteUserInstanceConfigAction;

                    /**
                     * Creates a plain object from a DeleteUserInstanceConfigAction message. Also converts values to other types if specified.
                     * @param message DeleteUserInstanceConfigAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.DeleteUserInstanceConfigAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteUserInstanceConfigAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteUserInstanceConfigAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCloudInstanceConfigsAction. */
                interface IListCloudInstanceConfigsAction {

                    /** ListCloudInstanceConfigsAction projectId */
                    projectId?: (string|null);

                    /** ListCloudInstanceConfigsAction pageSize */
                    pageSize?: (number|null);

                    /** ListCloudInstanceConfigsAction pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCloudInstanceConfigsAction. */
                class ListCloudInstanceConfigsAction implements IListCloudInstanceConfigsAction {

                    /**
                     * Constructs a new ListCloudInstanceConfigsAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IListCloudInstanceConfigsAction);

                    /** ListCloudInstanceConfigsAction projectId. */
                    public projectId: string;

                    /** ListCloudInstanceConfigsAction pageSize. */
                    public pageSize?: (number|null);

                    /** ListCloudInstanceConfigsAction pageToken. */
                    public pageToken?: (string|null);

                    /**
                     * Creates a new ListCloudInstanceConfigsAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCloudInstanceConfigsAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IListCloudInstanceConfigsAction): google.spanner.executor.v1.ListCloudInstanceConfigsAction;

                    /**
                     * Encodes the specified ListCloudInstanceConfigsAction message. Does not implicitly {@link google.spanner.executor.v1.ListCloudInstanceConfigsAction.verify|verify} messages.
                     * @param message ListCloudInstanceConfigsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IListCloudInstanceConfigsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCloudInstanceConfigsAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ListCloudInstanceConfigsAction.verify|verify} messages.
                     * @param message ListCloudInstanceConfigsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IListCloudInstanceConfigsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCloudInstanceConfigsAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCloudInstanceConfigsAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ListCloudInstanceConfigsAction;

                    /**
                     * Decodes a ListCloudInstanceConfigsAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCloudInstanceConfigsAction
                     * @throws {Error} If the 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.spanner.executor.v1.ListCloudInstanceConfigsAction;

                    /**
                     * Verifies a ListCloudInstanceConfigsAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListCloudInstanceConfigsAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCloudInstanceConfigsAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ListCloudInstanceConfigsAction;

                    /**
                     * Creates a plain object from a ListCloudInstanceConfigsAction message. Also converts values to other types if specified.
                     * @param message ListCloudInstanceConfigsAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ListCloudInstanceConfigsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCloudInstanceConfigsAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCloudInstanceConfigsAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateCloudInstanceAction. */
                interface ICreateCloudInstanceAction {

                    /** CreateCloudInstanceAction instanceId */
                    instanceId?: (string|null);

                    /** CreateCloudInstanceAction projectId */
                    projectId?: (string|null);

                    /** CreateCloudInstanceAction instanceConfigId */
                    instanceConfigId?: (string|null);

                    /** CreateCloudInstanceAction nodeCount */
                    nodeCount?: (number|null);

                    /** CreateCloudInstanceAction processingUnits */
                    processingUnits?: (number|null);

                    /** CreateCloudInstanceAction autoscalingConfig */
                    autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                    /** CreateCloudInstanceAction labels */
                    labels?: ({ [k: string]: string }|null);
                }

                /** Represents a CreateCloudInstanceAction. */
                class CreateCloudInstanceAction implements ICreateCloudInstanceAction {

                    /**
                     * Constructs a new CreateCloudInstanceAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICreateCloudInstanceAction);

                    /** CreateCloudInstanceAction instanceId. */
                    public instanceId: string;

                    /** CreateCloudInstanceAction projectId. */
                    public projectId: string;

                    /** CreateCloudInstanceAction instanceConfigId. */
                    public instanceConfigId: string;

                    /** CreateCloudInstanceAction nodeCount. */
                    public nodeCount?: (number|null);

                    /** CreateCloudInstanceAction processingUnits. */
                    public processingUnits?: (number|null);

                    /** CreateCloudInstanceAction autoscalingConfig. */
                    public autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                    /** CreateCloudInstanceAction labels. */
                    public labels: { [k: string]: string };

                    /**
                     * Creates a new CreateCloudInstanceAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateCloudInstanceAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICreateCloudInstanceAction): google.spanner.executor.v1.CreateCloudInstanceAction;

                    /**
                     * Encodes the specified CreateCloudInstanceAction message. Does not implicitly {@link google.spanner.executor.v1.CreateCloudInstanceAction.verify|verify} messages.
                     * @param message CreateCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICreateCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateCloudInstanceAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CreateCloudInstanceAction.verify|verify} messages.
                     * @param message CreateCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICreateCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateCloudInstanceAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateCloudInstanceAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CreateCloudInstanceAction;

                    /**
                     * Decodes a CreateCloudInstanceAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateCloudInstanceAction
                     * @throws {Error} If the 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.spanner.executor.v1.CreateCloudInstanceAction;

                    /**
                     * Verifies a CreateCloudInstanceAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateCloudInstanceAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateCloudInstanceAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CreateCloudInstanceAction;

                    /**
                     * Creates a plain object from a CreateCloudInstanceAction message. Also converts values to other types if specified.
                     * @param message CreateCloudInstanceAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CreateCloudInstanceAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateCloudInstanceAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateCloudInstanceAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCloudInstanceAction. */
                interface IUpdateCloudInstanceAction {

                    /** UpdateCloudInstanceAction instanceId */
                    instanceId?: (string|null);

                    /** UpdateCloudInstanceAction projectId */
                    projectId?: (string|null);

                    /** UpdateCloudInstanceAction displayName */
                    displayName?: (string|null);

                    /** UpdateCloudInstanceAction nodeCount */
                    nodeCount?: (number|null);

                    /** UpdateCloudInstanceAction processingUnits */
                    processingUnits?: (number|null);

                    /** UpdateCloudInstanceAction autoscalingConfig */
                    autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                    /** UpdateCloudInstanceAction labels */
                    labels?: ({ [k: string]: string }|null);
                }

                /** Represents an UpdateCloudInstanceAction. */
                class UpdateCloudInstanceAction implements IUpdateCloudInstanceAction {

                    /**
                     * Constructs a new UpdateCloudInstanceAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IUpdateCloudInstanceAction);

                    /** UpdateCloudInstanceAction instanceId. */
                    public instanceId: string;

                    /** UpdateCloudInstanceAction projectId. */
                    public projectId: string;

                    /** UpdateCloudInstanceAction displayName. */
                    public displayName?: (string|null);

                    /** UpdateCloudInstanceAction nodeCount. */
                    public nodeCount?: (number|null);

                    /** UpdateCloudInstanceAction processingUnits. */
                    public processingUnits?: (number|null);

                    /** UpdateCloudInstanceAction autoscalingConfig. */
                    public autoscalingConfig?: (google.spanner.admin.instance.v1.IAutoscalingConfig|null);

                    /** UpdateCloudInstanceAction labels. */
                    public labels: { [k: string]: string };

                    /**
                     * Creates a new UpdateCloudInstanceAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCloudInstanceAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IUpdateCloudInstanceAction): google.spanner.executor.v1.UpdateCloudInstanceAction;

                    /**
                     * Encodes the specified UpdateCloudInstanceAction message. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudInstanceAction.verify|verify} messages.
                     * @param message UpdateCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IUpdateCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCloudInstanceAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudInstanceAction.verify|verify} messages.
                     * @param message UpdateCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IUpdateCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCloudInstanceAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCloudInstanceAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.UpdateCloudInstanceAction;

                    /**
                     * Decodes an UpdateCloudInstanceAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCloudInstanceAction
                     * @throws {Error} If the 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.spanner.executor.v1.UpdateCloudInstanceAction;

                    /**
                     * Verifies an UpdateCloudInstanceAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateCloudInstanceAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCloudInstanceAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.UpdateCloudInstanceAction;

                    /**
                     * Creates a plain object from an UpdateCloudInstanceAction message. Also converts values to other types if specified.
                     * @param message UpdateCloudInstanceAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.UpdateCloudInstanceAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCloudInstanceAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCloudInstanceAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteCloudInstanceAction. */
                interface IDeleteCloudInstanceAction {

                    /** DeleteCloudInstanceAction instanceId */
                    instanceId?: (string|null);

                    /** DeleteCloudInstanceAction projectId */
                    projectId?: (string|null);
                }

                /** Represents a DeleteCloudInstanceAction. */
                class DeleteCloudInstanceAction implements IDeleteCloudInstanceAction {

                    /**
                     * Constructs a new DeleteCloudInstanceAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IDeleteCloudInstanceAction);

                    /** DeleteCloudInstanceAction instanceId. */
                    public instanceId: string;

                    /** DeleteCloudInstanceAction projectId. */
                    public projectId: string;

                    /**
                     * Creates a new DeleteCloudInstanceAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteCloudInstanceAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IDeleteCloudInstanceAction): google.spanner.executor.v1.DeleteCloudInstanceAction;

                    /**
                     * Encodes the specified DeleteCloudInstanceAction message. Does not implicitly {@link google.spanner.executor.v1.DeleteCloudInstanceAction.verify|verify} messages.
                     * @param message DeleteCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IDeleteCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteCloudInstanceAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DeleteCloudInstanceAction.verify|verify} messages.
                     * @param message DeleteCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IDeleteCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteCloudInstanceAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteCloudInstanceAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.DeleteCloudInstanceAction;

                    /**
                     * Decodes a DeleteCloudInstanceAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteCloudInstanceAction
                     * @throws {Error} If the 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.spanner.executor.v1.DeleteCloudInstanceAction;

                    /**
                     * Verifies a DeleteCloudInstanceAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteCloudInstanceAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteCloudInstanceAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DeleteCloudInstanceAction;

                    /**
                     * Creates a plain object from a DeleteCloudInstanceAction message. Also converts values to other types if specified.
                     * @param message DeleteCloudInstanceAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.DeleteCloudInstanceAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteCloudInstanceAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteCloudInstanceAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateCloudDatabaseAction. */
                interface ICreateCloudDatabaseAction {

                    /** CreateCloudDatabaseAction instanceId */
                    instanceId?: (string|null);

                    /** CreateCloudDatabaseAction projectId */
                    projectId?: (string|null);

                    /** CreateCloudDatabaseAction databaseId */
                    databaseId?: (string|null);

                    /** CreateCloudDatabaseAction sdlStatement */
                    sdlStatement?: (string[]|null);

                    /** CreateCloudDatabaseAction encryptionConfig */
                    encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                    /** CreateCloudDatabaseAction dialect */
                    dialect?: (string|null);

                    /** CreateCloudDatabaseAction protoDescriptors */
                    protoDescriptors?: (Uint8Array|Buffer|string|null);
                }

                /** Represents a CreateCloudDatabaseAction. */
                class CreateCloudDatabaseAction implements ICreateCloudDatabaseAction {

                    /**
                     * Constructs a new CreateCloudDatabaseAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICreateCloudDatabaseAction);

                    /** CreateCloudDatabaseAction instanceId. */
                    public instanceId: string;

                    /** CreateCloudDatabaseAction projectId. */
                    public projectId: string;

                    /** CreateCloudDatabaseAction databaseId. */
                    public databaseId: string;

                    /** CreateCloudDatabaseAction sdlStatement. */
                    public sdlStatement: string[];

                    /** CreateCloudDatabaseAction encryptionConfig. */
                    public encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                    /** CreateCloudDatabaseAction dialect. */
                    public dialect?: (string|null);

                    /** CreateCloudDatabaseAction protoDescriptors. */
                    public protoDescriptors?: (Uint8Array|Buffer|string|null);

                    /**
                     * Creates a new CreateCloudDatabaseAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateCloudDatabaseAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICreateCloudDatabaseAction): google.spanner.executor.v1.CreateCloudDatabaseAction;

                    /**
                     * Encodes the specified CreateCloudDatabaseAction message. Does not implicitly {@link google.spanner.executor.v1.CreateCloudDatabaseAction.verify|verify} messages.
                     * @param message CreateCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICreateCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateCloudDatabaseAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CreateCloudDatabaseAction.verify|verify} messages.
                     * @param message CreateCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICreateCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateCloudDatabaseAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateCloudDatabaseAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CreateCloudDatabaseAction;

                    /**
                     * Decodes a CreateCloudDatabaseAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateCloudDatabaseAction
                     * @throws {Error} If the 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.spanner.executor.v1.CreateCloudDatabaseAction;

                    /**
                     * Verifies a CreateCloudDatabaseAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateCloudDatabaseAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateCloudDatabaseAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CreateCloudDatabaseAction;

                    /**
                     * Creates a plain object from a CreateCloudDatabaseAction message. Also converts values to other types if specified.
                     * @param message CreateCloudDatabaseAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CreateCloudDatabaseAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateCloudDatabaseAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateCloudDatabaseAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCloudDatabaseDdlAction. */
                interface IUpdateCloudDatabaseDdlAction {

                    /** UpdateCloudDatabaseDdlAction instanceId */
                    instanceId?: (string|null);

                    /** UpdateCloudDatabaseDdlAction projectId */
                    projectId?: (string|null);

                    /** UpdateCloudDatabaseDdlAction databaseId */
                    databaseId?: (string|null);

                    /** UpdateCloudDatabaseDdlAction sdlStatement */
                    sdlStatement?: (string[]|null);

                    /** UpdateCloudDatabaseDdlAction operationId */
                    operationId?: (string|null);

                    /** UpdateCloudDatabaseDdlAction protoDescriptors */
                    protoDescriptors?: (Uint8Array|Buffer|string|null);
                }

                /** Represents an UpdateCloudDatabaseDdlAction. */
                class UpdateCloudDatabaseDdlAction implements IUpdateCloudDatabaseDdlAction {

                    /**
                     * Constructs a new UpdateCloudDatabaseDdlAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IUpdateCloudDatabaseDdlAction);

                    /** UpdateCloudDatabaseDdlAction instanceId. */
                    public instanceId: string;

                    /** UpdateCloudDatabaseDdlAction projectId. */
                    public projectId: string;

                    /** UpdateCloudDatabaseDdlAction databaseId. */
                    public databaseId: string;

                    /** UpdateCloudDatabaseDdlAction sdlStatement. */
                    public sdlStatement: string[];

                    /** UpdateCloudDatabaseDdlAction operationId. */
                    public operationId: string;

                    /** UpdateCloudDatabaseDdlAction protoDescriptors. */
                    public protoDescriptors?: (Uint8Array|Buffer|string|null);

                    /**
                     * Creates a new UpdateCloudDatabaseDdlAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCloudDatabaseDdlAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IUpdateCloudDatabaseDdlAction): google.spanner.executor.v1.UpdateCloudDatabaseDdlAction;

                    /**
                     * Encodes the specified UpdateCloudDatabaseDdlAction message. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudDatabaseDdlAction.verify|verify} messages.
                     * @param message UpdateCloudDatabaseDdlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IUpdateCloudDatabaseDdlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCloudDatabaseDdlAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudDatabaseDdlAction.verify|verify} messages.
                     * @param message UpdateCloudDatabaseDdlAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IUpdateCloudDatabaseDdlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCloudDatabaseDdlAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCloudDatabaseDdlAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.UpdateCloudDatabaseDdlAction;

                    /**
                     * Decodes an UpdateCloudDatabaseDdlAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCloudDatabaseDdlAction
                     * @throws {Error} If the 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.spanner.executor.v1.UpdateCloudDatabaseDdlAction;

                    /**
                     * Verifies an UpdateCloudDatabaseDdlAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateCloudDatabaseDdlAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCloudDatabaseDdlAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.UpdateCloudDatabaseDdlAction;

                    /**
                     * Creates a plain object from an UpdateCloudDatabaseDdlAction message. Also converts values to other types if specified.
                     * @param message UpdateCloudDatabaseDdlAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.UpdateCloudDatabaseDdlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCloudDatabaseDdlAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCloudDatabaseDdlAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCloudDatabaseAction. */
                interface IUpdateCloudDatabaseAction {

                    /** UpdateCloudDatabaseAction instanceId */
                    instanceId?: (string|null);

                    /** UpdateCloudDatabaseAction projectId */
                    projectId?: (string|null);

                    /** UpdateCloudDatabaseAction databaseName */
                    databaseName?: (string|null);

                    /** UpdateCloudDatabaseAction enableDropProtection */
                    enableDropProtection?: (boolean|null);
                }

                /** Represents an UpdateCloudDatabaseAction. */
                class UpdateCloudDatabaseAction implements IUpdateCloudDatabaseAction {

                    /**
                     * Constructs a new UpdateCloudDatabaseAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IUpdateCloudDatabaseAction);

                    /** UpdateCloudDatabaseAction instanceId. */
                    public instanceId: string;

                    /** UpdateCloudDatabaseAction projectId. */
                    public projectId: string;

                    /** UpdateCloudDatabaseAction databaseName. */
                    public databaseName: string;

                    /** UpdateCloudDatabaseAction enableDropProtection. */
                    public enableDropProtection: boolean;

                    /**
                     * Creates a new UpdateCloudDatabaseAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCloudDatabaseAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IUpdateCloudDatabaseAction): google.spanner.executor.v1.UpdateCloudDatabaseAction;

                    /**
                     * Encodes the specified UpdateCloudDatabaseAction message. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudDatabaseAction.verify|verify} messages.
                     * @param message UpdateCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IUpdateCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCloudDatabaseAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudDatabaseAction.verify|verify} messages.
                     * @param message UpdateCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IUpdateCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCloudDatabaseAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCloudDatabaseAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.UpdateCloudDatabaseAction;

                    /**
                     * Decodes an UpdateCloudDatabaseAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCloudDatabaseAction
                     * @throws {Error} If the 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.spanner.executor.v1.UpdateCloudDatabaseAction;

                    /**
                     * Verifies an UpdateCloudDatabaseAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateCloudDatabaseAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCloudDatabaseAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.UpdateCloudDatabaseAction;

                    /**
                     * Creates a plain object from an UpdateCloudDatabaseAction message. Also converts values to other types if specified.
                     * @param message UpdateCloudDatabaseAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.UpdateCloudDatabaseAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCloudDatabaseAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCloudDatabaseAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DropCloudDatabaseAction. */
                interface IDropCloudDatabaseAction {

                    /** DropCloudDatabaseAction instanceId */
                    instanceId?: (string|null);

                    /** DropCloudDatabaseAction projectId */
                    projectId?: (string|null);

                    /** DropCloudDatabaseAction databaseId */
                    databaseId?: (string|null);
                }

                /** Represents a DropCloudDatabaseAction. */
                class DropCloudDatabaseAction implements IDropCloudDatabaseAction {

                    /**
                     * Constructs a new DropCloudDatabaseAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IDropCloudDatabaseAction);

                    /** DropCloudDatabaseAction instanceId. */
                    public instanceId: string;

                    /** DropCloudDatabaseAction projectId. */
                    public projectId: string;

                    /** DropCloudDatabaseAction databaseId. */
                    public databaseId: string;

                    /**
                     * Creates a new DropCloudDatabaseAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DropCloudDatabaseAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IDropCloudDatabaseAction): google.spanner.executor.v1.DropCloudDatabaseAction;

                    /**
                     * Encodes the specified DropCloudDatabaseAction message. Does not implicitly {@link google.spanner.executor.v1.DropCloudDatabaseAction.verify|verify} messages.
                     * @param message DropCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IDropCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DropCloudDatabaseAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DropCloudDatabaseAction.verify|verify} messages.
                     * @param message DropCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IDropCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DropCloudDatabaseAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DropCloudDatabaseAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.DropCloudDatabaseAction;

                    /**
                     * Decodes a DropCloudDatabaseAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DropCloudDatabaseAction
                     * @throws {Error} If the 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.spanner.executor.v1.DropCloudDatabaseAction;

                    /**
                     * Verifies a DropCloudDatabaseAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DropCloudDatabaseAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DropCloudDatabaseAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DropCloudDatabaseAction;

                    /**
                     * Creates a plain object from a DropCloudDatabaseAction message. Also converts values to other types if specified.
                     * @param message DropCloudDatabaseAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.DropCloudDatabaseAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DropCloudDatabaseAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DropCloudDatabaseAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ChangeQuorumCloudDatabaseAction. */
                interface IChangeQuorumCloudDatabaseAction {

                    /** ChangeQuorumCloudDatabaseAction databaseUri */
                    databaseUri?: (string|null);

                    /** ChangeQuorumCloudDatabaseAction servingLocations */
                    servingLocations?: (string[]|null);
                }

                /** Represents a ChangeQuorumCloudDatabaseAction. */
                class ChangeQuorumCloudDatabaseAction implements IChangeQuorumCloudDatabaseAction {

                    /**
                     * Constructs a new ChangeQuorumCloudDatabaseAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IChangeQuorumCloudDatabaseAction);

                    /** ChangeQuorumCloudDatabaseAction databaseUri. */
                    public databaseUri?: (string|null);

                    /** ChangeQuorumCloudDatabaseAction servingLocations. */
                    public servingLocations: string[];

                    /**
                     * Creates a new ChangeQuorumCloudDatabaseAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChangeQuorumCloudDatabaseAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IChangeQuorumCloudDatabaseAction): google.spanner.executor.v1.ChangeQuorumCloudDatabaseAction;

                    /**
                     * Encodes the specified ChangeQuorumCloudDatabaseAction message. Does not implicitly {@link google.spanner.executor.v1.ChangeQuorumCloudDatabaseAction.verify|verify} messages.
                     * @param message ChangeQuorumCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IChangeQuorumCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChangeQuorumCloudDatabaseAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ChangeQuorumCloudDatabaseAction.verify|verify} messages.
                     * @param message ChangeQuorumCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IChangeQuorumCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChangeQuorumCloudDatabaseAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChangeQuorumCloudDatabaseAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ChangeQuorumCloudDatabaseAction;

                    /**
                     * Decodes a ChangeQuorumCloudDatabaseAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChangeQuorumCloudDatabaseAction
                     * @throws {Error} If the 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.spanner.executor.v1.ChangeQuorumCloudDatabaseAction;

                    /**
                     * Verifies a ChangeQuorumCloudDatabaseAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ChangeQuorumCloudDatabaseAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChangeQuorumCloudDatabaseAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ChangeQuorumCloudDatabaseAction;

                    /**
                     * Creates a plain object from a ChangeQuorumCloudDatabaseAction message. Also converts values to other types if specified.
                     * @param message ChangeQuorumCloudDatabaseAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ChangeQuorumCloudDatabaseAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChangeQuorumCloudDatabaseAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChangeQuorumCloudDatabaseAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCloudDatabasesAction. */
                interface IListCloudDatabasesAction {

                    /** ListCloudDatabasesAction projectId */
                    projectId?: (string|null);

                    /** ListCloudDatabasesAction instanceId */
                    instanceId?: (string|null);

                    /** ListCloudDatabasesAction pageSize */
                    pageSize?: (number|null);

                    /** ListCloudDatabasesAction pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCloudDatabasesAction. */
                class ListCloudDatabasesAction implements IListCloudDatabasesAction {

                    /**
                     * Constructs a new ListCloudDatabasesAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IListCloudDatabasesAction);

                    /** ListCloudDatabasesAction projectId. */
                    public projectId: string;

                    /** ListCloudDatabasesAction instanceId. */
                    public instanceId: string;

                    /** ListCloudDatabasesAction pageSize. */
                    public pageSize: number;

                    /** ListCloudDatabasesAction pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListCloudDatabasesAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCloudDatabasesAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IListCloudDatabasesAction): google.spanner.executor.v1.ListCloudDatabasesAction;

                    /**
                     * Encodes the specified ListCloudDatabasesAction message. Does not implicitly {@link google.spanner.executor.v1.ListCloudDatabasesAction.verify|verify} messages.
                     * @param message ListCloudDatabasesAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IListCloudDatabasesAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCloudDatabasesAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ListCloudDatabasesAction.verify|verify} messages.
                     * @param message ListCloudDatabasesAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IListCloudDatabasesAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCloudDatabasesAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCloudDatabasesAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ListCloudDatabasesAction;

                    /**
                     * Decodes a ListCloudDatabasesAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCloudDatabasesAction
                     * @throws {Error} If the 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.spanner.executor.v1.ListCloudDatabasesAction;

                    /**
                     * Verifies a ListCloudDatabasesAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListCloudDatabasesAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCloudDatabasesAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ListCloudDatabasesAction;

                    /**
                     * Creates a plain object from a ListCloudDatabasesAction message. Also converts values to other types if specified.
                     * @param message ListCloudDatabasesAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ListCloudDatabasesAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCloudDatabasesAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCloudDatabasesAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCloudInstancesAction. */
                interface IListCloudInstancesAction {

                    /** ListCloudInstancesAction projectId */
                    projectId?: (string|null);

                    /** ListCloudInstancesAction filter */
                    filter?: (string|null);

                    /** ListCloudInstancesAction pageSize */
                    pageSize?: (number|null);

                    /** ListCloudInstancesAction pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCloudInstancesAction. */
                class ListCloudInstancesAction implements IListCloudInstancesAction {

                    /**
                     * Constructs a new ListCloudInstancesAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IListCloudInstancesAction);

                    /** ListCloudInstancesAction projectId. */
                    public projectId: string;

                    /** ListCloudInstancesAction filter. */
                    public filter?: (string|null);

                    /** ListCloudInstancesAction pageSize. */
                    public pageSize?: (number|null);

                    /** ListCloudInstancesAction pageToken. */
                    public pageToken?: (string|null);

                    /**
                     * Creates a new ListCloudInstancesAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCloudInstancesAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IListCloudInstancesAction): google.spanner.executor.v1.ListCloudInstancesAction;

                    /**
                     * Encodes the specified ListCloudInstancesAction message. Does not implicitly {@link google.spanner.executor.v1.ListCloudInstancesAction.verify|verify} messages.
                     * @param message ListCloudInstancesAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IListCloudInstancesAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCloudInstancesAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ListCloudInstancesAction.verify|verify} messages.
                     * @param message ListCloudInstancesAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IListCloudInstancesAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCloudInstancesAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCloudInstancesAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ListCloudInstancesAction;

                    /**
                     * Decodes a ListCloudInstancesAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCloudInstancesAction
                     * @throws {Error} If the 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.spanner.executor.v1.ListCloudInstancesAction;

                    /**
                     * Verifies a ListCloudInstancesAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListCloudInstancesAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCloudInstancesAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ListCloudInstancesAction;

                    /**
                     * Creates a plain object from a ListCloudInstancesAction message. Also converts values to other types if specified.
                     * @param message ListCloudInstancesAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ListCloudInstancesAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCloudInstancesAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCloudInstancesAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCloudInstanceAction. */
                interface IGetCloudInstanceAction {

                    /** GetCloudInstanceAction projectId */
                    projectId?: (string|null);

                    /** GetCloudInstanceAction instanceId */
                    instanceId?: (string|null);
                }

                /** Represents a GetCloudInstanceAction. */
                class GetCloudInstanceAction implements IGetCloudInstanceAction {

                    /**
                     * Constructs a new GetCloudInstanceAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IGetCloudInstanceAction);

                    /** GetCloudInstanceAction projectId. */
                    public projectId: string;

                    /** GetCloudInstanceAction instanceId. */
                    public instanceId: string;

                    /**
                     * Creates a new GetCloudInstanceAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCloudInstanceAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IGetCloudInstanceAction): google.spanner.executor.v1.GetCloudInstanceAction;

                    /**
                     * Encodes the specified GetCloudInstanceAction message. Does not implicitly {@link google.spanner.executor.v1.GetCloudInstanceAction.verify|verify} messages.
                     * @param message GetCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IGetCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCloudInstanceAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.GetCloudInstanceAction.verify|verify} messages.
                     * @param message GetCloudInstanceAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IGetCloudInstanceAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCloudInstanceAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCloudInstanceAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.GetCloudInstanceAction;

                    /**
                     * Decodes a GetCloudInstanceAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCloudInstanceAction
                     * @throws {Error} If the 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.spanner.executor.v1.GetCloudInstanceAction;

                    /**
                     * Verifies a GetCloudInstanceAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetCloudInstanceAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCloudInstanceAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.GetCloudInstanceAction;

                    /**
                     * Creates a plain object from a GetCloudInstanceAction message. Also converts values to other types if specified.
                     * @param message GetCloudInstanceAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.GetCloudInstanceAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCloudInstanceAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCloudInstanceAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCloudDatabaseOperationsAction. */
                interface IListCloudDatabaseOperationsAction {

                    /** ListCloudDatabaseOperationsAction projectId */
                    projectId?: (string|null);

                    /** ListCloudDatabaseOperationsAction instanceId */
                    instanceId?: (string|null);

                    /** ListCloudDatabaseOperationsAction filter */
                    filter?: (string|null);

                    /** ListCloudDatabaseOperationsAction pageSize */
                    pageSize?: (number|null);

                    /** ListCloudDatabaseOperationsAction pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCloudDatabaseOperationsAction. */
                class ListCloudDatabaseOperationsAction implements IListCloudDatabaseOperationsAction {

                    /**
                     * Constructs a new ListCloudDatabaseOperationsAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IListCloudDatabaseOperationsAction);

                    /** ListCloudDatabaseOperationsAction projectId. */
                    public projectId: string;

                    /** ListCloudDatabaseOperationsAction instanceId. */
                    public instanceId: string;

                    /** ListCloudDatabaseOperationsAction filter. */
                    public filter: string;

                    /** ListCloudDatabaseOperationsAction pageSize. */
                    public pageSize: number;

                    /** ListCloudDatabaseOperationsAction pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListCloudDatabaseOperationsAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCloudDatabaseOperationsAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IListCloudDatabaseOperationsAction): google.spanner.executor.v1.ListCloudDatabaseOperationsAction;

                    /**
                     * Encodes the specified ListCloudDatabaseOperationsAction message. Does not implicitly {@link google.spanner.executor.v1.ListCloudDatabaseOperationsAction.verify|verify} messages.
                     * @param message ListCloudDatabaseOperationsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IListCloudDatabaseOperationsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCloudDatabaseOperationsAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ListCloudDatabaseOperationsAction.verify|verify} messages.
                     * @param message ListCloudDatabaseOperationsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IListCloudDatabaseOperationsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCloudDatabaseOperationsAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCloudDatabaseOperationsAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ListCloudDatabaseOperationsAction;

                    /**
                     * Decodes a ListCloudDatabaseOperationsAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCloudDatabaseOperationsAction
                     * @throws {Error} If the 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.spanner.executor.v1.ListCloudDatabaseOperationsAction;

                    /**
                     * Verifies a ListCloudDatabaseOperationsAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListCloudDatabaseOperationsAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCloudDatabaseOperationsAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ListCloudDatabaseOperationsAction;

                    /**
                     * Creates a plain object from a ListCloudDatabaseOperationsAction message. Also converts values to other types if specified.
                     * @param message ListCloudDatabaseOperationsAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ListCloudDatabaseOperationsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCloudDatabaseOperationsAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCloudDatabaseOperationsAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RestoreCloudDatabaseAction. */
                interface IRestoreCloudDatabaseAction {

                    /** RestoreCloudDatabaseAction projectId */
                    projectId?: (string|null);

                    /** RestoreCloudDatabaseAction backupInstanceId */
                    backupInstanceId?: (string|null);

                    /** RestoreCloudDatabaseAction backupId */
                    backupId?: (string|null);

                    /** RestoreCloudDatabaseAction databaseInstanceId */
                    databaseInstanceId?: (string|null);

                    /** RestoreCloudDatabaseAction databaseId */
                    databaseId?: (string|null);

                    /** RestoreCloudDatabaseAction encryptionConfig */
                    encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);
                }

                /** Represents a RestoreCloudDatabaseAction. */
                class RestoreCloudDatabaseAction implements IRestoreCloudDatabaseAction {

                    /**
                     * Constructs a new RestoreCloudDatabaseAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IRestoreCloudDatabaseAction);

                    /** RestoreCloudDatabaseAction projectId. */
                    public projectId: string;

                    /** RestoreCloudDatabaseAction backupInstanceId. */
                    public backupInstanceId: string;

                    /** RestoreCloudDatabaseAction backupId. */
                    public backupId: string;

                    /** RestoreCloudDatabaseAction databaseInstanceId. */
                    public databaseInstanceId: string;

                    /** RestoreCloudDatabaseAction databaseId. */
                    public databaseId: string;

                    /** RestoreCloudDatabaseAction encryptionConfig. */
                    public encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                    /**
                     * Creates a new RestoreCloudDatabaseAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RestoreCloudDatabaseAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IRestoreCloudDatabaseAction): google.spanner.executor.v1.RestoreCloudDatabaseAction;

                    /**
                     * Encodes the specified RestoreCloudDatabaseAction message. Does not implicitly {@link google.spanner.executor.v1.RestoreCloudDatabaseAction.verify|verify} messages.
                     * @param message RestoreCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IRestoreCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RestoreCloudDatabaseAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.RestoreCloudDatabaseAction.verify|verify} messages.
                     * @param message RestoreCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IRestoreCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RestoreCloudDatabaseAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RestoreCloudDatabaseAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.RestoreCloudDatabaseAction;

                    /**
                     * Decodes a RestoreCloudDatabaseAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RestoreCloudDatabaseAction
                     * @throws {Error} If the 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.spanner.executor.v1.RestoreCloudDatabaseAction;

                    /**
                     * Verifies a RestoreCloudDatabaseAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a RestoreCloudDatabaseAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RestoreCloudDatabaseAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.RestoreCloudDatabaseAction;

                    /**
                     * Creates a plain object from a RestoreCloudDatabaseAction message. Also converts values to other types if specified.
                     * @param message RestoreCloudDatabaseAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.RestoreCloudDatabaseAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RestoreCloudDatabaseAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RestoreCloudDatabaseAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCloudDatabaseAction. */
                interface IGetCloudDatabaseAction {

                    /** GetCloudDatabaseAction projectId */
                    projectId?: (string|null);

                    /** GetCloudDatabaseAction instanceId */
                    instanceId?: (string|null);

                    /** GetCloudDatabaseAction databaseId */
                    databaseId?: (string|null);
                }

                /** Represents a GetCloudDatabaseAction. */
                class GetCloudDatabaseAction implements IGetCloudDatabaseAction {

                    /**
                     * Constructs a new GetCloudDatabaseAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IGetCloudDatabaseAction);

                    /** GetCloudDatabaseAction projectId. */
                    public projectId: string;

                    /** GetCloudDatabaseAction instanceId. */
                    public instanceId: string;

                    /** GetCloudDatabaseAction databaseId. */
                    public databaseId: string;

                    /**
                     * Creates a new GetCloudDatabaseAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCloudDatabaseAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IGetCloudDatabaseAction): google.spanner.executor.v1.GetCloudDatabaseAction;

                    /**
                     * Encodes the specified GetCloudDatabaseAction message. Does not implicitly {@link google.spanner.executor.v1.GetCloudDatabaseAction.verify|verify} messages.
                     * @param message GetCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IGetCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCloudDatabaseAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.GetCloudDatabaseAction.verify|verify} messages.
                     * @param message GetCloudDatabaseAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IGetCloudDatabaseAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCloudDatabaseAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCloudDatabaseAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.GetCloudDatabaseAction;

                    /**
                     * Decodes a GetCloudDatabaseAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCloudDatabaseAction
                     * @throws {Error} If the 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.spanner.executor.v1.GetCloudDatabaseAction;

                    /**
                     * Verifies a GetCloudDatabaseAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetCloudDatabaseAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCloudDatabaseAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.GetCloudDatabaseAction;

                    /**
                     * Creates a plain object from a GetCloudDatabaseAction message. Also converts values to other types if specified.
                     * @param message GetCloudDatabaseAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.GetCloudDatabaseAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCloudDatabaseAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCloudDatabaseAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateCloudBackupAction. */
                interface ICreateCloudBackupAction {

                    /** CreateCloudBackupAction projectId */
                    projectId?: (string|null);

                    /** CreateCloudBackupAction instanceId */
                    instanceId?: (string|null);

                    /** CreateCloudBackupAction backupId */
                    backupId?: (string|null);

                    /** CreateCloudBackupAction databaseId */
                    databaseId?: (string|null);

                    /** CreateCloudBackupAction expireTime */
                    expireTime?: (google.protobuf.ITimestamp|null);

                    /** CreateCloudBackupAction versionTime */
                    versionTime?: (google.protobuf.ITimestamp|null);

                    /** CreateCloudBackupAction encryptionConfig */
                    encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);
                }

                /** Represents a CreateCloudBackupAction. */
                class CreateCloudBackupAction implements ICreateCloudBackupAction {

                    /**
                     * Constructs a new CreateCloudBackupAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICreateCloudBackupAction);

                    /** CreateCloudBackupAction projectId. */
                    public projectId: string;

                    /** CreateCloudBackupAction instanceId. */
                    public instanceId: string;

                    /** CreateCloudBackupAction backupId. */
                    public backupId: string;

                    /** CreateCloudBackupAction databaseId. */
                    public databaseId: string;

                    /** CreateCloudBackupAction expireTime. */
                    public expireTime?: (google.protobuf.ITimestamp|null);

                    /** CreateCloudBackupAction versionTime. */
                    public versionTime?: (google.protobuf.ITimestamp|null);

                    /** CreateCloudBackupAction encryptionConfig. */
                    public encryptionConfig?: (google.spanner.admin.database.v1.IEncryptionConfig|null);

                    /**
                     * Creates a new CreateCloudBackupAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateCloudBackupAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICreateCloudBackupAction): google.spanner.executor.v1.CreateCloudBackupAction;

                    /**
                     * Encodes the specified CreateCloudBackupAction message. Does not implicitly {@link google.spanner.executor.v1.CreateCloudBackupAction.verify|verify} messages.
                     * @param message CreateCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICreateCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateCloudBackupAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CreateCloudBackupAction.verify|verify} messages.
                     * @param message CreateCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICreateCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateCloudBackupAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateCloudBackupAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CreateCloudBackupAction;

                    /**
                     * Decodes a CreateCloudBackupAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateCloudBackupAction
                     * @throws {Error} If the 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.spanner.executor.v1.CreateCloudBackupAction;

                    /**
                     * Verifies a CreateCloudBackupAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CreateCloudBackupAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateCloudBackupAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CreateCloudBackupAction;

                    /**
                     * Creates a plain object from a CreateCloudBackupAction message. Also converts values to other types if specified.
                     * @param message CreateCloudBackupAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CreateCloudBackupAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateCloudBackupAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateCloudBackupAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CopyCloudBackupAction. */
                interface ICopyCloudBackupAction {

                    /** CopyCloudBackupAction projectId */
                    projectId?: (string|null);

                    /** CopyCloudBackupAction instanceId */
                    instanceId?: (string|null);

                    /** CopyCloudBackupAction backupId */
                    backupId?: (string|null);

                    /** CopyCloudBackupAction sourceBackup */
                    sourceBackup?: (string|null);

                    /** CopyCloudBackupAction expireTime */
                    expireTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a CopyCloudBackupAction. */
                class CopyCloudBackupAction implements ICopyCloudBackupAction {

                    /**
                     * Constructs a new CopyCloudBackupAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICopyCloudBackupAction);

                    /** CopyCloudBackupAction projectId. */
                    public projectId: string;

                    /** CopyCloudBackupAction instanceId. */
                    public instanceId: string;

                    /** CopyCloudBackupAction backupId. */
                    public backupId: string;

                    /** CopyCloudBackupAction sourceBackup. */
                    public sourceBackup: string;

                    /** CopyCloudBackupAction expireTime. */
                    public expireTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new CopyCloudBackupAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CopyCloudBackupAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICopyCloudBackupAction): google.spanner.executor.v1.CopyCloudBackupAction;

                    /**
                     * Encodes the specified CopyCloudBackupAction message. Does not implicitly {@link google.spanner.executor.v1.CopyCloudBackupAction.verify|verify} messages.
                     * @param message CopyCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICopyCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CopyCloudBackupAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CopyCloudBackupAction.verify|verify} messages.
                     * @param message CopyCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICopyCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CopyCloudBackupAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CopyCloudBackupAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CopyCloudBackupAction;

                    /**
                     * Decodes a CopyCloudBackupAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CopyCloudBackupAction
                     * @throws {Error} If the 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.spanner.executor.v1.CopyCloudBackupAction;

                    /**
                     * Verifies a CopyCloudBackupAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CopyCloudBackupAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CopyCloudBackupAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CopyCloudBackupAction;

                    /**
                     * Creates a plain object from a CopyCloudBackupAction message. Also converts values to other types if specified.
                     * @param message CopyCloudBackupAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CopyCloudBackupAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CopyCloudBackupAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CopyCloudBackupAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCloudBackupAction. */
                interface IGetCloudBackupAction {

                    /** GetCloudBackupAction projectId */
                    projectId?: (string|null);

                    /** GetCloudBackupAction instanceId */
                    instanceId?: (string|null);

                    /** GetCloudBackupAction backupId */
                    backupId?: (string|null);
                }

                /** Represents a GetCloudBackupAction. */
                class GetCloudBackupAction implements IGetCloudBackupAction {

                    /**
                     * Constructs a new GetCloudBackupAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IGetCloudBackupAction);

                    /** GetCloudBackupAction projectId. */
                    public projectId: string;

                    /** GetCloudBackupAction instanceId. */
                    public instanceId: string;

                    /** GetCloudBackupAction backupId. */
                    public backupId: string;

                    /**
                     * Creates a new GetCloudBackupAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCloudBackupAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IGetCloudBackupAction): google.spanner.executor.v1.GetCloudBackupAction;

                    /**
                     * Encodes the specified GetCloudBackupAction message. Does not implicitly {@link google.spanner.executor.v1.GetCloudBackupAction.verify|verify} messages.
                     * @param message GetCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IGetCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCloudBackupAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.GetCloudBackupAction.verify|verify} messages.
                     * @param message GetCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IGetCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCloudBackupAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCloudBackupAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.GetCloudBackupAction;

                    /**
                     * Decodes a GetCloudBackupAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCloudBackupAction
                     * @throws {Error} If the 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.spanner.executor.v1.GetCloudBackupAction;

                    /**
                     * Verifies a GetCloudBackupAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetCloudBackupAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCloudBackupAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.GetCloudBackupAction;

                    /**
                     * Creates a plain object from a GetCloudBackupAction message. Also converts values to other types if specified.
                     * @param message GetCloudBackupAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.GetCloudBackupAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCloudBackupAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCloudBackupAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCloudBackupAction. */
                interface IUpdateCloudBackupAction {

                    /** UpdateCloudBackupAction projectId */
                    projectId?: (string|null);

                    /** UpdateCloudBackupAction instanceId */
                    instanceId?: (string|null);

                    /** UpdateCloudBackupAction backupId */
                    backupId?: (string|null);

                    /** UpdateCloudBackupAction expireTime */
                    expireTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents an UpdateCloudBackupAction. */
                class UpdateCloudBackupAction implements IUpdateCloudBackupAction {

                    /**
                     * Constructs a new UpdateCloudBackupAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IUpdateCloudBackupAction);

                    /** UpdateCloudBackupAction projectId. */
                    public projectId: string;

                    /** UpdateCloudBackupAction instanceId. */
                    public instanceId: string;

                    /** UpdateCloudBackupAction backupId. */
                    public backupId: string;

                    /** UpdateCloudBackupAction expireTime. */
                    public expireTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new UpdateCloudBackupAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCloudBackupAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IUpdateCloudBackupAction): google.spanner.executor.v1.UpdateCloudBackupAction;

                    /**
                     * Encodes the specified UpdateCloudBackupAction message. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudBackupAction.verify|verify} messages.
                     * @param message UpdateCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IUpdateCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCloudBackupAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.UpdateCloudBackupAction.verify|verify} messages.
                     * @param message UpdateCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IUpdateCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCloudBackupAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCloudBackupAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.UpdateCloudBackupAction;

                    /**
                     * Decodes an UpdateCloudBackupAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCloudBackupAction
                     * @throws {Error} If the 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.spanner.executor.v1.UpdateCloudBackupAction;

                    /**
                     * Verifies an UpdateCloudBackupAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an UpdateCloudBackupAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCloudBackupAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.UpdateCloudBackupAction;

                    /**
                     * Creates a plain object from an UpdateCloudBackupAction message. Also converts values to other types if specified.
                     * @param message UpdateCloudBackupAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.UpdateCloudBackupAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCloudBackupAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCloudBackupAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteCloudBackupAction. */
                interface IDeleteCloudBackupAction {

                    /** DeleteCloudBackupAction projectId */
                    projectId?: (string|null);

                    /** DeleteCloudBackupAction instanceId */
                    instanceId?: (string|null);

                    /** DeleteCloudBackupAction backupId */
                    backupId?: (string|null);
                }

                /** Represents a DeleteCloudBackupAction. */
                class DeleteCloudBackupAction implements IDeleteCloudBackupAction {

                    /**
                     * Constructs a new DeleteCloudBackupAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IDeleteCloudBackupAction);

                    /** DeleteCloudBackupAction projectId. */
                    public projectId: string;

                    /** DeleteCloudBackupAction instanceId. */
                    public instanceId: string;

                    /** DeleteCloudBackupAction backupId. */
                    public backupId: string;

                    /**
                     * Creates a new DeleteCloudBackupAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteCloudBackupAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IDeleteCloudBackupAction): google.spanner.executor.v1.DeleteCloudBackupAction;

                    /**
                     * Encodes the specified DeleteCloudBackupAction message. Does not implicitly {@link google.spanner.executor.v1.DeleteCloudBackupAction.verify|verify} messages.
                     * @param message DeleteCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IDeleteCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteCloudBackupAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DeleteCloudBackupAction.verify|verify} messages.
                     * @param message DeleteCloudBackupAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IDeleteCloudBackupAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteCloudBackupAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteCloudBackupAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.DeleteCloudBackupAction;

                    /**
                     * Decodes a DeleteCloudBackupAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteCloudBackupAction
                     * @throws {Error} If the 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.spanner.executor.v1.DeleteCloudBackupAction;

                    /**
                     * Verifies a DeleteCloudBackupAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DeleteCloudBackupAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteCloudBackupAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DeleteCloudBackupAction;

                    /**
                     * Creates a plain object from a DeleteCloudBackupAction message. Also converts values to other types if specified.
                     * @param message DeleteCloudBackupAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.DeleteCloudBackupAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteCloudBackupAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteCloudBackupAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCloudBackupsAction. */
                interface IListCloudBackupsAction {

                    /** ListCloudBackupsAction projectId */
                    projectId?: (string|null);

                    /** ListCloudBackupsAction instanceId */
                    instanceId?: (string|null);

                    /** ListCloudBackupsAction filter */
                    filter?: (string|null);

                    /** ListCloudBackupsAction pageSize */
                    pageSize?: (number|null);

                    /** ListCloudBackupsAction pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCloudBackupsAction. */
                class ListCloudBackupsAction implements IListCloudBackupsAction {

                    /**
                     * Constructs a new ListCloudBackupsAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IListCloudBackupsAction);

                    /** ListCloudBackupsAction projectId. */
                    public projectId: string;

                    /** ListCloudBackupsAction instanceId. */
                    public instanceId: string;

                    /** ListCloudBackupsAction filter. */
                    public filter: string;

                    /** ListCloudBackupsAction pageSize. */
                    public pageSize: number;

                    /** ListCloudBackupsAction pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListCloudBackupsAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCloudBackupsAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IListCloudBackupsAction): google.spanner.executor.v1.ListCloudBackupsAction;

                    /**
                     * Encodes the specified ListCloudBackupsAction message. Does not implicitly {@link google.spanner.executor.v1.ListCloudBackupsAction.verify|verify} messages.
                     * @param message ListCloudBackupsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IListCloudBackupsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCloudBackupsAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ListCloudBackupsAction.verify|verify} messages.
                     * @param message ListCloudBackupsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IListCloudBackupsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCloudBackupsAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCloudBackupsAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ListCloudBackupsAction;

                    /**
                     * Decodes a ListCloudBackupsAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCloudBackupsAction
                     * @throws {Error} If the 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.spanner.executor.v1.ListCloudBackupsAction;

                    /**
                     * Verifies a ListCloudBackupsAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListCloudBackupsAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCloudBackupsAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ListCloudBackupsAction;

                    /**
                     * Creates a plain object from a ListCloudBackupsAction message. Also converts values to other types if specified.
                     * @param message ListCloudBackupsAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ListCloudBackupsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCloudBackupsAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCloudBackupsAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCloudBackupOperationsAction. */
                interface IListCloudBackupOperationsAction {

                    /** ListCloudBackupOperationsAction projectId */
                    projectId?: (string|null);

                    /** ListCloudBackupOperationsAction instanceId */
                    instanceId?: (string|null);

                    /** ListCloudBackupOperationsAction filter */
                    filter?: (string|null);

                    /** ListCloudBackupOperationsAction pageSize */
                    pageSize?: (number|null);

                    /** ListCloudBackupOperationsAction pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCloudBackupOperationsAction. */
                class ListCloudBackupOperationsAction implements IListCloudBackupOperationsAction {

                    /**
                     * Constructs a new ListCloudBackupOperationsAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IListCloudBackupOperationsAction);

                    /** ListCloudBackupOperationsAction projectId. */
                    public projectId: string;

                    /** ListCloudBackupOperationsAction instanceId. */
                    public instanceId: string;

                    /** ListCloudBackupOperationsAction filter. */
                    public filter: string;

                    /** ListCloudBackupOperationsAction pageSize. */
                    public pageSize: number;

                    /** ListCloudBackupOperationsAction pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListCloudBackupOperationsAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCloudBackupOperationsAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IListCloudBackupOperationsAction): google.spanner.executor.v1.ListCloudBackupOperationsAction;

                    /**
                     * Encodes the specified ListCloudBackupOperationsAction message. Does not implicitly {@link google.spanner.executor.v1.ListCloudBackupOperationsAction.verify|verify} messages.
                     * @param message ListCloudBackupOperationsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IListCloudBackupOperationsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCloudBackupOperationsAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ListCloudBackupOperationsAction.verify|verify} messages.
                     * @param message ListCloudBackupOperationsAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IListCloudBackupOperationsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCloudBackupOperationsAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCloudBackupOperationsAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ListCloudBackupOperationsAction;

                    /**
                     * Decodes a ListCloudBackupOperationsAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCloudBackupOperationsAction
                     * @throws {Error} If the 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.spanner.executor.v1.ListCloudBackupOperationsAction;

                    /**
                     * Verifies a ListCloudBackupOperationsAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ListCloudBackupOperationsAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCloudBackupOperationsAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ListCloudBackupOperationsAction;

                    /**
                     * Creates a plain object from a ListCloudBackupOperationsAction message. Also converts values to other types if specified.
                     * @param message ListCloudBackupOperationsAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ListCloudBackupOperationsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCloudBackupOperationsAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCloudBackupOperationsAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetOperationAction. */
                interface IGetOperationAction {

                    /** GetOperationAction operation */
                    operation?: (string|null);
                }

                /** Represents a GetOperationAction. */
                class GetOperationAction implements IGetOperationAction {

                    /**
                     * Constructs a new GetOperationAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IGetOperationAction);

                    /** GetOperationAction operation. */
                    public operation: string;

                    /**
                     * Creates a new GetOperationAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetOperationAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IGetOperationAction): google.spanner.executor.v1.GetOperationAction;

                    /**
                     * Encodes the specified GetOperationAction message. Does not implicitly {@link google.spanner.executor.v1.GetOperationAction.verify|verify} messages.
                     * @param message GetOperationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IGetOperationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetOperationAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.GetOperationAction.verify|verify} messages.
                     * @param message GetOperationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IGetOperationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetOperationAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetOperationAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.GetOperationAction;

                    /**
                     * Decodes a GetOperationAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetOperationAction
                     * @throws {Error} If the 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.spanner.executor.v1.GetOperationAction;

                    /**
                     * Verifies a GetOperationAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GetOperationAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetOperationAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.GetOperationAction;

                    /**
                     * Creates a plain object from a GetOperationAction message. Also converts values to other types if specified.
                     * @param message GetOperationAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.GetOperationAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetOperationAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetOperationAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a QueryCancellationAction. */
                interface IQueryCancellationAction {

                    /** QueryCancellationAction longRunningSql */
                    longRunningSql?: (string|null);

                    /** QueryCancellationAction cancelQuery */
                    cancelQuery?: (string|null);
                }

                /** Represents a QueryCancellationAction. */
                class QueryCancellationAction implements IQueryCancellationAction {

                    /**
                     * Constructs a new QueryCancellationAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IQueryCancellationAction);

                    /** QueryCancellationAction longRunningSql. */
                    public longRunningSql: string;

                    /** QueryCancellationAction cancelQuery. */
                    public cancelQuery: string;

                    /**
                     * Creates a new QueryCancellationAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryCancellationAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IQueryCancellationAction): google.spanner.executor.v1.QueryCancellationAction;

                    /**
                     * Encodes the specified QueryCancellationAction message. Does not implicitly {@link google.spanner.executor.v1.QueryCancellationAction.verify|verify} messages.
                     * @param message QueryCancellationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IQueryCancellationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryCancellationAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.QueryCancellationAction.verify|verify} messages.
                     * @param message QueryCancellationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IQueryCancellationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QueryCancellationAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QueryCancellationAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.QueryCancellationAction;

                    /**
                     * Decodes a QueryCancellationAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QueryCancellationAction
                     * @throws {Error} If the 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.spanner.executor.v1.QueryCancellationAction;

                    /**
                     * Verifies a QueryCancellationAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a QueryCancellationAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QueryCancellationAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.QueryCancellationAction;

                    /**
                     * Creates a plain object from a QueryCancellationAction message. Also converts values to other types if specified.
                     * @param message QueryCancellationAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.QueryCancellationAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QueryCancellationAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QueryCancellationAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CancelOperationAction. */
                interface ICancelOperationAction {

                    /** CancelOperationAction operation */
                    operation?: (string|null);
                }

                /** Represents a CancelOperationAction. */
                class CancelOperationAction implements ICancelOperationAction {

                    /**
                     * Constructs a new CancelOperationAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICancelOperationAction);

                    /** CancelOperationAction operation. */
                    public operation: string;

                    /**
                     * Creates a new CancelOperationAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CancelOperationAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICancelOperationAction): google.spanner.executor.v1.CancelOperationAction;

                    /**
                     * Encodes the specified CancelOperationAction message. Does not implicitly {@link google.spanner.executor.v1.CancelOperationAction.verify|verify} messages.
                     * @param message CancelOperationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICancelOperationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CancelOperationAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CancelOperationAction.verify|verify} messages.
                     * @param message CancelOperationAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICancelOperationAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CancelOperationAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CancelOperationAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CancelOperationAction;

                    /**
                     * Decodes a CancelOperationAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CancelOperationAction
                     * @throws {Error} If the 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.spanner.executor.v1.CancelOperationAction;

                    /**
                     * Verifies a CancelOperationAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CancelOperationAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CancelOperationAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CancelOperationAction;

                    /**
                     * Creates a plain object from a CancelOperationAction message. Also converts values to other types if specified.
                     * @param message CancelOperationAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CancelOperationAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CancelOperationAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CancelOperationAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a StartBatchTransactionAction. */
                interface IStartBatchTransactionAction {

                    /** StartBatchTransactionAction batchTxnTime */
                    batchTxnTime?: (google.protobuf.ITimestamp|null);

                    /** StartBatchTransactionAction tid */
                    tid?: (Uint8Array|Buffer|string|null);

                    /** StartBatchTransactionAction cloudDatabaseRole */
                    cloudDatabaseRole?: (string|null);
                }

                /** Represents a StartBatchTransactionAction. */
                class StartBatchTransactionAction implements IStartBatchTransactionAction {

                    /**
                     * Constructs a new StartBatchTransactionAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IStartBatchTransactionAction);

                    /** StartBatchTransactionAction batchTxnTime. */
                    public batchTxnTime?: (google.protobuf.ITimestamp|null);

                    /** StartBatchTransactionAction tid. */
                    public tid?: (Uint8Array|Buffer|string|null);

                    /** StartBatchTransactionAction cloudDatabaseRole. */
                    public cloudDatabaseRole: string;

                    /** StartBatchTransactionAction param. */
                    public param?: ("batchTxnTime"|"tid");

                    /**
                     * Creates a new StartBatchTransactionAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StartBatchTransactionAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IStartBatchTransactionAction): google.spanner.executor.v1.StartBatchTransactionAction;

                    /**
                     * Encodes the specified StartBatchTransactionAction message. Does not implicitly {@link google.spanner.executor.v1.StartBatchTransactionAction.verify|verify} messages.
                     * @param message StartBatchTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IStartBatchTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StartBatchTransactionAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.StartBatchTransactionAction.verify|verify} messages.
                     * @param message StartBatchTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IStartBatchTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StartBatchTransactionAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StartBatchTransactionAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.StartBatchTransactionAction;

                    /**
                     * Decodes a StartBatchTransactionAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StartBatchTransactionAction
                     * @throws {Error} If the 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.spanner.executor.v1.StartBatchTransactionAction;

                    /**
                     * Verifies a StartBatchTransactionAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a StartBatchTransactionAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StartBatchTransactionAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.StartBatchTransactionAction;

                    /**
                     * Creates a plain object from a StartBatchTransactionAction message. Also converts values to other types if specified.
                     * @param message StartBatchTransactionAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.StartBatchTransactionAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StartBatchTransactionAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StartBatchTransactionAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CloseBatchTransactionAction. */
                interface ICloseBatchTransactionAction {

                    /** CloseBatchTransactionAction cleanup */
                    cleanup?: (boolean|null);
                }

                /** Represents a CloseBatchTransactionAction. */
                class CloseBatchTransactionAction implements ICloseBatchTransactionAction {

                    /**
                     * Constructs a new CloseBatchTransactionAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICloseBatchTransactionAction);

                    /** CloseBatchTransactionAction cleanup. */
                    public cleanup: boolean;

                    /**
                     * Creates a new CloseBatchTransactionAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CloseBatchTransactionAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICloseBatchTransactionAction): google.spanner.executor.v1.CloseBatchTransactionAction;

                    /**
                     * Encodes the specified CloseBatchTransactionAction message. Does not implicitly {@link google.spanner.executor.v1.CloseBatchTransactionAction.verify|verify} messages.
                     * @param message CloseBatchTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICloseBatchTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CloseBatchTransactionAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CloseBatchTransactionAction.verify|verify} messages.
                     * @param message CloseBatchTransactionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICloseBatchTransactionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CloseBatchTransactionAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CloseBatchTransactionAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CloseBatchTransactionAction;

                    /**
                     * Decodes a CloseBatchTransactionAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CloseBatchTransactionAction
                     * @throws {Error} If the 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.spanner.executor.v1.CloseBatchTransactionAction;

                    /**
                     * Verifies a CloseBatchTransactionAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CloseBatchTransactionAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CloseBatchTransactionAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CloseBatchTransactionAction;

                    /**
                     * Creates a plain object from a CloseBatchTransactionAction message. Also converts values to other types if specified.
                     * @param message CloseBatchTransactionAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CloseBatchTransactionAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CloseBatchTransactionAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CloseBatchTransactionAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GenerateDbPartitionsForReadAction. */
                interface IGenerateDbPartitionsForReadAction {

                    /** GenerateDbPartitionsForReadAction read */
                    read?: (google.spanner.executor.v1.IReadAction|null);

                    /** GenerateDbPartitionsForReadAction table */
                    table?: (google.spanner.executor.v1.ITableMetadata[]|null);

                    /** GenerateDbPartitionsForReadAction desiredBytesPerPartition */
                    desiredBytesPerPartition?: (number|Long|string|null);

                    /** GenerateDbPartitionsForReadAction maxPartitionCount */
                    maxPartitionCount?: (number|Long|string|null);
                }

                /** Represents a GenerateDbPartitionsForReadAction. */
                class GenerateDbPartitionsForReadAction implements IGenerateDbPartitionsForReadAction {

                    /**
                     * Constructs a new GenerateDbPartitionsForReadAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IGenerateDbPartitionsForReadAction);

                    /** GenerateDbPartitionsForReadAction read. */
                    public read?: (google.spanner.executor.v1.IReadAction|null);

                    /** GenerateDbPartitionsForReadAction table. */
                    public table: google.spanner.executor.v1.ITableMetadata[];

                    /** GenerateDbPartitionsForReadAction desiredBytesPerPartition. */
                    public desiredBytesPerPartition?: (number|Long|string|null);

                    /** GenerateDbPartitionsForReadAction maxPartitionCount. */
                    public maxPartitionCount?: (number|Long|string|null);

                    /**
                     * Creates a new GenerateDbPartitionsForReadAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerateDbPartitionsForReadAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IGenerateDbPartitionsForReadAction): google.spanner.executor.v1.GenerateDbPartitionsForReadAction;

                    /**
                     * Encodes the specified GenerateDbPartitionsForReadAction message. Does not implicitly {@link google.spanner.executor.v1.GenerateDbPartitionsForReadAction.verify|verify} messages.
                     * @param message GenerateDbPartitionsForReadAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IGenerateDbPartitionsForReadAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GenerateDbPartitionsForReadAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.GenerateDbPartitionsForReadAction.verify|verify} messages.
                     * @param message GenerateDbPartitionsForReadAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IGenerateDbPartitionsForReadAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GenerateDbPartitionsForReadAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerateDbPartitionsForReadAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.GenerateDbPartitionsForReadAction;

                    /**
                     * Decodes a GenerateDbPartitionsForReadAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerateDbPartitionsForReadAction
                     * @throws {Error} If the 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.spanner.executor.v1.GenerateDbPartitionsForReadAction;

                    /**
                     * Verifies a GenerateDbPartitionsForReadAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GenerateDbPartitionsForReadAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerateDbPartitionsForReadAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.GenerateDbPartitionsForReadAction;

                    /**
                     * Creates a plain object from a GenerateDbPartitionsForReadAction message. Also converts values to other types if specified.
                     * @param message GenerateDbPartitionsForReadAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.GenerateDbPartitionsForReadAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GenerateDbPartitionsForReadAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GenerateDbPartitionsForReadAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GenerateDbPartitionsForQueryAction. */
                interface IGenerateDbPartitionsForQueryAction {

                    /** GenerateDbPartitionsForQueryAction query */
                    query?: (google.spanner.executor.v1.IQueryAction|null);

                    /** GenerateDbPartitionsForQueryAction desiredBytesPerPartition */
                    desiredBytesPerPartition?: (number|Long|string|null);
                }

                /** Represents a GenerateDbPartitionsForQueryAction. */
                class GenerateDbPartitionsForQueryAction implements IGenerateDbPartitionsForQueryAction {

                    /**
                     * Constructs a new GenerateDbPartitionsForQueryAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IGenerateDbPartitionsForQueryAction);

                    /** GenerateDbPartitionsForQueryAction query. */
                    public query?: (google.spanner.executor.v1.IQueryAction|null);

                    /** GenerateDbPartitionsForQueryAction desiredBytesPerPartition. */
                    public desiredBytesPerPartition?: (number|Long|string|null);

                    /**
                     * Creates a new GenerateDbPartitionsForQueryAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerateDbPartitionsForQueryAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IGenerateDbPartitionsForQueryAction): google.spanner.executor.v1.GenerateDbPartitionsForQueryAction;

                    /**
                     * Encodes the specified GenerateDbPartitionsForQueryAction message. Does not implicitly {@link google.spanner.executor.v1.GenerateDbPartitionsForQueryAction.verify|verify} messages.
                     * @param message GenerateDbPartitionsForQueryAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IGenerateDbPartitionsForQueryAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GenerateDbPartitionsForQueryAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.GenerateDbPartitionsForQueryAction.verify|verify} messages.
                     * @param message GenerateDbPartitionsForQueryAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IGenerateDbPartitionsForQueryAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GenerateDbPartitionsForQueryAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerateDbPartitionsForQueryAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.GenerateDbPartitionsForQueryAction;

                    /**
                     * Decodes a GenerateDbPartitionsForQueryAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerateDbPartitionsForQueryAction
                     * @throws {Error} If the 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.spanner.executor.v1.GenerateDbPartitionsForQueryAction;

                    /**
                     * Verifies a GenerateDbPartitionsForQueryAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a GenerateDbPartitionsForQueryAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerateDbPartitionsForQueryAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.GenerateDbPartitionsForQueryAction;

                    /**
                     * Creates a plain object from a GenerateDbPartitionsForQueryAction message. Also converts values to other types if specified.
                     * @param message GenerateDbPartitionsForQueryAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.GenerateDbPartitionsForQueryAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GenerateDbPartitionsForQueryAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GenerateDbPartitionsForQueryAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchPartition. */
                interface IBatchPartition {

                    /** BatchPartition partition */
                    partition?: (Uint8Array|Buffer|string|null);

                    /** BatchPartition partitionToken */
                    partitionToken?: (Uint8Array|Buffer|string|null);

                    /** BatchPartition table */
                    table?: (string|null);

                    /** BatchPartition index */
                    index?: (string|null);
                }

                /** Represents a BatchPartition. */
                class BatchPartition implements IBatchPartition {

                    /**
                     * Constructs a new BatchPartition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IBatchPartition);

                    /** BatchPartition partition. */
                    public partition: (Uint8Array|Buffer|string);

                    /** BatchPartition partitionToken. */
                    public partitionToken: (Uint8Array|Buffer|string);

                    /** BatchPartition table. */
                    public table?: (string|null);

                    /** BatchPartition index. */
                    public index?: (string|null);

                    /**
                     * Creates a new BatchPartition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchPartition instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IBatchPartition): google.spanner.executor.v1.BatchPartition;

                    /**
                     * Encodes the specified BatchPartition message. Does not implicitly {@link google.spanner.executor.v1.BatchPartition.verify|verify} messages.
                     * @param message BatchPartition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IBatchPartition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchPartition message, length delimited. Does not implicitly {@link google.spanner.executor.v1.BatchPartition.verify|verify} messages.
                     * @param message BatchPartition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IBatchPartition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchPartition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchPartition
                     * @throws {Error} If the payload is 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.spanner.executor.v1.BatchPartition;

                    /**
                     * Decodes a BatchPartition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchPartition
                     * @throws {Error} If the 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.spanner.executor.v1.BatchPartition;

                    /**
                     * Verifies a BatchPartition message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a BatchPartition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchPartition
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.BatchPartition;

                    /**
                     * Creates a plain object from a BatchPartition message. Also converts values to other types if specified.
                     * @param message BatchPartition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.BatchPartition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchPartition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchPartition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExecutePartitionAction. */
                interface IExecutePartitionAction {

                    /** ExecutePartitionAction partition */
                    partition?: (google.spanner.executor.v1.IBatchPartition|null);
                }

                /** Represents an ExecutePartitionAction. */
                class ExecutePartitionAction implements IExecutePartitionAction {

                    /**
                     * Constructs a new ExecutePartitionAction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IExecutePartitionAction);

                    /** ExecutePartitionAction partition. */
                    public partition?: (google.spanner.executor.v1.IBatchPartition|null);

                    /**
                     * Creates a new ExecutePartitionAction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExecutePartitionAction instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IExecutePartitionAction): google.spanner.executor.v1.ExecutePartitionAction;

                    /**
                     * Encodes the specified ExecutePartitionAction message. Does not implicitly {@link google.spanner.executor.v1.ExecutePartitionAction.verify|verify} messages.
                     * @param message ExecutePartitionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IExecutePartitionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExecutePartitionAction message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ExecutePartitionAction.verify|verify} messages.
                     * @param message ExecutePartitionAction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IExecutePartitionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExecutePartitionAction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExecutePartitionAction
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ExecutePartitionAction;

                    /**
                     * Decodes an ExecutePartitionAction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExecutePartitionAction
                     * @throws {Error} If the 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.spanner.executor.v1.ExecutePartitionAction;

                    /**
                     * Verifies an ExecutePartitionAction message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an ExecutePartitionAction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExecutePartitionAction
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ExecutePartitionAction;

                    /**
                     * Creates a plain object from an ExecutePartitionAction message. Also converts values to other types if specified.
                     * @param message ExecutePartitionAction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ExecutePartitionAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExecutePartitionAction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExecutePartitionAction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExecuteChangeStreamQuery. */
                interface IExecuteChangeStreamQuery {

                    /** ExecuteChangeStreamQuery name */
                    name?: (string|null);

                    /** ExecuteChangeStreamQuery startTime */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** ExecuteChangeStreamQuery endTime */
                    endTime?: (google.protobuf.ITimestamp|null);

                    /** ExecuteChangeStreamQuery partitionToken */
                    partitionToken?: (string|null);

                    /** ExecuteChangeStreamQuery readOptions */
                    readOptions?: (string[]|null);

                    /** ExecuteChangeStreamQuery heartbeatMilliseconds */
                    heartbeatMilliseconds?: (number|null);

                    /** ExecuteChangeStreamQuery deadlineSeconds */
                    deadlineSeconds?: (number|Long|string|null);

                    /** ExecuteChangeStreamQuery cloudDatabaseRole */
                    cloudDatabaseRole?: (string|null);
                }

                /** Represents an ExecuteChangeStreamQuery. */
                class ExecuteChangeStreamQuery implements IExecuteChangeStreamQuery {

                    /**
                     * Constructs a new ExecuteChangeStreamQuery.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IExecuteChangeStreamQuery);

                    /** ExecuteChangeStreamQuery name. */
                    public name: string;

                    /** ExecuteChangeStreamQuery startTime. */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** ExecuteChangeStreamQuery endTime. */
                    public endTime?: (google.protobuf.ITimestamp|null);

                    /** ExecuteChangeStreamQuery partitionToken. */
                    public partitionToken?: (string|null);

                    /** ExecuteChangeStreamQuery readOptions. */
                    public readOptions: string[];

                    /** ExecuteChangeStreamQuery heartbeatMilliseconds. */
                    public heartbeatMilliseconds?: (number|null);

                    /** ExecuteChangeStreamQuery deadlineSeconds. */
                    public deadlineSeconds?: (number|Long|string|null);

                    /** ExecuteChangeStreamQuery cloudDatabaseRole. */
                    public cloudDatabaseRole?: (string|null);

                    /**
                     * Creates a new ExecuteChangeStreamQuery instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExecuteChangeStreamQuery instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IExecuteChangeStreamQuery): google.spanner.executor.v1.ExecuteChangeStreamQuery;

                    /**
                     * Encodes the specified ExecuteChangeStreamQuery message. Does not implicitly {@link google.spanner.executor.v1.ExecuteChangeStreamQuery.verify|verify} messages.
                     * @param message ExecuteChangeStreamQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IExecuteChangeStreamQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExecuteChangeStreamQuery message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ExecuteChangeStreamQuery.verify|verify} messages.
                     * @param message ExecuteChangeStreamQuery message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IExecuteChangeStreamQuery, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExecuteChangeStreamQuery message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExecuteChangeStreamQuery
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ExecuteChangeStreamQuery;

                    /**
                     * Decodes an ExecuteChangeStreamQuery message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExecuteChangeStreamQuery
                     * @throws {Error} If the 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.spanner.executor.v1.ExecuteChangeStreamQuery;

                    /**
                     * Verifies an ExecuteChangeStreamQuery message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an ExecuteChangeStreamQuery message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExecuteChangeStreamQuery
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ExecuteChangeStreamQuery;

                    /**
                     * Creates a plain object from an ExecuteChangeStreamQuery message. Also converts values to other types if specified.
                     * @param message ExecuteChangeStreamQuery
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ExecuteChangeStreamQuery, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExecuteChangeStreamQuery to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExecuteChangeStreamQuery
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SpannerActionOutcome. */
                interface ISpannerActionOutcome {

                    /** SpannerActionOutcome status */
                    status?: (google.rpc.IStatus|null);

                    /** SpannerActionOutcome commitTime */
                    commitTime?: (google.protobuf.ITimestamp|null);

                    /** SpannerActionOutcome readResult */
                    readResult?: (google.spanner.executor.v1.IReadResult|null);

                    /** SpannerActionOutcome queryResult */
                    queryResult?: (google.spanner.executor.v1.IQueryResult|null);

                    /** SpannerActionOutcome transactionRestarted */
                    transactionRestarted?: (boolean|null);

                    /** SpannerActionOutcome batchTxnId */
                    batchTxnId?: (Uint8Array|Buffer|string|null);

                    /** SpannerActionOutcome dbPartition */
                    dbPartition?: (google.spanner.executor.v1.IBatchPartition[]|null);

                    /** SpannerActionOutcome adminResult */
                    adminResult?: (google.spanner.executor.v1.IAdminResult|null);

                    /** SpannerActionOutcome dmlRowsModified */
                    dmlRowsModified?: ((number|Long|string)[]|null);

                    /** SpannerActionOutcome changeStreamRecords */
                    changeStreamRecords?: (google.spanner.executor.v1.IChangeStreamRecord[]|null);
                }

                /** Represents a SpannerActionOutcome. */
                class SpannerActionOutcome implements ISpannerActionOutcome {

                    /**
                     * Constructs a new SpannerActionOutcome.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ISpannerActionOutcome);

                    /** SpannerActionOutcome status. */
                    public status?: (google.rpc.IStatus|null);

                    /** SpannerActionOutcome commitTime. */
                    public commitTime?: (google.protobuf.ITimestamp|null);

                    /** SpannerActionOutcome readResult. */
                    public readResult?: (google.spanner.executor.v1.IReadResult|null);

                    /** SpannerActionOutcome queryResult. */
                    public queryResult?: (google.spanner.executor.v1.IQueryResult|null);

                    /** SpannerActionOutcome transactionRestarted. */
                    public transactionRestarted?: (boolean|null);

                    /** SpannerActionOutcome batchTxnId. */
                    public batchTxnId?: (Uint8Array|Buffer|string|null);

                    /** SpannerActionOutcome dbPartition. */
                    public dbPartition: google.spanner.executor.v1.IBatchPartition[];

                    /** SpannerActionOutcome adminResult. */
                    public adminResult?: (google.spanner.executor.v1.IAdminResult|null);

                    /** SpannerActionOutcome dmlRowsModified. */
                    public dmlRowsModified: (number|Long|string)[];

                    /** SpannerActionOutcome changeStreamRecords. */
                    public changeStreamRecords: google.spanner.executor.v1.IChangeStreamRecord[];

                    /**
                     * Creates a new SpannerActionOutcome instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SpannerActionOutcome instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ISpannerActionOutcome): google.spanner.executor.v1.SpannerActionOutcome;

                    /**
                     * Encodes the specified SpannerActionOutcome message. Does not implicitly {@link google.spanner.executor.v1.SpannerActionOutcome.verify|verify} messages.
                     * @param message SpannerActionOutcome message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ISpannerActionOutcome, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SpannerActionOutcome message, length delimited. Does not implicitly {@link google.spanner.executor.v1.SpannerActionOutcome.verify|verify} messages.
                     * @param message SpannerActionOutcome message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ISpannerActionOutcome, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SpannerActionOutcome message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SpannerActionOutcome
                     * @throws {Error} If the payload is 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.spanner.executor.v1.SpannerActionOutcome;

                    /**
                     * Decodes a SpannerActionOutcome message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SpannerActionOutcome
                     * @throws {Error} If the 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.spanner.executor.v1.SpannerActionOutcome;

                    /**
                     * Verifies a SpannerActionOutcome message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SpannerActionOutcome message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SpannerActionOutcome
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.SpannerActionOutcome;

                    /**
                     * Creates a plain object from a SpannerActionOutcome message. Also converts values to other types if specified.
                     * @param message SpannerActionOutcome
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.SpannerActionOutcome, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SpannerActionOutcome to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SpannerActionOutcome
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AdminResult. */
                interface IAdminResult {

                    /** AdminResult backupResponse */
                    backupResponse?: (google.spanner.executor.v1.ICloudBackupResponse|null);

                    /** AdminResult operationResponse */
                    operationResponse?: (google.spanner.executor.v1.IOperationResponse|null);

                    /** AdminResult databaseResponse */
                    databaseResponse?: (google.spanner.executor.v1.ICloudDatabaseResponse|null);

                    /** AdminResult instanceResponse */
                    instanceResponse?: (google.spanner.executor.v1.ICloudInstanceResponse|null);

                    /** AdminResult instanceConfigResponse */
                    instanceConfigResponse?: (google.spanner.executor.v1.ICloudInstanceConfigResponse|null);
                }

                /** Represents an AdminResult. */
                class AdminResult implements IAdminResult {

                    /**
                     * Constructs a new AdminResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IAdminResult);

                    /** AdminResult backupResponse. */
                    public backupResponse?: (google.spanner.executor.v1.ICloudBackupResponse|null);

                    /** AdminResult operationResponse. */
                    public operationResponse?: (google.spanner.executor.v1.IOperationResponse|null);

                    /** AdminResult databaseResponse. */
                    public databaseResponse?: (google.spanner.executor.v1.ICloudDatabaseResponse|null);

                    /** AdminResult instanceResponse. */
                    public instanceResponse?: (google.spanner.executor.v1.ICloudInstanceResponse|null);

                    /** AdminResult instanceConfigResponse. */
                    public instanceConfigResponse?: (google.spanner.executor.v1.ICloudInstanceConfigResponse|null);

                    /**
                     * Creates a new AdminResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AdminResult instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IAdminResult): google.spanner.executor.v1.AdminResult;

                    /**
                     * Encodes the specified AdminResult message. Does not implicitly {@link google.spanner.executor.v1.AdminResult.verify|verify} messages.
                     * @param message AdminResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IAdminResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AdminResult message, length delimited. Does not implicitly {@link google.spanner.executor.v1.AdminResult.verify|verify} messages.
                     * @param message AdminResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IAdminResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AdminResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AdminResult
                     * @throws {Error} If the payload is 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.spanner.executor.v1.AdminResult;

                    /**
                     * Decodes an AdminResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AdminResult
                     * @throws {Error} If the 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.spanner.executor.v1.AdminResult;

                    /**
                     * Verifies an AdminResult message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an AdminResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AdminResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.AdminResult;

                    /**
                     * Creates a plain object from an AdminResult message. Also converts values to other types if specified.
                     * @param message AdminResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.AdminResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AdminResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AdminResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CloudBackupResponse. */
                interface ICloudBackupResponse {

                    /** CloudBackupResponse listedBackups */
                    listedBackups?: (google.spanner.admin.database.v1.IBackup[]|null);

                    /** CloudBackupResponse listedBackupOperations */
                    listedBackupOperations?: (google.longrunning.IOperation[]|null);

                    /** CloudBackupResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** CloudBackupResponse backup */
                    backup?: (google.spanner.admin.database.v1.IBackup|null);
                }

                /** Represents a CloudBackupResponse. */
                class CloudBackupResponse implements ICloudBackupResponse {

                    /**
                     * Constructs a new CloudBackupResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICloudBackupResponse);

                    /** CloudBackupResponse listedBackups. */
                    public listedBackups: google.spanner.admin.database.v1.IBackup[];

                    /** CloudBackupResponse listedBackupOperations. */
                    public listedBackupOperations: google.longrunning.IOperation[];

                    /** CloudBackupResponse nextPageToken. */
                    public nextPageToken: string;

                    /** CloudBackupResponse backup. */
                    public backup?: (google.spanner.admin.database.v1.IBackup|null);

                    /**
                     * Creates a new CloudBackupResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CloudBackupResponse instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICloudBackupResponse): google.spanner.executor.v1.CloudBackupResponse;

                    /**
                     * Encodes the specified CloudBackupResponse message. Does not implicitly {@link google.spanner.executor.v1.CloudBackupResponse.verify|verify} messages.
                     * @param message CloudBackupResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICloudBackupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CloudBackupResponse message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CloudBackupResponse.verify|verify} messages.
                     * @param message CloudBackupResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICloudBackupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CloudBackupResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CloudBackupResponse
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CloudBackupResponse;

                    /**
                     * Decodes a CloudBackupResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CloudBackupResponse
                     * @throws {Error} If the 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.spanner.executor.v1.CloudBackupResponse;

                    /**
                     * Verifies a CloudBackupResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CloudBackupResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CloudBackupResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CloudBackupResponse;

                    /**
                     * Creates a plain object from a CloudBackupResponse message. Also converts values to other types if specified.
                     * @param message CloudBackupResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CloudBackupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CloudBackupResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CloudBackupResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an OperationResponse. */
                interface IOperationResponse {

                    /** OperationResponse listedOperations */
                    listedOperations?: (google.longrunning.IOperation[]|null);

                    /** OperationResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** OperationResponse operation */
                    operation?: (google.longrunning.IOperation|null);
                }

                /** Represents an OperationResponse. */
                class OperationResponse implements IOperationResponse {

                    /**
                     * Constructs a new OperationResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IOperationResponse);

                    /** OperationResponse listedOperations. */
                    public listedOperations: google.longrunning.IOperation[];

                    /** OperationResponse nextPageToken. */
                    public nextPageToken: string;

                    /** OperationResponse operation. */
                    public operation?: (google.longrunning.IOperation|null);

                    /**
                     * Creates a new OperationResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OperationResponse instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IOperationResponse): google.spanner.executor.v1.OperationResponse;

                    /**
                     * Encodes the specified OperationResponse message. Does not implicitly {@link google.spanner.executor.v1.OperationResponse.verify|verify} messages.
                     * @param message OperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified OperationResponse message, length delimited. Does not implicitly {@link google.spanner.executor.v1.OperationResponse.verify|verify} messages.
                     * @param message OperationResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an OperationResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OperationResponse
                     * @throws {Error} If the payload is 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.spanner.executor.v1.OperationResponse;

                    /**
                     * Decodes an OperationResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OperationResponse
                     * @throws {Error} If the 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.spanner.executor.v1.OperationResponse;

                    /**
                     * Verifies an OperationResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an OperationResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OperationResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.OperationResponse;

                    /**
                     * Creates a plain object from an OperationResponse message. Also converts values to other types if specified.
                     * @param message OperationResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.OperationResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this OperationResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for OperationResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CloudInstanceResponse. */
                interface ICloudInstanceResponse {

                    /** CloudInstanceResponse listedInstances */
                    listedInstances?: (google.spanner.admin.instance.v1.IInstance[]|null);

                    /** CloudInstanceResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** CloudInstanceResponse instance */
                    instance?: (google.spanner.admin.instance.v1.IInstance|null);
                }

                /** Represents a CloudInstanceResponse. */
                class CloudInstanceResponse implements ICloudInstanceResponse {

                    /**
                     * Constructs a new CloudInstanceResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICloudInstanceResponse);

                    /** CloudInstanceResponse listedInstances. */
                    public listedInstances: google.spanner.admin.instance.v1.IInstance[];

                    /** CloudInstanceResponse nextPageToken. */
                    public nextPageToken: string;

                    /** CloudInstanceResponse instance. */
                    public instance?: (google.spanner.admin.instance.v1.IInstance|null);

                    /**
                     * Creates a new CloudInstanceResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CloudInstanceResponse instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICloudInstanceResponse): google.spanner.executor.v1.CloudInstanceResponse;

                    /**
                     * Encodes the specified CloudInstanceResponse message. Does not implicitly {@link google.spanner.executor.v1.CloudInstanceResponse.verify|verify} messages.
                     * @param message CloudInstanceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICloudInstanceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CloudInstanceResponse message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CloudInstanceResponse.verify|verify} messages.
                     * @param message CloudInstanceResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICloudInstanceResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CloudInstanceResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CloudInstanceResponse
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CloudInstanceResponse;

                    /**
                     * Decodes a CloudInstanceResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CloudInstanceResponse
                     * @throws {Error} If the 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.spanner.executor.v1.CloudInstanceResponse;

                    /**
                     * Verifies a CloudInstanceResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CloudInstanceResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CloudInstanceResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CloudInstanceResponse;

                    /**
                     * Creates a plain object from a CloudInstanceResponse message. Also converts values to other types if specified.
                     * @param message CloudInstanceResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CloudInstanceResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CloudInstanceResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CloudInstanceResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CloudInstanceConfigResponse. */
                interface ICloudInstanceConfigResponse {

                    /** CloudInstanceConfigResponse listedInstanceConfigs */
                    listedInstanceConfigs?: (google.spanner.admin.instance.v1.IInstanceConfig[]|null);

                    /** CloudInstanceConfigResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** CloudInstanceConfigResponse instanceConfig */
                    instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);
                }

                /** Represents a CloudInstanceConfigResponse. */
                class CloudInstanceConfigResponse implements ICloudInstanceConfigResponse {

                    /**
                     * Constructs a new CloudInstanceConfigResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICloudInstanceConfigResponse);

                    /** CloudInstanceConfigResponse listedInstanceConfigs. */
                    public listedInstanceConfigs: google.spanner.admin.instance.v1.IInstanceConfig[];

                    /** CloudInstanceConfigResponse nextPageToken. */
                    public nextPageToken: string;

                    /** CloudInstanceConfigResponse instanceConfig. */
                    public instanceConfig?: (google.spanner.admin.instance.v1.IInstanceConfig|null);

                    /**
                     * Creates a new CloudInstanceConfigResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CloudInstanceConfigResponse instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICloudInstanceConfigResponse): google.spanner.executor.v1.CloudInstanceConfigResponse;

                    /**
                     * Encodes the specified CloudInstanceConfigResponse message. Does not implicitly {@link google.spanner.executor.v1.CloudInstanceConfigResponse.verify|verify} messages.
                     * @param message CloudInstanceConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICloudInstanceConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CloudInstanceConfigResponse message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CloudInstanceConfigResponse.verify|verify} messages.
                     * @param message CloudInstanceConfigResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICloudInstanceConfigResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CloudInstanceConfigResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CloudInstanceConfigResponse
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CloudInstanceConfigResponse;

                    /**
                     * Decodes a CloudInstanceConfigResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CloudInstanceConfigResponse
                     * @throws {Error} If the 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.spanner.executor.v1.CloudInstanceConfigResponse;

                    /**
                     * Verifies a CloudInstanceConfigResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CloudInstanceConfigResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CloudInstanceConfigResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CloudInstanceConfigResponse;

                    /**
                     * Creates a plain object from a CloudInstanceConfigResponse message. Also converts values to other types if specified.
                     * @param message CloudInstanceConfigResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CloudInstanceConfigResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CloudInstanceConfigResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CloudInstanceConfigResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CloudDatabaseResponse. */
                interface ICloudDatabaseResponse {

                    /** CloudDatabaseResponse listedDatabases */
                    listedDatabases?: (google.spanner.admin.database.v1.IDatabase[]|null);

                    /** CloudDatabaseResponse listedDatabaseOperations */
                    listedDatabaseOperations?: (google.longrunning.IOperation[]|null);

                    /** CloudDatabaseResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** CloudDatabaseResponse database */
                    database?: (google.spanner.admin.database.v1.IDatabase|null);
                }

                /** Represents a CloudDatabaseResponse. */
                class CloudDatabaseResponse implements ICloudDatabaseResponse {

                    /**
                     * Constructs a new CloudDatabaseResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ICloudDatabaseResponse);

                    /** CloudDatabaseResponse listedDatabases. */
                    public listedDatabases: google.spanner.admin.database.v1.IDatabase[];

                    /** CloudDatabaseResponse listedDatabaseOperations. */
                    public listedDatabaseOperations: google.longrunning.IOperation[];

                    /** CloudDatabaseResponse nextPageToken. */
                    public nextPageToken: string;

                    /** CloudDatabaseResponse database. */
                    public database?: (google.spanner.admin.database.v1.IDatabase|null);

                    /**
                     * Creates a new CloudDatabaseResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CloudDatabaseResponse instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ICloudDatabaseResponse): google.spanner.executor.v1.CloudDatabaseResponse;

                    /**
                     * Encodes the specified CloudDatabaseResponse message. Does not implicitly {@link google.spanner.executor.v1.CloudDatabaseResponse.verify|verify} messages.
                     * @param message CloudDatabaseResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ICloudDatabaseResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CloudDatabaseResponse message, length delimited. Does not implicitly {@link google.spanner.executor.v1.CloudDatabaseResponse.verify|verify} messages.
                     * @param message CloudDatabaseResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ICloudDatabaseResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CloudDatabaseResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CloudDatabaseResponse
                     * @throws {Error} If the payload is 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.spanner.executor.v1.CloudDatabaseResponse;

                    /**
                     * Decodes a CloudDatabaseResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CloudDatabaseResponse
                     * @throws {Error} If the 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.spanner.executor.v1.CloudDatabaseResponse;

                    /**
                     * Verifies a CloudDatabaseResponse message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CloudDatabaseResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CloudDatabaseResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.CloudDatabaseResponse;

                    /**
                     * Creates a plain object from a CloudDatabaseResponse message. Also converts values to other types if specified.
                     * @param message CloudDatabaseResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.CloudDatabaseResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CloudDatabaseResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CloudDatabaseResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ReadResult. */
                interface IReadResult {

                    /** ReadResult table */
                    table?: (string|null);

                    /** ReadResult index */
                    index?: (string|null);

                    /** ReadResult requestIndex */
                    requestIndex?: (number|null);

                    /** ReadResult row */
                    row?: (google.spanner.executor.v1.IValueList[]|null);

                    /** ReadResult rowType */
                    rowType?: (google.spanner.v1.IStructType|null);
                }

                /** Represents a ReadResult. */
                class ReadResult implements IReadResult {

                    /**
                     * Constructs a new ReadResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IReadResult);

                    /** ReadResult table. */
                    public table: string;

                    /** ReadResult index. */
                    public index?: (string|null);

                    /** ReadResult requestIndex. */
                    public requestIndex?: (number|null);

                    /** ReadResult row. */
                    public row: google.spanner.executor.v1.IValueList[];

                    /** ReadResult rowType. */
                    public rowType?: (google.spanner.v1.IStructType|null);

                    /**
                     * Creates a new ReadResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReadResult instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IReadResult): google.spanner.executor.v1.ReadResult;

                    /**
                     * Encodes the specified ReadResult message. Does not implicitly {@link google.spanner.executor.v1.ReadResult.verify|verify} messages.
                     * @param message ReadResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IReadResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReadResult message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ReadResult.verify|verify} messages.
                     * @param message ReadResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IReadResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReadResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReadResult
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ReadResult;

                    /**
                     * Decodes a ReadResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReadResult
                     * @throws {Error} If the 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.spanner.executor.v1.ReadResult;

                    /**
                     * Verifies a ReadResult message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ReadResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReadResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ReadResult;

                    /**
                     * Creates a plain object from a ReadResult message. Also converts values to other types if specified.
                     * @param message ReadResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ReadResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReadResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReadResult
                     * @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 {

                    /** QueryResult row */
                    row?: (google.spanner.executor.v1.IValueList[]|null);

                    /** QueryResult rowType */
                    rowType?: (google.spanner.v1.IStructType|null);
                }

                /** Represents a QueryResult. */
                class QueryResult implements IQueryResult {

                    /**
                     * Constructs a new QueryResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IQueryResult);

                    /** QueryResult row. */
                    public row: google.spanner.executor.v1.IValueList[];

                    /** QueryResult rowType. */
                    public rowType?: (google.spanner.v1.IStructType|null);

                    /**
                     * Creates a new QueryResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryResult instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IQueryResult): google.spanner.executor.v1.QueryResult;

                    /**
                     * Encodes the specified QueryResult message. Does not implicitly {@link google.spanner.executor.v1.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: google.spanner.executor.v1.IQueryResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryResult message, length delimited. Does not implicitly {@link google.spanner.executor.v1.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: google.spanner.executor.v1.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): google.spanner.executor.v1.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)): google.spanner.executor.v1.QueryResult;

                    /**
                     * Verifies a QueryResult message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a 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 }): google.spanner.executor.v1.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: google.spanner.executor.v1.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 ChangeStreamRecord. */
                interface IChangeStreamRecord {

                    /** ChangeStreamRecord dataChange */
                    dataChange?: (google.spanner.executor.v1.IDataChangeRecord|null);

                    /** ChangeStreamRecord childPartition */
                    childPartition?: (google.spanner.executor.v1.IChildPartitionsRecord|null);

                    /** ChangeStreamRecord heartbeat */
                    heartbeat?: (google.spanner.executor.v1.IHeartbeatRecord|null);
                }

                /** Represents a ChangeStreamRecord. */
                class ChangeStreamRecord implements IChangeStreamRecord {

                    /**
                     * Constructs a new ChangeStreamRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IChangeStreamRecord);

                    /** ChangeStreamRecord dataChange. */
                    public dataChange?: (google.spanner.executor.v1.IDataChangeRecord|null);

                    /** ChangeStreamRecord childPartition. */
                    public childPartition?: (google.spanner.executor.v1.IChildPartitionsRecord|null);

                    /** ChangeStreamRecord heartbeat. */
                    public heartbeat?: (google.spanner.executor.v1.IHeartbeatRecord|null);

                    /** ChangeStreamRecord record. */
                    public record?: ("dataChange"|"childPartition"|"heartbeat");

                    /**
                     * Creates a new ChangeStreamRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChangeStreamRecord instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IChangeStreamRecord): google.spanner.executor.v1.ChangeStreamRecord;

                    /**
                     * Encodes the specified ChangeStreamRecord message. Does not implicitly {@link google.spanner.executor.v1.ChangeStreamRecord.verify|verify} messages.
                     * @param message ChangeStreamRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IChangeStreamRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChangeStreamRecord message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ChangeStreamRecord.verify|verify} messages.
                     * @param message ChangeStreamRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IChangeStreamRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChangeStreamRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChangeStreamRecord
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ChangeStreamRecord;

                    /**
                     * Decodes a ChangeStreamRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChangeStreamRecord
                     * @throws {Error} If the 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.spanner.executor.v1.ChangeStreamRecord;

                    /**
                     * Verifies a ChangeStreamRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ChangeStreamRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChangeStreamRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ChangeStreamRecord;

                    /**
                     * Creates a plain object from a ChangeStreamRecord message. Also converts values to other types if specified.
                     * @param message ChangeStreamRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ChangeStreamRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChangeStreamRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChangeStreamRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DataChangeRecord. */
                interface IDataChangeRecord {

                    /** DataChangeRecord commitTime */
                    commitTime?: (google.protobuf.ITimestamp|null);

                    /** DataChangeRecord recordSequence */
                    recordSequence?: (string|null);

                    /** DataChangeRecord transactionId */
                    transactionId?: (string|null);

                    /** DataChangeRecord isLastRecord */
                    isLastRecord?: (boolean|null);

                    /** DataChangeRecord table */
                    table?: (string|null);

                    /** DataChangeRecord columnTypes */
                    columnTypes?: (google.spanner.executor.v1.DataChangeRecord.IColumnType[]|null);

                    /** DataChangeRecord mods */
                    mods?: (google.spanner.executor.v1.DataChangeRecord.IMod[]|null);

                    /** DataChangeRecord modType */
                    modType?: (string|null);

                    /** DataChangeRecord valueCaptureType */
                    valueCaptureType?: (string|null);

                    /** DataChangeRecord recordCount */
                    recordCount?: (number|Long|string|null);

                    /** DataChangeRecord partitionCount */
                    partitionCount?: (number|Long|string|null);

                    /** DataChangeRecord transactionTag */
                    transactionTag?: (string|null);

                    /** DataChangeRecord isSystemTransaction */
                    isSystemTransaction?: (boolean|null);
                }

                /** Represents a DataChangeRecord. */
                class DataChangeRecord implements IDataChangeRecord {

                    /**
                     * Constructs a new DataChangeRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IDataChangeRecord);

                    /** DataChangeRecord commitTime. */
                    public commitTime?: (google.protobuf.ITimestamp|null);

                    /** DataChangeRecord recordSequence. */
                    public recordSequence: string;

                    /** DataChangeRecord transactionId. */
                    public transactionId: string;

                    /** DataChangeRecord isLastRecord. */
                    public isLastRecord: boolean;

                    /** DataChangeRecord table. */
                    public table: string;

                    /** DataChangeRecord columnTypes. */
                    public columnTypes: google.spanner.executor.v1.DataChangeRecord.IColumnType[];

                    /** DataChangeRecord mods. */
                    public mods: google.spanner.executor.v1.DataChangeRecord.IMod[];

                    /** DataChangeRecord modType. */
                    public modType: string;

                    /** DataChangeRecord valueCaptureType. */
                    public valueCaptureType: string;

                    /** DataChangeRecord recordCount. */
                    public recordCount: (number|Long|string);

                    /** DataChangeRecord partitionCount. */
                    public partitionCount: (number|Long|string);

                    /** DataChangeRecord transactionTag. */
                    public transactionTag: string;

                    /** DataChangeRecord isSystemTransaction. */
                    public isSystemTransaction: boolean;

                    /**
                     * Creates a new DataChangeRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DataChangeRecord instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IDataChangeRecord): google.spanner.executor.v1.DataChangeRecord;

                    /**
                     * Encodes the specified DataChangeRecord message. Does not implicitly {@link google.spanner.executor.v1.DataChangeRecord.verify|verify} messages.
                     * @param message DataChangeRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IDataChangeRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DataChangeRecord message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DataChangeRecord.verify|verify} messages.
                     * @param message DataChangeRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IDataChangeRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DataChangeRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DataChangeRecord
                     * @throws {Error} If the payload is 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.spanner.executor.v1.DataChangeRecord;

                    /**
                     * Decodes a DataChangeRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DataChangeRecord
                     * @throws {Error} If the 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.spanner.executor.v1.DataChangeRecord;

                    /**
                     * Verifies a DataChangeRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DataChangeRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DataChangeRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DataChangeRecord;

                    /**
                     * Creates a plain object from a DataChangeRecord message. Also converts values to other types if specified.
                     * @param message DataChangeRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.DataChangeRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DataChangeRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DataChangeRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace DataChangeRecord {

                    /** Properties of a ColumnType. */
                    interface IColumnType {

                        /** ColumnType name */
                        name?: (string|null);

                        /** ColumnType type */
                        type?: (string|null);

                        /** ColumnType isPrimaryKey */
                        isPrimaryKey?: (boolean|null);

                        /** ColumnType ordinalPosition */
                        ordinalPosition?: (number|Long|string|null);
                    }

                    /** Represents a ColumnType. */
                    class ColumnType implements IColumnType {

                        /**
                         * Constructs a new ColumnType.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.DataChangeRecord.IColumnType);

                        /** ColumnType name. */
                        public name: string;

                        /** ColumnType type. */
                        public type: string;

                        /** ColumnType isPrimaryKey. */
                        public isPrimaryKey: boolean;

                        /** ColumnType ordinalPosition. */
                        public ordinalPosition: (number|Long|string);

                        /**
                         * Creates a new ColumnType instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ColumnType instance
                         */
                        public static create(properties?: google.spanner.executor.v1.DataChangeRecord.IColumnType): google.spanner.executor.v1.DataChangeRecord.ColumnType;

                        /**
                         * Encodes the specified ColumnType message. Does not implicitly {@link google.spanner.executor.v1.DataChangeRecord.ColumnType.verify|verify} messages.
                         * @param message ColumnType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.DataChangeRecord.IColumnType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ColumnType message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DataChangeRecord.ColumnType.verify|verify} messages.
                         * @param message ColumnType message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.DataChangeRecord.IColumnType, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ColumnType message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ColumnType
                         * @throws {Error} If the payload is 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.spanner.executor.v1.DataChangeRecord.ColumnType;

                        /**
                         * Decodes a ColumnType message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ColumnType
                         * @throws {Error} If the 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.spanner.executor.v1.DataChangeRecord.ColumnType;

                        /**
                         * Verifies a ColumnType message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ColumnType message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ColumnType
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DataChangeRecord.ColumnType;

                        /**
                         * Creates a plain object from a ColumnType message. Also converts values to other types if specified.
                         * @param message ColumnType
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.DataChangeRecord.ColumnType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ColumnType to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ColumnType
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Mod. */
                    interface IMod {

                        /** Mod keys */
                        keys?: (string|null);

                        /** Mod newValues */
                        newValues?: (string|null);

                        /** Mod oldValues */
                        oldValues?: (string|null);
                    }

                    /** Represents a Mod. */
                    class Mod implements IMod {

                        /**
                         * Constructs a new Mod.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.DataChangeRecord.IMod);

                        /** Mod keys. */
                        public keys: string;

                        /** Mod newValues. */
                        public newValues: string;

                        /** Mod oldValues. */
                        public oldValues: string;

                        /**
                         * Creates a new Mod instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Mod instance
                         */
                        public static create(properties?: google.spanner.executor.v1.DataChangeRecord.IMod): google.spanner.executor.v1.DataChangeRecord.Mod;

                        /**
                         * Encodes the specified Mod message. Does not implicitly {@link google.spanner.executor.v1.DataChangeRecord.Mod.verify|verify} messages.
                         * @param message Mod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.DataChangeRecord.IMod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Mod message, length delimited. Does not implicitly {@link google.spanner.executor.v1.DataChangeRecord.Mod.verify|verify} messages.
                         * @param message Mod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.DataChangeRecord.IMod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Mod message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Mod
                         * @throws {Error} If the payload is 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.spanner.executor.v1.DataChangeRecord.Mod;

                        /**
                         * Decodes a Mod message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Mod
                         * @throws {Error} If the 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.spanner.executor.v1.DataChangeRecord.Mod;

                        /**
                         * Verifies a Mod message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Mod message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Mod
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.DataChangeRecord.Mod;

                        /**
                         * Creates a plain object from a Mod message. Also converts values to other types if specified.
                         * @param message Mod
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.DataChangeRecord.Mod, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Mod to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Mod
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a ChildPartitionsRecord. */
                interface IChildPartitionsRecord {

                    /** ChildPartitionsRecord startTime */
                    startTime?: (google.protobuf.ITimestamp|null);

                    /** ChildPartitionsRecord recordSequence */
                    recordSequence?: (string|null);

                    /** ChildPartitionsRecord childPartitions */
                    childPartitions?: (google.spanner.executor.v1.ChildPartitionsRecord.IChildPartition[]|null);
                }

                /** Represents a ChildPartitionsRecord. */
                class ChildPartitionsRecord implements IChildPartitionsRecord {

                    /**
                     * Constructs a new ChildPartitionsRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IChildPartitionsRecord);

                    /** ChildPartitionsRecord startTime. */
                    public startTime?: (google.protobuf.ITimestamp|null);

                    /** ChildPartitionsRecord recordSequence. */
                    public recordSequence: string;

                    /** ChildPartitionsRecord childPartitions. */
                    public childPartitions: google.spanner.executor.v1.ChildPartitionsRecord.IChildPartition[];

                    /**
                     * Creates a new ChildPartitionsRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildPartitionsRecord instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IChildPartitionsRecord): google.spanner.executor.v1.ChildPartitionsRecord;

                    /**
                     * Encodes the specified ChildPartitionsRecord message. Does not implicitly {@link google.spanner.executor.v1.ChildPartitionsRecord.verify|verify} messages.
                     * @param message ChildPartitionsRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IChildPartitionsRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildPartitionsRecord message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ChildPartitionsRecord.verify|verify} messages.
                     * @param message ChildPartitionsRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IChildPartitionsRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildPartitionsRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildPartitionsRecord
                     * @throws {Error} If the payload is 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.spanner.executor.v1.ChildPartitionsRecord;

                    /**
                     * Decodes a ChildPartitionsRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildPartitionsRecord
                     * @throws {Error} If the 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.spanner.executor.v1.ChildPartitionsRecord;

                    /**
                     * Verifies a ChildPartitionsRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ChildPartitionsRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildPartitionsRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ChildPartitionsRecord;

                    /**
                     * Creates a plain object from a ChildPartitionsRecord message. Also converts values to other types if specified.
                     * @param message ChildPartitionsRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.ChildPartitionsRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildPartitionsRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildPartitionsRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ChildPartitionsRecord {

                    /** Properties of a ChildPartition. */
                    interface IChildPartition {

                        /** ChildPartition token */
                        token?: (string|null);

                        /** ChildPartition parentPartitionTokens */
                        parentPartitionTokens?: (string[]|null);
                    }

                    /** Represents a ChildPartition. */
                    class ChildPartition implements IChildPartition {

                        /**
                         * Constructs a new ChildPartition.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.executor.v1.ChildPartitionsRecord.IChildPartition);

                        /** ChildPartition token. */
                        public token: string;

                        /** ChildPartition parentPartitionTokens. */
                        public parentPartitionTokens: string[];

                        /**
                         * Creates a new ChildPartition instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChildPartition instance
                         */
                        public static create(properties?: google.spanner.executor.v1.ChildPartitionsRecord.IChildPartition): google.spanner.executor.v1.ChildPartitionsRecord.ChildPartition;

                        /**
                         * Encodes the specified ChildPartition message. Does not implicitly {@link google.spanner.executor.v1.ChildPartitionsRecord.ChildPartition.verify|verify} messages.
                         * @param message ChildPartition message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.executor.v1.ChildPartitionsRecord.IChildPartition, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChildPartition message, length delimited. Does not implicitly {@link google.spanner.executor.v1.ChildPartitionsRecord.ChildPartition.verify|verify} messages.
                         * @param message ChildPartition message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.executor.v1.ChildPartitionsRecord.IChildPartition, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChildPartition message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChildPartition
                         * @throws {Error} If the payload is 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.spanner.executor.v1.ChildPartitionsRecord.ChildPartition;

                        /**
                         * Decodes a ChildPartition message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChildPartition
                         * @throws {Error} If the 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.spanner.executor.v1.ChildPartitionsRecord.ChildPartition;

                        /**
                         * Verifies a ChildPartition message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChildPartition message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChildPartition
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.ChildPartitionsRecord.ChildPartition;

                        /**
                         * Creates a plain object from a ChildPartition message. Also converts values to other types if specified.
                         * @param message ChildPartition
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.executor.v1.ChildPartitionsRecord.ChildPartition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChildPartition to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChildPartition
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a HeartbeatRecord. */
                interface IHeartbeatRecord {

                    /** HeartbeatRecord heartbeatTime */
                    heartbeatTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a HeartbeatRecord. */
                class HeartbeatRecord implements IHeartbeatRecord {

                    /**
                     * Constructs a new HeartbeatRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.IHeartbeatRecord);

                    /** HeartbeatRecord heartbeatTime. */
                    public heartbeatTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new HeartbeatRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns HeartbeatRecord instance
                     */
                    public static create(properties?: google.spanner.executor.v1.IHeartbeatRecord): google.spanner.executor.v1.HeartbeatRecord;

                    /**
                     * Encodes the specified HeartbeatRecord message. Does not implicitly {@link google.spanner.executor.v1.HeartbeatRecord.verify|verify} messages.
                     * @param message HeartbeatRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.IHeartbeatRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified HeartbeatRecord message, length delimited. Does not implicitly {@link google.spanner.executor.v1.HeartbeatRecord.verify|verify} messages.
                     * @param message HeartbeatRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.IHeartbeatRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a HeartbeatRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns HeartbeatRecord
                     * @throws {Error} If the payload is 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.spanner.executor.v1.HeartbeatRecord;

                    /**
                     * Decodes a HeartbeatRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns HeartbeatRecord
                     * @throws {Error} If the 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.spanner.executor.v1.HeartbeatRecord;

                    /**
                     * Verifies a HeartbeatRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a HeartbeatRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns HeartbeatRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.HeartbeatRecord;

                    /**
                     * Creates a plain object from a HeartbeatRecord message. Also converts values to other types if specified.
                     * @param message HeartbeatRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.HeartbeatRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this HeartbeatRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for HeartbeatRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SpannerOptions. */
                interface ISpannerOptions {

                    /** SpannerOptions sessionPoolOptions */
                    sessionPoolOptions?: (google.spanner.executor.v1.ISessionPoolOptions|null);
                }

                /** Represents a SpannerOptions. */
                class SpannerOptions implements ISpannerOptions {

                    /**
                     * Constructs a new SpannerOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ISpannerOptions);

                    /** SpannerOptions sessionPoolOptions. */
                    public sessionPoolOptions?: (google.spanner.executor.v1.ISessionPoolOptions|null);

                    /**
                     * Creates a new SpannerOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SpannerOptions instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ISpannerOptions): google.spanner.executor.v1.SpannerOptions;

                    /**
                     * Encodes the specified SpannerOptions message. Does not implicitly {@link google.spanner.executor.v1.SpannerOptions.verify|verify} messages.
                     * @param message SpannerOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ISpannerOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SpannerOptions message, length delimited. Does not implicitly {@link google.spanner.executor.v1.SpannerOptions.verify|verify} messages.
                     * @param message SpannerOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ISpannerOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SpannerOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SpannerOptions
                     * @throws {Error} If the payload is 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.spanner.executor.v1.SpannerOptions;

                    /**
                     * Decodes a SpannerOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SpannerOptions
                     * @throws {Error} If the 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.spanner.executor.v1.SpannerOptions;

                    /**
                     * Verifies a SpannerOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SpannerOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SpannerOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.SpannerOptions;

                    /**
                     * Creates a plain object from a SpannerOptions message. Also converts values to other types if specified.
                     * @param message SpannerOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.SpannerOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SpannerOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SpannerOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SessionPoolOptions. */
                interface ISessionPoolOptions {

                    /** SessionPoolOptions useMultiplexed */
                    useMultiplexed?: (boolean|null);
                }

                /** Represents a SessionPoolOptions. */
                class SessionPoolOptions implements ISessionPoolOptions {

                    /**
                     * Constructs a new SessionPoolOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.executor.v1.ISessionPoolOptions);

                    /** SessionPoolOptions useMultiplexed. */
                    public useMultiplexed: boolean;

                    /**
                     * Creates a new SessionPoolOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SessionPoolOptions instance
                     */
                    public static create(properties?: google.spanner.executor.v1.ISessionPoolOptions): google.spanner.executor.v1.SessionPoolOptions;

                    /**
                     * Encodes the specified SessionPoolOptions message. Does not implicitly {@link google.spanner.executor.v1.SessionPoolOptions.verify|verify} messages.
                     * @param message SessionPoolOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.executor.v1.ISessionPoolOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SessionPoolOptions message, length delimited. Does not implicitly {@link google.spanner.executor.v1.SessionPoolOptions.verify|verify} messages.
                     * @param message SessionPoolOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.executor.v1.ISessionPoolOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SessionPoolOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SessionPoolOptions
                     * @throws {Error} If the payload is 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.spanner.executor.v1.SessionPoolOptions;

                    /**
                     * Decodes a SessionPoolOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SessionPoolOptions
                     * @throws {Error} If the 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.spanner.executor.v1.SessionPoolOptions;

                    /**
                     * Verifies a SessionPoolOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SessionPoolOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SessionPoolOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.executor.v1.SessionPoolOptions;

                    /**
                     * Creates a plain object from a SessionPoolOptions message. Also converts values to other types if specified.
                     * @param message SessionPoolOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.executor.v1.SessionPoolOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SessionPoolOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SessionPoolOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }

        /** Namespace v1. */
        namespace v1 {

            /** Represents a Spanner */
            class Spanner extends $protobuf.rpc.Service {

                /**
                 * Constructs a new Spanner 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 Spanner 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): Spanner;

                /**
                 * Calls CreateSession.
                 * @param request CreateSessionRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and Session
                 */
                public createSession(request: google.spanner.v1.ICreateSessionRequest, callback: google.spanner.v1.Spanner.CreateSessionCallback): void;

                /**
                 * Calls CreateSession.
                 * @param request CreateSessionRequest message or plain object
                 * @returns Promise
                 */
                public createSession(request: google.spanner.v1.ICreateSessionRequest): Promise<google.spanner.v1.Session>;

                /**
                 * Calls BatchCreateSessions.
                 * @param request BatchCreateSessionsRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and BatchCreateSessionsResponse
                 */
                public batchCreateSessions(request: google.spanner.v1.IBatchCreateSessionsRequest, callback: google.spanner.v1.Spanner.BatchCreateSessionsCallback): void;

                /**
                 * Calls BatchCreateSessions.
                 * @param request BatchCreateSessionsRequest message or plain object
                 * @returns Promise
                 */
                public batchCreateSessions(request: google.spanner.v1.IBatchCreateSessionsRequest): Promise<google.spanner.v1.BatchCreateSessionsResponse>;

                /**
                 * Calls GetSession.
                 * @param request GetSessionRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and Session
                 */
                public getSession(request: google.spanner.v1.IGetSessionRequest, callback: google.spanner.v1.Spanner.GetSessionCallback): void;

                /**
                 * Calls GetSession.
                 * @param request GetSessionRequest message or plain object
                 * @returns Promise
                 */
                public getSession(request: google.spanner.v1.IGetSessionRequest): Promise<google.spanner.v1.Session>;

                /**
                 * Calls ListSessions.
                 * @param request ListSessionsRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and ListSessionsResponse
                 */
                public listSessions(request: google.spanner.v1.IListSessionsRequest, callback: google.spanner.v1.Spanner.ListSessionsCallback): void;

                /**
                 * Calls ListSessions.
                 * @param request ListSessionsRequest message or plain object
                 * @returns Promise
                 */
                public listSessions(request: google.spanner.v1.IListSessionsRequest): Promise<google.spanner.v1.ListSessionsResponse>;

                /**
                 * Calls DeleteSession.
                 * @param request DeleteSessionRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and Empty
                 */
                public deleteSession(request: google.spanner.v1.IDeleteSessionRequest, callback: google.spanner.v1.Spanner.DeleteSessionCallback): void;

                /**
                 * Calls DeleteSession.
                 * @param request DeleteSessionRequest message or plain object
                 * @returns Promise
                 */
                public deleteSession(request: google.spanner.v1.IDeleteSessionRequest): Promise<google.protobuf.Empty>;

                /**
                 * Calls ExecuteSql.
                 * @param request ExecuteSqlRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and ResultSet
                 */
                public executeSql(request: google.spanner.v1.IExecuteSqlRequest, callback: google.spanner.v1.Spanner.ExecuteSqlCallback): void;

                /**
                 * Calls ExecuteSql.
                 * @param request ExecuteSqlRequest message or plain object
                 * @returns Promise
                 */
                public executeSql(request: google.spanner.v1.IExecuteSqlRequest): Promise<google.spanner.v1.ResultSet>;

                /**
                 * Calls ExecuteStreamingSql.
                 * @param request ExecuteSqlRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and PartialResultSet
                 */
                public executeStreamingSql(request: google.spanner.v1.IExecuteSqlRequest, callback: google.spanner.v1.Spanner.ExecuteStreamingSqlCallback): void;

                /**
                 * Calls ExecuteStreamingSql.
                 * @param request ExecuteSqlRequest message or plain object
                 * @returns Promise
                 */
                public executeStreamingSql(request: google.spanner.v1.IExecuteSqlRequest): Promise<google.spanner.v1.PartialResultSet>;

                /**
                 * Calls ExecuteBatchDml.
                 * @param request ExecuteBatchDmlRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and ExecuteBatchDmlResponse
                 */
                public executeBatchDml(request: google.spanner.v1.IExecuteBatchDmlRequest, callback: google.spanner.v1.Spanner.ExecuteBatchDmlCallback): void;

                /**
                 * Calls ExecuteBatchDml.
                 * @param request ExecuteBatchDmlRequest message or plain object
                 * @returns Promise
                 */
                public executeBatchDml(request: google.spanner.v1.IExecuteBatchDmlRequest): Promise<google.spanner.v1.ExecuteBatchDmlResponse>;

                /**
                 * Calls Read.
                 * @param request ReadRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and ResultSet
                 */
                public read(request: google.spanner.v1.IReadRequest, callback: google.spanner.v1.Spanner.ReadCallback): void;

                /**
                 * Calls Read.
                 * @param request ReadRequest message or plain object
                 * @returns Promise
                 */
                public read(request: google.spanner.v1.IReadRequest): Promise<google.spanner.v1.ResultSet>;

                /**
                 * Calls StreamingRead.
                 * @param request ReadRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and PartialResultSet
                 */
                public streamingRead(request: google.spanner.v1.IReadRequest, callback: google.spanner.v1.Spanner.StreamingReadCallback): void;

                /**
                 * Calls StreamingRead.
                 * @param request ReadRequest message or plain object
                 * @returns Promise
                 */
                public streamingRead(request: google.spanner.v1.IReadRequest): Promise<google.spanner.v1.PartialResultSet>;

                /**
                 * Calls BeginTransaction.
                 * @param request BeginTransactionRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and Transaction
                 */
                public beginTransaction(request: google.spanner.v1.IBeginTransactionRequest, callback: google.spanner.v1.Spanner.BeginTransactionCallback): void;

                /**
                 * Calls BeginTransaction.
                 * @param request BeginTransactionRequest message or plain object
                 * @returns Promise
                 */
                public beginTransaction(request: google.spanner.v1.IBeginTransactionRequest): Promise<google.spanner.v1.Transaction>;

                /**
                 * Calls Commit.
                 * @param request CommitRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and CommitResponse
                 */
                public commit(request: google.spanner.v1.ICommitRequest, callback: google.spanner.v1.Spanner.CommitCallback): void;

                /**
                 * Calls Commit.
                 * @param request CommitRequest message or plain object
                 * @returns Promise
                 */
                public commit(request: google.spanner.v1.ICommitRequest): Promise<google.spanner.v1.CommitResponse>;

                /**
                 * Calls Rollback.
                 * @param request RollbackRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and Empty
                 */
                public rollback(request: google.spanner.v1.IRollbackRequest, callback: google.spanner.v1.Spanner.RollbackCallback): void;

                /**
                 * Calls Rollback.
                 * @param request RollbackRequest message or plain object
                 * @returns Promise
                 */
                public rollback(request: google.spanner.v1.IRollbackRequest): Promise<google.protobuf.Empty>;

                /**
                 * Calls PartitionQuery.
                 * @param request PartitionQueryRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and PartitionResponse
                 */
                public partitionQuery(request: google.spanner.v1.IPartitionQueryRequest, callback: google.spanner.v1.Spanner.PartitionQueryCallback): void;

                /**
                 * Calls PartitionQuery.
                 * @param request PartitionQueryRequest message or plain object
                 * @returns Promise
                 */
                public partitionQuery(request: google.spanner.v1.IPartitionQueryRequest): Promise<google.spanner.v1.PartitionResponse>;

                /**
                 * Calls PartitionRead.
                 * @param request PartitionReadRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and PartitionResponse
                 */
                public partitionRead(request: google.spanner.v1.IPartitionReadRequest, callback: google.spanner.v1.Spanner.PartitionReadCallback): void;

                /**
                 * Calls PartitionRead.
                 * @param request PartitionReadRequest message or plain object
                 * @returns Promise
                 */
                public partitionRead(request: google.spanner.v1.IPartitionReadRequest): Promise<google.spanner.v1.PartitionResponse>;

                /**
                 * Calls BatchWrite.
                 * @param request BatchWriteRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and BatchWriteResponse
                 */
                public batchWrite(request: google.spanner.v1.IBatchWriteRequest, callback: google.spanner.v1.Spanner.BatchWriteCallback): void;

                /**
                 * Calls BatchWrite.
                 * @param request BatchWriteRequest message or plain object
                 * @returns Promise
                 */
                public batchWrite(request: google.spanner.v1.IBatchWriteRequest): Promise<google.spanner.v1.BatchWriteResponse>;
            }

            namespace Spanner {

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|createSession}.
                 * @param error Error, if any
                 * @param [response] Session
                 */
                type CreateSessionCallback = (error: (Error|null), response?: google.spanner.v1.Session) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|batchCreateSessions}.
                 * @param error Error, if any
                 * @param [response] BatchCreateSessionsResponse
                 */
                type BatchCreateSessionsCallback = (error: (Error|null), response?: google.spanner.v1.BatchCreateSessionsResponse) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|getSession}.
                 * @param error Error, if any
                 * @param [response] Session
                 */
                type GetSessionCallback = (error: (Error|null), response?: google.spanner.v1.Session) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|listSessions}.
                 * @param error Error, if any
                 * @param [response] ListSessionsResponse
                 */
                type ListSessionsCallback = (error: (Error|null), response?: google.spanner.v1.ListSessionsResponse) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|deleteSession}.
                 * @param error Error, if any
                 * @param [response] Empty
                 */
                type DeleteSessionCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|executeSql}.
                 * @param error Error, if any
                 * @param [response] ResultSet
                 */
                type ExecuteSqlCallback = (error: (Error|null), response?: google.spanner.v1.ResultSet) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|executeStreamingSql}.
                 * @param error Error, if any
                 * @param [response] PartialResultSet
                 */
                type ExecuteStreamingSqlCallback = (error: (Error|null), response?: google.spanner.v1.PartialResultSet) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|executeBatchDml}.
                 * @param error Error, if any
                 * @param [response] ExecuteBatchDmlResponse
                 */
                type ExecuteBatchDmlCallback = (error: (Error|null), response?: google.spanner.v1.ExecuteBatchDmlResponse) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|read}.
                 * @param error Error, if any
                 * @param [response] ResultSet
                 */
                type ReadCallback = (error: (Error|null), response?: google.spanner.v1.ResultSet) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|streamingRead}.
                 * @param error Error, if any
                 * @param [response] PartialResultSet
                 */
                type StreamingReadCallback = (error: (Error|null), response?: google.spanner.v1.PartialResultSet) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|beginTransaction}.
                 * @param error Error, if any
                 * @param [response] Transaction
                 */
                type BeginTransactionCallback = (error: (Error|null), response?: google.spanner.v1.Transaction) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|commit}.
                 * @param error Error, if any
                 * @param [response] CommitResponse
                 */
                type CommitCallback = (error: (Error|null), response?: google.spanner.v1.CommitResponse) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|rollback}.
                 * @param error Error, if any
                 * @param [response] Empty
                 */
                type RollbackCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|partitionQuery}.
                 * @param error Error, if any
                 * @param [response] PartitionResponse
                 */
                type PartitionQueryCallback = (error: (Error|null), response?: google.spanner.v1.PartitionResponse) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|partitionRead}.
                 * @param error Error, if any
                 * @param [response] PartitionResponse
                 */
                type PartitionReadCallback = (error: (Error|null), response?: google.spanner.v1.PartitionResponse) => void;

                /**
                 * Callback as used by {@link google.spanner.v1.Spanner|batchWrite}.
                 * @param error Error, if any
                 * @param [response] BatchWriteResponse
                 */
                type BatchWriteCallback = (error: (Error|null), response?: google.spanner.v1.BatchWriteResponse) => void;
            }

            /** Properties of a CreateSessionRequest. */
            interface ICreateSessionRequest {

                /** CreateSessionRequest database */
                database?: (string|null);

                /** CreateSessionRequest session */
                session?: (google.spanner.v1.ISession|null);
            }

            /** Represents a CreateSessionRequest. */
            class CreateSessionRequest implements ICreateSessionRequest {

                /**
                 * Constructs a new CreateSessionRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.ICreateSessionRequest);

                /** CreateSessionRequest database. */
                public database: string;

                /** CreateSessionRequest session. */
                public session?: (google.spanner.v1.ISession|null);

                /**
                 * Creates a new CreateSessionRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns CreateSessionRequest instance
                 */
                public static create(properties?: google.spanner.v1.ICreateSessionRequest): google.spanner.v1.CreateSessionRequest;

                /**
                 * Encodes the specified CreateSessionRequest message. Does not implicitly {@link google.spanner.v1.CreateSessionRequest.verify|verify} messages.
                 * @param message CreateSessionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.ICreateSessionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified CreateSessionRequest message, length delimited. Does not implicitly {@link google.spanner.v1.CreateSessionRequest.verify|verify} messages.
                 * @param message CreateSessionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.ICreateSessionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a CreateSessionRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns CreateSessionRequest
                 * @throws {Error} If the payload is 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.spanner.v1.CreateSessionRequest;

                /**
                 * Decodes a CreateSessionRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns CreateSessionRequest
                 * @throws {Error} If the 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.spanner.v1.CreateSessionRequest;

                /**
                 * Verifies a CreateSessionRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a CreateSessionRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns CreateSessionRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.CreateSessionRequest;

                /**
                 * Creates a plain object from a CreateSessionRequest message. Also converts values to other types if specified.
                 * @param message CreateSessionRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.CreateSessionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this CreateSessionRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for CreateSessionRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a BatchCreateSessionsRequest. */
            interface IBatchCreateSessionsRequest {

                /** BatchCreateSessionsRequest database */
                database?: (string|null);

                /** BatchCreateSessionsRequest sessionTemplate */
                sessionTemplate?: (google.spanner.v1.ISession|null);

                /** BatchCreateSessionsRequest sessionCount */
                sessionCount?: (number|null);
            }

            /** Represents a BatchCreateSessionsRequest. */
            class BatchCreateSessionsRequest implements IBatchCreateSessionsRequest {

                /**
                 * Constructs a new BatchCreateSessionsRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IBatchCreateSessionsRequest);

                /** BatchCreateSessionsRequest database. */
                public database: string;

                /** BatchCreateSessionsRequest sessionTemplate. */
                public sessionTemplate?: (google.spanner.v1.ISession|null);

                /** BatchCreateSessionsRequest sessionCount. */
                public sessionCount: number;

                /**
                 * Creates a new BatchCreateSessionsRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns BatchCreateSessionsRequest instance
                 */
                public static create(properties?: google.spanner.v1.IBatchCreateSessionsRequest): google.spanner.v1.BatchCreateSessionsRequest;

                /**
                 * Encodes the specified BatchCreateSessionsRequest message. Does not implicitly {@link google.spanner.v1.BatchCreateSessionsRequest.verify|verify} messages.
                 * @param message BatchCreateSessionsRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IBatchCreateSessionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified BatchCreateSessionsRequest message, length delimited. Does not implicitly {@link google.spanner.v1.BatchCreateSessionsRequest.verify|verify} messages.
                 * @param message BatchCreateSessionsRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IBatchCreateSessionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a BatchCreateSessionsRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns BatchCreateSessionsRequest
                 * @throws {Error} If the payload is 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.spanner.v1.BatchCreateSessionsRequest;

                /**
                 * Decodes a BatchCreateSessionsRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns BatchCreateSessionsRequest
                 * @throws {Error} If the 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.spanner.v1.BatchCreateSessionsRequest;

                /**
                 * Verifies a BatchCreateSessionsRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a BatchCreateSessionsRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns BatchCreateSessionsRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.BatchCreateSessionsRequest;

                /**
                 * Creates a plain object from a BatchCreateSessionsRequest message. Also converts values to other types if specified.
                 * @param message BatchCreateSessionsRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.BatchCreateSessionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this BatchCreateSessionsRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for BatchCreateSessionsRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a BatchCreateSessionsResponse. */
            interface IBatchCreateSessionsResponse {

                /** BatchCreateSessionsResponse session */
                session?: (google.spanner.v1.ISession[]|null);
            }

            /** Represents a BatchCreateSessionsResponse. */
            class BatchCreateSessionsResponse implements IBatchCreateSessionsResponse {

                /**
                 * Constructs a new BatchCreateSessionsResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IBatchCreateSessionsResponse);

                /** BatchCreateSessionsResponse session. */
                public session: google.spanner.v1.ISession[];

                /**
                 * Creates a new BatchCreateSessionsResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns BatchCreateSessionsResponse instance
                 */
                public static create(properties?: google.spanner.v1.IBatchCreateSessionsResponse): google.spanner.v1.BatchCreateSessionsResponse;

                /**
                 * Encodes the specified BatchCreateSessionsResponse message. Does not implicitly {@link google.spanner.v1.BatchCreateSessionsResponse.verify|verify} messages.
                 * @param message BatchCreateSessionsResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IBatchCreateSessionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified BatchCreateSessionsResponse message, length delimited. Does not implicitly {@link google.spanner.v1.BatchCreateSessionsResponse.verify|verify} messages.
                 * @param message BatchCreateSessionsResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IBatchCreateSessionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a BatchCreateSessionsResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns BatchCreateSessionsResponse
                 * @throws {Error} If the payload is 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.spanner.v1.BatchCreateSessionsResponse;

                /**
                 * Decodes a BatchCreateSessionsResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns BatchCreateSessionsResponse
                 * @throws {Error} If the 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.spanner.v1.BatchCreateSessionsResponse;

                /**
                 * Verifies a BatchCreateSessionsResponse message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a BatchCreateSessionsResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns BatchCreateSessionsResponse
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.BatchCreateSessionsResponse;

                /**
                 * Creates a plain object from a BatchCreateSessionsResponse message. Also converts values to other types if specified.
                 * @param message BatchCreateSessionsResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.BatchCreateSessionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this BatchCreateSessionsResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for BatchCreateSessionsResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Session. */
            interface ISession {

                /** Session name */
                name?: (string|null);

                /** Session labels */
                labels?: ({ [k: string]: string }|null);

                /** Session createTime */
                createTime?: (google.protobuf.ITimestamp|null);

                /** Session approximateLastUseTime */
                approximateLastUseTime?: (google.protobuf.ITimestamp|null);

                /** Session creatorRole */
                creatorRole?: (string|null);

                /** Session multiplexed */
                multiplexed?: (boolean|null);
            }

            /** Represents a Session. */
            class Session implements ISession {

                /**
                 * Constructs a new Session.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.ISession);

                /** Session name. */
                public name: string;

                /** Session labels. */
                public labels: { [k: string]: string };

                /** Session createTime. */
                public createTime?: (google.protobuf.ITimestamp|null);

                /** Session approximateLastUseTime. */
                public approximateLastUseTime?: (google.protobuf.ITimestamp|null);

                /** Session creatorRole. */
                public creatorRole: string;

                /** Session multiplexed. */
                public multiplexed: boolean;

                /**
                 * Creates a new Session instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Session instance
                 */
                public static create(properties?: google.spanner.v1.ISession): google.spanner.v1.Session;

                /**
                 * Encodes the specified Session message. Does not implicitly {@link google.spanner.v1.Session.verify|verify} messages.
                 * @param message Session message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.ISession, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Session message, length delimited. Does not implicitly {@link google.spanner.v1.Session.verify|verify} messages.
                 * @param message Session message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.ISession, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Session message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Session
                 * @throws {Error} If the payload is 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.spanner.v1.Session;

                /**
                 * Decodes a Session message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Session
                 * @throws {Error} If the 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.spanner.v1.Session;

                /**
                 * Verifies a Session message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Session message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Session
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.Session;

                /**
                 * Creates a plain object from a Session message. Also converts values to other types if specified.
                 * @param message Session
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.Session, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Session to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Session
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a GetSessionRequest. */
            interface IGetSessionRequest {

                /** GetSessionRequest name */
                name?: (string|null);
            }

            /** Represents a GetSessionRequest. */
            class GetSessionRequest implements IGetSessionRequest {

                /**
                 * Constructs a new GetSessionRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IGetSessionRequest);

                /** GetSessionRequest name. */
                public name: string;

                /**
                 * Creates a new GetSessionRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns GetSessionRequest instance
                 */
                public static create(properties?: google.spanner.v1.IGetSessionRequest): google.spanner.v1.GetSessionRequest;

                /**
                 * Encodes the specified GetSessionRequest message. Does not implicitly {@link google.spanner.v1.GetSessionRequest.verify|verify} messages.
                 * @param message GetSessionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IGetSessionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified GetSessionRequest message, length delimited. Does not implicitly {@link google.spanner.v1.GetSessionRequest.verify|verify} messages.
                 * @param message GetSessionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IGetSessionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a GetSessionRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns GetSessionRequest
                 * @throws {Error} If the payload is 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.spanner.v1.GetSessionRequest;

                /**
                 * Decodes a GetSessionRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns GetSessionRequest
                 * @throws {Error} If the 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.spanner.v1.GetSessionRequest;

                /**
                 * Verifies a GetSessionRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a GetSessionRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns GetSessionRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.GetSessionRequest;

                /**
                 * Creates a plain object from a GetSessionRequest message. Also converts values to other types if specified.
                 * @param message GetSessionRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.GetSessionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this GetSessionRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for GetSessionRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ListSessionsRequest. */
            interface IListSessionsRequest {

                /** ListSessionsRequest database */
                database?: (string|null);

                /** ListSessionsRequest pageSize */
                pageSize?: (number|null);

                /** ListSessionsRequest pageToken */
                pageToken?: (string|null);

                /** ListSessionsRequest filter */
                filter?: (string|null);
            }

            /** Represents a ListSessionsRequest. */
            class ListSessionsRequest implements IListSessionsRequest {

                /**
                 * Constructs a new ListSessionsRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IListSessionsRequest);

                /** ListSessionsRequest database. */
                public database: string;

                /** ListSessionsRequest pageSize. */
                public pageSize: number;

                /** ListSessionsRequest pageToken. */
                public pageToken: string;

                /** ListSessionsRequest filter. */
                public filter: string;

                /**
                 * Creates a new ListSessionsRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ListSessionsRequest instance
                 */
                public static create(properties?: google.spanner.v1.IListSessionsRequest): google.spanner.v1.ListSessionsRequest;

                /**
                 * Encodes the specified ListSessionsRequest message. Does not implicitly {@link google.spanner.v1.ListSessionsRequest.verify|verify} messages.
                 * @param message ListSessionsRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IListSessionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ListSessionsRequest message, length delimited. Does not implicitly {@link google.spanner.v1.ListSessionsRequest.verify|verify} messages.
                 * @param message ListSessionsRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IListSessionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ListSessionsRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ListSessionsRequest
                 * @throws {Error} If the payload is 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.spanner.v1.ListSessionsRequest;

                /**
                 * Decodes a ListSessionsRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ListSessionsRequest
                 * @throws {Error} If the 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.spanner.v1.ListSessionsRequest;

                /**
                 * Verifies a ListSessionsRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ListSessionsRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ListSessionsRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ListSessionsRequest;

                /**
                 * Creates a plain object from a ListSessionsRequest message. Also converts values to other types if specified.
                 * @param message ListSessionsRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ListSessionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ListSessionsRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ListSessionsRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ListSessionsResponse. */
            interface IListSessionsResponse {

                /** ListSessionsResponse sessions */
                sessions?: (google.spanner.v1.ISession[]|null);

                /** ListSessionsResponse nextPageToken */
                nextPageToken?: (string|null);
            }

            /** Represents a ListSessionsResponse. */
            class ListSessionsResponse implements IListSessionsResponse {

                /**
                 * Constructs a new ListSessionsResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IListSessionsResponse);

                /** ListSessionsResponse sessions. */
                public sessions: google.spanner.v1.ISession[];

                /** ListSessionsResponse nextPageToken. */
                public nextPageToken: string;

                /**
                 * Creates a new ListSessionsResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ListSessionsResponse instance
                 */
                public static create(properties?: google.spanner.v1.IListSessionsResponse): google.spanner.v1.ListSessionsResponse;

                /**
                 * Encodes the specified ListSessionsResponse message. Does not implicitly {@link google.spanner.v1.ListSessionsResponse.verify|verify} messages.
                 * @param message ListSessionsResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IListSessionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ListSessionsResponse message, length delimited. Does not implicitly {@link google.spanner.v1.ListSessionsResponse.verify|verify} messages.
                 * @param message ListSessionsResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IListSessionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ListSessionsResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ListSessionsResponse
                 * @throws {Error} If the payload is 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.spanner.v1.ListSessionsResponse;

                /**
                 * Decodes a ListSessionsResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ListSessionsResponse
                 * @throws {Error} If the 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.spanner.v1.ListSessionsResponse;

                /**
                 * Verifies a ListSessionsResponse message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ListSessionsResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ListSessionsResponse
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ListSessionsResponse;

                /**
                 * Creates a plain object from a ListSessionsResponse message. Also converts values to other types if specified.
                 * @param message ListSessionsResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ListSessionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ListSessionsResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ListSessionsResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a DeleteSessionRequest. */
            interface IDeleteSessionRequest {

                /** DeleteSessionRequest name */
                name?: (string|null);
            }

            /** Represents a DeleteSessionRequest. */
            class DeleteSessionRequest implements IDeleteSessionRequest {

                /**
                 * Constructs a new DeleteSessionRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IDeleteSessionRequest);

                /** DeleteSessionRequest name. */
                public name: string;

                /**
                 * Creates a new DeleteSessionRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns DeleteSessionRequest instance
                 */
                public static create(properties?: google.spanner.v1.IDeleteSessionRequest): google.spanner.v1.DeleteSessionRequest;

                /**
                 * Encodes the specified DeleteSessionRequest message. Does not implicitly {@link google.spanner.v1.DeleteSessionRequest.verify|verify} messages.
                 * @param message DeleteSessionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IDeleteSessionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified DeleteSessionRequest message, length delimited. Does not implicitly {@link google.spanner.v1.DeleteSessionRequest.verify|verify} messages.
                 * @param message DeleteSessionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IDeleteSessionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a DeleteSessionRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns DeleteSessionRequest
                 * @throws {Error} If the payload is 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.spanner.v1.DeleteSessionRequest;

                /**
                 * Decodes a DeleteSessionRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns DeleteSessionRequest
                 * @throws {Error} If the 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.spanner.v1.DeleteSessionRequest;

                /**
                 * Verifies a DeleteSessionRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a DeleteSessionRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns DeleteSessionRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.DeleteSessionRequest;

                /**
                 * Creates a plain object from a DeleteSessionRequest message. Also converts values to other types if specified.
                 * @param message DeleteSessionRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.DeleteSessionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this DeleteSessionRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for DeleteSessionRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a RequestOptions. */
            interface IRequestOptions {

                /** RequestOptions priority */
                priority?: (google.spanner.v1.RequestOptions.Priority|keyof typeof google.spanner.v1.RequestOptions.Priority|null);

                /** RequestOptions requestTag */
                requestTag?: (string|null);

                /** RequestOptions transactionTag */
                transactionTag?: (string|null);
            }

            /** Represents a RequestOptions. */
            class RequestOptions implements IRequestOptions {

                /**
                 * Constructs a new RequestOptions.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IRequestOptions);

                /** RequestOptions priority. */
                public priority: (google.spanner.v1.RequestOptions.Priority|keyof typeof google.spanner.v1.RequestOptions.Priority);

                /** RequestOptions requestTag. */
                public requestTag: string;

                /** RequestOptions transactionTag. */
                public transactionTag: string;

                /**
                 * Creates a new RequestOptions instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns RequestOptions instance
                 */
                public static create(properties?: google.spanner.v1.IRequestOptions): google.spanner.v1.RequestOptions;

                /**
                 * Encodes the specified RequestOptions message. Does not implicitly {@link google.spanner.v1.RequestOptions.verify|verify} messages.
                 * @param message RequestOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IRequestOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified RequestOptions message, length delimited. Does not implicitly {@link google.spanner.v1.RequestOptions.verify|verify} messages.
                 * @param message RequestOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IRequestOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a RequestOptions message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns RequestOptions
                 * @throws {Error} If the payload is 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.spanner.v1.RequestOptions;

                /**
                 * Decodes a RequestOptions message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns RequestOptions
                 * @throws {Error} If the 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.spanner.v1.RequestOptions;

                /**
                 * Verifies a RequestOptions message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a RequestOptions message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns RequestOptions
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.RequestOptions;

                /**
                 * Creates a plain object from a RequestOptions message. Also converts values to other types if specified.
                 * @param message RequestOptions
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.RequestOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this RequestOptions to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for RequestOptions
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace RequestOptions {

                /** Priority enum. */
                enum Priority {
                    PRIORITY_UNSPECIFIED = 0,
                    PRIORITY_LOW = 1,
                    PRIORITY_MEDIUM = 2,
                    PRIORITY_HIGH = 3
                }
            }

            /** Properties of a DirectedReadOptions. */
            interface IDirectedReadOptions {

                /** DirectedReadOptions includeReplicas */
                includeReplicas?: (google.spanner.v1.DirectedReadOptions.IIncludeReplicas|null);

                /** DirectedReadOptions excludeReplicas */
                excludeReplicas?: (google.spanner.v1.DirectedReadOptions.IExcludeReplicas|null);
            }

            /** Represents a DirectedReadOptions. */
            class DirectedReadOptions implements IDirectedReadOptions {

                /**
                 * Constructs a new DirectedReadOptions.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IDirectedReadOptions);

                /** DirectedReadOptions includeReplicas. */
                public includeReplicas?: (google.spanner.v1.DirectedReadOptions.IIncludeReplicas|null);

                /** DirectedReadOptions excludeReplicas. */
                public excludeReplicas?: (google.spanner.v1.DirectedReadOptions.IExcludeReplicas|null);

                /** DirectedReadOptions replicas. */
                public replicas?: ("includeReplicas"|"excludeReplicas");

                /**
                 * Creates a new DirectedReadOptions instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns DirectedReadOptions instance
                 */
                public static create(properties?: google.spanner.v1.IDirectedReadOptions): google.spanner.v1.DirectedReadOptions;

                /**
                 * Encodes the specified DirectedReadOptions message. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.verify|verify} messages.
                 * @param message DirectedReadOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IDirectedReadOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified DirectedReadOptions message, length delimited. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.verify|verify} messages.
                 * @param message DirectedReadOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IDirectedReadOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a DirectedReadOptions message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns DirectedReadOptions
                 * @throws {Error} If the payload is 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.spanner.v1.DirectedReadOptions;

                /**
                 * Decodes a DirectedReadOptions message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns DirectedReadOptions
                 * @throws {Error} If the 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.spanner.v1.DirectedReadOptions;

                /**
                 * Verifies a DirectedReadOptions message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a DirectedReadOptions message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns DirectedReadOptions
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.DirectedReadOptions;

                /**
                 * Creates a plain object from a DirectedReadOptions message. Also converts values to other types if specified.
                 * @param message DirectedReadOptions
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.DirectedReadOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this DirectedReadOptions to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for DirectedReadOptions
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace DirectedReadOptions {

                /** Properties of a ReplicaSelection. */
                interface IReplicaSelection {

                    /** ReplicaSelection location */
                    location?: (string|null);

                    /** ReplicaSelection type */
                    type?: (google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type|keyof typeof google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type|null);
                }

                /** Represents a ReplicaSelection. */
                class ReplicaSelection implements IReplicaSelection {

                    /**
                     * Constructs a new ReplicaSelection.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.DirectedReadOptions.IReplicaSelection);

                    /** ReplicaSelection location. */
                    public location: string;

                    /** ReplicaSelection type. */
                    public type: (google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type|keyof typeof google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type);

                    /**
                     * Creates a new ReplicaSelection instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReplicaSelection instance
                     */
                    public static create(properties?: google.spanner.v1.DirectedReadOptions.IReplicaSelection): google.spanner.v1.DirectedReadOptions.ReplicaSelection;

                    /**
                     * Encodes the specified ReplicaSelection message. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.ReplicaSelection.verify|verify} messages.
                     * @param message ReplicaSelection message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.DirectedReadOptions.IReplicaSelection, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReplicaSelection message, length delimited. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.ReplicaSelection.verify|verify} messages.
                     * @param message ReplicaSelection message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.DirectedReadOptions.IReplicaSelection, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReplicaSelection message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReplicaSelection
                     * @throws {Error} If the payload is 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.spanner.v1.DirectedReadOptions.ReplicaSelection;

                    /**
                     * Decodes a ReplicaSelection message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReplicaSelection
                     * @throws {Error} If the 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.spanner.v1.DirectedReadOptions.ReplicaSelection;

                    /**
                     * Verifies a ReplicaSelection message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ReplicaSelection message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReplicaSelection
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.DirectedReadOptions.ReplicaSelection;

                    /**
                     * Creates a plain object from a ReplicaSelection message. Also converts values to other types if specified.
                     * @param message ReplicaSelection
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.DirectedReadOptions.ReplicaSelection, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReplicaSelection to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReplicaSelection
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ReplicaSelection {

                    /** Type enum. */
                    enum Type {
                        TYPE_UNSPECIFIED = 0,
                        READ_WRITE = 1,
                        READ_ONLY = 2
                    }
                }

                /** Properties of an IncludeReplicas. */
                interface IIncludeReplicas {

                    /** IncludeReplicas replicaSelections */
                    replicaSelections?: (google.spanner.v1.DirectedReadOptions.IReplicaSelection[]|null);

                    /** IncludeReplicas autoFailoverDisabled */
                    autoFailoverDisabled?: (boolean|null);
                }

                /** Represents an IncludeReplicas. */
                class IncludeReplicas implements IIncludeReplicas {

                    /**
                     * Constructs a new IncludeReplicas.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.DirectedReadOptions.IIncludeReplicas);

                    /** IncludeReplicas replicaSelections. */
                    public replicaSelections: google.spanner.v1.DirectedReadOptions.IReplicaSelection[];

                    /** IncludeReplicas autoFailoverDisabled. */
                    public autoFailoverDisabled: boolean;

                    /**
                     * Creates a new IncludeReplicas instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns IncludeReplicas instance
                     */
                    public static create(properties?: google.spanner.v1.DirectedReadOptions.IIncludeReplicas): google.spanner.v1.DirectedReadOptions.IncludeReplicas;

                    /**
                     * Encodes the specified IncludeReplicas message. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.IncludeReplicas.verify|verify} messages.
                     * @param message IncludeReplicas message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.DirectedReadOptions.IIncludeReplicas, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified IncludeReplicas message, length delimited. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.IncludeReplicas.verify|verify} messages.
                     * @param message IncludeReplicas message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.DirectedReadOptions.IIncludeReplicas, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an IncludeReplicas message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns IncludeReplicas
                     * @throws {Error} If the payload is 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.spanner.v1.DirectedReadOptions.IncludeReplicas;

                    /**
                     * Decodes an IncludeReplicas message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns IncludeReplicas
                     * @throws {Error} If the 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.spanner.v1.DirectedReadOptions.IncludeReplicas;

                    /**
                     * Verifies an IncludeReplicas message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an IncludeReplicas message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns IncludeReplicas
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.DirectedReadOptions.IncludeReplicas;

                    /**
                     * Creates a plain object from an IncludeReplicas message. Also converts values to other types if specified.
                     * @param message IncludeReplicas
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.DirectedReadOptions.IncludeReplicas, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this IncludeReplicas to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for IncludeReplicas
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExcludeReplicas. */
                interface IExcludeReplicas {

                    /** ExcludeReplicas replicaSelections */
                    replicaSelections?: (google.spanner.v1.DirectedReadOptions.IReplicaSelection[]|null);
                }

                /** Represents an ExcludeReplicas. */
                class ExcludeReplicas implements IExcludeReplicas {

                    /**
                     * Constructs a new ExcludeReplicas.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.DirectedReadOptions.IExcludeReplicas);

                    /** ExcludeReplicas replicaSelections. */
                    public replicaSelections: google.spanner.v1.DirectedReadOptions.IReplicaSelection[];

                    /**
                     * Creates a new ExcludeReplicas instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExcludeReplicas instance
                     */
                    public static create(properties?: google.spanner.v1.DirectedReadOptions.IExcludeReplicas): google.spanner.v1.DirectedReadOptions.ExcludeReplicas;

                    /**
                     * Encodes the specified ExcludeReplicas message. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.ExcludeReplicas.verify|verify} messages.
                     * @param message ExcludeReplicas message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.DirectedReadOptions.IExcludeReplicas, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExcludeReplicas message, length delimited. Does not implicitly {@link google.spanner.v1.DirectedReadOptions.ExcludeReplicas.verify|verify} messages.
                     * @param message ExcludeReplicas message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.DirectedReadOptions.IExcludeReplicas, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExcludeReplicas message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExcludeReplicas
                     * @throws {Error} If the payload is 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.spanner.v1.DirectedReadOptions.ExcludeReplicas;

                    /**
                     * Decodes an ExcludeReplicas message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExcludeReplicas
                     * @throws {Error} If the 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.spanner.v1.DirectedReadOptions.ExcludeReplicas;

                    /**
                     * Verifies an ExcludeReplicas message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates an ExcludeReplicas message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExcludeReplicas
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.DirectedReadOptions.ExcludeReplicas;

                    /**
                     * Creates a plain object from an ExcludeReplicas message. Also converts values to other types if specified.
                     * @param message ExcludeReplicas
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.DirectedReadOptions.ExcludeReplicas, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExcludeReplicas to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExcludeReplicas
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of an ExecuteSqlRequest. */
            interface IExecuteSqlRequest {

                /** ExecuteSqlRequest session */
                session?: (string|null);

                /** ExecuteSqlRequest transaction */
                transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** ExecuteSqlRequest sql */
                sql?: (string|null);

                /** ExecuteSqlRequest params */
                params?: (google.protobuf.IStruct|null);

                /** ExecuteSqlRequest paramTypes */
                paramTypes?: ({ [k: string]: google.spanner.v1.IType }|null);

                /** ExecuteSqlRequest resumeToken */
                resumeToken?: (Uint8Array|Buffer|string|null);

                /** ExecuteSqlRequest queryMode */
                queryMode?: (google.spanner.v1.ExecuteSqlRequest.QueryMode|keyof typeof google.spanner.v1.ExecuteSqlRequest.QueryMode|null);

                /** ExecuteSqlRequest partitionToken */
                partitionToken?: (Uint8Array|Buffer|string|null);

                /** ExecuteSqlRequest seqno */
                seqno?: (number|Long|string|null);

                /** ExecuteSqlRequest queryOptions */
                queryOptions?: (google.spanner.v1.ExecuteSqlRequest.IQueryOptions|null);

                /** ExecuteSqlRequest requestOptions */
                requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** ExecuteSqlRequest directedReadOptions */
                directedReadOptions?: (google.spanner.v1.IDirectedReadOptions|null);

                /** ExecuteSqlRequest dataBoostEnabled */
                dataBoostEnabled?: (boolean|null);

                /** ExecuteSqlRequest lastStatement */
                lastStatement?: (boolean|null);
            }

            /** Represents an ExecuteSqlRequest. */
            class ExecuteSqlRequest implements IExecuteSqlRequest {

                /**
                 * Constructs a new ExecuteSqlRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IExecuteSqlRequest);

                /** ExecuteSqlRequest session. */
                public session: string;

                /** ExecuteSqlRequest transaction. */
                public transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** ExecuteSqlRequest sql. */
                public sql: string;

                /** ExecuteSqlRequest params. */
                public params?: (google.protobuf.IStruct|null);

                /** ExecuteSqlRequest paramTypes. */
                public paramTypes: { [k: string]: google.spanner.v1.IType };

                /** ExecuteSqlRequest resumeToken. */
                public resumeToken: (Uint8Array|Buffer|string);

                /** ExecuteSqlRequest queryMode. */
                public queryMode: (google.spanner.v1.ExecuteSqlRequest.QueryMode|keyof typeof google.spanner.v1.ExecuteSqlRequest.QueryMode);

                /** ExecuteSqlRequest partitionToken. */
                public partitionToken: (Uint8Array|Buffer|string);

                /** ExecuteSqlRequest seqno. */
                public seqno: (number|Long|string);

                /** ExecuteSqlRequest queryOptions. */
                public queryOptions?: (google.spanner.v1.ExecuteSqlRequest.IQueryOptions|null);

                /** ExecuteSqlRequest requestOptions. */
                public requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** ExecuteSqlRequest directedReadOptions. */
                public directedReadOptions?: (google.spanner.v1.IDirectedReadOptions|null);

                /** ExecuteSqlRequest dataBoostEnabled. */
                public dataBoostEnabled: boolean;

                /** ExecuteSqlRequest lastStatement. */
                public lastStatement: boolean;

                /**
                 * Creates a new ExecuteSqlRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ExecuteSqlRequest instance
                 */
                public static create(properties?: google.spanner.v1.IExecuteSqlRequest): google.spanner.v1.ExecuteSqlRequest;

                /**
                 * Encodes the specified ExecuteSqlRequest message. Does not implicitly {@link google.spanner.v1.ExecuteSqlRequest.verify|verify} messages.
                 * @param message ExecuteSqlRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IExecuteSqlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ExecuteSqlRequest message, length delimited. Does not implicitly {@link google.spanner.v1.ExecuteSqlRequest.verify|verify} messages.
                 * @param message ExecuteSqlRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IExecuteSqlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an ExecuteSqlRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ExecuteSqlRequest
                 * @throws {Error} If the payload is 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.spanner.v1.ExecuteSqlRequest;

                /**
                 * Decodes an ExecuteSqlRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ExecuteSqlRequest
                 * @throws {Error} If the 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.spanner.v1.ExecuteSqlRequest;

                /**
                 * Verifies an ExecuteSqlRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an ExecuteSqlRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ExecuteSqlRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ExecuteSqlRequest;

                /**
                 * Creates a plain object from an ExecuteSqlRequest message. Also converts values to other types if specified.
                 * @param message ExecuteSqlRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ExecuteSqlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ExecuteSqlRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ExecuteSqlRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace ExecuteSqlRequest {

                /** QueryMode enum. */
                enum QueryMode {
                    NORMAL = 0,
                    PLAN = 1,
                    PROFILE = 2,
                    WITH_STATS = 3,
                    WITH_PLAN_AND_STATS = 4
                }

                /** Properties of a QueryOptions. */
                interface IQueryOptions {

                    /** QueryOptions optimizerVersion */
                    optimizerVersion?: (string|null);

                    /** QueryOptions optimizerStatisticsPackage */
                    optimizerStatisticsPackage?: (string|null);
                }

                /** Represents a QueryOptions. */
                class QueryOptions implements IQueryOptions {

                    /**
                     * Constructs a new QueryOptions.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.ExecuteSqlRequest.IQueryOptions);

                    /** QueryOptions optimizerVersion. */
                    public optimizerVersion: string;

                    /** QueryOptions optimizerStatisticsPackage. */
                    public optimizerStatisticsPackage: string;

                    /**
                     * Creates a new QueryOptions instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns QueryOptions instance
                     */
                    public static create(properties?: google.spanner.v1.ExecuteSqlRequest.IQueryOptions): google.spanner.v1.ExecuteSqlRequest.QueryOptions;

                    /**
                     * Encodes the specified QueryOptions message. Does not implicitly {@link google.spanner.v1.ExecuteSqlRequest.QueryOptions.verify|verify} messages.
                     * @param message QueryOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.ExecuteSqlRequest.IQueryOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified QueryOptions message, length delimited. Does not implicitly {@link google.spanner.v1.ExecuteSqlRequest.QueryOptions.verify|verify} messages.
                     * @param message QueryOptions message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.ExecuteSqlRequest.IQueryOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a QueryOptions message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns QueryOptions
                     * @throws {Error} If the payload is 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.spanner.v1.ExecuteSqlRequest.QueryOptions;

                    /**
                     * Decodes a QueryOptions message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns QueryOptions
                     * @throws {Error} If the 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.spanner.v1.ExecuteSqlRequest.QueryOptions;

                    /**
                     * Verifies a QueryOptions message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a QueryOptions message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns QueryOptions
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.ExecuteSqlRequest.QueryOptions;

                    /**
                     * Creates a plain object from a QueryOptions message. Also converts values to other types if specified.
                     * @param message QueryOptions
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.ExecuteSqlRequest.QueryOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this QueryOptions to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for QueryOptions
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of an ExecuteBatchDmlRequest. */
            interface IExecuteBatchDmlRequest {

                /** ExecuteBatchDmlRequest session */
                session?: (string|null);

                /** ExecuteBatchDmlRequest transaction */
                transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** ExecuteBatchDmlRequest statements */
                statements?: (google.spanner.v1.ExecuteBatchDmlRequest.IStatement[]|null);

                /** ExecuteBatchDmlRequest seqno */
                seqno?: (number|Long|string|null);

                /** ExecuteBatchDmlRequest requestOptions */
                requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** ExecuteBatchDmlRequest lastStatements */
                lastStatements?: (boolean|null);
            }

            /** Represents an ExecuteBatchDmlRequest. */
            class ExecuteBatchDmlRequest implements IExecuteBatchDmlRequest {

                /**
                 * Constructs a new ExecuteBatchDmlRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IExecuteBatchDmlRequest);

                /** ExecuteBatchDmlRequest session. */
                public session: string;

                /** ExecuteBatchDmlRequest transaction. */
                public transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** ExecuteBatchDmlRequest statements. */
                public statements: google.spanner.v1.ExecuteBatchDmlRequest.IStatement[];

                /** ExecuteBatchDmlRequest seqno. */
                public seqno: (number|Long|string);

                /** ExecuteBatchDmlRequest requestOptions. */
                public requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** ExecuteBatchDmlRequest lastStatements. */
                public lastStatements: boolean;

                /**
                 * Creates a new ExecuteBatchDmlRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ExecuteBatchDmlRequest instance
                 */
                public static create(properties?: google.spanner.v1.IExecuteBatchDmlRequest): google.spanner.v1.ExecuteBatchDmlRequest;

                /**
                 * Encodes the specified ExecuteBatchDmlRequest message. Does not implicitly {@link google.spanner.v1.ExecuteBatchDmlRequest.verify|verify} messages.
                 * @param message ExecuteBatchDmlRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IExecuteBatchDmlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ExecuteBatchDmlRequest message, length delimited. Does not implicitly {@link google.spanner.v1.ExecuteBatchDmlRequest.verify|verify} messages.
                 * @param message ExecuteBatchDmlRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IExecuteBatchDmlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an ExecuteBatchDmlRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ExecuteBatchDmlRequest
                 * @throws {Error} If the payload is 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.spanner.v1.ExecuteBatchDmlRequest;

                /**
                 * Decodes an ExecuteBatchDmlRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ExecuteBatchDmlRequest
                 * @throws {Error} If the 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.spanner.v1.ExecuteBatchDmlRequest;

                /**
                 * Verifies an ExecuteBatchDmlRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an ExecuteBatchDmlRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ExecuteBatchDmlRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ExecuteBatchDmlRequest;

                /**
                 * Creates a plain object from an ExecuteBatchDmlRequest message. Also converts values to other types if specified.
                 * @param message ExecuteBatchDmlRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ExecuteBatchDmlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ExecuteBatchDmlRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ExecuteBatchDmlRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace ExecuteBatchDmlRequest {

                /** Properties of a Statement. */
                interface IStatement {

                    /** Statement sql */
                    sql?: (string|null);

                    /** Statement params */
                    params?: (google.protobuf.IStruct|null);

                    /** Statement paramTypes */
                    paramTypes?: ({ [k: string]: google.spanner.v1.IType }|null);
                }

                /** Represents a Statement. */
                class Statement implements IStatement {

                    /**
                     * Constructs a new Statement.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.ExecuteBatchDmlRequest.IStatement);

                    /** Statement sql. */
                    public sql: string;

                    /** Statement params. */
                    public params?: (google.protobuf.IStruct|null);

                    /** Statement paramTypes. */
                    public paramTypes: { [k: string]: google.spanner.v1.IType };

                    /**
                     * Creates a new Statement instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Statement instance
                     */
                    public static create(properties?: google.spanner.v1.ExecuteBatchDmlRequest.IStatement): google.spanner.v1.ExecuteBatchDmlRequest.Statement;

                    /**
                     * Encodes the specified Statement message. Does not implicitly {@link google.spanner.v1.ExecuteBatchDmlRequest.Statement.verify|verify} messages.
                     * @param message Statement message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.ExecuteBatchDmlRequest.IStatement, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Statement message, length delimited. Does not implicitly {@link google.spanner.v1.ExecuteBatchDmlRequest.Statement.verify|verify} messages.
                     * @param message Statement message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.ExecuteBatchDmlRequest.IStatement, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Statement message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Statement
                     * @throws {Error} If the payload is 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.spanner.v1.ExecuteBatchDmlRequest.Statement;

                    /**
                     * Decodes a Statement message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Statement
                     * @throws {Error} If the 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.spanner.v1.ExecuteBatchDmlRequest.Statement;

                    /**
                     * Verifies a Statement message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Statement message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Statement
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.ExecuteBatchDmlRequest.Statement;

                    /**
                     * Creates a plain object from a Statement message. Also converts values to other types if specified.
                     * @param message Statement
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.ExecuteBatchDmlRequest.Statement, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Statement to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Statement
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of an ExecuteBatchDmlResponse. */
            interface IExecuteBatchDmlResponse {

                /** ExecuteBatchDmlResponse resultSets */
                resultSets?: (google.spanner.v1.IResultSet[]|null);

                /** ExecuteBatchDmlResponse status */
                status?: (google.rpc.IStatus|null);

                /** ExecuteBatchDmlResponse precommitToken */
                precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);
            }

            /** Represents an ExecuteBatchDmlResponse. */
            class ExecuteBatchDmlResponse implements IExecuteBatchDmlResponse {

                /**
                 * Constructs a new ExecuteBatchDmlResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IExecuteBatchDmlResponse);

                /** ExecuteBatchDmlResponse resultSets. */
                public resultSets: google.spanner.v1.IResultSet[];

                /** ExecuteBatchDmlResponse status. */
                public status?: (google.rpc.IStatus|null);

                /** ExecuteBatchDmlResponse precommitToken. */
                public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /**
                 * Creates a new ExecuteBatchDmlResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ExecuteBatchDmlResponse instance
                 */
                public static create(properties?: google.spanner.v1.IExecuteBatchDmlResponse): google.spanner.v1.ExecuteBatchDmlResponse;

                /**
                 * Encodes the specified ExecuteBatchDmlResponse message. Does not implicitly {@link google.spanner.v1.ExecuteBatchDmlResponse.verify|verify} messages.
                 * @param message ExecuteBatchDmlResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IExecuteBatchDmlResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ExecuteBatchDmlResponse message, length delimited. Does not implicitly {@link google.spanner.v1.ExecuteBatchDmlResponse.verify|verify} messages.
                 * @param message ExecuteBatchDmlResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IExecuteBatchDmlResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an ExecuteBatchDmlResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ExecuteBatchDmlResponse
                 * @throws {Error} If the payload is 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.spanner.v1.ExecuteBatchDmlResponse;

                /**
                 * Decodes an ExecuteBatchDmlResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ExecuteBatchDmlResponse
                 * @throws {Error} If the 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.spanner.v1.ExecuteBatchDmlResponse;

                /**
                 * Verifies an ExecuteBatchDmlResponse message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an ExecuteBatchDmlResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ExecuteBatchDmlResponse
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ExecuteBatchDmlResponse;

                /**
                 * Creates a plain object from an ExecuteBatchDmlResponse message. Also converts values to other types if specified.
                 * @param message ExecuteBatchDmlResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ExecuteBatchDmlResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ExecuteBatchDmlResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ExecuteBatchDmlResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PartitionOptions. */
            interface IPartitionOptions {

                /** PartitionOptions partitionSizeBytes */
                partitionSizeBytes?: (number|Long|string|null);

                /** PartitionOptions maxPartitions */
                maxPartitions?: (number|Long|string|null);
            }

            /** Represents a PartitionOptions. */
            class PartitionOptions implements IPartitionOptions {

                /**
                 * Constructs a new PartitionOptions.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IPartitionOptions);

                /** PartitionOptions partitionSizeBytes. */
                public partitionSizeBytes: (number|Long|string);

                /** PartitionOptions maxPartitions. */
                public maxPartitions: (number|Long|string);

                /**
                 * Creates a new PartitionOptions instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PartitionOptions instance
                 */
                public static create(properties?: google.spanner.v1.IPartitionOptions): google.spanner.v1.PartitionOptions;

                /**
                 * Encodes the specified PartitionOptions message. Does not implicitly {@link google.spanner.v1.PartitionOptions.verify|verify} messages.
                 * @param message PartitionOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IPartitionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PartitionOptions message, length delimited. Does not implicitly {@link google.spanner.v1.PartitionOptions.verify|verify} messages.
                 * @param message PartitionOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IPartitionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PartitionOptions message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PartitionOptions
                 * @throws {Error} If the payload is 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.spanner.v1.PartitionOptions;

                /**
                 * Decodes a PartitionOptions message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PartitionOptions
                 * @throws {Error} If the 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.spanner.v1.PartitionOptions;

                /**
                 * Verifies a PartitionOptions message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PartitionOptions message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PartitionOptions
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.PartitionOptions;

                /**
                 * Creates a plain object from a PartitionOptions message. Also converts values to other types if specified.
                 * @param message PartitionOptions
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.PartitionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PartitionOptions to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PartitionOptions
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PartitionQueryRequest. */
            interface IPartitionQueryRequest {

                /** PartitionQueryRequest session */
                session?: (string|null);

                /** PartitionQueryRequest transaction */
                transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** PartitionQueryRequest sql */
                sql?: (string|null);

                /** PartitionQueryRequest params */
                params?: (google.protobuf.IStruct|null);

                /** PartitionQueryRequest paramTypes */
                paramTypes?: ({ [k: string]: google.spanner.v1.IType }|null);

                /** PartitionQueryRequest partitionOptions */
                partitionOptions?: (google.spanner.v1.IPartitionOptions|null);
            }

            /** Represents a PartitionQueryRequest. */
            class PartitionQueryRequest implements IPartitionQueryRequest {

                /**
                 * Constructs a new PartitionQueryRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IPartitionQueryRequest);

                /** PartitionQueryRequest session. */
                public session: string;

                /** PartitionQueryRequest transaction. */
                public transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** PartitionQueryRequest sql. */
                public sql: string;

                /** PartitionQueryRequest params. */
                public params?: (google.protobuf.IStruct|null);

                /** PartitionQueryRequest paramTypes. */
                public paramTypes: { [k: string]: google.spanner.v1.IType };

                /** PartitionQueryRequest partitionOptions. */
                public partitionOptions?: (google.spanner.v1.IPartitionOptions|null);

                /**
                 * Creates a new PartitionQueryRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PartitionQueryRequest instance
                 */
                public static create(properties?: google.spanner.v1.IPartitionQueryRequest): google.spanner.v1.PartitionQueryRequest;

                /**
                 * Encodes the specified PartitionQueryRequest message. Does not implicitly {@link google.spanner.v1.PartitionQueryRequest.verify|verify} messages.
                 * @param message PartitionQueryRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IPartitionQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PartitionQueryRequest message, length delimited. Does not implicitly {@link google.spanner.v1.PartitionQueryRequest.verify|verify} messages.
                 * @param message PartitionQueryRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IPartitionQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PartitionQueryRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PartitionQueryRequest
                 * @throws {Error} If the payload is 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.spanner.v1.PartitionQueryRequest;

                /**
                 * Decodes a PartitionQueryRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PartitionQueryRequest
                 * @throws {Error} If the 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.spanner.v1.PartitionQueryRequest;

                /**
                 * Verifies a PartitionQueryRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PartitionQueryRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PartitionQueryRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.PartitionQueryRequest;

                /**
                 * Creates a plain object from a PartitionQueryRequest message. Also converts values to other types if specified.
                 * @param message PartitionQueryRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.PartitionQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PartitionQueryRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PartitionQueryRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PartitionReadRequest. */
            interface IPartitionReadRequest {

                /** PartitionReadRequest session */
                session?: (string|null);

                /** PartitionReadRequest transaction */
                transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** PartitionReadRequest table */
                table?: (string|null);

                /** PartitionReadRequest index */
                index?: (string|null);

                /** PartitionReadRequest columns */
                columns?: (string[]|null);

                /** PartitionReadRequest keySet */
                keySet?: (google.spanner.v1.IKeySet|null);

                /** PartitionReadRequest partitionOptions */
                partitionOptions?: (google.spanner.v1.IPartitionOptions|null);
            }

            /** Represents a PartitionReadRequest. */
            class PartitionReadRequest implements IPartitionReadRequest {

                /**
                 * Constructs a new PartitionReadRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IPartitionReadRequest);

                /** PartitionReadRequest session. */
                public session: string;

                /** PartitionReadRequest transaction. */
                public transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** PartitionReadRequest table. */
                public table: string;

                /** PartitionReadRequest index. */
                public index: string;

                /** PartitionReadRequest columns. */
                public columns: string[];

                /** PartitionReadRequest keySet. */
                public keySet?: (google.spanner.v1.IKeySet|null);

                /** PartitionReadRequest partitionOptions. */
                public partitionOptions?: (google.spanner.v1.IPartitionOptions|null);

                /**
                 * Creates a new PartitionReadRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PartitionReadRequest instance
                 */
                public static create(properties?: google.spanner.v1.IPartitionReadRequest): google.spanner.v1.PartitionReadRequest;

                /**
                 * Encodes the specified PartitionReadRequest message. Does not implicitly {@link google.spanner.v1.PartitionReadRequest.verify|verify} messages.
                 * @param message PartitionReadRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IPartitionReadRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PartitionReadRequest message, length delimited. Does not implicitly {@link google.spanner.v1.PartitionReadRequest.verify|verify} messages.
                 * @param message PartitionReadRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IPartitionReadRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PartitionReadRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PartitionReadRequest
                 * @throws {Error} If the payload is 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.spanner.v1.PartitionReadRequest;

                /**
                 * Decodes a PartitionReadRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PartitionReadRequest
                 * @throws {Error} If the 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.spanner.v1.PartitionReadRequest;

                /**
                 * Verifies a PartitionReadRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PartitionReadRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PartitionReadRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.PartitionReadRequest;

                /**
                 * Creates a plain object from a PartitionReadRequest message. Also converts values to other types if specified.
                 * @param message PartitionReadRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.PartitionReadRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PartitionReadRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PartitionReadRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Partition. */
            interface IPartition {

                /** Partition partitionToken */
                partitionToken?: (Uint8Array|Buffer|string|null);
            }

            /** Represents a Partition. */
            class Partition implements IPartition {

                /**
                 * Constructs a new Partition.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IPartition);

                /** Partition partitionToken. */
                public partitionToken: (Uint8Array|Buffer|string);

                /**
                 * Creates a new Partition instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Partition instance
                 */
                public static create(properties?: google.spanner.v1.IPartition): google.spanner.v1.Partition;

                /**
                 * Encodes the specified Partition message. Does not implicitly {@link google.spanner.v1.Partition.verify|verify} messages.
                 * @param message Partition message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IPartition, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Partition message, length delimited. Does not implicitly {@link google.spanner.v1.Partition.verify|verify} messages.
                 * @param message Partition message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IPartition, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Partition message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Partition
                 * @throws {Error} If the payload is 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.spanner.v1.Partition;

                /**
                 * Decodes a Partition message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Partition
                 * @throws {Error} If the 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.spanner.v1.Partition;

                /**
                 * Verifies a Partition message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Partition message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Partition
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.Partition;

                /**
                 * Creates a plain object from a Partition message. Also converts values to other types if specified.
                 * @param message Partition
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.Partition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Partition to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Partition
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PartitionResponse. */
            interface IPartitionResponse {

                /** PartitionResponse partitions */
                partitions?: (google.spanner.v1.IPartition[]|null);

                /** PartitionResponse transaction */
                transaction?: (google.spanner.v1.ITransaction|null);
            }

            /** Represents a PartitionResponse. */
            class PartitionResponse implements IPartitionResponse {

                /**
                 * Constructs a new PartitionResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IPartitionResponse);

                /** PartitionResponse partitions. */
                public partitions: google.spanner.v1.IPartition[];

                /** PartitionResponse transaction. */
                public transaction?: (google.spanner.v1.ITransaction|null);

                /**
                 * Creates a new PartitionResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PartitionResponse instance
                 */
                public static create(properties?: google.spanner.v1.IPartitionResponse): google.spanner.v1.PartitionResponse;

                /**
                 * Encodes the specified PartitionResponse message. Does not implicitly {@link google.spanner.v1.PartitionResponse.verify|verify} messages.
                 * @param message PartitionResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IPartitionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PartitionResponse message, length delimited. Does not implicitly {@link google.spanner.v1.PartitionResponse.verify|verify} messages.
                 * @param message PartitionResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IPartitionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PartitionResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PartitionResponse
                 * @throws {Error} If the payload is 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.spanner.v1.PartitionResponse;

                /**
                 * Decodes a PartitionResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PartitionResponse
                 * @throws {Error} If the 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.spanner.v1.PartitionResponse;

                /**
                 * Verifies a PartitionResponse message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PartitionResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PartitionResponse
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.PartitionResponse;

                /**
                 * Creates a plain object from a PartitionResponse message. Also converts values to other types if specified.
                 * @param message PartitionResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.PartitionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PartitionResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PartitionResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ReadRequest. */
            interface IReadRequest {

                /** ReadRequest session */
                session?: (string|null);

                /** ReadRequest transaction */
                transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** ReadRequest table */
                table?: (string|null);

                /** ReadRequest index */
                index?: (string|null);

                /** ReadRequest columns */
                columns?: (string[]|null);

                /** ReadRequest keySet */
                keySet?: (google.spanner.v1.IKeySet|null);

                /** ReadRequest limit */
                limit?: (number|Long|string|null);

                /** ReadRequest resumeToken */
                resumeToken?: (Uint8Array|Buffer|string|null);

                /** ReadRequest partitionToken */
                partitionToken?: (Uint8Array|Buffer|string|null);

                /** ReadRequest requestOptions */
                requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** ReadRequest directedReadOptions */
                directedReadOptions?: (google.spanner.v1.IDirectedReadOptions|null);

                /** ReadRequest dataBoostEnabled */
                dataBoostEnabled?: (boolean|null);

                /** ReadRequest orderBy */
                orderBy?: (google.spanner.v1.ReadRequest.OrderBy|keyof typeof google.spanner.v1.ReadRequest.OrderBy|null);

                /** ReadRequest lockHint */
                lockHint?: (google.spanner.v1.ReadRequest.LockHint|keyof typeof google.spanner.v1.ReadRequest.LockHint|null);
            }

            /** Represents a ReadRequest. */
            class ReadRequest implements IReadRequest {

                /**
                 * Constructs a new ReadRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IReadRequest);

                /** ReadRequest session. */
                public session: string;

                /** ReadRequest transaction. */
                public transaction?: (google.spanner.v1.ITransactionSelector|null);

                /** ReadRequest table. */
                public table: string;

                /** ReadRequest index. */
                public index: string;

                /** ReadRequest columns. */
                public columns: string[];

                /** ReadRequest keySet. */
                public keySet?: (google.spanner.v1.IKeySet|null);

                /** ReadRequest limit. */
                public limit: (number|Long|string);

                /** ReadRequest resumeToken. */
                public resumeToken: (Uint8Array|Buffer|string);

                /** ReadRequest partitionToken. */
                public partitionToken: (Uint8Array|Buffer|string);

                /** ReadRequest requestOptions. */
                public requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** ReadRequest directedReadOptions. */
                public directedReadOptions?: (google.spanner.v1.IDirectedReadOptions|null);

                /** ReadRequest dataBoostEnabled. */
                public dataBoostEnabled: boolean;

                /** ReadRequest orderBy. */
                public orderBy: (google.spanner.v1.ReadRequest.OrderBy|keyof typeof google.spanner.v1.ReadRequest.OrderBy);

                /** ReadRequest lockHint. */
                public lockHint: (google.spanner.v1.ReadRequest.LockHint|keyof typeof google.spanner.v1.ReadRequest.LockHint);

                /**
                 * Creates a new ReadRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ReadRequest instance
                 */
                public static create(properties?: google.spanner.v1.IReadRequest): google.spanner.v1.ReadRequest;

                /**
                 * Encodes the specified ReadRequest message. Does not implicitly {@link google.spanner.v1.ReadRequest.verify|verify} messages.
                 * @param message ReadRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IReadRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ReadRequest message, length delimited. Does not implicitly {@link google.spanner.v1.ReadRequest.verify|verify} messages.
                 * @param message ReadRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IReadRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ReadRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ReadRequest
                 * @throws {Error} If the payload is 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.spanner.v1.ReadRequest;

                /**
                 * Decodes a ReadRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ReadRequest
                 * @throws {Error} If the 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.spanner.v1.ReadRequest;

                /**
                 * Verifies a ReadRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ReadRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ReadRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ReadRequest;

                /**
                 * Creates a plain object from a ReadRequest message. Also converts values to other types if specified.
                 * @param message ReadRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ReadRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ReadRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ReadRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace ReadRequest {

                /** OrderBy enum. */
                enum OrderBy {
                    ORDER_BY_UNSPECIFIED = 0,
                    ORDER_BY_PRIMARY_KEY = 1,
                    ORDER_BY_NO_ORDER = 2
                }

                /** LockHint enum. */
                enum LockHint {
                    LOCK_HINT_UNSPECIFIED = 0,
                    LOCK_HINT_SHARED = 1,
                    LOCK_HINT_EXCLUSIVE = 2
                }
            }

            /** Properties of a BeginTransactionRequest. */
            interface IBeginTransactionRequest {

                /** BeginTransactionRequest session */
                session?: (string|null);

                /** BeginTransactionRequest options */
                options?: (google.spanner.v1.ITransactionOptions|null);

                /** BeginTransactionRequest requestOptions */
                requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** BeginTransactionRequest mutationKey */
                mutationKey?: (google.spanner.v1.IMutation|null);
            }

            /** Represents a BeginTransactionRequest. */
            class BeginTransactionRequest implements IBeginTransactionRequest {

                /**
                 * Constructs a new BeginTransactionRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IBeginTransactionRequest);

                /** BeginTransactionRequest session. */
                public session: string;

                /** BeginTransactionRequest options. */
                public options?: (google.spanner.v1.ITransactionOptions|null);

                /** BeginTransactionRequest requestOptions. */
                public requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** BeginTransactionRequest mutationKey. */
                public mutationKey?: (google.spanner.v1.IMutation|null);

                /**
                 * Creates a new BeginTransactionRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns BeginTransactionRequest instance
                 */
                public static create(properties?: google.spanner.v1.IBeginTransactionRequest): google.spanner.v1.BeginTransactionRequest;

                /**
                 * Encodes the specified BeginTransactionRequest message. Does not implicitly {@link google.spanner.v1.BeginTransactionRequest.verify|verify} messages.
                 * @param message BeginTransactionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified BeginTransactionRequest message, length delimited. Does not implicitly {@link google.spanner.v1.BeginTransactionRequest.verify|verify} messages.
                 * @param message BeginTransactionRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IBeginTransactionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a BeginTransactionRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns BeginTransactionRequest
                 * @throws {Error} If the payload is 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.spanner.v1.BeginTransactionRequest;

                /**
                 * Decodes a BeginTransactionRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns BeginTransactionRequest
                 * @throws {Error} If the 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.spanner.v1.BeginTransactionRequest;

                /**
                 * Verifies a BeginTransactionRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a BeginTransactionRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns BeginTransactionRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.BeginTransactionRequest;

                /**
                 * Creates a plain object from a BeginTransactionRequest message. Also converts values to other types if specified.
                 * @param message BeginTransactionRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.BeginTransactionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this BeginTransactionRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for BeginTransactionRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a CommitRequest. */
            interface ICommitRequest {

                /** CommitRequest session */
                session?: (string|null);

                /** CommitRequest transactionId */
                transactionId?: (Uint8Array|Buffer|string|null);

                /** CommitRequest singleUseTransaction */
                singleUseTransaction?: (google.spanner.v1.ITransactionOptions|null);

                /** CommitRequest mutations */
                mutations?: (google.spanner.v1.IMutation[]|null);

                /** CommitRequest returnCommitStats */
                returnCommitStats?: (boolean|null);

                /** CommitRequest maxCommitDelay */
                maxCommitDelay?: (google.protobuf.IDuration|null);

                /** CommitRequest requestOptions */
                requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** CommitRequest precommitToken */
                precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);
            }

            /** Represents a CommitRequest. */
            class CommitRequest implements ICommitRequest {

                /**
                 * Constructs a new CommitRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.ICommitRequest);

                /** CommitRequest session. */
                public session: string;

                /** CommitRequest transactionId. */
                public transactionId?: (Uint8Array|Buffer|string|null);

                /** CommitRequest singleUseTransaction. */
                public singleUseTransaction?: (google.spanner.v1.ITransactionOptions|null);

                /** CommitRequest mutations. */
                public mutations: google.spanner.v1.IMutation[];

                /** CommitRequest returnCommitStats. */
                public returnCommitStats: boolean;

                /** CommitRequest maxCommitDelay. */
                public maxCommitDelay?: (google.protobuf.IDuration|null);

                /** CommitRequest requestOptions. */
                public requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** CommitRequest precommitToken. */
                public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /** CommitRequest transaction. */
                public transaction?: ("transactionId"|"singleUseTransaction");

                /**
                 * Creates a new CommitRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns CommitRequest instance
                 */
                public static create(properties?: google.spanner.v1.ICommitRequest): google.spanner.v1.CommitRequest;

                /**
                 * Encodes the specified CommitRequest message. Does not implicitly {@link google.spanner.v1.CommitRequest.verify|verify} messages.
                 * @param message CommitRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified CommitRequest message, length delimited. Does not implicitly {@link google.spanner.v1.CommitRequest.verify|verify} messages.
                 * @param message CommitRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.ICommitRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a CommitRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns CommitRequest
                 * @throws {Error} If the payload is 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.spanner.v1.CommitRequest;

                /**
                 * Decodes a CommitRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns CommitRequest
                 * @throws {Error} If the 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.spanner.v1.CommitRequest;

                /**
                 * Verifies a CommitRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a CommitRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns CommitRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.CommitRequest;

                /**
                 * Creates a plain object from a CommitRequest message. Also converts values to other types if specified.
                 * @param message CommitRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.CommitRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this CommitRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for CommitRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a RollbackRequest. */
            interface IRollbackRequest {

                /** RollbackRequest session */
                session?: (string|null);

                /** RollbackRequest transactionId */
                transactionId?: (Uint8Array|Buffer|string|null);
            }

            /** Represents a RollbackRequest. */
            class RollbackRequest implements IRollbackRequest {

                /**
                 * Constructs a new RollbackRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IRollbackRequest);

                /** RollbackRequest session. */
                public session: string;

                /** RollbackRequest transactionId. */
                public transactionId: (Uint8Array|Buffer|string);

                /**
                 * Creates a new RollbackRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns RollbackRequest instance
                 */
                public static create(properties?: google.spanner.v1.IRollbackRequest): google.spanner.v1.RollbackRequest;

                /**
                 * Encodes the specified RollbackRequest message. Does not implicitly {@link google.spanner.v1.RollbackRequest.verify|verify} messages.
                 * @param message RollbackRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified RollbackRequest message, length delimited. Does not implicitly {@link google.spanner.v1.RollbackRequest.verify|verify} messages.
                 * @param message RollbackRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IRollbackRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a RollbackRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns RollbackRequest
                 * @throws {Error} If the payload is 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.spanner.v1.RollbackRequest;

                /**
                 * Decodes a RollbackRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns RollbackRequest
                 * @throws {Error} If the 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.spanner.v1.RollbackRequest;

                /**
                 * Verifies a RollbackRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a RollbackRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns RollbackRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.RollbackRequest;

                /**
                 * Creates a plain object from a RollbackRequest message. Also converts values to other types if specified.
                 * @param message RollbackRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.RollbackRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this RollbackRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for RollbackRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a BatchWriteRequest. */
            interface IBatchWriteRequest {

                /** BatchWriteRequest session */
                session?: (string|null);

                /** BatchWriteRequest requestOptions */
                requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** BatchWriteRequest mutationGroups */
                mutationGroups?: (google.spanner.v1.BatchWriteRequest.IMutationGroup[]|null);

                /** BatchWriteRequest excludeTxnFromChangeStreams */
                excludeTxnFromChangeStreams?: (boolean|null);
            }

            /** Represents a BatchWriteRequest. */
            class BatchWriteRequest implements IBatchWriteRequest {

                /**
                 * Constructs a new BatchWriteRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IBatchWriteRequest);

                /** BatchWriteRequest session. */
                public session: string;

                /** BatchWriteRequest requestOptions. */
                public requestOptions?: (google.spanner.v1.IRequestOptions|null);

                /** BatchWriteRequest mutationGroups. */
                public mutationGroups: google.spanner.v1.BatchWriteRequest.IMutationGroup[];

                /** BatchWriteRequest excludeTxnFromChangeStreams. */
                public excludeTxnFromChangeStreams: boolean;

                /**
                 * Creates a new BatchWriteRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns BatchWriteRequest instance
                 */
                public static create(properties?: google.spanner.v1.IBatchWriteRequest): google.spanner.v1.BatchWriteRequest;

                /**
                 * Encodes the specified BatchWriteRequest message. Does not implicitly {@link google.spanner.v1.BatchWriteRequest.verify|verify} messages.
                 * @param message BatchWriteRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IBatchWriteRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified BatchWriteRequest message, length delimited. Does not implicitly {@link google.spanner.v1.BatchWriteRequest.verify|verify} messages.
                 * @param message BatchWriteRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IBatchWriteRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a BatchWriteRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns BatchWriteRequest
                 * @throws {Error} If the payload is 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.spanner.v1.BatchWriteRequest;

                /**
                 * Decodes a BatchWriteRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns BatchWriteRequest
                 * @throws {Error} If the 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.spanner.v1.BatchWriteRequest;

                /**
                 * Verifies a BatchWriteRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a BatchWriteRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns BatchWriteRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.BatchWriteRequest;

                /**
                 * Creates a plain object from a BatchWriteRequest message. Also converts values to other types if specified.
                 * @param message BatchWriteRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.BatchWriteRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this BatchWriteRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for BatchWriteRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace BatchWriteRequest {

                /** Properties of a MutationGroup. */
                interface IMutationGroup {

                    /** MutationGroup mutations */
                    mutations?: (google.spanner.v1.IMutation[]|null);
                }

                /** Represents a MutationGroup. */
                class MutationGroup implements IMutationGroup {

                    /**
                     * Constructs a new MutationGroup.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.BatchWriteRequest.IMutationGroup);

                    /** MutationGroup mutations. */
                    public mutations: google.spanner.v1.IMutation[];

                    /**
                     * Creates a new MutationGroup instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MutationGroup instance
                     */
                    public static create(properties?: google.spanner.v1.BatchWriteRequest.IMutationGroup): google.spanner.v1.BatchWriteRequest.MutationGroup;

                    /**
                     * Encodes the specified MutationGroup message. Does not implicitly {@link google.spanner.v1.BatchWriteRequest.MutationGroup.verify|verify} messages.
                     * @param message MutationGroup message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.BatchWriteRequest.IMutationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MutationGroup message, length delimited. Does not implicitly {@link google.spanner.v1.BatchWriteRequest.MutationGroup.verify|verify} messages.
                     * @param message MutationGroup message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.BatchWriteRequest.IMutationGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MutationGroup message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MutationGroup
                     * @throws {Error} If the payload is 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.spanner.v1.BatchWriteRequest.MutationGroup;

                    /**
                     * Decodes a MutationGroup message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MutationGroup
                     * @throws {Error} If the 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.spanner.v1.BatchWriteRequest.MutationGroup;

                    /**
                     * Verifies a MutationGroup message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a MutationGroup message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MutationGroup
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.BatchWriteRequest.MutationGroup;

                    /**
                     * Creates a plain object from a MutationGroup message. Also converts values to other types if specified.
                     * @param message MutationGroup
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.BatchWriteRequest.MutationGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MutationGroup to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MutationGroup
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of a BatchWriteResponse. */
            interface IBatchWriteResponse {

                /** BatchWriteResponse indexes */
                indexes?: (number[]|null);

                /** BatchWriteResponse status */
                status?: (google.rpc.IStatus|null);

                /** BatchWriteResponse commitTimestamp */
                commitTimestamp?: (google.protobuf.ITimestamp|null);
            }

            /** Represents a BatchWriteResponse. */
            class BatchWriteResponse implements IBatchWriteResponse {

                /**
                 * Constructs a new BatchWriteResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IBatchWriteResponse);

                /** BatchWriteResponse indexes. */
                public indexes: number[];

                /** BatchWriteResponse status. */
                public status?: (google.rpc.IStatus|null);

                /** BatchWriteResponse commitTimestamp. */
                public commitTimestamp?: (google.protobuf.ITimestamp|null);

                /**
                 * Creates a new BatchWriteResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns BatchWriteResponse instance
                 */
                public static create(properties?: google.spanner.v1.IBatchWriteResponse): google.spanner.v1.BatchWriteResponse;

                /**
                 * Encodes the specified BatchWriteResponse message. Does not implicitly {@link google.spanner.v1.BatchWriteResponse.verify|verify} messages.
                 * @param message BatchWriteResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IBatchWriteResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified BatchWriteResponse message, length delimited. Does not implicitly {@link google.spanner.v1.BatchWriteResponse.verify|verify} messages.
                 * @param message BatchWriteResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IBatchWriteResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a BatchWriteResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns BatchWriteResponse
                 * @throws {Error} If the payload is 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.spanner.v1.BatchWriteResponse;

                /**
                 * Decodes a BatchWriteResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns BatchWriteResponse
                 * @throws {Error} If the 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.spanner.v1.BatchWriteResponse;

                /**
                 * Verifies a BatchWriteResponse message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a BatchWriteResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns BatchWriteResponse
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.BatchWriteResponse;

                /**
                 * Creates a plain object from a BatchWriteResponse message. Also converts values to other types if specified.
                 * @param message BatchWriteResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.BatchWriteResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this BatchWriteResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for BatchWriteResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a CommitResponse. */
            interface ICommitResponse {

                /** CommitResponse commitTimestamp */
                commitTimestamp?: (google.protobuf.ITimestamp|null);

                /** CommitResponse commitStats */
                commitStats?: (google.spanner.v1.CommitResponse.ICommitStats|null);

                /** CommitResponse precommitToken */
                precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /** CommitResponse snapshotTimestamp */
                snapshotTimestamp?: (google.protobuf.ITimestamp|null);
            }

            /** Represents a CommitResponse. */
            class CommitResponse implements ICommitResponse {

                /**
                 * Constructs a new CommitResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.ICommitResponse);

                /** CommitResponse commitTimestamp. */
                public commitTimestamp?: (google.protobuf.ITimestamp|null);

                /** CommitResponse commitStats. */
                public commitStats?: (google.spanner.v1.CommitResponse.ICommitStats|null);

                /** CommitResponse precommitToken. */
                public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /** CommitResponse snapshotTimestamp. */
                public snapshotTimestamp?: (google.protobuf.ITimestamp|null);

                /** CommitResponse MultiplexedSessionRetry. */
                public MultiplexedSessionRetry?: "precommitToken";

                /**
                 * Creates a new CommitResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns CommitResponse instance
                 */
                public static create(properties?: google.spanner.v1.ICommitResponse): google.spanner.v1.CommitResponse;

                /**
                 * Encodes the specified CommitResponse message. Does not implicitly {@link google.spanner.v1.CommitResponse.verify|verify} messages.
                 * @param message CommitResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified CommitResponse message, length delimited. Does not implicitly {@link google.spanner.v1.CommitResponse.verify|verify} messages.
                 * @param message CommitResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.ICommitResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a CommitResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns CommitResponse
                 * @throws {Error} If the payload is 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.spanner.v1.CommitResponse;

                /**
                 * Decodes a CommitResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns CommitResponse
                 * @throws {Error} If the 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.spanner.v1.CommitResponse;

                /**
                 * Verifies a CommitResponse message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a CommitResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns CommitResponse
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.CommitResponse;

                /**
                 * Creates a plain object from a CommitResponse message. Also converts values to other types if specified.
                 * @param message CommitResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.CommitResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this CommitResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for CommitResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace CommitResponse {

                /** Properties of a CommitStats. */
                interface ICommitStats {

                    /** CommitStats mutationCount */
                    mutationCount?: (number|Long|string|null);
                }

                /** Represents a CommitStats. */
                class CommitStats implements ICommitStats {

                    /**
                     * Constructs a new CommitStats.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.CommitResponse.ICommitStats);

                    /** CommitStats mutationCount. */
                    public mutationCount: (number|Long|string);

                    /**
                     * Creates a new CommitStats instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CommitStats instance
                     */
                    public static create(properties?: google.spanner.v1.CommitResponse.ICommitStats): google.spanner.v1.CommitResponse.CommitStats;

                    /**
                     * Encodes the specified CommitStats message. Does not implicitly {@link google.spanner.v1.CommitResponse.CommitStats.verify|verify} messages.
                     * @param message CommitStats message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.CommitResponse.ICommitStats, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CommitStats message, length delimited. Does not implicitly {@link google.spanner.v1.CommitResponse.CommitStats.verify|verify} messages.
                     * @param message CommitStats message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.CommitResponse.ICommitStats, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CommitStats message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CommitStats
                     * @throws {Error} If the payload is 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.spanner.v1.CommitResponse.CommitStats;

                    /**
                     * Decodes a CommitStats message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CommitStats
                     * @throws {Error} If the 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.spanner.v1.CommitResponse.CommitStats;

                    /**
                     * Verifies a CommitStats message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a CommitStats message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CommitStats
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.CommitResponse.CommitStats;

                    /**
                     * Creates a plain object from a CommitStats message. Also converts values to other types if specified.
                     * @param message CommitStats
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.CommitResponse.CommitStats, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CommitStats to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CommitStats
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of a TransactionOptions. */
            interface ITransactionOptions {

                /** TransactionOptions readWrite */
                readWrite?: (google.spanner.v1.TransactionOptions.IReadWrite|null);

                /** TransactionOptions partitionedDml */
                partitionedDml?: (google.spanner.v1.TransactionOptions.IPartitionedDml|null);

                /** TransactionOptions readOnly */
                readOnly?: (google.spanner.v1.TransactionOptions.IReadOnly|null);

                /** TransactionOptions excludeTxnFromChangeStreams */
                excludeTxnFromChangeStreams?: (boolean|null);

                /** TransactionOptions isolationLevel */
                isolationLevel?: (google.spanner.v1.TransactionOptions.IsolationLevel|keyof typeof google.spanner.v1.TransactionOptions.IsolationLevel|null);
            }

            /** Represents a TransactionOptions. */
            class TransactionOptions implements ITransactionOptions {

                /**
                 * Constructs a new TransactionOptions.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.ITransactionOptions);

                /** TransactionOptions readWrite. */
                public readWrite?: (google.spanner.v1.TransactionOptions.IReadWrite|null);

                /** TransactionOptions partitionedDml. */
                public partitionedDml?: (google.spanner.v1.TransactionOptions.IPartitionedDml|null);

                /** TransactionOptions readOnly. */
                public readOnly?: (google.spanner.v1.TransactionOptions.IReadOnly|null);

                /** TransactionOptions excludeTxnFromChangeStreams. */
                public excludeTxnFromChangeStreams: boolean;

                /** TransactionOptions isolationLevel. */
                public isolationLevel: (google.spanner.v1.TransactionOptions.IsolationLevel|keyof typeof google.spanner.v1.TransactionOptions.IsolationLevel);

                /** TransactionOptions mode. */
                public mode?: ("readWrite"|"partitionedDml"|"readOnly");

                /**
                 * Creates a new TransactionOptions instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns TransactionOptions instance
                 */
                public static create(properties?: google.spanner.v1.ITransactionOptions): google.spanner.v1.TransactionOptions;

                /**
                 * Encodes the specified TransactionOptions message. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages.
                 * @param message TransactionOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages.
                 * @param message TransactionOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a TransactionOptions message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns TransactionOptions
                 * @throws {Error} If the payload is 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.spanner.v1.TransactionOptions;

                /**
                 * Decodes a TransactionOptions message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns TransactionOptions
                 * @throws {Error} If the 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.spanner.v1.TransactionOptions;

                /**
                 * Verifies a TransactionOptions message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns TransactionOptions
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions;

                /**
                 * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified.
                 * @param message TransactionOptions
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this TransactionOptions to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for TransactionOptions
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace TransactionOptions {

                /** Properties of a ReadWrite. */
                interface IReadWrite {

                    /** ReadWrite readLockMode */
                    readLockMode?: (google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|keyof typeof google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|null);

                    /** ReadWrite multiplexedSessionPreviousTransactionId */
                    multiplexedSessionPreviousTransactionId?: (Uint8Array|Buffer|string|null);
                }

                /** Represents a ReadWrite. */
                class ReadWrite implements IReadWrite {

                    /**
                     * Constructs a new ReadWrite.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.TransactionOptions.IReadWrite);

                    /** ReadWrite readLockMode. */
                    public readLockMode: (google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|keyof typeof google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode);

                    /** ReadWrite multiplexedSessionPreviousTransactionId. */
                    public multiplexedSessionPreviousTransactionId: (Uint8Array|Buffer|string);

                    /**
                     * Creates a new ReadWrite instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReadWrite instance
                     */
                    public static create(properties?: google.spanner.v1.TransactionOptions.IReadWrite): google.spanner.v1.TransactionOptions.ReadWrite;

                    /**
                     * Encodes the specified ReadWrite message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages.
                     * @param message ReadWrite message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages.
                     * @param message ReadWrite message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReadWrite message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReadWrite
                     * @throws {Error} If the payload is 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.spanner.v1.TransactionOptions.ReadWrite;

                    /**
                     * Decodes a ReadWrite message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReadWrite
                     * @throws {Error} If the 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.spanner.v1.TransactionOptions.ReadWrite;

                    /**
                     * Verifies a ReadWrite message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReadWrite
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.ReadWrite;

                    /**
                     * Creates a plain object from a ReadWrite message. Also converts values to other types if specified.
                     * @param message ReadWrite
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReadWrite to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReadWrite
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ReadWrite {

                    /** ReadLockMode enum. */
                    enum ReadLockMode {
                        READ_LOCK_MODE_UNSPECIFIED = 0,
                        PESSIMISTIC = 1,
                        OPTIMISTIC = 2
                    }
                }

                /** Properties of a PartitionedDml. */
                interface IPartitionedDml {
                }

                /** Represents a PartitionedDml. */
                class PartitionedDml implements IPartitionedDml {

                    /**
                     * Constructs a new PartitionedDml.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.TransactionOptions.IPartitionedDml);

                    /**
                     * Creates a new PartitionedDml instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PartitionedDml instance
                     */
                    public static create(properties?: google.spanner.v1.TransactionOptions.IPartitionedDml): google.spanner.v1.TransactionOptions.PartitionedDml;

                    /**
                     * Encodes the specified PartitionedDml message. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages.
                     * @param message PartitionedDml message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.TransactionOptions.IPartitionedDml, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PartitionedDml message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages.
                     * @param message PartitionedDml message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IPartitionedDml, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PartitionedDml message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PartitionedDml
                     * @throws {Error} If the payload is 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.spanner.v1.TransactionOptions.PartitionedDml;

                    /**
                     * Decodes a PartitionedDml message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PartitionedDml
                     * @throws {Error} If the 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.spanner.v1.TransactionOptions.PartitionedDml;

                    /**
                     * Verifies a PartitionedDml message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PartitionedDml message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PartitionedDml
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.PartitionedDml;

                    /**
                     * Creates a plain object from a PartitionedDml message. Also converts values to other types if specified.
                     * @param message PartitionedDml
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.TransactionOptions.PartitionedDml, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PartitionedDml to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PartitionedDml
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ReadOnly. */
                interface IReadOnly {

                    /** ReadOnly strong */
                    strong?: (boolean|null);

                    /** ReadOnly minReadTimestamp */
                    minReadTimestamp?: (google.protobuf.ITimestamp|null);

                    /** ReadOnly maxStaleness */
                    maxStaleness?: (google.protobuf.IDuration|null);

                    /** ReadOnly readTimestamp */
                    readTimestamp?: (google.protobuf.ITimestamp|null);

                    /** ReadOnly exactStaleness */
                    exactStaleness?: (google.protobuf.IDuration|null);

                    /** ReadOnly returnReadTimestamp */
                    returnReadTimestamp?: (boolean|null);
                }

                /** Represents a ReadOnly. */
                class ReadOnly implements IReadOnly {

                    /**
                     * Constructs a new ReadOnly.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.TransactionOptions.IReadOnly);

                    /** ReadOnly strong. */
                    public strong?: (boolean|null);

                    /** ReadOnly minReadTimestamp. */
                    public minReadTimestamp?: (google.protobuf.ITimestamp|null);

                    /** ReadOnly maxStaleness. */
                    public maxStaleness?: (google.protobuf.IDuration|null);

                    /** ReadOnly readTimestamp. */
                    public readTimestamp?: (google.protobuf.ITimestamp|null);

                    /** ReadOnly exactStaleness. */
                    public exactStaleness?: (google.protobuf.IDuration|null);

                    /** ReadOnly returnReadTimestamp. */
                    public returnReadTimestamp: boolean;

                    /** ReadOnly timestampBound. */
                    public timestampBound?: ("strong"|"minReadTimestamp"|"maxStaleness"|"readTimestamp"|"exactStaleness");

                    /**
                     * Creates a new ReadOnly instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReadOnly instance
                     */
                    public static create(properties?: google.spanner.v1.TransactionOptions.IReadOnly): google.spanner.v1.TransactionOptions.ReadOnly;

                    /**
                     * Encodes the specified ReadOnly message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages.
                     * @param message ReadOnly message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages.
                     * @param message ReadOnly message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReadOnly message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReadOnly
                     * @throws {Error} If the payload is 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.spanner.v1.TransactionOptions.ReadOnly;

                    /**
                     * Decodes a ReadOnly message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReadOnly
                     * @throws {Error} If the 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.spanner.v1.TransactionOptions.ReadOnly;

                    /**
                     * Verifies a ReadOnly message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReadOnly
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.ReadOnly;

                    /**
                     * Creates a plain object from a ReadOnly message. Also converts values to other types if specified.
                     * @param message ReadOnly
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReadOnly to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReadOnly
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** IsolationLevel enum. */
                enum IsolationLevel {
                    ISOLATION_LEVEL_UNSPECIFIED = 0,
                    SERIALIZABLE = 1,
                    REPEATABLE_READ = 2
                }
            }

            /** Properties of a Transaction. */
            interface ITransaction {

                /** Transaction id */
                id?: (Uint8Array|Buffer|string|null);

                /** Transaction readTimestamp */
                readTimestamp?: (google.protobuf.ITimestamp|null);

                /** Transaction precommitToken */
                precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);
            }

            /** Represents a Transaction. */
            class Transaction implements ITransaction {

                /**
                 * Constructs a new Transaction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.ITransaction);

                /** Transaction id. */
                public id: (Uint8Array|Buffer|string);

                /** Transaction readTimestamp. */
                public readTimestamp?: (google.protobuf.ITimestamp|null);

                /** Transaction precommitToken. */
                public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /**
                 * Creates a new Transaction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Transaction instance
                 */
                public static create(properties?: google.spanner.v1.ITransaction): google.spanner.v1.Transaction;

                /**
                 * Encodes the specified Transaction message. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages.
                 * @param message Transaction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.ITransaction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Transaction message, length delimited. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages.
                 * @param message Transaction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.ITransaction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Transaction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Transaction
                 * @throws {Error} If the payload is 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.spanner.v1.Transaction;

                /**
                 * Decodes a Transaction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Transaction
                 * @throws {Error} If the 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.spanner.v1.Transaction;

                /**
                 * Verifies a Transaction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Transaction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Transaction
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.Transaction;

                /**
                 * Creates a plain object from a Transaction message. Also converts values to other types if specified.
                 * @param message Transaction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.Transaction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Transaction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Transaction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a TransactionSelector. */
            interface ITransactionSelector {

                /** TransactionSelector singleUse */
                singleUse?: (google.spanner.v1.ITransactionOptions|null);

                /** TransactionSelector id */
                id?: (Uint8Array|Buffer|string|null);

                /** TransactionSelector begin */
                begin?: (google.spanner.v1.ITransactionOptions|null);
            }

            /** Represents a TransactionSelector. */
            class TransactionSelector implements ITransactionSelector {

                /**
                 * Constructs a new TransactionSelector.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.ITransactionSelector);

                /** TransactionSelector singleUse. */
                public singleUse?: (google.spanner.v1.ITransactionOptions|null);

                /** TransactionSelector id. */
                public id?: (Uint8Array|Buffer|string|null);

                /** TransactionSelector begin. */
                public begin?: (google.spanner.v1.ITransactionOptions|null);

                /** TransactionSelector selector. */
                public selector?: ("singleUse"|"id"|"begin");

                /**
                 * Creates a new TransactionSelector instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns TransactionSelector instance
                 */
                public static create(properties?: google.spanner.v1.ITransactionSelector): google.spanner.v1.TransactionSelector;

                /**
                 * Encodes the specified TransactionSelector message. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages.
                 * @param message TransactionSelector message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.ITransactionSelector, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified TransactionSelector message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages.
                 * @param message TransactionSelector message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.ITransactionSelector, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a TransactionSelector message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns TransactionSelector
                 * @throws {Error} If the payload is 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.spanner.v1.TransactionSelector;

                /**
                 * Decodes a TransactionSelector message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns TransactionSelector
                 * @throws {Error} If the 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.spanner.v1.TransactionSelector;

                /**
                 * Verifies a TransactionSelector message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a TransactionSelector message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns TransactionSelector
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionSelector;

                /**
                 * Creates a plain object from a TransactionSelector message. Also converts values to other types if specified.
                 * @param message TransactionSelector
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.TransactionSelector, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this TransactionSelector to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for TransactionSelector
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a MultiplexedSessionPrecommitToken. */
            interface IMultiplexedSessionPrecommitToken {

                /** MultiplexedSessionPrecommitToken precommitToken */
                precommitToken?: (Uint8Array|Buffer|string|null);

                /** MultiplexedSessionPrecommitToken seqNum */
                seqNum?: (number|null);
            }

            /** Represents a MultiplexedSessionPrecommitToken. */
            class MultiplexedSessionPrecommitToken implements IMultiplexedSessionPrecommitToken {

                /**
                 * Constructs a new MultiplexedSessionPrecommitToken.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IMultiplexedSessionPrecommitToken);

                /** MultiplexedSessionPrecommitToken precommitToken. */
                public precommitToken: (Uint8Array|Buffer|string);

                /** MultiplexedSessionPrecommitToken seqNum. */
                public seqNum: number;

                /**
                 * Creates a new MultiplexedSessionPrecommitToken instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns MultiplexedSessionPrecommitToken instance
                 */
                public static create(properties?: google.spanner.v1.IMultiplexedSessionPrecommitToken): google.spanner.v1.MultiplexedSessionPrecommitToken;

                /**
                 * Encodes the specified MultiplexedSessionPrecommitToken message. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages.
                 * @param message MultiplexedSessionPrecommitToken message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IMultiplexedSessionPrecommitToken, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified MultiplexedSessionPrecommitToken message, length delimited. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages.
                 * @param message MultiplexedSessionPrecommitToken message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IMultiplexedSessionPrecommitToken, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns MultiplexedSessionPrecommitToken
                 * @throws {Error} If the payload is 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.spanner.v1.MultiplexedSessionPrecommitToken;

                /**
                 * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns MultiplexedSessionPrecommitToken
                 * @throws {Error} If the 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.spanner.v1.MultiplexedSessionPrecommitToken;

                /**
                 * Verifies a MultiplexedSessionPrecommitToken message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a MultiplexedSessionPrecommitToken message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns MultiplexedSessionPrecommitToken
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.MultiplexedSessionPrecommitToken;

                /**
                 * Creates a plain object from a MultiplexedSessionPrecommitToken message. Also converts values to other types if specified.
                 * @param message MultiplexedSessionPrecommitToken
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.MultiplexedSessionPrecommitToken, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this MultiplexedSessionPrecommitToken to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for MultiplexedSessionPrecommitToken
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a KeyRange. */
            interface IKeyRange {

                /** KeyRange startClosed */
                startClosed?: (google.protobuf.IListValue|null);

                /** KeyRange startOpen */
                startOpen?: (google.protobuf.IListValue|null);

                /** KeyRange endClosed */
                endClosed?: (google.protobuf.IListValue|null);

                /** KeyRange endOpen */
                endOpen?: (google.protobuf.IListValue|null);
            }

            /** Represents a KeyRange. */
            class KeyRange implements IKeyRange {

                /**
                 * Constructs a new KeyRange.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IKeyRange);

                /** KeyRange startClosed. */
                public startClosed?: (google.protobuf.IListValue|null);

                /** KeyRange startOpen. */
                public startOpen?: (google.protobuf.IListValue|null);

                /** KeyRange endClosed. */
                public endClosed?: (google.protobuf.IListValue|null);

                /** KeyRange endOpen. */
                public endOpen?: (google.protobuf.IListValue|null);

                /** KeyRange startKeyType. */
                public startKeyType?: ("startClosed"|"startOpen");

                /** KeyRange endKeyType. */
                public endKeyType?: ("endClosed"|"endOpen");

                /**
                 * Creates a new KeyRange instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns KeyRange instance
                 */
                public static create(properties?: google.spanner.v1.IKeyRange): google.spanner.v1.KeyRange;

                /**
                 * Encodes the specified KeyRange message. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages.
                 * @param message KeyRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified KeyRange message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages.
                 * @param message KeyRange message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a KeyRange message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns KeyRange
                 * @throws {Error} If the payload is 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.spanner.v1.KeyRange;

                /**
                 * Decodes a KeyRange message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns KeyRange
                 * @throws {Error} If the 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.spanner.v1.KeyRange;

                /**
                 * Verifies a KeyRange message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a KeyRange message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns KeyRange
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeyRange;

                /**
                 * Creates a plain object from a KeyRange message. Also converts values to other types if specified.
                 * @param message KeyRange
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.KeyRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this KeyRange to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for KeyRange
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a KeySet. */
            interface IKeySet {

                /** KeySet keys */
                keys?: (google.protobuf.IListValue[]|null);

                /** KeySet ranges */
                ranges?: (google.spanner.v1.IKeyRange[]|null);

                /** KeySet all */
                all?: (boolean|null);
            }

            /** Represents a KeySet. */
            class KeySet implements IKeySet {

                /**
                 * Constructs a new KeySet.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IKeySet);

                /** KeySet keys. */
                public keys: google.protobuf.IListValue[];

                /** KeySet ranges. */
                public ranges: google.spanner.v1.IKeyRange[];

                /** KeySet all. */
                public all: boolean;

                /**
                 * Creates a new KeySet instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns KeySet instance
                 */
                public static create(properties?: google.spanner.v1.IKeySet): google.spanner.v1.KeySet;

                /**
                 * Encodes the specified KeySet message. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages.
                 * @param message KeySet message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified KeySet message, length delimited. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages.
                 * @param message KeySet message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a KeySet message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns KeySet
                 * @throws {Error} If the payload is 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.spanner.v1.KeySet;

                /**
                 * Decodes a KeySet message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns KeySet
                 * @throws {Error} If the 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.spanner.v1.KeySet;

                /**
                 * Verifies a KeySet message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a KeySet message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns KeySet
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeySet;

                /**
                 * Creates a plain object from a KeySet message. Also converts values to other types if specified.
                 * @param message KeySet
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.KeySet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this KeySet to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for KeySet
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Mutation. */
            interface IMutation {

                /** Mutation insert */
                insert?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation update */
                update?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation insertOrUpdate */
                insertOrUpdate?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation replace */
                replace?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation delete */
                "delete"?: (google.spanner.v1.Mutation.IDelete|null);
            }

            /** Represents a Mutation. */
            class Mutation implements IMutation {

                /**
                 * Constructs a new Mutation.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IMutation);

                /** Mutation insert. */
                public insert?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation update. */
                public update?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation insertOrUpdate. */
                public insertOrUpdate?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation replace. */
                public replace?: (google.spanner.v1.Mutation.IWrite|null);

                /** Mutation delete. */
                public delete?: (google.spanner.v1.Mutation.IDelete|null);

                /** Mutation operation. */
                public operation?: ("insert"|"update"|"insertOrUpdate"|"replace"|"delete");

                /**
                 * Creates a new Mutation instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Mutation instance
                 */
                public static create(properties?: google.spanner.v1.IMutation): google.spanner.v1.Mutation;

                /**
                 * Encodes the specified Mutation message. Does not implicitly {@link google.spanner.v1.Mutation.verify|verify} messages.
                 * @param message Mutation message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Mutation message, length delimited. Does not implicitly {@link google.spanner.v1.Mutation.verify|verify} messages.
                 * @param message Mutation message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IMutation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Mutation message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Mutation
                 * @throws {Error} If the payload is 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.spanner.v1.Mutation;

                /**
                 * Decodes a Mutation message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Mutation
                 * @throws {Error} If the 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.spanner.v1.Mutation;

                /**
                 * Verifies a Mutation message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Mutation message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Mutation
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.Mutation;

                /**
                 * Creates a plain object from a Mutation message. Also converts values to other types if specified.
                 * @param message Mutation
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.Mutation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Mutation to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Mutation
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace Mutation {

                /** Properties of a Write. */
                interface IWrite {

                    /** Write table */
                    table?: (string|null);

                    /** Write columns */
                    columns?: (string[]|null);

                    /** Write values */
                    values?: (google.protobuf.IListValue[]|null);
                }

                /** Represents a Write. */
                class Write implements IWrite {

                    /**
                     * Constructs a new Write.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.Mutation.IWrite);

                    /** Write table. */
                    public table: string;

                    /** Write columns. */
                    public columns: string[];

                    /** Write values. */
                    public values: google.protobuf.IListValue[];

                    /**
                     * Creates a new Write instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Write instance
                     */
                    public static create(properties?: google.spanner.v1.Mutation.IWrite): google.spanner.v1.Mutation.Write;

                    /**
                     * Encodes the specified Write message. Does not implicitly {@link google.spanner.v1.Mutation.Write.verify|verify} messages.
                     * @param message Write message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.Mutation.IWrite, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Write message, length delimited. Does not implicitly {@link google.spanner.v1.Mutation.Write.verify|verify} messages.
                     * @param message Write message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.Mutation.IWrite, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Write message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Write
                     * @throws {Error} If the payload is 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.spanner.v1.Mutation.Write;

                    /**
                     * Decodes a Write message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Write
                     * @throws {Error} If the 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.spanner.v1.Mutation.Write;

                    /**
                     * Verifies a Write message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Write message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Write
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.Mutation.Write;

                    /**
                     * Creates a plain object from a Write message. Also converts values to other types if specified.
                     * @param message Write
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.Mutation.Write, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Write to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Write
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Delete. */
                interface IDelete {

                    /** Delete table */
                    table?: (string|null);

                    /** Delete keySet */
                    keySet?: (google.spanner.v1.IKeySet|null);
                }

                /** Represents a Delete. */
                class Delete implements IDelete {

                    /**
                     * Constructs a new Delete.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.Mutation.IDelete);

                    /** Delete table. */
                    public table: string;

                    /** Delete keySet. */
                    public keySet?: (google.spanner.v1.IKeySet|null);

                    /**
                     * Creates a new Delete instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Delete instance
                     */
                    public static create(properties?: google.spanner.v1.Mutation.IDelete): google.spanner.v1.Mutation.Delete;

                    /**
                     * Encodes the specified Delete message. Does not implicitly {@link google.spanner.v1.Mutation.Delete.verify|verify} messages.
                     * @param message Delete message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.Mutation.IDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Delete message, length delimited. Does not implicitly {@link google.spanner.v1.Mutation.Delete.verify|verify} messages.
                     * @param message Delete message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.Mutation.IDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Delete message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Delete
                     * @throws {Error} If the payload is 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.spanner.v1.Mutation.Delete;

                    /**
                     * Decodes a Delete message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Delete
                     * @throws {Error} If the 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.spanner.v1.Mutation.Delete;

                    /**
                     * Verifies a Delete message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Delete message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Delete
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.Mutation.Delete;

                    /**
                     * Creates a plain object from a Delete message. Also converts values to other types if specified.
                     * @param message Delete
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.Mutation.Delete, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Delete to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Delete
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of a ResultSet. */
            interface IResultSet {

                /** ResultSet metadata */
                metadata?: (google.spanner.v1.IResultSetMetadata|null);

                /** ResultSet rows */
                rows?: (google.protobuf.IListValue[]|null);

                /** ResultSet stats */
                stats?: (google.spanner.v1.IResultSetStats|null);

                /** ResultSet precommitToken */
                precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);
            }

            /** Represents a ResultSet. */
            class ResultSet implements IResultSet {

                /**
                 * Constructs a new ResultSet.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IResultSet);

                /** ResultSet metadata. */
                public metadata?: (google.spanner.v1.IResultSetMetadata|null);

                /** ResultSet rows. */
                public rows: google.protobuf.IListValue[];

                /** ResultSet stats. */
                public stats?: (google.spanner.v1.IResultSetStats|null);

                /** ResultSet precommitToken. */
                public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /**
                 * Creates a new ResultSet instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ResultSet instance
                 */
                public static create(properties?: google.spanner.v1.IResultSet): google.spanner.v1.ResultSet;

                /**
                 * Encodes the specified ResultSet message. Does not implicitly {@link google.spanner.v1.ResultSet.verify|verify} messages.
                 * @param message ResultSet message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IResultSet, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ResultSet message, length delimited. Does not implicitly {@link google.spanner.v1.ResultSet.verify|verify} messages.
                 * @param message ResultSet message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IResultSet, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ResultSet message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ResultSet
                 * @throws {Error} If the payload is 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.spanner.v1.ResultSet;

                /**
                 * Decodes a ResultSet message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ResultSet
                 * @throws {Error} If the 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.spanner.v1.ResultSet;

                /**
                 * Verifies a ResultSet message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ResultSet message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ResultSet
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ResultSet;

                /**
                 * Creates a plain object from a ResultSet message. Also converts values to other types if specified.
                 * @param message ResultSet
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ResultSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ResultSet to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ResultSet
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PartialResultSet. */
            interface IPartialResultSet {

                /** PartialResultSet metadata */
                metadata?: (google.spanner.v1.IResultSetMetadata|null);

                /** PartialResultSet values */
                values?: (google.protobuf.IValue[]|null);

                /** PartialResultSet chunkedValue */
                chunkedValue?: (boolean|null);

                /** PartialResultSet resumeToken */
                resumeToken?: (Uint8Array|Buffer|string|null);

                /** PartialResultSet stats */
                stats?: (google.spanner.v1.IResultSetStats|null);

                /** PartialResultSet precommitToken */
                precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /** PartialResultSet last */
                last?: (boolean|null);
            }

            /** Represents a PartialResultSet. */
            class PartialResultSet implements IPartialResultSet {

                /**
                 * Constructs a new PartialResultSet.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IPartialResultSet);

                /** PartialResultSet metadata. */
                public metadata?: (google.spanner.v1.IResultSetMetadata|null);

                /** PartialResultSet values. */
                public values: google.protobuf.IValue[];

                /** PartialResultSet chunkedValue. */
                public chunkedValue: boolean;

                /** PartialResultSet resumeToken. */
                public resumeToken: (Uint8Array|Buffer|string);

                /** PartialResultSet stats. */
                public stats?: (google.spanner.v1.IResultSetStats|null);

                /** PartialResultSet precommitToken. */
                public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null);

                /** PartialResultSet last. */
                public last: boolean;

                /**
                 * Creates a new PartialResultSet instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PartialResultSet instance
                 */
                public static create(properties?: google.spanner.v1.IPartialResultSet): google.spanner.v1.PartialResultSet;

                /**
                 * Encodes the specified PartialResultSet message. Does not implicitly {@link google.spanner.v1.PartialResultSet.verify|verify} messages.
                 * @param message PartialResultSet message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IPartialResultSet, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PartialResultSet message, length delimited. Does not implicitly {@link google.spanner.v1.PartialResultSet.verify|verify} messages.
                 * @param message PartialResultSet message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IPartialResultSet, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PartialResultSet message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PartialResultSet
                 * @throws {Error} If the payload is 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.spanner.v1.PartialResultSet;

                /**
                 * Decodes a PartialResultSet message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PartialResultSet
                 * @throws {Error} If the 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.spanner.v1.PartialResultSet;

                /**
                 * Verifies a PartialResultSet message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PartialResultSet message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PartialResultSet
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.PartialResultSet;

                /**
                 * Creates a plain object from a PartialResultSet message. Also converts values to other types if specified.
                 * @param message PartialResultSet
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.PartialResultSet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PartialResultSet to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PartialResultSet
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ResultSetMetadata. */
            interface IResultSetMetadata {

                /** ResultSetMetadata rowType */
                rowType?: (google.spanner.v1.IStructType|null);

                /** ResultSetMetadata transaction */
                transaction?: (google.spanner.v1.ITransaction|null);

                /** ResultSetMetadata undeclaredParameters */
                undeclaredParameters?: (google.spanner.v1.IStructType|null);
            }

            /** Represents a ResultSetMetadata. */
            class ResultSetMetadata implements IResultSetMetadata {

                /**
                 * Constructs a new ResultSetMetadata.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IResultSetMetadata);

                /** ResultSetMetadata rowType. */
                public rowType?: (google.spanner.v1.IStructType|null);

                /** ResultSetMetadata transaction. */
                public transaction?: (google.spanner.v1.ITransaction|null);

                /** ResultSetMetadata undeclaredParameters. */
                public undeclaredParameters?: (google.spanner.v1.IStructType|null);

                /**
                 * Creates a new ResultSetMetadata instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ResultSetMetadata instance
                 */
                public static create(properties?: google.spanner.v1.IResultSetMetadata): google.spanner.v1.ResultSetMetadata;

                /**
                 * Encodes the specified ResultSetMetadata message. Does not implicitly {@link google.spanner.v1.ResultSetMetadata.verify|verify} messages.
                 * @param message ResultSetMetadata message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IResultSetMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ResultSetMetadata message, length delimited. Does not implicitly {@link google.spanner.v1.ResultSetMetadata.verify|verify} messages.
                 * @param message ResultSetMetadata message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IResultSetMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ResultSetMetadata message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ResultSetMetadata
                 * @throws {Error} If the payload is 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.spanner.v1.ResultSetMetadata;

                /**
                 * Decodes a ResultSetMetadata message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ResultSetMetadata
                 * @throws {Error} If the 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.spanner.v1.ResultSetMetadata;

                /**
                 * Verifies a ResultSetMetadata message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ResultSetMetadata message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ResultSetMetadata
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ResultSetMetadata;

                /**
                 * Creates a plain object from a ResultSetMetadata message. Also converts values to other types if specified.
                 * @param message ResultSetMetadata
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ResultSetMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ResultSetMetadata to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ResultSetMetadata
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ResultSetStats. */
            interface IResultSetStats {

                /** ResultSetStats queryPlan */
                queryPlan?: (google.spanner.v1.IQueryPlan|null);

                /** ResultSetStats queryStats */
                queryStats?: (google.protobuf.IStruct|null);

                /** ResultSetStats rowCountExact */
                rowCountExact?: (number|Long|string|null);

                /** ResultSetStats rowCountLowerBound */
                rowCountLowerBound?: (number|Long|string|null);
            }

            /** Represents a ResultSetStats. */
            class ResultSetStats implements IResultSetStats {

                /**
                 * Constructs a new ResultSetStats.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IResultSetStats);

                /** ResultSetStats queryPlan. */
                public queryPlan?: (google.spanner.v1.IQueryPlan|null);

                /** ResultSetStats queryStats. */
                public queryStats?: (google.protobuf.IStruct|null);

                /** ResultSetStats rowCountExact. */
                public rowCountExact?: (number|Long|string|null);

                /** ResultSetStats rowCountLowerBound. */
                public rowCountLowerBound?: (number|Long|string|null);

                /** ResultSetStats rowCount. */
                public rowCount?: ("rowCountExact"|"rowCountLowerBound");

                /**
                 * Creates a new ResultSetStats instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ResultSetStats instance
                 */
                public static create(properties?: google.spanner.v1.IResultSetStats): google.spanner.v1.ResultSetStats;

                /**
                 * Encodes the specified ResultSetStats message. Does not implicitly {@link google.spanner.v1.ResultSetStats.verify|verify} messages.
                 * @param message ResultSetStats message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IResultSetStats, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ResultSetStats message, length delimited. Does not implicitly {@link google.spanner.v1.ResultSetStats.verify|verify} messages.
                 * @param message ResultSetStats message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IResultSetStats, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ResultSetStats message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ResultSetStats
                 * @throws {Error} If the payload is 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.spanner.v1.ResultSetStats;

                /**
                 * Decodes a ResultSetStats message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ResultSetStats
                 * @throws {Error} If the 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.spanner.v1.ResultSetStats;

                /**
                 * Verifies a ResultSetStats message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ResultSetStats message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ResultSetStats
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ResultSetStats;

                /**
                 * Creates a plain object from a ResultSetStats message. Also converts values to other types if specified.
                 * @param message ResultSetStats
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ResultSetStats, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ResultSetStats to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ResultSetStats
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PlanNode. */
            interface IPlanNode {

                /** PlanNode index */
                index?: (number|null);

                /** PlanNode kind */
                kind?: (google.spanner.v1.PlanNode.Kind|keyof typeof google.spanner.v1.PlanNode.Kind|null);

                /** PlanNode displayName */
                displayName?: (string|null);

                /** PlanNode childLinks */
                childLinks?: (google.spanner.v1.PlanNode.IChildLink[]|null);

                /** PlanNode shortRepresentation */
                shortRepresentation?: (google.spanner.v1.PlanNode.IShortRepresentation|null);

                /** PlanNode metadata */
                metadata?: (google.protobuf.IStruct|null);

                /** PlanNode executionStats */
                executionStats?: (google.protobuf.IStruct|null);
            }

            /** Represents a PlanNode. */
            class PlanNode implements IPlanNode {

                /**
                 * Constructs a new PlanNode.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IPlanNode);

                /** PlanNode index. */
                public index: number;

                /** PlanNode kind. */
                public kind: (google.spanner.v1.PlanNode.Kind|keyof typeof google.spanner.v1.PlanNode.Kind);

                /** PlanNode displayName. */
                public displayName: string;

                /** PlanNode childLinks. */
                public childLinks: google.spanner.v1.PlanNode.IChildLink[];

                /** PlanNode shortRepresentation. */
                public shortRepresentation?: (google.spanner.v1.PlanNode.IShortRepresentation|null);

                /** PlanNode metadata. */
                public metadata?: (google.protobuf.IStruct|null);

                /** PlanNode executionStats. */
                public executionStats?: (google.protobuf.IStruct|null);

                /**
                 * Creates a new PlanNode instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PlanNode instance
                 */
                public static create(properties?: google.spanner.v1.IPlanNode): google.spanner.v1.PlanNode;

                /**
                 * Encodes the specified PlanNode message. Does not implicitly {@link google.spanner.v1.PlanNode.verify|verify} messages.
                 * @param message PlanNode message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IPlanNode, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PlanNode message, length delimited. Does not implicitly {@link google.spanner.v1.PlanNode.verify|verify} messages.
                 * @param message PlanNode message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IPlanNode, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PlanNode message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PlanNode
                 * @throws {Error} If the payload is 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.spanner.v1.PlanNode;

                /**
                 * Decodes a PlanNode message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PlanNode
                 * @throws {Error} If the 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.spanner.v1.PlanNode;

                /**
                 * Verifies a PlanNode message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PlanNode message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PlanNode
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.PlanNode;

                /**
                 * Creates a plain object from a PlanNode message. Also converts values to other types if specified.
                 * @param message PlanNode
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.PlanNode, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PlanNode to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PlanNode
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace PlanNode {

                /** Kind enum. */
                enum Kind {
                    KIND_UNSPECIFIED = 0,
                    RELATIONAL = 1,
                    SCALAR = 2
                }

                /** Properties of a ChildLink. */
                interface IChildLink {

                    /** ChildLink childIndex */
                    childIndex?: (number|null);

                    /** ChildLink type */
                    type?: (string|null);

                    /** ChildLink variable */
                    variable?: (string|null);
                }

                /** Represents a ChildLink. */
                class ChildLink implements IChildLink {

                    /**
                     * Constructs a new ChildLink.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.PlanNode.IChildLink);

                    /** ChildLink childIndex. */
                    public childIndex: number;

                    /** ChildLink type. */
                    public type: string;

                    /** ChildLink variable. */
                    public variable: string;

                    /**
                     * Creates a new ChildLink instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ChildLink instance
                     */
                    public static create(properties?: google.spanner.v1.PlanNode.IChildLink): google.spanner.v1.PlanNode.ChildLink;

                    /**
                     * Encodes the specified ChildLink message. Does not implicitly {@link google.spanner.v1.PlanNode.ChildLink.verify|verify} messages.
                     * @param message ChildLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.PlanNode.IChildLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ChildLink message, length delimited. Does not implicitly {@link google.spanner.v1.PlanNode.ChildLink.verify|verify} messages.
                     * @param message ChildLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.PlanNode.IChildLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ChildLink message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ChildLink
                     * @throws {Error} If the payload is 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.spanner.v1.PlanNode.ChildLink;

                    /**
                     * Decodes a ChildLink message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ChildLink
                     * @throws {Error} If the 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.spanner.v1.PlanNode.ChildLink;

                    /**
                     * Verifies a ChildLink message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ChildLink message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ChildLink
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.PlanNode.ChildLink;

                    /**
                     * Creates a plain object from a ChildLink message. Also converts values to other types if specified.
                     * @param message ChildLink
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.PlanNode.ChildLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ChildLink to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ChildLink
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ShortRepresentation. */
                interface IShortRepresentation {

                    /** ShortRepresentation description */
                    description?: (string|null);

                    /** ShortRepresentation subqueries */
                    subqueries?: ({ [k: string]: number }|null);
                }

                /** Represents a ShortRepresentation. */
                class ShortRepresentation implements IShortRepresentation {

                    /**
                     * Constructs a new ShortRepresentation.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.PlanNode.IShortRepresentation);

                    /** ShortRepresentation description. */
                    public description: string;

                    /** ShortRepresentation subqueries. */
                    public subqueries: { [k: string]: number };

                    /**
                     * Creates a new ShortRepresentation instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ShortRepresentation instance
                     */
                    public static create(properties?: google.spanner.v1.PlanNode.IShortRepresentation): google.spanner.v1.PlanNode.ShortRepresentation;

                    /**
                     * Encodes the specified ShortRepresentation message. Does not implicitly {@link google.spanner.v1.PlanNode.ShortRepresentation.verify|verify} messages.
                     * @param message ShortRepresentation message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.PlanNode.IShortRepresentation, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ShortRepresentation message, length delimited. Does not implicitly {@link google.spanner.v1.PlanNode.ShortRepresentation.verify|verify} messages.
                     * @param message ShortRepresentation message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.PlanNode.IShortRepresentation, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ShortRepresentation message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ShortRepresentation
                     * @throws {Error} If the payload is 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.spanner.v1.PlanNode.ShortRepresentation;

                    /**
                     * Decodes a ShortRepresentation message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ShortRepresentation
                     * @throws {Error} If the 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.spanner.v1.PlanNode.ShortRepresentation;

                    /**
                     * Verifies a ShortRepresentation message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a ShortRepresentation message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ShortRepresentation
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.PlanNode.ShortRepresentation;

                    /**
                     * Creates a plain object from a ShortRepresentation message. Also converts values to other types if specified.
                     * @param message ShortRepresentation
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.PlanNode.ShortRepresentation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ShortRepresentation to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ShortRepresentation
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of a QueryPlan. */
            interface IQueryPlan {

                /** QueryPlan planNodes */
                planNodes?: (google.spanner.v1.IPlanNode[]|null);
            }

            /** Represents a QueryPlan. */
            class QueryPlan implements IQueryPlan {

                /**
                 * Constructs a new QueryPlan.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IQueryPlan);

                /** QueryPlan planNodes. */
                public planNodes: google.spanner.v1.IPlanNode[];

                /**
                 * Creates a new QueryPlan instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns QueryPlan instance
                 */
                public static create(properties?: google.spanner.v1.IQueryPlan): google.spanner.v1.QueryPlan;

                /**
                 * Encodes the specified QueryPlan message. Does not implicitly {@link google.spanner.v1.QueryPlan.verify|verify} messages.
                 * @param message QueryPlan message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IQueryPlan, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified QueryPlan message, length delimited. Does not implicitly {@link google.spanner.v1.QueryPlan.verify|verify} messages.
                 * @param message QueryPlan message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IQueryPlan, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a QueryPlan message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns QueryPlan
                 * @throws {Error} If the payload is 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.spanner.v1.QueryPlan;

                /**
                 * Decodes a QueryPlan message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns QueryPlan
                 * @throws {Error} If the 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.spanner.v1.QueryPlan;

                /**
                 * Verifies a QueryPlan message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a QueryPlan message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns QueryPlan
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.QueryPlan;

                /**
                 * Creates a plain object from a QueryPlan message. Also converts values to other types if specified.
                 * @param message QueryPlan
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.QueryPlan, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this QueryPlan to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for QueryPlan
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Type. */
            interface IType {

                /** Type code */
                code?: (google.spanner.v1.TypeCode|keyof typeof google.spanner.v1.TypeCode|null);

                /** Type arrayElementType */
                arrayElementType?: (google.spanner.v1.IType|null);

                /** Type structType */
                structType?: (google.spanner.v1.IStructType|null);

                /** Type typeAnnotation */
                typeAnnotation?: (google.spanner.v1.TypeAnnotationCode|keyof typeof google.spanner.v1.TypeAnnotationCode|null);

                /** Type protoTypeFqn */
                protoTypeFqn?: (string|null);
            }

            /** Represents a Type. */
            class Type implements IType {

                /**
                 * Constructs a new Type.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IType);

                /** Type code. */
                public code: (google.spanner.v1.TypeCode|keyof typeof google.spanner.v1.TypeCode);

                /** Type arrayElementType. */
                public arrayElementType?: (google.spanner.v1.IType|null);

                /** Type structType. */
                public structType?: (google.spanner.v1.IStructType|null);

                /** Type typeAnnotation. */
                public typeAnnotation: (google.spanner.v1.TypeAnnotationCode|keyof typeof google.spanner.v1.TypeAnnotationCode);

                /** Type protoTypeFqn. */
                public protoTypeFqn: string;

                /**
                 * Creates a new Type instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Type instance
                 */
                public static create(properties?: google.spanner.v1.IType): google.spanner.v1.Type;

                /**
                 * Encodes the specified Type message. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages.
                 * @param message Type message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IType, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Type message, length delimited. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages.
                 * @param message Type message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IType, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Type message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Type
                 * @throws {Error} If the payload is 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.spanner.v1.Type;

                /**
                 * Decodes a Type message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Type
                 * @throws {Error} If the 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.spanner.v1.Type;

                /**
                 * Verifies a Type message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Type message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Type
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.Type;

                /**
                 * Creates a plain object from a Type message. Also converts values to other types if specified.
                 * @param message Type
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.Type, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Type to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Type
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a StructType. */
            interface IStructType {

                /** StructType fields */
                fields?: (google.spanner.v1.StructType.IField[]|null);
            }

            /** Represents a StructType. */
            class StructType implements IStructType {

                /**
                 * Constructs a new StructType.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IStructType);

                /** StructType fields. */
                public fields: google.spanner.v1.StructType.IField[];

                /**
                 * Creates a new StructType instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns StructType instance
                 */
                public static create(properties?: google.spanner.v1.IStructType): google.spanner.v1.StructType;

                /**
                 * Encodes the specified StructType message. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages.
                 * @param message StructType message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IStructType, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified StructType message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages.
                 * @param message StructType message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IStructType, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a StructType message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns StructType
                 * @throws {Error} If the payload is 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.spanner.v1.StructType;

                /**
                 * Decodes a StructType message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns StructType
                 * @throws {Error} If the 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.spanner.v1.StructType;

                /**
                 * Verifies a StructType message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a StructType message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns StructType
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.StructType;

                /**
                 * Creates a plain object from a StructType message. Also converts values to other types if specified.
                 * @param message StructType
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.StructType, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this StructType to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for StructType
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace StructType {

                /** Properties of a Field. */
                interface IField {

                    /** Field name */
                    name?: (string|null);

                    /** Field type */
                    type?: (google.spanner.v1.IType|null);
                }

                /** Represents a Field. */
                class Field implements IField {

                    /**
                     * Constructs a new Field.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.StructType.IField);

                    /** Field name. */
                    public name: string;

                    /** Field type. */
                    public type?: (google.spanner.v1.IType|null);

                    /**
                     * Creates a new Field instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Field instance
                     */
                    public static create(properties?: google.spanner.v1.StructType.IField): google.spanner.v1.StructType.Field;

                    /**
                     * Encodes the specified Field message. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages.
                     * @param message Field message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.StructType.IField, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Field message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages.
                     * @param message Field message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.StructType.IField, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Field message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Field
                     * @throws {Error} If the payload is 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.spanner.v1.StructType.Field;

                    /**
                     * Decodes a Field message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Field
                     * @throws {Error} If the 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.spanner.v1.StructType.Field;

                    /**
                     * Verifies a Field message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Field message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Field
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.StructType.Field;

                    /**
                     * Creates a plain object from a Field message. Also converts values to other types if specified.
                     * @param message Field
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.StructType.Field, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Field to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Field
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** TypeCode enum. */
            enum TypeCode {
                TYPE_CODE_UNSPECIFIED = 0,
                BOOL = 1,
                INT64 = 2,
                FLOAT64 = 3,
                FLOAT32 = 15,
                TIMESTAMP = 4,
                DATE = 5,
                STRING = 6,
                BYTES = 7,
                ARRAY = 8,
                STRUCT = 9,
                NUMERIC = 10,
                JSON = 11,
                PROTO = 13,
                ENUM = 14,
                INTERVAL = 16,
                UUID = 17
            }

            /** TypeAnnotationCode enum. */
            enum TypeAnnotationCode {
                TYPE_ANNOTATION_CODE_UNSPECIFIED = 0,
                PG_NUMERIC = 2,
                PG_JSONB = 3,
                PG_OID = 4
            }

            /** Properties of a ChangeStreamRecord. */
            interface IChangeStreamRecord {

                /** ChangeStreamRecord dataChangeRecord */
                dataChangeRecord?: (google.spanner.v1.ChangeStreamRecord.IDataChangeRecord|null);

                /** ChangeStreamRecord heartbeatRecord */
                heartbeatRecord?: (google.spanner.v1.ChangeStreamRecord.IHeartbeatRecord|null);

                /** ChangeStreamRecord partitionStartRecord */
                partitionStartRecord?: (google.spanner.v1.ChangeStreamRecord.IPartitionStartRecord|null);

                /** ChangeStreamRecord partitionEndRecord */
                partitionEndRecord?: (google.spanner.v1.ChangeStreamRecord.IPartitionEndRecord|null);

                /** ChangeStreamRecord partitionEventRecord */
                partitionEventRecord?: (google.spanner.v1.ChangeStreamRecord.IPartitionEventRecord|null);
            }

            /** Represents a ChangeStreamRecord. */
            class ChangeStreamRecord implements IChangeStreamRecord {

                /**
                 * Constructs a new ChangeStreamRecord.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.spanner.v1.IChangeStreamRecord);

                /** ChangeStreamRecord dataChangeRecord. */
                public dataChangeRecord?: (google.spanner.v1.ChangeStreamRecord.IDataChangeRecord|null);

                /** ChangeStreamRecord heartbeatRecord. */
                public heartbeatRecord?: (google.spanner.v1.ChangeStreamRecord.IHeartbeatRecord|null);

                /** ChangeStreamRecord partitionStartRecord. */
                public partitionStartRecord?: (google.spanner.v1.ChangeStreamRecord.IPartitionStartRecord|null);

                /** ChangeStreamRecord partitionEndRecord. */
                public partitionEndRecord?: (google.spanner.v1.ChangeStreamRecord.IPartitionEndRecord|null);

                /** ChangeStreamRecord partitionEventRecord. */
                public partitionEventRecord?: (google.spanner.v1.ChangeStreamRecord.IPartitionEventRecord|null);

                /** ChangeStreamRecord record. */
                public record?: ("dataChangeRecord"|"heartbeatRecord"|"partitionStartRecord"|"partitionEndRecord"|"partitionEventRecord");

                /**
                 * Creates a new ChangeStreamRecord instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ChangeStreamRecord instance
                 */
                public static create(properties?: google.spanner.v1.IChangeStreamRecord): google.spanner.v1.ChangeStreamRecord;

                /**
                 * Encodes the specified ChangeStreamRecord message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.verify|verify} messages.
                 * @param message ChangeStreamRecord message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.spanner.v1.IChangeStreamRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ChangeStreamRecord message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.verify|verify} messages.
                 * @param message ChangeStreamRecord message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.spanner.v1.IChangeStreamRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ChangeStreamRecord message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ChangeStreamRecord
                 * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord;

                /**
                 * Decodes a ChangeStreamRecord message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ChangeStreamRecord
                 * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord;

                /**
                 * Verifies a ChangeStreamRecord message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ChangeStreamRecord message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ChangeStreamRecord
                 */
                public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord;

                /**
                 * Creates a plain object from a ChangeStreamRecord message. Also converts values to other types if specified.
                 * @param message ChangeStreamRecord
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.spanner.v1.ChangeStreamRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ChangeStreamRecord to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ChangeStreamRecord
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace ChangeStreamRecord {

                /** Properties of a DataChangeRecord. */
                interface IDataChangeRecord {

                    /** DataChangeRecord commitTimestamp */
                    commitTimestamp?: (google.protobuf.ITimestamp|null);

                    /** DataChangeRecord recordSequence */
                    recordSequence?: (string|null);

                    /** DataChangeRecord serverTransactionId */
                    serverTransactionId?: (string|null);

                    /** DataChangeRecord isLastRecordInTransactionInPartition */
                    isLastRecordInTransactionInPartition?: (boolean|null);

                    /** DataChangeRecord table */
                    table?: (string|null);

                    /** DataChangeRecord columnMetadata */
                    columnMetadata?: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IColumnMetadata[]|null);

                    /** DataChangeRecord mods */
                    mods?: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IMod[]|null);

                    /** DataChangeRecord modType */
                    modType?: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType|keyof typeof google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType|null);

                    /** DataChangeRecord valueCaptureType */
                    valueCaptureType?: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType|keyof typeof google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType|null);

                    /** DataChangeRecord numberOfRecordsInTransaction */
                    numberOfRecordsInTransaction?: (number|null);

                    /** DataChangeRecord numberOfPartitionsInTransaction */
                    numberOfPartitionsInTransaction?: (number|null);

                    /** DataChangeRecord transactionTag */
                    transactionTag?: (string|null);

                    /** DataChangeRecord isSystemTransaction */
                    isSystemTransaction?: (boolean|null);
                }

                /** Represents a DataChangeRecord. */
                class DataChangeRecord implements IDataChangeRecord {

                    /**
                     * Constructs a new DataChangeRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.ChangeStreamRecord.IDataChangeRecord);

                    /** DataChangeRecord commitTimestamp. */
                    public commitTimestamp?: (google.protobuf.ITimestamp|null);

                    /** DataChangeRecord recordSequence. */
                    public recordSequence: string;

                    /** DataChangeRecord serverTransactionId. */
                    public serverTransactionId: string;

                    /** DataChangeRecord isLastRecordInTransactionInPartition. */
                    public isLastRecordInTransactionInPartition: boolean;

                    /** DataChangeRecord table. */
                    public table: string;

                    /** DataChangeRecord columnMetadata. */
                    public columnMetadata: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IColumnMetadata[];

                    /** DataChangeRecord mods. */
                    public mods: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IMod[];

                    /** DataChangeRecord modType. */
                    public modType: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType|keyof typeof google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType);

                    /** DataChangeRecord valueCaptureType. */
                    public valueCaptureType: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType|keyof typeof google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType);

                    /** DataChangeRecord numberOfRecordsInTransaction. */
                    public numberOfRecordsInTransaction: number;

                    /** DataChangeRecord numberOfPartitionsInTransaction. */
                    public numberOfPartitionsInTransaction: number;

                    /** DataChangeRecord transactionTag. */
                    public transactionTag: string;

                    /** DataChangeRecord isSystemTransaction. */
                    public isSystemTransaction: boolean;

                    /**
                     * Creates a new DataChangeRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DataChangeRecord instance
                     */
                    public static create(properties?: google.spanner.v1.ChangeStreamRecord.IDataChangeRecord): google.spanner.v1.ChangeStreamRecord.DataChangeRecord;

                    /**
                     * Encodes the specified DataChangeRecord message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.verify|verify} messages.
                     * @param message DataChangeRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.ChangeStreamRecord.IDataChangeRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DataChangeRecord message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.verify|verify} messages.
                     * @param message DataChangeRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.IDataChangeRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DataChangeRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DataChangeRecord
                     * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.DataChangeRecord;

                    /**
                     * Decodes a DataChangeRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DataChangeRecord
                     * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.DataChangeRecord;

                    /**
                     * Verifies a DataChangeRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a DataChangeRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DataChangeRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.DataChangeRecord;

                    /**
                     * Creates a plain object from a DataChangeRecord message. Also converts values to other types if specified.
                     * @param message DataChangeRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DataChangeRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DataChangeRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace DataChangeRecord {

                    /** Properties of a ColumnMetadata. */
                    interface IColumnMetadata {

                        /** ColumnMetadata name */
                        name?: (string|null);

                        /** ColumnMetadata type */
                        type?: (google.spanner.v1.IType|null);

                        /** ColumnMetadata isPrimaryKey */
                        isPrimaryKey?: (boolean|null);

                        /** ColumnMetadata ordinalPosition */
                        ordinalPosition?: (number|Long|string|null);
                    }

                    /** Represents a ColumnMetadata. */
                    class ColumnMetadata implements IColumnMetadata {

                        /**
                         * Constructs a new ColumnMetadata.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IColumnMetadata);

                        /** ColumnMetadata name. */
                        public name: string;

                        /** ColumnMetadata type. */
                        public type?: (google.spanner.v1.IType|null);

                        /** ColumnMetadata isPrimaryKey. */
                        public isPrimaryKey: boolean;

                        /** ColumnMetadata ordinalPosition. */
                        public ordinalPosition: (number|Long|string);

                        /**
                         * Creates a new ColumnMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ColumnMetadata instance
                         */
                        public static create(properties?: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IColumnMetadata): google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata;

                        /**
                         * Encodes the specified ColumnMetadata message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.verify|verify} messages.
                         * @param message ColumnMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IColumnMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ColumnMetadata message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.verify|verify} messages.
                         * @param message ColumnMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IColumnMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ColumnMetadata message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ColumnMetadata
                         * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata;

                        /**
                         * Decodes a ColumnMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ColumnMetadata
                         * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata;

                        /**
                         * Verifies a ColumnMetadata message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ColumnMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ColumnMetadata
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata;

                        /**
                         * Creates a plain object from a ColumnMetadata message. Also converts values to other types if specified.
                         * @param message ColumnMetadata
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ColumnMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ColumnMetadata
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ModValue. */
                    interface IModValue {

                        /** ModValue columnMetadataIndex */
                        columnMetadataIndex?: (number|null);

                        /** ModValue value */
                        value?: (google.protobuf.IValue|null);
                    }

                    /** Represents a ModValue. */
                    class ModValue implements IModValue {

                        /**
                         * Constructs a new ModValue.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue);

                        /** ModValue columnMetadataIndex. */
                        public columnMetadataIndex: number;

                        /** ModValue value. */
                        public value?: (google.protobuf.IValue|null);

                        /**
                         * Creates a new ModValue instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ModValue instance
                         */
                        public static create(properties?: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue): google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue;

                        /**
                         * Encodes the specified ModValue message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.verify|verify} messages.
                         * @param message ModValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ModValue message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.verify|verify} messages.
                         * @param message ModValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ModValue message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ModValue
                         * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue;

                        /**
                         * Decodes a ModValue message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ModValue
                         * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue;

                        /**
                         * Verifies a ModValue message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ModValue message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ModValue
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue;

                        /**
                         * Creates a plain object from a ModValue message. Also converts values to other types if specified.
                         * @param message ModValue
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ModValue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ModValue
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Mod. */
                    interface IMod {

                        /** Mod keys */
                        keys?: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue[]|null);

                        /** Mod oldValues */
                        oldValues?: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue[]|null);

                        /** Mod newValues */
                        newValues?: (google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue[]|null);
                    }

                    /** Represents a Mod. */
                    class Mod implements IMod {

                        /**
                         * Constructs a new Mod.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IMod);

                        /** Mod keys. */
                        public keys: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue[];

                        /** Mod oldValues. */
                        public oldValues: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue[];

                        /** Mod newValues. */
                        public newValues: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IModValue[];

                        /**
                         * Creates a new Mod instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Mod instance
                         */
                        public static create(properties?: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IMod): google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod;

                        /**
                         * Encodes the specified Mod message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.verify|verify} messages.
                         * @param message Mod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IMod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Mod message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.verify|verify} messages.
                         * @param message Mod message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.IMod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Mod message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Mod
                         * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod;

                        /**
                         * Decodes a Mod message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Mod
                         * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod;

                        /**
                         * Verifies a Mod message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Mod message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Mod
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod;

                        /**
                         * Creates a plain object from a Mod message. Also converts values to other types if specified.
                         * @param message Mod
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Mod to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Mod
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** ModType enum. */
                    enum ModType {
                        MOD_TYPE_UNSPECIFIED = 0,
                        INSERT = 10,
                        UPDATE = 20,
                        DELETE = 30
                    }

                    /** ValueCaptureType enum. */
                    enum ValueCaptureType {
                        VALUE_CAPTURE_TYPE_UNSPECIFIED = 0,
                        OLD_AND_NEW_VALUES = 10,
                        NEW_VALUES = 20,
                        NEW_ROW = 30,
                        NEW_ROW_AND_OLD_VALUES = 40
                    }
                }

                /** Properties of a HeartbeatRecord. */
                interface IHeartbeatRecord {

                    /** HeartbeatRecord timestamp */
                    timestamp?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a HeartbeatRecord. */
                class HeartbeatRecord implements IHeartbeatRecord {

                    /**
                     * Constructs a new HeartbeatRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.ChangeStreamRecord.IHeartbeatRecord);

                    /** HeartbeatRecord timestamp. */
                    public timestamp?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new HeartbeatRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns HeartbeatRecord instance
                     */
                    public static create(properties?: google.spanner.v1.ChangeStreamRecord.IHeartbeatRecord): google.spanner.v1.ChangeStreamRecord.HeartbeatRecord;

                    /**
                     * Encodes the specified HeartbeatRecord message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.verify|verify} messages.
                     * @param message HeartbeatRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.ChangeStreamRecord.IHeartbeatRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified HeartbeatRecord message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.verify|verify} messages.
                     * @param message HeartbeatRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.IHeartbeatRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a HeartbeatRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns HeartbeatRecord
                     * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.HeartbeatRecord;

                    /**
                     * Decodes a HeartbeatRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns HeartbeatRecord
                     * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.HeartbeatRecord;

                    /**
                     * Verifies a HeartbeatRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a HeartbeatRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns HeartbeatRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.HeartbeatRecord;

                    /**
                     * Creates a plain object from a HeartbeatRecord message. Also converts values to other types if specified.
                     * @param message HeartbeatRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.ChangeStreamRecord.HeartbeatRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this HeartbeatRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for HeartbeatRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PartitionStartRecord. */
                interface IPartitionStartRecord {

                    /** PartitionStartRecord startTimestamp */
                    startTimestamp?: (google.protobuf.ITimestamp|null);

                    /** PartitionStartRecord recordSequence */
                    recordSequence?: (string|null);

                    /** PartitionStartRecord partitionTokens */
                    partitionTokens?: (string[]|null);
                }

                /** Represents a PartitionStartRecord. */
                class PartitionStartRecord implements IPartitionStartRecord {

                    /**
                     * Constructs a new PartitionStartRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.ChangeStreamRecord.IPartitionStartRecord);

                    /** PartitionStartRecord startTimestamp. */
                    public startTimestamp?: (google.protobuf.ITimestamp|null);

                    /** PartitionStartRecord recordSequence. */
                    public recordSequence: string;

                    /** PartitionStartRecord partitionTokens. */
                    public partitionTokens: string[];

                    /**
                     * Creates a new PartitionStartRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PartitionStartRecord instance
                     */
                    public static create(properties?: google.spanner.v1.ChangeStreamRecord.IPartitionStartRecord): google.spanner.v1.ChangeStreamRecord.PartitionStartRecord;

                    /**
                     * Encodes the specified PartitionStartRecord message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.verify|verify} messages.
                     * @param message PartitionStartRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.ChangeStreamRecord.IPartitionStartRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PartitionStartRecord message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.verify|verify} messages.
                     * @param message PartitionStartRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.IPartitionStartRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PartitionStartRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PartitionStartRecord
                     * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.PartitionStartRecord;

                    /**
                     * Decodes a PartitionStartRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PartitionStartRecord
                     * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.PartitionStartRecord;

                    /**
                     * Verifies a PartitionStartRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PartitionStartRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PartitionStartRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.PartitionStartRecord;

                    /**
                     * Creates a plain object from a PartitionStartRecord message. Also converts values to other types if specified.
                     * @param message PartitionStartRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.ChangeStreamRecord.PartitionStartRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PartitionStartRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PartitionStartRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PartitionEndRecord. */
                interface IPartitionEndRecord {

                    /** PartitionEndRecord endTimestamp */
                    endTimestamp?: (google.protobuf.ITimestamp|null);

                    /** PartitionEndRecord recordSequence */
                    recordSequence?: (string|null);

                    /** PartitionEndRecord partitionToken */
                    partitionToken?: (string|null);
                }

                /** Represents a PartitionEndRecord. */
                class PartitionEndRecord implements IPartitionEndRecord {

                    /**
                     * Constructs a new PartitionEndRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.ChangeStreamRecord.IPartitionEndRecord);

                    /** PartitionEndRecord endTimestamp. */
                    public endTimestamp?: (google.protobuf.ITimestamp|null);

                    /** PartitionEndRecord recordSequence. */
                    public recordSequence: string;

                    /** PartitionEndRecord partitionToken. */
                    public partitionToken: string;

                    /**
                     * Creates a new PartitionEndRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PartitionEndRecord instance
                     */
                    public static create(properties?: google.spanner.v1.ChangeStreamRecord.IPartitionEndRecord): google.spanner.v1.ChangeStreamRecord.PartitionEndRecord;

                    /**
                     * Encodes the specified PartitionEndRecord message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.verify|verify} messages.
                     * @param message PartitionEndRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.ChangeStreamRecord.IPartitionEndRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PartitionEndRecord message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.verify|verify} messages.
                     * @param message PartitionEndRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.IPartitionEndRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PartitionEndRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PartitionEndRecord
                     * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.PartitionEndRecord;

                    /**
                     * Decodes a PartitionEndRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PartitionEndRecord
                     * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.PartitionEndRecord;

                    /**
                     * Verifies a PartitionEndRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PartitionEndRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PartitionEndRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.PartitionEndRecord;

                    /**
                     * Creates a plain object from a PartitionEndRecord message. Also converts values to other types if specified.
                     * @param message PartitionEndRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.ChangeStreamRecord.PartitionEndRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PartitionEndRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PartitionEndRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PartitionEventRecord. */
                interface IPartitionEventRecord {

                    /** PartitionEventRecord commitTimestamp */
                    commitTimestamp?: (google.protobuf.ITimestamp|null);

                    /** PartitionEventRecord recordSequence */
                    recordSequence?: (string|null);

                    /** PartitionEventRecord partitionToken */
                    partitionToken?: (string|null);

                    /** PartitionEventRecord moveInEvents */
                    moveInEvents?: (google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveInEvent[]|null);

                    /** PartitionEventRecord moveOutEvents */
                    moveOutEvents?: (google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveOutEvent[]|null);
                }

                /** Represents a PartitionEventRecord. */
                class PartitionEventRecord implements IPartitionEventRecord {

                    /**
                     * Constructs a new PartitionEventRecord.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.spanner.v1.ChangeStreamRecord.IPartitionEventRecord);

                    /** PartitionEventRecord commitTimestamp. */
                    public commitTimestamp?: (google.protobuf.ITimestamp|null);

                    /** PartitionEventRecord recordSequence. */
                    public recordSequence: string;

                    /** PartitionEventRecord partitionToken. */
                    public partitionToken: string;

                    /** PartitionEventRecord moveInEvents. */
                    public moveInEvents: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveInEvent[];

                    /** PartitionEventRecord moveOutEvents. */
                    public moveOutEvents: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveOutEvent[];

                    /**
                     * Creates a new PartitionEventRecord instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PartitionEventRecord instance
                     */
                    public static create(properties?: google.spanner.v1.ChangeStreamRecord.IPartitionEventRecord): google.spanner.v1.ChangeStreamRecord.PartitionEventRecord;

                    /**
                     * Encodes the specified PartitionEventRecord message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.verify|verify} messages.
                     * @param message PartitionEventRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.spanner.v1.ChangeStreamRecord.IPartitionEventRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PartitionEventRecord message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.verify|verify} messages.
                     * @param message PartitionEventRecord message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.IPartitionEventRecord, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PartitionEventRecord message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PartitionEventRecord
                     * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.PartitionEventRecord;

                    /**
                     * Decodes a PartitionEventRecord message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PartitionEventRecord
                     * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.PartitionEventRecord;

                    /**
                     * Verifies a PartitionEventRecord message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PartitionEventRecord message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PartitionEventRecord
                     */
                    public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.PartitionEventRecord;

                    /**
                     * Creates a plain object from a PartitionEventRecord message. Also converts values to other types if specified.
                     * @param message PartitionEventRecord
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PartitionEventRecord to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PartitionEventRecord
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PartitionEventRecord {

                    /** Properties of a MoveInEvent. */
                    interface IMoveInEvent {

                        /** MoveInEvent sourcePartitionToken */
                        sourcePartitionToken?: (string|null);
                    }

                    /** Represents a MoveInEvent. */
                    class MoveInEvent implements IMoveInEvent {

                        /**
                         * Constructs a new MoveInEvent.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveInEvent);

                        /** MoveInEvent sourcePartitionToken. */
                        public sourcePartitionToken: string;

                        /**
                         * Creates a new MoveInEvent instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MoveInEvent instance
                         */
                        public static create(properties?: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveInEvent): google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent;

                        /**
                         * Encodes the specified MoveInEvent message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.verify|verify} messages.
                         * @param message MoveInEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveInEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveInEvent message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.verify|verify} messages.
                         * @param message MoveInEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveInEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveInEvent message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MoveInEvent
                         * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent;

                        /**
                         * Decodes a MoveInEvent message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MoveInEvent
                         * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent;

                        /**
                         * Verifies a MoveInEvent message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveInEvent message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MoveInEvent
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent;

                        /**
                         * Creates a plain object from a MoveInEvent message. Also converts values to other types if specified.
                         * @param message MoveInEvent
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveInEvent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MoveInEvent
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MoveOutEvent. */
                    interface IMoveOutEvent {

                        /** MoveOutEvent destinationPartitionToken */
                        destinationPartitionToken?: (string|null);
                    }

                    /** Represents a MoveOutEvent. */
                    class MoveOutEvent implements IMoveOutEvent {

                        /**
                         * Constructs a new MoveOutEvent.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveOutEvent);

                        /** MoveOutEvent destinationPartitionToken. */
                        public destinationPartitionToken: string;

                        /**
                         * Creates a new MoveOutEvent instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MoveOutEvent instance
                         */
                        public static create(properties?: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveOutEvent): google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent;

                        /**
                         * Encodes the specified MoveOutEvent message. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.verify|verify} messages.
                         * @param message MoveOutEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveOutEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveOutEvent message, length delimited. Does not implicitly {@link google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.verify|verify} messages.
                         * @param message MoveOutEvent message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.IMoveOutEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveOutEvent message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MoveOutEvent
                         * @throws {Error} If the payload is 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.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent;

                        /**
                         * Decodes a MoveOutEvent message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MoveOutEvent
                         * @throws {Error} If the 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.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent;

                        /**
                         * Verifies a MoveOutEvent message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveOutEvent message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MoveOutEvent
                         */
                        public static fromObject(object: { [k: string]: any }): google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent;

                        /**
                         * Creates a plain object from a MoveOutEvent message. Also converts values to other types if specified.
                         * @param message MoveOutEvent
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveOutEvent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MoveOutEvent
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }
            }
        }
    }

    /** Namespace api. */
    namespace api {

        /** FieldBehavior enum. */
        enum FieldBehavior {
            FIELD_BEHAVIOR_UNSPECIFIED = 0,
            OPTIONAL = 1,
            REQUIRED = 2,
            OUTPUT_ONLY = 3,
            INPUT_ONLY = 4,
            IMMUTABLE = 5,
            UNORDERED_LIST = 6,
            NON_EMPTY_DEFAULT = 7,
            IDENTIFIER = 8
        }

        /** Properties of a ResourceDescriptor. */
        interface IResourceDescriptor {

            /** ResourceDescriptor type */
            type?: (string|null);

            /** ResourceDescriptor pattern */
            pattern?: (string[]|null);

            /** ResourceDescriptor nameField */
            nameField?: (string|null);

            /** ResourceDescriptor history */
            history?: (google.api.ResourceDescriptor.History|keyof typeof google.api.ResourceDescriptor.History|null);

            /** ResourceDescriptor plural */
            plural?: (string|null);

            /** ResourceDescriptor singular */
            singular?: (string|null);

            /** ResourceDescriptor style */
            style?: (google.api.ResourceDescriptor.Style[]|null);
        }

        /** Represents a ResourceDescriptor. */
        class ResourceDescriptor implements IResourceDescriptor {

            /**
             * Constructs a new ResourceDescriptor.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IResourceDescriptor);

            /** ResourceDescriptor type. */
            public type: string;

            /** ResourceDescriptor pattern. */
            public pattern: string[];

            /** ResourceDescriptor nameField. */
            public nameField: string;

            /** ResourceDescriptor history. */
            public history: (google.api.ResourceDescriptor.History|keyof typeof google.api.ResourceDescriptor.History);

            /** ResourceDescriptor plural. */
            public plural: string;

            /** ResourceDescriptor singular. */
            public singular: string;

            /** ResourceDescriptor style. */
            public style: google.api.ResourceDescriptor.Style[];

            /**
             * Creates a new ResourceDescriptor instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResourceDescriptor instance
             */
            public static create(properties?: google.api.IResourceDescriptor): google.api.ResourceDescriptor;

            /**
             * Encodes the specified ResourceDescriptor message. Does not implicitly {@link google.api.ResourceDescriptor.verify|verify} messages.
             * @param message ResourceDescriptor message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IResourceDescriptor, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResourceDescriptor message, length delimited. Does not implicitly {@link google.api.ResourceDescriptor.verify|verify} messages.
             * @param message ResourceDescriptor message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IResourceDescriptor, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResourceDescriptor message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResourceDescriptor
             * @throws {Error} If the payload is 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.ResourceDescriptor;

            /**
             * Decodes a ResourceDescriptor message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResourceDescriptor
             * @throws {Error} If the 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.ResourceDescriptor;

            /**
             * Verifies a ResourceDescriptor message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ResourceDescriptor message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResourceDescriptor
             */
            public static fromObject(object: { [k: string]: any }): google.api.ResourceDescriptor;

            /**
             * Creates a plain object from a ResourceDescriptor message. Also converts values to other types if specified.
             * @param message ResourceDescriptor
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.ResourceDescriptor, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResourceDescriptor to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResourceDescriptor
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace ResourceDescriptor {

            /** History enum. */
            enum History {
                HISTORY_UNSPECIFIED = 0,
                ORIGINALLY_SINGLE_PATTERN = 1,
                FUTURE_MULTI_PATTERN = 2
            }

            /** Style enum. */
            enum Style {
                STYLE_UNSPECIFIED = 0,
                DECLARATIVE_FRIENDLY = 1
            }
        }

        /** Properties of a ResourceReference. */
        interface IResourceReference {

            /** ResourceReference type */
            type?: (string|null);

            /** ResourceReference childType */
            childType?: (string|null);
        }

        /** Represents a ResourceReference. */
        class ResourceReference implements IResourceReference {

            /**
             * Constructs a new ResourceReference.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IResourceReference);

            /** ResourceReference type. */
            public type: string;

            /** ResourceReference childType. */
            public childType: string;

            /**
             * Creates a new ResourceReference instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ResourceReference instance
             */
            public static create(properties?: google.api.IResourceReference): google.api.ResourceReference;

            /**
             * Encodes the specified ResourceReference message. Does not implicitly {@link google.api.ResourceReference.verify|verify} messages.
             * @param message ResourceReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IResourceReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ResourceReference message, length delimited. Does not implicitly {@link google.api.ResourceReference.verify|verify} messages.
             * @param message ResourceReference message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IResourceReference, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ResourceReference message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ResourceReference
             * @throws {Error} If the payload is 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.ResourceReference;

            /**
             * Decodes a ResourceReference message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ResourceReference
             * @throws {Error} If the 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.ResourceReference;

            /**
             * Verifies a ResourceReference message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ResourceReference message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ResourceReference
             */
            public static fromObject(object: { [k: string]: any }): google.api.ResourceReference;

            /**
             * Creates a plain object from a ResourceReference message. Also converts values to other types if specified.
             * @param message ResourceReference
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.ResourceReference, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResourceReference to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ResourceReference
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Http. */
        interface IHttp {

            /** Http rules */
            rules?: (google.api.IHttpRule[]|null);

            /** Http fullyDecodeReservedExpansion */
            fullyDecodeReservedExpansion?: (boolean|null);
        }

        /** Represents a Http. */
        class Http implements IHttp {

            /**
             * Constructs a new Http.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IHttp);

            /** Http rules. */
            public rules: google.api.IHttpRule[];

            /** Http fullyDecodeReservedExpansion. */
            public fullyDecodeReservedExpansion: boolean;

            /**
             * Creates a new Http instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Http instance
             */
            public static create(properties?: google.api.IHttp): google.api.Http;

            /**
             * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages.
             * @param message Http message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages.
             * @param message Http message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Http message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Http
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http;

            /**
             * Decodes a Http message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Http
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http;

            /**
             * Verifies a Http message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Http message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Http
             */
            public static fromObject(object: { [k: string]: any }): google.api.Http;

            /**
             * Creates a plain object from a Http message. Also converts values to other types if specified.
             * @param message Http
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Http to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Http
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a HttpRule. */
        interface IHttpRule {

            /** HttpRule selector */
            selector?: (string|null);

            /** HttpRule get */
            get?: (string|null);

            /** HttpRule put */
            put?: (string|null);

            /** HttpRule post */
            post?: (string|null);

            /** HttpRule delete */
            "delete"?: (string|null);

            /** HttpRule patch */
            patch?: (string|null);

            /** HttpRule custom */
            custom?: (google.api.ICustomHttpPattern|null);

            /** HttpRule body */
            body?: (string|null);

            /** HttpRule responseBody */
            responseBody?: (string|null);

            /** HttpRule additionalBindings */
            additionalBindings?: (google.api.IHttpRule[]|null);
        }

        /** Represents a HttpRule. */
        class HttpRule implements IHttpRule {

            /**
             * Constructs a new HttpRule.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IHttpRule);

            /** HttpRule selector. */
            public selector: string;

            /** HttpRule get. */
            public get?: (string|null);

            /** HttpRule put. */
            public put?: (string|null);

            /** HttpRule post. */
            public post?: (string|null);

            /** HttpRule delete. */
            public delete?: (string|null);

            /** HttpRule patch. */
            public patch?: (string|null);

            /** HttpRule custom. */
            public custom?: (google.api.ICustomHttpPattern|null);

            /** HttpRule body. */
            public body: string;

            /** HttpRule responseBody. */
            public responseBody: string;

            /** HttpRule additionalBindings. */
            public additionalBindings: google.api.IHttpRule[];

            /** HttpRule pattern. */
            public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom");

            /**
             * Creates a new HttpRule instance using the specified properties.
             * @param [properties] Properties to set
             * @returns HttpRule instance
             */
            public static create(properties?: google.api.IHttpRule): google.api.HttpRule;

            /**
             * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
             * @param message HttpRule message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
             * @param message HttpRule message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a HttpRule message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns HttpRule
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule;

            /**
             * Decodes a HttpRule message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns HttpRule
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule;

            /**
             * Verifies a HttpRule message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a HttpRule message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns HttpRule
             */
            public static fromObject(object: { [k: string]: any }): google.api.HttpRule;

            /**
             * Creates a plain object from a HttpRule message. Also converts values to other types if specified.
             * @param message HttpRule
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this HttpRule to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for HttpRule
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CustomHttpPattern. */
        interface ICustomHttpPattern {

            /** CustomHttpPattern kind */
            kind?: (string|null);

            /** CustomHttpPattern path */
            path?: (string|null);
        }

        /** Represents a CustomHttpPattern. */
        class CustomHttpPattern implements ICustomHttpPattern {

            /**
             * Constructs a new CustomHttpPattern.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICustomHttpPattern);

            /** CustomHttpPattern kind. */
            public kind: string;

            /** CustomHttpPattern path. */
            public path: string;

            /**
             * Creates a new CustomHttpPattern instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CustomHttpPattern instance
             */
            public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern;

            /**
             * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
             * @param message CustomHttpPattern message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
             * @param message CustomHttpPattern message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CustomHttpPattern message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CustomHttpPattern
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern;

            /**
             * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CustomHttpPattern
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern;

            /**
             * Verifies a CustomHttpPattern message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CustomHttpPattern
             */
            public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern;

            /**
             * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified.
             * @param message CustomHttpPattern
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CustomHttpPattern to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CustomHttpPattern
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CommonLanguageSettings. */
        interface ICommonLanguageSettings {

            /** CommonLanguageSettings referenceDocsUri */
            referenceDocsUri?: (string|null);

            /** CommonLanguageSettings destinations */
            destinations?: (google.api.ClientLibraryDestination[]|null);

            /** CommonLanguageSettings selectiveGapicGeneration */
            selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
        }

        /** Represents a CommonLanguageSettings. */
        class CommonLanguageSettings implements ICommonLanguageSettings {

            /**
             * Constructs a new CommonLanguageSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICommonLanguageSettings);

            /** CommonLanguageSettings referenceDocsUri. */
            public referenceDocsUri: string;

            /** CommonLanguageSettings destinations. */
            public destinations: google.api.ClientLibraryDestination[];

            /** CommonLanguageSettings selectiveGapicGeneration. */
            public selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);

            /**
             * Creates a new CommonLanguageSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CommonLanguageSettings instance
             */
            public static create(properties?: google.api.ICommonLanguageSettings): google.api.CommonLanguageSettings;

            /**
             * Encodes the specified CommonLanguageSettings message. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
             * @param message CommonLanguageSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CommonLanguageSettings message, length delimited. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
             * @param message CommonLanguageSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CommonLanguageSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CommonLanguageSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CommonLanguageSettings;

            /**
             * Decodes a CommonLanguageSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CommonLanguageSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CommonLanguageSettings;

            /**
             * Verifies a CommonLanguageSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CommonLanguageSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CommonLanguageSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.CommonLanguageSettings;

            /**
             * Creates a plain object from a CommonLanguageSettings message. Also converts values to other types if specified.
             * @param message CommonLanguageSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.CommonLanguageSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CommonLanguageSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CommonLanguageSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ClientLibrarySettings. */
        interface IClientLibrarySettings {

            /** ClientLibrarySettings version */
            version?: (string|null);

            /** ClientLibrarySettings launchStage */
            launchStage?: (google.api.LaunchStage|keyof typeof google.api.LaunchStage|null);

            /** ClientLibrarySettings restNumericEnums */
            restNumericEnums?: (boolean|null);

            /** ClientLibrarySettings javaSettings */
            javaSettings?: (google.api.IJavaSettings|null);

            /** ClientLibrarySettings cppSettings */
            cppSettings?: (google.api.ICppSettings|null);

            /** ClientLibrarySettings phpSettings */
            phpSettings?: (google.api.IPhpSettings|null);

            /** ClientLibrarySettings pythonSettings */
            pythonSettings?: (google.api.IPythonSettings|null);

            /** ClientLibrarySettings nodeSettings */
            nodeSettings?: (google.api.INodeSettings|null);

            /** ClientLibrarySettings dotnetSettings */
            dotnetSettings?: (google.api.IDotnetSettings|null);

            /** ClientLibrarySettings rubySettings */
            rubySettings?: (google.api.IRubySettings|null);

            /** ClientLibrarySettings goSettings */
            goSettings?: (google.api.IGoSettings|null);
        }

        /** Represents a ClientLibrarySettings. */
        class ClientLibrarySettings implements IClientLibrarySettings {

            /**
             * Constructs a new ClientLibrarySettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IClientLibrarySettings);

            /** ClientLibrarySettings version. */
            public version: string;

            /** ClientLibrarySettings launchStage. */
            public launchStage: (google.api.LaunchStage|keyof typeof google.api.LaunchStage);

            /** ClientLibrarySettings restNumericEnums. */
            public restNumericEnums: boolean;

            /** ClientLibrarySettings javaSettings. */
            public javaSettings?: (google.api.IJavaSettings|null);

            /** ClientLibrarySettings cppSettings. */
            public cppSettings?: (google.api.ICppSettings|null);

            /** ClientLibrarySettings phpSettings. */
            public phpSettings?: (google.api.IPhpSettings|null);

            /** ClientLibrarySettings pythonSettings. */
            public pythonSettings?: (google.api.IPythonSettings|null);

            /** ClientLibrarySettings nodeSettings. */
            public nodeSettings?: (google.api.INodeSettings|null);

            /** ClientLibrarySettings dotnetSettings. */
            public dotnetSettings?: (google.api.IDotnetSettings|null);

            /** ClientLibrarySettings rubySettings. */
            public rubySettings?: (google.api.IRubySettings|null);

            /** ClientLibrarySettings goSettings. */
            public goSettings?: (google.api.IGoSettings|null);

            /**
             * Creates a new ClientLibrarySettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ClientLibrarySettings instance
             */
            public static create(properties?: google.api.IClientLibrarySettings): google.api.ClientLibrarySettings;

            /**
             * Encodes the specified ClientLibrarySettings message. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
             * @param message ClientLibrarySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ClientLibrarySettings message, length delimited. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
             * @param message ClientLibrarySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ClientLibrarySettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ClientLibrarySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ClientLibrarySettings;

            /**
             * Decodes a ClientLibrarySettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ClientLibrarySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ClientLibrarySettings;

            /**
             * Verifies a ClientLibrarySettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ClientLibrarySettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ClientLibrarySettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.ClientLibrarySettings;

            /**
             * Creates a plain object from a ClientLibrarySettings message. Also converts values to other types if specified.
             * @param message ClientLibrarySettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.ClientLibrarySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ClientLibrarySettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ClientLibrarySettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Publishing. */
        interface IPublishing {

            /** Publishing methodSettings */
            methodSettings?: (google.api.IMethodSettings[]|null);

            /** Publishing newIssueUri */
            newIssueUri?: (string|null);

            /** Publishing documentationUri */
            documentationUri?: (string|null);

            /** Publishing apiShortName */
            apiShortName?: (string|null);

            /** Publishing githubLabel */
            githubLabel?: (string|null);

            /** Publishing codeownerGithubTeams */
            codeownerGithubTeams?: (string[]|null);

            /** Publishing docTagPrefix */
            docTagPrefix?: (string|null);

            /** Publishing organization */
            organization?: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization|null);

            /** Publishing librarySettings */
            librarySettings?: (google.api.IClientLibrarySettings[]|null);

            /** Publishing protoReferenceDocumentationUri */
            protoReferenceDocumentationUri?: (string|null);

            /** Publishing restReferenceDocumentationUri */
            restReferenceDocumentationUri?: (string|null);
        }

        /** Represents a Publishing. */
        class Publishing implements IPublishing {

            /**
             * Constructs a new Publishing.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IPublishing);

            /** Publishing methodSettings. */
            public methodSettings: google.api.IMethodSettings[];

            /** Publishing newIssueUri. */
            public newIssueUri: string;

            /** Publishing documentationUri. */
            public documentationUri: string;

            /** Publishing apiShortName. */
            public apiShortName: string;

            /** Publishing githubLabel. */
            public githubLabel: string;

            /** Publishing codeownerGithubTeams. */
            public codeownerGithubTeams: string[];

            /** Publishing docTagPrefix. */
            public docTagPrefix: string;

            /** Publishing organization. */
            public organization: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization);

            /** Publishing librarySettings. */
            public librarySettings: google.api.IClientLibrarySettings[];

            /** Publishing protoReferenceDocumentationUri. */
            public protoReferenceDocumentationUri: string;

            /** Publishing restReferenceDocumentationUri. */
            public restReferenceDocumentationUri: string;

            /**
             * Creates a new Publishing instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Publishing instance
             */
            public static create(properties?: google.api.IPublishing): google.api.Publishing;

            /**
             * Encodes the specified Publishing message. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
             * @param message Publishing message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Publishing message, length delimited. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
             * @param message Publishing message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Publishing message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Publishing
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Publishing;

            /**
             * Decodes a Publishing message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Publishing
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Publishing;

            /**
             * Verifies a Publishing message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Publishing message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Publishing
             */
            public static fromObject(object: { [k: string]: any }): google.api.Publishing;

            /**
             * Creates a plain object from a Publishing message. Also converts values to other types if specified.
             * @param message Publishing
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.Publishing, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Publishing to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Publishing
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a JavaSettings. */
        interface IJavaSettings {

            /** JavaSettings libraryPackage */
            libraryPackage?: (string|null);

            /** JavaSettings serviceClassNames */
            serviceClassNames?: ({ [k: string]: string }|null);

            /** JavaSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a JavaSettings. */
        class JavaSettings implements IJavaSettings {

            /**
             * Constructs a new JavaSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IJavaSettings);

            /** JavaSettings libraryPackage. */
            public libraryPackage: string;

            /** JavaSettings serviceClassNames. */
            public serviceClassNames: { [k: string]: string };

            /** JavaSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new JavaSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns JavaSettings instance
             */
            public static create(properties?: google.api.IJavaSettings): google.api.JavaSettings;

            /**
             * Encodes the specified JavaSettings message. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
             * @param message JavaSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified JavaSettings message, length delimited. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
             * @param message JavaSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a JavaSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns JavaSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.JavaSettings;

            /**
             * Decodes a JavaSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns JavaSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.JavaSettings;

            /**
             * Verifies a JavaSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a JavaSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns JavaSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.JavaSettings;

            /**
             * Creates a plain object from a JavaSettings message. Also converts values to other types if specified.
             * @param message JavaSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.JavaSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this JavaSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for JavaSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CppSettings. */
        interface ICppSettings {

            /** CppSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a CppSettings. */
        class CppSettings implements ICppSettings {

            /**
             * Constructs a new CppSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ICppSettings);

            /** CppSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new CppSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CppSettings instance
             */
            public static create(properties?: google.api.ICppSettings): google.api.CppSettings;

            /**
             * Encodes the specified CppSettings message. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
             * @param message CppSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CppSettings message, length delimited. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
             * @param message CppSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CppSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CppSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CppSettings;

            /**
             * Decodes a CppSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CppSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CppSettings;

            /**
             * Verifies a CppSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CppSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CppSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.CppSettings;

            /**
             * Creates a plain object from a CppSettings message. Also converts values to other types if specified.
             * @param message CppSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.CppSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CppSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CppSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PhpSettings. */
        interface IPhpSettings {

            /** PhpSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a PhpSettings. */
        class PhpSettings implements IPhpSettings {

            /**
             * Constructs a new PhpSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IPhpSettings);

            /** PhpSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new PhpSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PhpSettings instance
             */
            public static create(properties?: google.api.IPhpSettings): google.api.PhpSettings;

            /**
             * Encodes the specified PhpSettings message. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
             * @param message PhpSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PhpSettings message, length delimited. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
             * @param message PhpSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PhpSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PhpSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PhpSettings;

            /**
             * Decodes a PhpSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PhpSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PhpSettings;

            /**
             * Verifies a PhpSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PhpSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PhpSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.PhpSettings;

            /**
             * Creates a plain object from a PhpSettings message. Also converts values to other types if specified.
             * @param message PhpSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.PhpSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PhpSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PhpSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PythonSettings. */
        interface IPythonSettings {

            /** PythonSettings common */
            common?: (google.api.ICommonLanguageSettings|null);

            /** PythonSettings experimentalFeatures */
            experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
        }

        /** Represents a PythonSettings. */
        class PythonSettings implements IPythonSettings {

            /**
             * Constructs a new PythonSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IPythonSettings);

            /** PythonSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /** PythonSettings experimentalFeatures. */
            public experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);

            /**
             * Creates a new PythonSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PythonSettings instance
             */
            public static create(properties?: google.api.IPythonSettings): google.api.PythonSettings;

            /**
             * Encodes the specified PythonSettings message. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
             * @param message PythonSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PythonSettings message, length delimited. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
             * @param message PythonSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PythonSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PythonSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings;

            /**
             * Decodes a PythonSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PythonSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings;

            /**
             * Verifies a PythonSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PythonSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PythonSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.PythonSettings;

            /**
             * Creates a plain object from a PythonSettings message. Also converts values to other types if specified.
             * @param message PythonSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.PythonSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PythonSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PythonSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace PythonSettings {

            /** Properties of an ExperimentalFeatures. */
            interface IExperimentalFeatures {

                /** ExperimentalFeatures restAsyncIoEnabled */
                restAsyncIoEnabled?: (boolean|null);

                /** ExperimentalFeatures protobufPythonicTypesEnabled */
                protobufPythonicTypesEnabled?: (boolean|null);

                /** ExperimentalFeatures unversionedPackageDisabled */
                unversionedPackageDisabled?: (boolean|null);
            }

            /** Represents an ExperimentalFeatures. */
            class ExperimentalFeatures implements IExperimentalFeatures {

                /**
                 * Constructs a new ExperimentalFeatures.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.api.PythonSettings.IExperimentalFeatures);

                /** ExperimentalFeatures restAsyncIoEnabled. */
                public restAsyncIoEnabled: boolean;

                /** ExperimentalFeatures protobufPythonicTypesEnabled. */
                public protobufPythonicTypesEnabled: boolean;

                /** ExperimentalFeatures unversionedPackageDisabled. */
                public unversionedPackageDisabled: boolean;

                /**
                 * Creates a new ExperimentalFeatures instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ExperimentalFeatures instance
                 */
                public static create(properties?: google.api.PythonSettings.IExperimentalFeatures): google.api.PythonSettings.ExperimentalFeatures;

                /**
                 * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
                 * @param message ExperimentalFeatures message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
                 * @param message ExperimentalFeatures message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an ExperimentalFeatures message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ExperimentalFeatures
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings.ExperimentalFeatures;

                /**
                 * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ExperimentalFeatures
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings.ExperimentalFeatures;

                /**
                 * Verifies an ExperimentalFeatures message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ExperimentalFeatures
                 */
                public static fromObject(object: { [k: string]: any }): google.api.PythonSettings.ExperimentalFeatures;

                /**
                 * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
                 * @param message ExperimentalFeatures
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.api.PythonSettings.ExperimentalFeatures, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ExperimentalFeatures to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ExperimentalFeatures
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a NodeSettings. */
        interface INodeSettings {

            /** NodeSettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a NodeSettings. */
        class NodeSettings implements INodeSettings {

            /**
             * Constructs a new NodeSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.INodeSettings);

            /** NodeSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new NodeSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NodeSettings instance
             */
            public static create(properties?: google.api.INodeSettings): google.api.NodeSettings;

            /**
             * Encodes the specified NodeSettings message. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
             * @param message NodeSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NodeSettings message, length delimited. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
             * @param message NodeSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NodeSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NodeSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.NodeSettings;

            /**
             * Decodes a NodeSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NodeSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.NodeSettings;

            /**
             * Verifies a NodeSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a NodeSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NodeSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.NodeSettings;

            /**
             * Creates a plain object from a NodeSettings message. Also converts values to other types if specified.
             * @param message NodeSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.NodeSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NodeSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NodeSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DotnetSettings. */
        interface IDotnetSettings {

            /** DotnetSettings common */
            common?: (google.api.ICommonLanguageSettings|null);

            /** DotnetSettings renamedServices */
            renamedServices?: ({ [k: string]: string }|null);

            /** DotnetSettings renamedResources */
            renamedResources?: ({ [k: string]: string }|null);

            /** DotnetSettings ignoredResources */
            ignoredResources?: (string[]|null);

            /** DotnetSettings forcedNamespaceAliases */
            forcedNamespaceAliases?: (string[]|null);

            /** DotnetSettings handwrittenSignatures */
            handwrittenSignatures?: (string[]|null);
        }

        /** Represents a DotnetSettings. */
        class DotnetSettings implements IDotnetSettings {

            /**
             * Constructs a new DotnetSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IDotnetSettings);

            /** DotnetSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /** DotnetSettings renamedServices. */
            public renamedServices: { [k: string]: string };

            /** DotnetSettings renamedResources. */
            public renamedResources: { [k: string]: string };

            /** DotnetSettings ignoredResources. */
            public ignoredResources: string[];

            /** DotnetSettings forcedNamespaceAliases. */
            public forcedNamespaceAliases: string[];

            /** DotnetSettings handwrittenSignatures. */
            public handwrittenSignatures: string[];

            /**
             * Creates a new DotnetSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DotnetSettings instance
             */
            public static create(properties?: google.api.IDotnetSettings): google.api.DotnetSettings;

            /**
             * Encodes the specified DotnetSettings message. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
             * @param message DotnetSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DotnetSettings message, length delimited. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
             * @param message DotnetSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DotnetSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DotnetSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.DotnetSettings;

            /**
             * Decodes a DotnetSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DotnetSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.DotnetSettings;

            /**
             * Verifies a DotnetSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DotnetSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DotnetSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.DotnetSettings;

            /**
             * Creates a plain object from a DotnetSettings message. Also converts values to other types if specified.
             * @param message DotnetSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.DotnetSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DotnetSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DotnetSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a RubySettings. */
        interface IRubySettings {

            /** RubySettings common */
            common?: (google.api.ICommonLanguageSettings|null);
        }

        /** Represents a RubySettings. */
        class RubySettings implements IRubySettings {

            /**
             * Constructs a new RubySettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IRubySettings);

            /** RubySettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /**
             * Creates a new RubySettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns RubySettings instance
             */
            public static create(properties?: google.api.IRubySettings): google.api.RubySettings;

            /**
             * Encodes the specified RubySettings message. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
             * @param message RubySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified RubySettings message, length delimited. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
             * @param message RubySettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a RubySettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns RubySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.RubySettings;

            /**
             * Decodes a RubySettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns RubySettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.RubySettings;

            /**
             * Verifies a RubySettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a RubySettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns RubySettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.RubySettings;

            /**
             * Creates a plain object from a RubySettings message. Also converts values to other types if specified.
             * @param message RubySettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.RubySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this RubySettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for RubySettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a GoSettings. */
        interface IGoSettings {

            /** GoSettings common */
            common?: (google.api.ICommonLanguageSettings|null);

            /** GoSettings renamedServices */
            renamedServices?: ({ [k: string]: string }|null);
        }

        /** Represents a GoSettings. */
        class GoSettings implements IGoSettings {

            /**
             * Constructs a new GoSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IGoSettings);

            /** GoSettings common. */
            public common?: (google.api.ICommonLanguageSettings|null);

            /** GoSettings renamedServices. */
            public renamedServices: { [k: string]: string };

            /**
             * Creates a new GoSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GoSettings instance
             */
            public static create(properties?: google.api.IGoSettings): google.api.GoSettings;

            /**
             * Encodes the specified GoSettings message. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
             * @param message GoSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GoSettings message, length delimited. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
             * @param message GoSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GoSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GoSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.GoSettings;

            /**
             * Decodes a GoSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GoSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.GoSettings;

            /**
             * Verifies a GoSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GoSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GoSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.GoSettings;

            /**
             * Creates a plain object from a GoSettings message. Also converts values to other types if specified.
             * @param message GoSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.GoSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GoSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GoSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a MethodSettings. */
        interface IMethodSettings {

            /** MethodSettings selector */
            selector?: (string|null);

            /** MethodSettings longRunning */
            longRunning?: (google.api.MethodSettings.ILongRunning|null);

            /** MethodSettings autoPopulatedFields */
            autoPopulatedFields?: (string[]|null);
        }

        /** Represents a MethodSettings. */
        class MethodSettings implements IMethodSettings {

            /**
             * Constructs a new MethodSettings.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IMethodSettings);

            /** MethodSettings selector. */
            public selector: string;

            /** MethodSettings longRunning. */
            public longRunning?: (google.api.MethodSettings.ILongRunning|null);

            /** MethodSettings autoPopulatedFields. */
            public autoPopulatedFields: string[];

            /**
             * Creates a new MethodSettings instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MethodSettings instance
             */
            public static create(properties?: google.api.IMethodSettings): google.api.MethodSettings;

            /**
             * Encodes the specified MethodSettings message. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
             * @param message MethodSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified MethodSettings message, length delimited. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
             * @param message MethodSettings message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a MethodSettings message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MethodSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings;

            /**
             * Decodes a MethodSettings message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MethodSettings
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings;

            /**
             * Verifies a MethodSettings message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a MethodSettings message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns MethodSettings
             */
            public static fromObject(object: { [k: string]: any }): google.api.MethodSettings;

            /**
             * Creates a plain object from a MethodSettings message. Also converts values to other types if specified.
             * @param message MethodSettings
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.MethodSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MethodSettings to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for MethodSettings
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace MethodSettings {

            /** Properties of a LongRunning. */
            interface ILongRunning {

                /** LongRunning initialPollDelay */
                initialPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning pollDelayMultiplier */
                pollDelayMultiplier?: (number|null);

                /** LongRunning maxPollDelay */
                maxPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning totalPollTimeout */
                totalPollTimeout?: (google.protobuf.IDuration|null);
            }

            /** Represents a LongRunning. */
            class LongRunning implements ILongRunning {

                /**
                 * Constructs a new LongRunning.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.api.MethodSettings.ILongRunning);

                /** LongRunning initialPollDelay. */
                public initialPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning pollDelayMultiplier. */
                public pollDelayMultiplier: number;

                /** LongRunning maxPollDelay. */
                public maxPollDelay?: (google.protobuf.IDuration|null);

                /** LongRunning totalPollTimeout. */
                public totalPollTimeout?: (google.protobuf.IDuration|null);

                /**
                 * Creates a new LongRunning instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns LongRunning instance
                 */
                public static create(properties?: google.api.MethodSettings.ILongRunning): google.api.MethodSettings.LongRunning;

                /**
                 * Encodes the specified LongRunning message. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
                 * @param message LongRunning message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified LongRunning message, length delimited. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
                 * @param message LongRunning message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a LongRunning message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns LongRunning
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings.LongRunning;

                /**
                 * Decodes a LongRunning message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns LongRunning
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings.LongRunning;

                /**
                 * Verifies a LongRunning message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a LongRunning message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns LongRunning
                 */
                public static fromObject(object: { [k: string]: any }): google.api.MethodSettings.LongRunning;

                /**
                 * Creates a plain object from a LongRunning message. Also converts values to other types if specified.
                 * @param message LongRunning
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.api.MethodSettings.LongRunning, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this LongRunning to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for LongRunning
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** ClientLibraryOrganization enum. */
        enum ClientLibraryOrganization {
            CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0,
            CLOUD = 1,
            ADS = 2,
            PHOTOS = 3,
            STREET_VIEW = 4,
            SHOPPING = 5,
            GEO = 6,
            GENERATIVE_AI = 7
        }

        /** ClientLibraryDestination enum. */
        enum ClientLibraryDestination {
            CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0,
            GITHUB = 10,
            PACKAGE_MANAGER = 20
        }

        /** Properties of a SelectiveGapicGeneration. */
        interface ISelectiveGapicGeneration {

            /** SelectiveGapicGeneration methods */
            methods?: (string[]|null);

            /** SelectiveGapicGeneration generateOmittedAsInternal */
            generateOmittedAsInternal?: (boolean|null);
        }

        /** Represents a SelectiveGapicGeneration. */
        class SelectiveGapicGeneration implements ISelectiveGapicGeneration {

            /**
             * Constructs a new SelectiveGapicGeneration.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.ISelectiveGapicGeneration);

            /** SelectiveGapicGeneration methods. */
            public methods: string[];

            /** SelectiveGapicGeneration generateOmittedAsInternal. */
            public generateOmittedAsInternal: boolean;

            /**
             * Creates a new SelectiveGapicGeneration instance using the specified properties.
             * @param [properties] Properties to set
             * @returns SelectiveGapicGeneration instance
             */
            public static create(properties?: google.api.ISelectiveGapicGeneration): google.api.SelectiveGapicGeneration;

            /**
             * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
             * @param message SelectiveGapicGeneration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
             * @param message SelectiveGapicGeneration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns SelectiveGapicGeneration
             * @throws {Error} If the payload is 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.SelectiveGapicGeneration;

            /**
             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns SelectiveGapicGeneration
             * @throws {Error} If the 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.SelectiveGapicGeneration;

            /**
             * Verifies a SelectiveGapicGeneration message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns SelectiveGapicGeneration
             */
            public static fromObject(object: { [k: string]: any }): google.api.SelectiveGapicGeneration;

            /**
             * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
             * @param message SelectiveGapicGeneration
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.SelectiveGapicGeneration, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this SelectiveGapicGeneration to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for SelectiveGapicGeneration
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** LaunchStage enum. */
        enum LaunchStage {
            LAUNCH_STAGE_UNSPECIFIED = 0,
            UNIMPLEMENTED = 6,
            PRELAUNCH = 7,
            EARLY_ACCESS = 1,
            ALPHA = 2,
            BETA = 3,
            GA = 4,
            DEPRECATED = 5
        }
    }

    /** Namespace longrunning. */
    namespace longrunning {

        /** Represents an Operations */
        class Operations extends $protobuf.rpc.Service {

            /**
             * Constructs a new Operations service.
             * @param rpcImpl RPC implementation
             * @param [requestDelimited=false] Whether requests are length-delimited
             * @param [responseDelimited=false] Whether responses are length-delimited
             */
            constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);

            /**
             * Creates new Operations service using the specified rpc implementation.
             * @param rpcImpl RPC implementation
             * @param [requestDelimited=false] Whether requests are length-delimited
             * @param [responseDelimited=false] Whether responses are length-delimited
             * @returns RPC service. Useful where requests and/or responses are streamed.
             */
            public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): Operations;

            /**
             * Calls ListOperations.
             * @param request ListOperationsRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and ListOperationsResponse
             */
            public listOperations(request: google.longrunning.IListOperationsRequest, callback: google.longrunning.Operations.ListOperationsCallback): void;

            /**
             * Calls ListOperations.
             * @param request ListOperationsRequest message or plain object
             * @returns Promise
             */
            public listOperations(request: google.longrunning.IListOperationsRequest): Promise<google.longrunning.ListOperationsResponse>;

            /**
             * Calls GetOperation.
             * @param request GetOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Operation
             */
            public getOperation(request: google.longrunning.IGetOperationRequest, callback: google.longrunning.Operations.GetOperationCallback): void;

            /**
             * Calls GetOperation.
             * @param request GetOperationRequest message or plain object
             * @returns Promise
             */
            public getOperation(request: google.longrunning.IGetOperationRequest): Promise<google.longrunning.Operation>;

            /**
             * Calls DeleteOperation.
             * @param request DeleteOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Empty
             */
            public deleteOperation(request: google.longrunning.IDeleteOperationRequest, callback: google.longrunning.Operations.DeleteOperationCallback): void;

            /**
             * Calls DeleteOperation.
             * @param request DeleteOperationRequest message or plain object
             * @returns Promise
             */
            public deleteOperation(request: google.longrunning.IDeleteOperationRequest): Promise<google.protobuf.Empty>;

            /**
             * Calls CancelOperation.
             * @param request CancelOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Empty
             */
            public cancelOperation(request: google.longrunning.ICancelOperationRequest, callback: google.longrunning.Operations.CancelOperationCallback): void;

            /**
             * Calls CancelOperation.
             * @param request CancelOperationRequest message or plain object
             * @returns Promise
             */
            public cancelOperation(request: google.longrunning.ICancelOperationRequest): Promise<google.protobuf.Empty>;

            /**
             * Calls WaitOperation.
             * @param request WaitOperationRequest message or plain object
             * @param callback Node-style callback called with the error, if any, and Operation
             */
            public waitOperation(request: google.longrunning.IWaitOperationRequest, callback: google.longrunning.Operations.WaitOperationCallback): void;

            /**
             * Calls WaitOperation.
             * @param request WaitOperationRequest message or plain object
             * @returns Promise
             */
            public waitOperation(request: google.longrunning.IWaitOperationRequest): Promise<google.longrunning.Operation>;
        }

        namespace Operations {

            /**
             * Callback as used by {@link google.longrunning.Operations|listOperations}.
             * @param error Error, if any
             * @param [response] ListOperationsResponse
             */
            type ListOperationsCallback = (error: (Error|null), response?: google.longrunning.ListOperationsResponse) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|getOperation}.
             * @param error Error, if any
             * @param [response] Operation
             */
            type GetOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|deleteOperation}.
             * @param error Error, if any
             * @param [response] Empty
             */
            type DeleteOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|cancelOperation}.
             * @param error Error, if any
             * @param [response] Empty
             */
            type CancelOperationCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

            /**
             * Callback as used by {@link google.longrunning.Operations|waitOperation}.
             * @param error Error, if any
             * @param [response] Operation
             */
            type WaitOperationCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
        }

        /** Properties of an Operation. */
        interface IOperation {

            /** Operation name */
            name?: (string|null);

            /** Operation metadata */
            metadata?: (google.protobuf.IAny|null);

            /** Operation done */
            done?: (boolean|null);

            /** Operation error */
            error?: (google.rpc.IStatus|null);

            /** Operation response */
            response?: (google.protobuf.IAny|null);
        }

        /** Represents an Operation. */
        class Operation implements IOperation {

            /**
             * Constructs a new Operation.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IOperation);

            /** Operation name. */
            public name: string;

            /** Operation metadata. */
            public metadata?: (google.protobuf.IAny|null);

            /** Operation done. */
            public done: boolean;

            /** Operation error. */
            public error?: (google.rpc.IStatus|null);

            /** Operation response. */
            public response?: (google.protobuf.IAny|null);

            /** Operation result. */
            public result?: ("error"|"response");

            /**
             * Creates a new Operation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Operation instance
             */
            public static create(properties?: google.longrunning.IOperation): google.longrunning.Operation;

            /**
             * Encodes the specified Operation message. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages.
             * @param message Operation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Operation message, length delimited. Does not implicitly {@link google.longrunning.Operation.verify|verify} messages.
             * @param message Operation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Operation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Operation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.Operation;

            /**
             * Decodes an Operation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Operation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.Operation;

            /**
             * Verifies an Operation message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Operation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Operation
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.Operation;

            /**
             * Creates a plain object from an Operation message. Also converts values to other types if specified.
             * @param message Operation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.Operation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Operation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Operation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a GetOperationRequest. */
        interface IGetOperationRequest {

            /** GetOperationRequest name */
            name?: (string|null);
        }

        /** Represents a GetOperationRequest. */
        class GetOperationRequest implements IGetOperationRequest {

            /**
             * Constructs a new GetOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IGetOperationRequest);

            /** GetOperationRequest name. */
            public name: string;

            /**
             * Creates a new GetOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GetOperationRequest instance
             */
            public static create(properties?: google.longrunning.IGetOperationRequest): google.longrunning.GetOperationRequest;

            /**
             * Encodes the specified GetOperationRequest message. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages.
             * @param message GetOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GetOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.GetOperationRequest.verify|verify} messages.
             * @param message GetOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IGetOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GetOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GetOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.GetOperationRequest;

            /**
             * Decodes a GetOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GetOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.GetOperationRequest;

            /**
             * Verifies a GetOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GetOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GetOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.GetOperationRequest;

            /**
             * Creates a plain object from a GetOperationRequest message. Also converts values to other types if specified.
             * @param message GetOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.GetOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GetOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GetOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ListOperationsRequest. */
        interface IListOperationsRequest {

            /** ListOperationsRequest name */
            name?: (string|null);

            /** ListOperationsRequest filter */
            filter?: (string|null);

            /** ListOperationsRequest pageSize */
            pageSize?: (number|null);

            /** ListOperationsRequest pageToken */
            pageToken?: (string|null);
        }

        /** Represents a ListOperationsRequest. */
        class ListOperationsRequest implements IListOperationsRequest {

            /**
             * Constructs a new ListOperationsRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IListOperationsRequest);

            /** ListOperationsRequest name. */
            public name: string;

            /** ListOperationsRequest filter. */
            public filter: string;

            /** ListOperationsRequest pageSize. */
            public pageSize: number;

            /** ListOperationsRequest pageToken. */
            public pageToken: string;

            /**
             * Creates a new ListOperationsRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ListOperationsRequest instance
             */
            public static create(properties?: google.longrunning.IListOperationsRequest): google.longrunning.ListOperationsRequest;

            /**
             * Encodes the specified ListOperationsRequest message. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages.
             * @param message ListOperationsRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ListOperationsRequest message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsRequest.verify|verify} messages.
             * @param message ListOperationsRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IListOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ListOperationsRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ListOperationsRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsRequest;

            /**
             * Decodes a ListOperationsRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ListOperationsRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsRequest;

            /**
             * Verifies a ListOperationsRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ListOperationsRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ListOperationsRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsRequest;

            /**
             * Creates a plain object from a ListOperationsRequest message. Also converts values to other types if specified.
             * @param message ListOperationsRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.ListOperationsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ListOperationsRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ListOperationsRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a ListOperationsResponse. */
        interface IListOperationsResponse {

            /** ListOperationsResponse operations */
            operations?: (google.longrunning.IOperation[]|null);

            /** ListOperationsResponse nextPageToken */
            nextPageToken?: (string|null);
        }

        /** Represents a ListOperationsResponse. */
        class ListOperationsResponse implements IListOperationsResponse {

            /**
             * Constructs a new ListOperationsResponse.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IListOperationsResponse);

            /** ListOperationsResponse operations. */
            public operations: google.longrunning.IOperation[];

            /** ListOperationsResponse nextPageToken. */
            public nextPageToken: string;

            /**
             * Creates a new ListOperationsResponse instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ListOperationsResponse instance
             */
            public static create(properties?: google.longrunning.IListOperationsResponse): google.longrunning.ListOperationsResponse;

            /**
             * Encodes the specified ListOperationsResponse message. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages.
             * @param message ListOperationsResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ListOperationsResponse message, length delimited. Does not implicitly {@link google.longrunning.ListOperationsResponse.verify|verify} messages.
             * @param message ListOperationsResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IListOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ListOperationsResponse message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ListOperationsResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.ListOperationsResponse;

            /**
             * Decodes a ListOperationsResponse message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ListOperationsResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.ListOperationsResponse;

            /**
             * Verifies a ListOperationsResponse message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ListOperationsResponse message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ListOperationsResponse
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.ListOperationsResponse;

            /**
             * Creates a plain object from a ListOperationsResponse message. Also converts values to other types if specified.
             * @param message ListOperationsResponse
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.ListOperationsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ListOperationsResponse to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ListOperationsResponse
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CancelOperationRequest. */
        interface ICancelOperationRequest {

            /** CancelOperationRequest name */
            name?: (string|null);
        }

        /** Represents a CancelOperationRequest. */
        class CancelOperationRequest implements ICancelOperationRequest {

            /**
             * Constructs a new CancelOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.ICancelOperationRequest);

            /** CancelOperationRequest name. */
            public name: string;

            /**
             * Creates a new CancelOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CancelOperationRequest instance
             */
            public static create(properties?: google.longrunning.ICancelOperationRequest): google.longrunning.CancelOperationRequest;

            /**
             * Encodes the specified CancelOperationRequest message. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages.
             * @param message CancelOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CancelOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.CancelOperationRequest.verify|verify} messages.
             * @param message CancelOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.ICancelOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CancelOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CancelOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.CancelOperationRequest;

            /**
             * Decodes a CancelOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CancelOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.CancelOperationRequest;

            /**
             * Verifies a CancelOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CancelOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CancelOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.CancelOperationRequest;

            /**
             * Creates a plain object from a CancelOperationRequest message. Also converts values to other types if specified.
             * @param message CancelOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.CancelOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CancelOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a DeleteOperationRequest. */
        interface IDeleteOperationRequest {

            /** DeleteOperationRequest name */
            name?: (string|null);
        }

        /** Represents a DeleteOperationRequest. */
        class DeleteOperationRequest implements IDeleteOperationRequest {

            /**
             * Constructs a new DeleteOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IDeleteOperationRequest);

            /** DeleteOperationRequest name. */
            public name: string;

            /**
             * Creates a new DeleteOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DeleteOperationRequest instance
             */
            public static create(properties?: google.longrunning.IDeleteOperationRequest): google.longrunning.DeleteOperationRequest;

            /**
             * Encodes the specified DeleteOperationRequest message. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages.
             * @param message DeleteOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DeleteOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.DeleteOperationRequest.verify|verify} messages.
             * @param message DeleteOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IDeleteOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DeleteOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DeleteOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.DeleteOperationRequest;

            /**
             * Decodes a DeleteOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DeleteOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.DeleteOperationRequest;

            /**
             * Verifies a DeleteOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DeleteOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DeleteOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.DeleteOperationRequest;

            /**
             * Creates a plain object from a DeleteOperationRequest message. Also converts values to other types if specified.
             * @param message DeleteOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.DeleteOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DeleteOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DeleteOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a WaitOperationRequest. */
        interface IWaitOperationRequest {

            /** WaitOperationRequest name */
            name?: (string|null);

            /** WaitOperationRequest timeout */
            timeout?: (google.protobuf.IDuration|null);
        }

        /** Represents a WaitOperationRequest. */
        class WaitOperationRequest implements IWaitOperationRequest {

            /**
             * Constructs a new WaitOperationRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IWaitOperationRequest);

            /** WaitOperationRequest name. */
            public name: string;

            /** WaitOperationRequest timeout. */
            public timeout?: (google.protobuf.IDuration|null);

            /**
             * Creates a new WaitOperationRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns WaitOperationRequest instance
             */
            public static create(properties?: google.longrunning.IWaitOperationRequest): google.longrunning.WaitOperationRequest;

            /**
             * Encodes the specified WaitOperationRequest message. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages.
             * @param message WaitOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified WaitOperationRequest message, length delimited. Does not implicitly {@link google.longrunning.WaitOperationRequest.verify|verify} messages.
             * @param message WaitOperationRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IWaitOperationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a WaitOperationRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns WaitOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.WaitOperationRequest;

            /**
             * Decodes a WaitOperationRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns WaitOperationRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.WaitOperationRequest;

            /**
             * Verifies a WaitOperationRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a WaitOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns WaitOperationRequest
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.WaitOperationRequest;

            /**
             * Creates a plain object from a WaitOperationRequest message. Also converts values to other types if specified.
             * @param message WaitOperationRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.WaitOperationRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WaitOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for WaitOperationRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an OperationInfo. */
        interface IOperationInfo {

            /** OperationInfo responseType */
            responseType?: (string|null);

            /** OperationInfo metadataType */
            metadataType?: (string|null);
        }

        /** Represents an OperationInfo. */
        class OperationInfo implements IOperationInfo {

            /**
             * Constructs a new OperationInfo.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.longrunning.IOperationInfo);

            /** OperationInfo responseType. */
            public responseType: string;

            /** OperationInfo metadataType. */
            public metadataType: string;

            /**
             * Creates a new OperationInfo instance using the specified properties.
             * @param [properties] Properties to set
             * @returns OperationInfo instance
             */
            public static create(properties?: google.longrunning.IOperationInfo): google.longrunning.OperationInfo;

            /**
             * Encodes the specified OperationInfo message. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages.
             * @param message OperationInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified OperationInfo message, length delimited. Does not implicitly {@link google.longrunning.OperationInfo.verify|verify} messages.
             * @param message OperationInfo message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.longrunning.IOperationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an OperationInfo message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns OperationInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.longrunning.OperationInfo;

            /**
             * Decodes an OperationInfo message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns OperationInfo
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.longrunning.OperationInfo;

            /**
             * Verifies an OperationInfo message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an OperationInfo message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns OperationInfo
             */
            public static fromObject(object: { [k: string]: any }): google.longrunning.OperationInfo;

            /**
             * Creates a plain object from an OperationInfo message. Also converts values to other types if specified.
             * @param message OperationInfo
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.longrunning.OperationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this OperationInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for OperationInfo
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Namespace iam. */
    namespace iam {

        /** Namespace v1. */
        namespace v1 {

            /** Represents a IAMPolicy */
            class IAMPolicy extends $protobuf.rpc.Service {

                /**
                 * Constructs a new IAMPolicy 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 IAMPolicy 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): IAMPolicy;

                /**
                 * Calls SetIamPolicy.
                 * @param request SetIamPolicyRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and Policy
                 */
                public setIamPolicy(request: google.iam.v1.ISetIamPolicyRequest, callback: google.iam.v1.IAMPolicy.SetIamPolicyCallback): void;

                /**
                 * Calls SetIamPolicy.
                 * @param request SetIamPolicyRequest message or plain object
                 * @returns Promise
                 */
                public setIamPolicy(request: google.iam.v1.ISetIamPolicyRequest): Promise<google.iam.v1.Policy>;

                /**
                 * Calls GetIamPolicy.
                 * @param request GetIamPolicyRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and Policy
                 */
                public getIamPolicy(request: google.iam.v1.IGetIamPolicyRequest, callback: google.iam.v1.IAMPolicy.GetIamPolicyCallback): void;

                /**
                 * Calls GetIamPolicy.
                 * @param request GetIamPolicyRequest message or plain object
                 * @returns Promise
                 */
                public getIamPolicy(request: google.iam.v1.IGetIamPolicyRequest): Promise<google.iam.v1.Policy>;

                /**
                 * Calls TestIamPermissions.
                 * @param request TestIamPermissionsRequest message or plain object
                 * @param callback Node-style callback called with the error, if any, and TestIamPermissionsResponse
                 */
                public testIamPermissions(request: google.iam.v1.ITestIamPermissionsRequest, callback: google.iam.v1.IAMPolicy.TestIamPermissionsCallback): void;

                /**
                 * Calls TestIamPermissions.
                 * @param request TestIamPermissionsRequest message or plain object
                 * @returns Promise
                 */
                public testIamPermissions(request: google.iam.v1.ITestIamPermissionsRequest): Promise<google.iam.v1.TestIamPermissionsResponse>;
            }

            namespace IAMPolicy {

                /**
                 * Callback as used by {@link google.iam.v1.IAMPolicy|setIamPolicy}.
                 * @param error Error, if any
                 * @param [response] Policy
                 */
                type SetIamPolicyCallback = (error: (Error|null), response?: google.iam.v1.Policy) => void;

                /**
                 * Callback as used by {@link google.iam.v1.IAMPolicy|getIamPolicy}.
                 * @param error Error, if any
                 * @param [response] Policy
                 */
                type GetIamPolicyCallback = (error: (Error|null), response?: google.iam.v1.Policy) => void;

                /**
                 * Callback as used by {@link google.iam.v1.IAMPolicy|testIamPermissions}.
                 * @param error Error, if any
                 * @param [response] TestIamPermissionsResponse
                 */
                type TestIamPermissionsCallback = (error: (Error|null), response?: google.iam.v1.TestIamPermissionsResponse) => void;
            }

            /** Properties of a SetIamPolicyRequest. */
            interface ISetIamPolicyRequest {

                /** SetIamPolicyRequest resource */
                resource?: (string|null);

                /** SetIamPolicyRequest policy */
                policy?: (google.iam.v1.IPolicy|null);

                /** SetIamPolicyRequest updateMask */
                updateMask?: (google.protobuf.IFieldMask|null);
            }

            /** Represents a SetIamPolicyRequest. */
            class SetIamPolicyRequest implements ISetIamPolicyRequest {

                /**
                 * Constructs a new SetIamPolicyRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.ISetIamPolicyRequest);

                /** SetIamPolicyRequest resource. */
                public resource: string;

                /** SetIamPolicyRequest policy. */
                public policy?: (google.iam.v1.IPolicy|null);

                /** SetIamPolicyRequest updateMask. */
                public updateMask?: (google.protobuf.IFieldMask|null);

                /**
                 * Creates a new SetIamPolicyRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns SetIamPolicyRequest instance
                 */
                public static create(properties?: google.iam.v1.ISetIamPolicyRequest): google.iam.v1.SetIamPolicyRequest;

                /**
                 * Encodes the specified SetIamPolicyRequest message. Does not implicitly {@link google.iam.v1.SetIamPolicyRequest.verify|verify} messages.
                 * @param message SetIamPolicyRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.ISetIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified SetIamPolicyRequest message, length delimited. Does not implicitly {@link google.iam.v1.SetIamPolicyRequest.verify|verify} messages.
                 * @param message SetIamPolicyRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.ISetIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a SetIamPolicyRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns SetIamPolicyRequest
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.SetIamPolicyRequest;

                /**
                 * Decodes a SetIamPolicyRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns SetIamPolicyRequest
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.SetIamPolicyRequest;

                /**
                 * Verifies a SetIamPolicyRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a SetIamPolicyRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns SetIamPolicyRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.SetIamPolicyRequest;

                /**
                 * Creates a plain object from a SetIamPolicyRequest message. Also converts values to other types if specified.
                 * @param message SetIamPolicyRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.SetIamPolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this SetIamPolicyRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for SetIamPolicyRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a GetIamPolicyRequest. */
            interface IGetIamPolicyRequest {

                /** GetIamPolicyRequest resource */
                resource?: (string|null);

                /** GetIamPolicyRequest options */
                options?: (google.iam.v1.IGetPolicyOptions|null);
            }

            /** Represents a GetIamPolicyRequest. */
            class GetIamPolicyRequest implements IGetIamPolicyRequest {

                /**
                 * Constructs a new GetIamPolicyRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IGetIamPolicyRequest);

                /** GetIamPolicyRequest resource. */
                public resource: string;

                /** GetIamPolicyRequest options. */
                public options?: (google.iam.v1.IGetPolicyOptions|null);

                /**
                 * Creates a new GetIamPolicyRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns GetIamPolicyRequest instance
                 */
                public static create(properties?: google.iam.v1.IGetIamPolicyRequest): google.iam.v1.GetIamPolicyRequest;

                /**
                 * Encodes the specified GetIamPolicyRequest message. Does not implicitly {@link google.iam.v1.GetIamPolicyRequest.verify|verify} messages.
                 * @param message GetIamPolicyRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IGetIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified GetIamPolicyRequest message, length delimited. Does not implicitly {@link google.iam.v1.GetIamPolicyRequest.verify|verify} messages.
                 * @param message GetIamPolicyRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IGetIamPolicyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a GetIamPolicyRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns GetIamPolicyRequest
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.GetIamPolicyRequest;

                /**
                 * Decodes a GetIamPolicyRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns GetIamPolicyRequest
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.GetIamPolicyRequest;

                /**
                 * Verifies a GetIamPolicyRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a GetIamPolicyRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns GetIamPolicyRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.GetIamPolicyRequest;

                /**
                 * Creates a plain object from a GetIamPolicyRequest message. Also converts values to other types if specified.
                 * @param message GetIamPolicyRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.GetIamPolicyRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this GetIamPolicyRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for GetIamPolicyRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a TestIamPermissionsRequest. */
            interface ITestIamPermissionsRequest {

                /** TestIamPermissionsRequest resource */
                resource?: (string|null);

                /** TestIamPermissionsRequest permissions */
                permissions?: (string[]|null);
            }

            /** Represents a TestIamPermissionsRequest. */
            class TestIamPermissionsRequest implements ITestIamPermissionsRequest {

                /**
                 * Constructs a new TestIamPermissionsRequest.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.ITestIamPermissionsRequest);

                /** TestIamPermissionsRequest resource. */
                public resource: string;

                /** TestIamPermissionsRequest permissions. */
                public permissions: string[];

                /**
                 * Creates a new TestIamPermissionsRequest instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns TestIamPermissionsRequest instance
                 */
                public static create(properties?: google.iam.v1.ITestIamPermissionsRequest): google.iam.v1.TestIamPermissionsRequest;

                /**
                 * Encodes the specified TestIamPermissionsRequest message. Does not implicitly {@link google.iam.v1.TestIamPermissionsRequest.verify|verify} messages.
                 * @param message TestIamPermissionsRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.ITestIamPermissionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified TestIamPermissionsRequest message, length delimited. Does not implicitly {@link google.iam.v1.TestIamPermissionsRequest.verify|verify} messages.
                 * @param message TestIamPermissionsRequest message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.ITestIamPermissionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a TestIamPermissionsRequest message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns TestIamPermissionsRequest
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.TestIamPermissionsRequest;

                /**
                 * Decodes a TestIamPermissionsRequest message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns TestIamPermissionsRequest
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.TestIamPermissionsRequest;

                /**
                 * Verifies a TestIamPermissionsRequest message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a TestIamPermissionsRequest message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns TestIamPermissionsRequest
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.TestIamPermissionsRequest;

                /**
                 * Creates a plain object from a TestIamPermissionsRequest message. Also converts values to other types if specified.
                 * @param message TestIamPermissionsRequest
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.TestIamPermissionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this TestIamPermissionsRequest to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for TestIamPermissionsRequest
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a TestIamPermissionsResponse. */
            interface ITestIamPermissionsResponse {

                /** TestIamPermissionsResponse permissions */
                permissions?: (string[]|null);
            }

            /** Represents a TestIamPermissionsResponse. */
            class TestIamPermissionsResponse implements ITestIamPermissionsResponse {

                /**
                 * Constructs a new TestIamPermissionsResponse.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.ITestIamPermissionsResponse);

                /** TestIamPermissionsResponse permissions. */
                public permissions: string[];

                /**
                 * Creates a new TestIamPermissionsResponse instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns TestIamPermissionsResponse instance
                 */
                public static create(properties?: google.iam.v1.ITestIamPermissionsResponse): google.iam.v1.TestIamPermissionsResponse;

                /**
                 * Encodes the specified TestIamPermissionsResponse message. Does not implicitly {@link google.iam.v1.TestIamPermissionsResponse.verify|verify} messages.
                 * @param message TestIamPermissionsResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.ITestIamPermissionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified TestIamPermissionsResponse message, length delimited. Does not implicitly {@link google.iam.v1.TestIamPermissionsResponse.verify|verify} messages.
                 * @param message TestIamPermissionsResponse message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.ITestIamPermissionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a TestIamPermissionsResponse message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns TestIamPermissionsResponse
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.TestIamPermissionsResponse;

                /**
                 * Decodes a TestIamPermissionsResponse message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns TestIamPermissionsResponse
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.TestIamPermissionsResponse;

                /**
                 * Verifies a TestIamPermissionsResponse message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a TestIamPermissionsResponse message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns TestIamPermissionsResponse
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.TestIamPermissionsResponse;

                /**
                 * Creates a plain object from a TestIamPermissionsResponse message. Also converts values to other types if specified.
                 * @param message TestIamPermissionsResponse
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.TestIamPermissionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this TestIamPermissionsResponse to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for TestIamPermissionsResponse
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a GetPolicyOptions. */
            interface IGetPolicyOptions {

                /** GetPolicyOptions requestedPolicyVersion */
                requestedPolicyVersion?: (number|null);
            }

            /** Represents a GetPolicyOptions. */
            class GetPolicyOptions implements IGetPolicyOptions {

                /**
                 * Constructs a new GetPolicyOptions.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IGetPolicyOptions);

                /** GetPolicyOptions requestedPolicyVersion. */
                public requestedPolicyVersion: number;

                /**
                 * Creates a new GetPolicyOptions instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns GetPolicyOptions instance
                 */
                public static create(properties?: google.iam.v1.IGetPolicyOptions): google.iam.v1.GetPolicyOptions;

                /**
                 * Encodes the specified GetPolicyOptions message. Does not implicitly {@link google.iam.v1.GetPolicyOptions.verify|verify} messages.
                 * @param message GetPolicyOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IGetPolicyOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified GetPolicyOptions message, length delimited. Does not implicitly {@link google.iam.v1.GetPolicyOptions.verify|verify} messages.
                 * @param message GetPolicyOptions message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IGetPolicyOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a GetPolicyOptions message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns GetPolicyOptions
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.GetPolicyOptions;

                /**
                 * Decodes a GetPolicyOptions message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns GetPolicyOptions
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.GetPolicyOptions;

                /**
                 * Verifies a GetPolicyOptions message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a GetPolicyOptions message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns GetPolicyOptions
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.GetPolicyOptions;

                /**
                 * Creates a plain object from a GetPolicyOptions message. Also converts values to other types if specified.
                 * @param message GetPolicyOptions
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.GetPolicyOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this GetPolicyOptions to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for GetPolicyOptions
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Policy. */
            interface IPolicy {

                /** Policy version */
                version?: (number|null);

                /** Policy bindings */
                bindings?: (google.iam.v1.IBinding[]|null);

                /** Policy auditConfigs */
                auditConfigs?: (google.iam.v1.IAuditConfig[]|null);

                /** Policy etag */
                etag?: (Uint8Array|Buffer|string|null);
            }

            /** Represents a Policy. */
            class Policy implements IPolicy {

                /**
                 * Constructs a new Policy.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IPolicy);

                /** Policy version. */
                public version: number;

                /** Policy bindings. */
                public bindings: google.iam.v1.IBinding[];

                /** Policy auditConfigs. */
                public auditConfigs: google.iam.v1.IAuditConfig[];

                /** Policy etag. */
                public etag: (Uint8Array|Buffer|string);

                /**
                 * Creates a new Policy instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Policy instance
                 */
                public static create(properties?: google.iam.v1.IPolicy): google.iam.v1.Policy;

                /**
                 * Encodes the specified Policy message. Does not implicitly {@link google.iam.v1.Policy.verify|verify} messages.
                 * @param message Policy message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Policy message, length delimited. Does not implicitly {@link google.iam.v1.Policy.verify|verify} messages.
                 * @param message Policy message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Policy message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Policy
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.Policy;

                /**
                 * Decodes a Policy message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Policy
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.Policy;

                /**
                 * Verifies a Policy message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Policy message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Policy
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.Policy;

                /**
                 * Creates a plain object from a Policy message. Also converts values to other types if specified.
                 * @param message Policy
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.Policy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Policy to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Policy
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Binding. */
            interface IBinding {

                /** Binding role */
                role?: (string|null);

                /** Binding members */
                members?: (string[]|null);

                /** Binding condition */
                condition?: (google.type.IExpr|null);
            }

            /** Represents a Binding. */
            class Binding implements IBinding {

                /**
                 * Constructs a new Binding.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IBinding);

                /** Binding role. */
                public role: string;

                /** Binding members. */
                public members: string[];

                /** Binding condition. */
                public condition?: (google.type.IExpr|null);

                /**
                 * Creates a new Binding instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Binding instance
                 */
                public static create(properties?: google.iam.v1.IBinding): google.iam.v1.Binding;

                /**
                 * Encodes the specified Binding message. Does not implicitly {@link google.iam.v1.Binding.verify|verify} messages.
                 * @param message Binding message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IBinding, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Binding message, length delimited. Does not implicitly {@link google.iam.v1.Binding.verify|verify} messages.
                 * @param message Binding message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IBinding, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Binding message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Binding
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.Binding;

                /**
                 * Decodes a Binding message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Binding
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.Binding;

                /**
                 * Verifies a Binding message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Binding message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Binding
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.Binding;

                /**
                 * Creates a plain object from a Binding message. Also converts values to other types if specified.
                 * @param message Binding
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.Binding, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Binding to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Binding
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AuditConfig. */
            interface IAuditConfig {

                /** AuditConfig service */
                service?: (string|null);

                /** AuditConfig auditLogConfigs */
                auditLogConfigs?: (google.iam.v1.IAuditLogConfig[]|null);
            }

            /** Represents an AuditConfig. */
            class AuditConfig implements IAuditConfig {

                /**
                 * Constructs a new AuditConfig.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IAuditConfig);

                /** AuditConfig service. */
                public service: string;

                /** AuditConfig auditLogConfigs. */
                public auditLogConfigs: google.iam.v1.IAuditLogConfig[];

                /**
                 * Creates a new AuditConfig instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AuditConfig instance
                 */
                public static create(properties?: google.iam.v1.IAuditConfig): google.iam.v1.AuditConfig;

                /**
                 * Encodes the specified AuditConfig message. Does not implicitly {@link google.iam.v1.AuditConfig.verify|verify} messages.
                 * @param message AuditConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IAuditConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AuditConfig message, length delimited. Does not implicitly {@link google.iam.v1.AuditConfig.verify|verify} messages.
                 * @param message AuditConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IAuditConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AuditConfig message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AuditConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditConfig;

                /**
                 * Decodes an AuditConfig message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AuditConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditConfig;

                /**
                 * Verifies an AuditConfig message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AuditConfig message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AuditConfig
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditConfig;

                /**
                 * Creates a plain object from an AuditConfig message. Also converts values to other types if specified.
                 * @param message AuditConfig
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.AuditConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AuditConfig to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AuditConfig
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AuditLogConfig. */
            interface IAuditLogConfig {

                /** AuditLogConfig logType */
                logType?: (google.iam.v1.AuditLogConfig.LogType|keyof typeof google.iam.v1.AuditLogConfig.LogType|null);

                /** AuditLogConfig exemptedMembers */
                exemptedMembers?: (string[]|null);
            }

            /** Represents an AuditLogConfig. */
            class AuditLogConfig implements IAuditLogConfig {

                /**
                 * Constructs a new AuditLogConfig.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IAuditLogConfig);

                /** AuditLogConfig logType. */
                public logType: (google.iam.v1.AuditLogConfig.LogType|keyof typeof google.iam.v1.AuditLogConfig.LogType);

                /** AuditLogConfig exemptedMembers. */
                public exemptedMembers: string[];

                /**
                 * Creates a new AuditLogConfig instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AuditLogConfig instance
                 */
                public static create(properties?: google.iam.v1.IAuditLogConfig): google.iam.v1.AuditLogConfig;

                /**
                 * Encodes the specified AuditLogConfig message. Does not implicitly {@link google.iam.v1.AuditLogConfig.verify|verify} messages.
                 * @param message AuditLogConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IAuditLogConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AuditLogConfig message, length delimited. Does not implicitly {@link google.iam.v1.AuditLogConfig.verify|verify} messages.
                 * @param message AuditLogConfig message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IAuditLogConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AuditLogConfig message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AuditLogConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditLogConfig;

                /**
                 * Decodes an AuditLogConfig message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AuditLogConfig
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditLogConfig;

                /**
                 * Verifies an AuditLogConfig message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AuditLogConfig message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AuditLogConfig
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditLogConfig;

                /**
                 * Creates a plain object from an AuditLogConfig message. Also converts values to other types if specified.
                 * @param message AuditLogConfig
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.AuditLogConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AuditLogConfig to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AuditLogConfig
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace AuditLogConfig {

                /** LogType enum. */
                enum LogType {
                    LOG_TYPE_UNSPECIFIED = 0,
                    ADMIN_READ = 1,
                    DATA_WRITE = 2,
                    DATA_READ = 3
                }
            }

            /** Properties of a PolicyDelta. */
            interface IPolicyDelta {

                /** PolicyDelta bindingDeltas */
                bindingDeltas?: (google.iam.v1.IBindingDelta[]|null);

                /** PolicyDelta auditConfigDeltas */
                auditConfigDeltas?: (google.iam.v1.IAuditConfigDelta[]|null);
            }

            /** Represents a PolicyDelta. */
            class PolicyDelta implements IPolicyDelta {

                /**
                 * Constructs a new PolicyDelta.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IPolicyDelta);

                /** PolicyDelta bindingDeltas. */
                public bindingDeltas: google.iam.v1.IBindingDelta[];

                /** PolicyDelta auditConfigDeltas. */
                public auditConfigDeltas: google.iam.v1.IAuditConfigDelta[];

                /**
                 * Creates a new PolicyDelta instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PolicyDelta instance
                 */
                public static create(properties?: google.iam.v1.IPolicyDelta): google.iam.v1.PolicyDelta;

                /**
                 * Encodes the specified PolicyDelta message. Does not implicitly {@link google.iam.v1.PolicyDelta.verify|verify} messages.
                 * @param message PolicyDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IPolicyDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PolicyDelta message, length delimited. Does not implicitly {@link google.iam.v1.PolicyDelta.verify|verify} messages.
                 * @param message PolicyDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IPolicyDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PolicyDelta message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PolicyDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.PolicyDelta;

                /**
                 * Decodes a PolicyDelta message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PolicyDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.PolicyDelta;

                /**
                 * Verifies a PolicyDelta message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PolicyDelta message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PolicyDelta
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.PolicyDelta;

                /**
                 * Creates a plain object from a PolicyDelta message. Also converts values to other types if specified.
                 * @param message PolicyDelta
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.PolicyDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PolicyDelta to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PolicyDelta
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a BindingDelta. */
            interface IBindingDelta {

                /** BindingDelta action */
                action?: (google.iam.v1.BindingDelta.Action|keyof typeof google.iam.v1.BindingDelta.Action|null);

                /** BindingDelta role */
                role?: (string|null);

                /** BindingDelta member */
                member?: (string|null);

                /** BindingDelta condition */
                condition?: (google.type.IExpr|null);
            }

            /** Represents a BindingDelta. */
            class BindingDelta implements IBindingDelta {

                /**
                 * Constructs a new BindingDelta.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IBindingDelta);

                /** BindingDelta action. */
                public action: (google.iam.v1.BindingDelta.Action|keyof typeof google.iam.v1.BindingDelta.Action);

                /** BindingDelta role. */
                public role: string;

                /** BindingDelta member. */
                public member: string;

                /** BindingDelta condition. */
                public condition?: (google.type.IExpr|null);

                /**
                 * Creates a new BindingDelta instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns BindingDelta instance
                 */
                public static create(properties?: google.iam.v1.IBindingDelta): google.iam.v1.BindingDelta;

                /**
                 * Encodes the specified BindingDelta message. Does not implicitly {@link google.iam.v1.BindingDelta.verify|verify} messages.
                 * @param message BindingDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IBindingDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified BindingDelta message, length delimited. Does not implicitly {@link google.iam.v1.BindingDelta.verify|verify} messages.
                 * @param message BindingDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IBindingDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a BindingDelta message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns BindingDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.BindingDelta;

                /**
                 * Decodes a BindingDelta message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns BindingDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.BindingDelta;

                /**
                 * Verifies a BindingDelta message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a BindingDelta message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns BindingDelta
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.BindingDelta;

                /**
                 * Creates a plain object from a BindingDelta message. Also converts values to other types if specified.
                 * @param message BindingDelta
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.BindingDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this BindingDelta to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for BindingDelta
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace BindingDelta {

                /** Action enum. */
                enum Action {
                    ACTION_UNSPECIFIED = 0,
                    ADD = 1,
                    REMOVE = 2
                }
            }

            /** Properties of an AuditConfigDelta. */
            interface IAuditConfigDelta {

                /** AuditConfigDelta action */
                action?: (google.iam.v1.AuditConfigDelta.Action|keyof typeof google.iam.v1.AuditConfigDelta.Action|null);

                /** AuditConfigDelta service */
                service?: (string|null);

                /** AuditConfigDelta exemptedMember */
                exemptedMember?: (string|null);

                /** AuditConfigDelta logType */
                logType?: (string|null);
            }

            /** Represents an AuditConfigDelta. */
            class AuditConfigDelta implements IAuditConfigDelta {

                /**
                 * Constructs a new AuditConfigDelta.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: google.iam.v1.IAuditConfigDelta);

                /** AuditConfigDelta action. */
                public action: (google.iam.v1.AuditConfigDelta.Action|keyof typeof google.iam.v1.AuditConfigDelta.Action);

                /** AuditConfigDelta service. */
                public service: string;

                /** AuditConfigDelta exemptedMember. */
                public exemptedMember: string;

                /** AuditConfigDelta logType. */
                public logType: string;

                /**
                 * Creates a new AuditConfigDelta instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AuditConfigDelta instance
                 */
                public static create(properties?: google.iam.v1.IAuditConfigDelta): google.iam.v1.AuditConfigDelta;

                /**
                 * Encodes the specified AuditConfigDelta message. Does not implicitly {@link google.iam.v1.AuditConfigDelta.verify|verify} messages.
                 * @param message AuditConfigDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: google.iam.v1.IAuditConfigDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AuditConfigDelta message, length delimited. Does not implicitly {@link google.iam.v1.AuditConfigDelta.verify|verify} messages.
                 * @param message AuditConfigDelta message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: google.iam.v1.IAuditConfigDelta, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AuditConfigDelta message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AuditConfigDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.iam.v1.AuditConfigDelta;

                /**
                 * Decodes an AuditConfigDelta message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AuditConfigDelta
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.iam.v1.AuditConfigDelta;

                /**
                 * Verifies an AuditConfigDelta message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AuditConfigDelta message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AuditConfigDelta
                 */
                public static fromObject(object: { [k: string]: any }): google.iam.v1.AuditConfigDelta;

                /**
                 * Creates a plain object from an AuditConfigDelta message. Also converts values to other types if specified.
                 * @param message AuditConfigDelta
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: google.iam.v1.AuditConfigDelta, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AuditConfigDelta to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AuditConfigDelta
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace AuditConfigDelta {

                /** Action enum. */
                enum Action {
                    ACTION_UNSPECIFIED = 0,
                    ADD = 1,
                    REMOVE = 2
                }
            }
        }
    }

    /** Namespace type. */
    namespace type {

        /** Properties of an Expr. */
        interface IExpr {

            /** Expr expression */
            expression?: (string|null);

            /** Expr title */
            title?: (string|null);

            /** Expr description */
            description?: (string|null);

            /** Expr location */
            location?: (string|null);
        }

        /** Represents an Expr. */
        class Expr implements IExpr {

            /**
             * Constructs a new Expr.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.type.IExpr);

            /** Expr expression. */
            public expression: string;

            /** Expr title. */
            public title: string;

            /** Expr description. */
            public description: string;

            /** Expr location. */
            public location: string;

            /**
             * Creates a new Expr instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Expr instance
             */
            public static create(properties?: google.type.IExpr): google.type.Expr;

            /**
             * Encodes the specified Expr message. Does not implicitly {@link google.type.Expr.verify|verify} messages.
             * @param message Expr message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.type.IExpr, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Expr message, length delimited. Does not implicitly {@link google.type.Expr.verify|verify} messages.
             * @param message Expr message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.type.IExpr, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Expr message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Expr
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Expr;

            /**
             * Decodes an Expr message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Expr
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Expr;

            /**
             * Verifies an Expr message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Expr message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Expr
             */
            public static fromObject(object: { [k: string]: any }): google.type.Expr;

            /**
             * Creates a plain object from an Expr message. Also converts values to other types if specified.
             * @param message Expr
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.type.Expr, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Expr to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Expr
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }
}
