/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/longrunning/operations.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../api/annotations";
import * as dependency_2 from "./../api/client";
import * as dependency_3 from "./../protobuf/any";
import * as dependency_4 from "./../protobuf/descriptor";
import * as dependency_5 from "./../protobuf/duration";
import * as dependency_6 from "./../protobuf/empty";
import * as dependency_7 from "./../rpc/status";
import * as pb_1 from "google-protobuf";
import * as grpc_1 from "@grpc/grpc-js";
export class Operation extends pb_1.Message {
    #one_of_decls: number[][] = [[4, 5]];
    constructor(data?: any[] | ({
        name?: string;
        metadata?: dependency_3.Any;
        done?: boolean;
    } & (({
        error?: dependency_7.Status;
        response?: never;
    } | {
        error?: never;
        response?: dependency_3.Any;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
            if ("metadata" in data && data.metadata != undefined) {
                this.metadata = data.metadata;
            }
            if ("done" in data && data.done != undefined) {
                this.done = data.done;
            }
            if ("error" in data && data.error != undefined) {
                this.error = data.error;
            }
            if ("response" in data && data.response != undefined) {
                this.response = data.response;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get metadata() {
        return pb_1.Message.getWrapperField(this, dependency_3.Any, 2) as dependency_3.Any;
    }
    set metadata(value: dependency_3.Any) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_metadata() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get done() {
        return pb_1.Message.getFieldWithDefault(this, 3, false) as boolean;
    }
    set done(value: boolean) {
        pb_1.Message.setField(this, 3, value);
    }
    get error() {
        return pb_1.Message.getWrapperField(this, dependency_7.Status, 4) as dependency_7.Status;
    }
    set error(value: dependency_7.Status) {
        pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value);
    }
    get has_error() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get response() {
        return pb_1.Message.getWrapperField(this, dependency_3.Any, 5) as dependency_3.Any;
    }
    set response(value: dependency_3.Any) {
        pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[0], value);
    }
    get has_response() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get result() {
        const cases: {
            [index: number]: "none" | "error" | "response";
        } = {
            0: "none",
            4: "error",
            5: "response"
        };
        return cases[pb_1.Message.computeOneofCase(this, [4, 5])];
    }
    static fromObject(data: {
        name?: string;
        metadata?: ReturnType<typeof dependency_3.Any.prototype.toObject>;
        done?: boolean;
        error?: ReturnType<typeof dependency_7.Status.prototype.toObject>;
        response?: ReturnType<typeof dependency_3.Any.prototype.toObject>;
    }): Operation {
        const message = new Operation({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.metadata != null) {
            message.metadata = dependency_3.Any.fromObject(data.metadata);
        }
        if (data.done != null) {
            message.done = data.done;
        }
        if (data.error != null) {
            message.error = dependency_7.Status.fromObject(data.error);
        }
        if (data.response != null) {
            message.response = dependency_3.Any.fromObject(data.response);
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            metadata?: ReturnType<typeof dependency_3.Any.prototype.toObject>;
            done?: boolean;
            error?: ReturnType<typeof dependency_7.Status.prototype.toObject>;
            response?: ReturnType<typeof dependency_3.Any.prototype.toObject>;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.metadata != null) {
            data.metadata = this.metadata.toObject();
        }
        if (this.done != null) {
            data.done = this.done;
        }
        if (this.error != null) {
            data.error = this.error.toObject();
        }
        if (this.response != null) {
            data.response = this.response.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (this.has_metadata)
            writer.writeMessage(2, this.metadata, () => this.metadata.serialize(writer));
        if (this.done != false)
            writer.writeBool(3, this.done);
        if (this.has_error)
            writer.writeMessage(4, this.error, () => this.error.serialize(writer));
        if (this.has_response)
            writer.writeMessage(5, this.response, () => this.response.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Operation {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Operation();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.metadata, () => message.metadata = dependency_3.Any.deserialize(reader));
                    break;
                case 3:
                    message.done = reader.readBool();
                    break;
                case 4:
                    reader.readMessage(message.error, () => message.error = dependency_7.Status.deserialize(reader));
                    break;
                case 5:
                    reader.readMessage(message.response, () => message.response = dependency_3.Any.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Operation {
        return Operation.deserialize(bytes);
    }
}
export class GetOperationRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        name?: string;
    }): GetOperationRequest {
        const message = new GetOperationRequest({});
        if (data.name != null) {
            message.name = data.name;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): GetOperationRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new GetOperationRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): GetOperationRequest {
        return GetOperationRequest.deserialize(bytes);
    }
}
export class ListOperationsRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        filter?: string;
        page_size?: number;
        page_token?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
            if ("filter" in data && data.filter != undefined) {
                this.filter = data.filter;
            }
            if ("page_size" in data && data.page_size != undefined) {
                this.page_size = data.page_size;
            }
            if ("page_token" in data && data.page_token != undefined) {
                this.page_token = data.page_token;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 4, value);
    }
    get filter() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set filter(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get page_size() {
        return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
    }
    set page_size(value: number) {
        pb_1.Message.setField(this, 2, value);
    }
    get page_token() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set page_token(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    static fromObject(data: {
        name?: string;
        filter?: string;
        page_size?: number;
        page_token?: string;
    }): ListOperationsRequest {
        const message = new ListOperationsRequest({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.filter != null) {
            message.filter = data.filter;
        }
        if (data.page_size != null) {
            message.page_size = data.page_size;
        }
        if (data.page_token != null) {
            message.page_token = data.page_token;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            filter?: string;
            page_size?: number;
            page_token?: string;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.filter != null) {
            data.filter = this.filter;
        }
        if (this.page_size != null) {
            data.page_size = this.page_size;
        }
        if (this.page_token != null) {
            data.page_token = this.page_token;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(4, this.name);
        if (this.filter.length)
            writer.writeString(1, this.filter);
        if (this.page_size != 0)
            writer.writeInt32(2, this.page_size);
        if (this.page_token.length)
            writer.writeString(3, this.page_token);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListOperationsRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListOperationsRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 4:
                    message.name = reader.readString();
                    break;
                case 1:
                    message.filter = reader.readString();
                    break;
                case 2:
                    message.page_size = reader.readInt32();
                    break;
                case 3:
                    message.page_token = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListOperationsRequest {
        return ListOperationsRequest.deserialize(bytes);
    }
}
export class ListOperationsResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        operations?: Operation[];
        next_page_token?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("operations" in data && data.operations != undefined) {
                this.operations = data.operations;
            }
            if ("next_page_token" in data && data.next_page_token != undefined) {
                this.next_page_token = data.next_page_token;
            }
        }
    }
    get operations() {
        return pb_1.Message.getRepeatedWrapperField(this, Operation, 1) as Operation[];
    }
    set operations(value: Operation[]) {
        pb_1.Message.setRepeatedWrapperField(this, 1, value);
    }
    get next_page_token() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set next_page_token(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        operations?: ReturnType<typeof Operation.prototype.toObject>[];
        next_page_token?: string;
    }): ListOperationsResponse {
        const message = new ListOperationsResponse({});
        if (data.operations != null) {
            message.operations = data.operations.map(item => Operation.fromObject(item));
        }
        if (data.next_page_token != null) {
            message.next_page_token = data.next_page_token;
        }
        return message;
    }
    toObject() {
        const data: {
            operations?: ReturnType<typeof Operation.prototype.toObject>[];
            next_page_token?: string;
        } = {};
        if (this.operations != null) {
            data.operations = this.operations.map((item: Operation) => item.toObject());
        }
        if (this.next_page_token != null) {
            data.next_page_token = this.next_page_token;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.operations.length)
            writer.writeRepeatedMessage(1, this.operations, (item: Operation) => item.serialize(writer));
        if (this.next_page_token.length)
            writer.writeString(2, this.next_page_token);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListOperationsResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListOperationsResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.operations, () => pb_1.Message.addToRepeatedWrapperField(message, 1, Operation.deserialize(reader), Operation));
                    break;
                case 2:
                    message.next_page_token = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListOperationsResponse {
        return ListOperationsResponse.deserialize(bytes);
    }
}
export class CancelOperationRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        name?: string;
    }): CancelOperationRequest {
        const message = new CancelOperationRequest({});
        if (data.name != null) {
            message.name = data.name;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CancelOperationRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CancelOperationRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): CancelOperationRequest {
        return CancelOperationRequest.deserialize(bytes);
    }
}
export class DeleteOperationRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        name?: string;
    }): DeleteOperationRequest {
        const message = new DeleteOperationRequest({});
        if (data.name != null) {
            message.name = data.name;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DeleteOperationRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DeleteOperationRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DeleteOperationRequest {
        return DeleteOperationRequest.deserialize(bytes);
    }
}
export class WaitOperationRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        timeout?: dependency_5.Duration;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
            if ("timeout" in data && data.timeout != undefined) {
                this.timeout = data.timeout;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get timeout() {
        return pb_1.Message.getWrapperField(this, dependency_5.Duration, 2) as dependency_5.Duration;
    }
    set timeout(value: dependency_5.Duration) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_timeout() {
        return pb_1.Message.getField(this, 2) != null;
    }
    static fromObject(data: {
        name?: string;
        timeout?: ReturnType<typeof dependency_5.Duration.prototype.toObject>;
    }): WaitOperationRequest {
        const message = new WaitOperationRequest({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.timeout != null) {
            message.timeout = dependency_5.Duration.fromObject(data.timeout);
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            timeout?: ReturnType<typeof dependency_5.Duration.prototype.toObject>;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.timeout != null) {
            data.timeout = this.timeout.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (this.has_timeout)
            writer.writeMessage(2, this.timeout, () => this.timeout.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): WaitOperationRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new WaitOperationRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.timeout, () => message.timeout = dependency_5.Duration.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): WaitOperationRequest {
        return WaitOperationRequest.deserialize(bytes);
    }
}
export class OperationInfo extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        response_type?: string;
        metadata_type?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("response_type" in data && data.response_type != undefined) {
                this.response_type = data.response_type;
            }
            if ("metadata_type" in data && data.metadata_type != undefined) {
                this.metadata_type = data.metadata_type;
            }
        }
    }
    get response_type() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set response_type(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get metadata_type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set metadata_type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        response_type?: string;
        metadata_type?: string;
    }): OperationInfo {
        const message = new OperationInfo({});
        if (data.response_type != null) {
            message.response_type = data.response_type;
        }
        if (data.metadata_type != null) {
            message.metadata_type = data.metadata_type;
        }
        return message;
    }
    toObject() {
        const data: {
            response_type?: string;
            metadata_type?: string;
        } = {};
        if (this.response_type != null) {
            data.response_type = this.response_type;
        }
        if (this.metadata_type != null) {
            data.metadata_type = this.metadata_type;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.response_type.length)
            writer.writeString(1, this.response_type);
        if (this.metadata_type.length)
            writer.writeString(2, this.metadata_type);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): OperationInfo {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new OperationInfo();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.response_type = reader.readString();
                    break;
                case 2:
                    message.metadata_type = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): OperationInfo {
        return OperationInfo.deserialize(bytes);
    }
}
interface GrpcUnaryServiceInterface<P, R> {
    (message: P, metadata: grpc_1.Metadata, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
    (message: P, metadata: grpc_1.Metadata, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
    (message: P, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
    (message: P, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
}
interface GrpcStreamServiceInterface<P, R> {
    (message: P, metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<R>;
    (message: P, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<R>;
}
interface GrpWritableServiceInterface<P, R> {
    (metadata: grpc_1.Metadata, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
    (metadata: grpc_1.Metadata, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
    (options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
    (callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
}
interface GrpcChunkServiceInterface<P, R> {
    (metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<P, R>;
    (options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<P, R>;
}
interface GrpcPromiseServiceInterface<P, R> {
    (message: P, metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): Promise<R>;
    (message: P, options?: grpc_1.CallOptions): Promise<R>;
}
export abstract class UnimplementedOperationsService {
    static definition = {
        ListOperations: {
            path: "/google.longrunning.Operations/ListOperations",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: ListOperationsRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => ListOperationsRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: ListOperationsResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => ListOperationsResponse.deserialize(new Uint8Array(bytes))
        },
        GetOperation: {
            path: "/google.longrunning.Operations/GetOperation",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: GetOperationRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => GetOperationRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: Operation) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => Operation.deserialize(new Uint8Array(bytes))
        },
        DeleteOperation: {
            path: "/google.longrunning.Operations/DeleteOperation",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: DeleteOperationRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => DeleteOperationRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: dependency_6.Empty) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => dependency_6.Empty.deserialize(new Uint8Array(bytes))
        },
        CancelOperation: {
            path: "/google.longrunning.Operations/CancelOperation",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: CancelOperationRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => CancelOperationRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: dependency_6.Empty) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => dependency_6.Empty.deserialize(new Uint8Array(bytes))
        },
        WaitOperation: {
            path: "/google.longrunning.Operations/WaitOperation",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: WaitOperationRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => WaitOperationRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: Operation) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => Operation.deserialize(new Uint8Array(bytes))
        }
    };
    [method: string]: grpc_1.UntypedHandleCall;
    abstract ListOperations(call: grpc_1.ServerUnaryCall<ListOperationsRequest, ListOperationsResponse>, callback: grpc_1.sendUnaryData<ListOperationsResponse>): void;
    abstract GetOperation(call: grpc_1.ServerUnaryCall<GetOperationRequest, Operation>, callback: grpc_1.sendUnaryData<Operation>): void;
    abstract DeleteOperation(call: grpc_1.ServerUnaryCall<DeleteOperationRequest, dependency_6.Empty>, callback: grpc_1.sendUnaryData<dependency_6.Empty>): void;
    abstract CancelOperation(call: grpc_1.ServerUnaryCall<CancelOperationRequest, dependency_6.Empty>, callback: grpc_1.sendUnaryData<dependency_6.Empty>): void;
    abstract WaitOperation(call: grpc_1.ServerUnaryCall<WaitOperationRequest, Operation>, callback: grpc_1.sendUnaryData<Operation>): void;
}
export class OperationsClient extends grpc_1.makeGenericClientConstructor(UnimplementedOperationsService.definition, "Operations", {}) {
    constructor(address: string, credentials: grpc_1.ChannelCredentials, options?: Partial<grpc_1.ChannelOptions>) {
        super(address, credentials, options);
    }
    ListOperations: GrpcUnaryServiceInterface<ListOperationsRequest, ListOperationsResponse> = (message: ListOperationsRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ListOperationsResponse>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ListOperationsResponse>, callback?: grpc_1.requestCallback<ListOperationsResponse>): grpc_1.ClientUnaryCall => {
        return super.ListOperations(message, metadata, options, callback);
    };
    GetOperation: GrpcUnaryServiceInterface<GetOperationRequest, Operation> = (message: GetOperationRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<Operation>, options?: grpc_1.CallOptions | grpc_1.requestCallback<Operation>, callback?: grpc_1.requestCallback<Operation>): grpc_1.ClientUnaryCall => {
        return super.GetOperation(message, metadata, options, callback);
    };
    DeleteOperation: GrpcUnaryServiceInterface<DeleteOperationRequest, dependency_6.Empty> = (message: DeleteOperationRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Empty>, options?: grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Empty>, callback?: grpc_1.requestCallback<dependency_6.Empty>): grpc_1.ClientUnaryCall => {
        return super.DeleteOperation(message, metadata, options, callback);
    };
    CancelOperation: GrpcUnaryServiceInterface<CancelOperationRequest, dependency_6.Empty> = (message: CancelOperationRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Empty>, options?: grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Empty>, callback?: grpc_1.requestCallback<dependency_6.Empty>): grpc_1.ClientUnaryCall => {
        return super.CancelOperation(message, metadata, options, callback);
    };
    WaitOperation: GrpcUnaryServiceInterface<WaitOperationRequest, Operation> = (message: WaitOperationRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<Operation>, options?: grpc_1.CallOptions | grpc_1.requestCallback<Operation>, callback?: grpc_1.requestCallback<Operation>): grpc_1.ClientUnaryCall => {
        return super.WaitOperation(message, metadata, options, callback);
    };
}
