/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/admin/v1/database.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../../api/field_behavior";
import * as dependency_2 from "./../../../api/resource";
import * as dependency_3 from "./../../../protobuf/duration";
import * as dependency_4 from "./../../../protobuf/timestamp";
import * as pb_1 from "google-protobuf";
export class Database extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        uid?: string;
        create_time?: dependency_4.Timestamp;
        update_time?: dependency_4.Timestamp;
        delete_time?: dependency_4.Timestamp;
        location_id?: string;
        type?: DatabaseDatabaseType;
        concurrency_mode?: DatabaseConcurrencyMode;
        version_retention_period?: dependency_3.Duration;
        earliest_version_time?: dependency_4.Timestamp;
        point_in_time_recovery_enablement?: DatabasePointInTimeRecoveryEnablement;
        app_engine_integration_mode?: DatabaseAppEngineIntegrationMode;
        key_prefix?: string;
        delete_protection_state?: DatabaseDeleteProtectionState;
        cmek_config?: DatabaseCmekConfig;
        previous_id?: string;
        source_info?: DatabaseSourceInfo;
        etag?: 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 ("uid" in data && data.uid != undefined) {
                this.uid = data.uid;
            }
            if ("create_time" in data && data.create_time != undefined) {
                this.create_time = data.create_time;
            }
            if ("update_time" in data && data.update_time != undefined) {
                this.update_time = data.update_time;
            }
            if ("delete_time" in data && data.delete_time != undefined) {
                this.delete_time = data.delete_time;
            }
            if ("location_id" in data && data.location_id != undefined) {
                this.location_id = data.location_id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("concurrency_mode" in data && data.concurrency_mode != undefined) {
                this.concurrency_mode = data.concurrency_mode;
            }
            if ("version_retention_period" in data && data.version_retention_period != undefined) {
                this.version_retention_period = data.version_retention_period;
            }
            if ("earliest_version_time" in data && data.earliest_version_time != undefined) {
                this.earliest_version_time = data.earliest_version_time;
            }
            if ("point_in_time_recovery_enablement" in data && data.point_in_time_recovery_enablement != undefined) {
                this.point_in_time_recovery_enablement = data.point_in_time_recovery_enablement;
            }
            if ("app_engine_integration_mode" in data && data.app_engine_integration_mode != undefined) {
                this.app_engine_integration_mode = data.app_engine_integration_mode;
            }
            if ("key_prefix" in data && data.key_prefix != undefined) {
                this.key_prefix = data.key_prefix;
            }
            if ("delete_protection_state" in data && data.delete_protection_state != undefined) {
                this.delete_protection_state = data.delete_protection_state;
            }
            if ("cmek_config" in data && data.cmek_config != undefined) {
                this.cmek_config = data.cmek_config;
            }
            if ("previous_id" in data && data.previous_id != undefined) {
                this.previous_id = data.previous_id;
            }
            if ("source_info" in data && data.source_info != undefined) {
                this.source_info = data.source_info;
            }
            if ("etag" in data && data.etag != undefined) {
                this.etag = data.etag;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get uid() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set uid(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get create_time() {
        return pb_1.Message.getWrapperField(this, dependency_4.Timestamp, 5) as dependency_4.Timestamp;
    }
    set create_time(value: dependency_4.Timestamp) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_create_time() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get update_time() {
        return pb_1.Message.getWrapperField(this, dependency_4.Timestamp, 6) as dependency_4.Timestamp;
    }
    set update_time(value: dependency_4.Timestamp) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_update_time() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get delete_time() {
        return pb_1.Message.getWrapperField(this, dependency_4.Timestamp, 7) as dependency_4.Timestamp;
    }
    set delete_time(value: dependency_4.Timestamp) {
        pb_1.Message.setWrapperField(this, 7, value);
    }
    get has_delete_time() {
        return pb_1.Message.getField(this, 7) != null;
    }
    get location_id() {
        return pb_1.Message.getFieldWithDefault(this, 9, "") as string;
    }
    set location_id(value: string) {
        pb_1.Message.setField(this, 9, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 10, DatabaseDatabaseType.DATABASE_TYPE_UNSPECIFIED) as DatabaseDatabaseType;
    }
    set type(value: DatabaseDatabaseType) {
        pb_1.Message.setField(this, 10, value);
    }
    get concurrency_mode() {
        return pb_1.Message.getFieldWithDefault(this, 15, DatabaseConcurrencyMode.CONCURRENCY_MODE_UNSPECIFIED) as DatabaseConcurrencyMode;
    }
    set concurrency_mode(value: DatabaseConcurrencyMode) {
        pb_1.Message.setField(this, 15, value);
    }
    get version_retention_period() {
        return pb_1.Message.getWrapperField(this, dependency_3.Duration, 17) as dependency_3.Duration;
    }
    set version_retention_period(value: dependency_3.Duration) {
        pb_1.Message.setWrapperField(this, 17, value);
    }
    get has_version_retention_period() {
        return pb_1.Message.getField(this, 17) != null;
    }
    get earliest_version_time() {
        return pb_1.Message.getWrapperField(this, dependency_4.Timestamp, 18) as dependency_4.Timestamp;
    }
    set earliest_version_time(value: dependency_4.Timestamp) {
        pb_1.Message.setWrapperField(this, 18, value);
    }
    get has_earliest_version_time() {
        return pb_1.Message.getField(this, 18) != null;
    }
    get point_in_time_recovery_enablement() {
        return pb_1.Message.getFieldWithDefault(this, 21, DatabasePointInTimeRecoveryEnablement.POINT_IN_TIME_RECOVERY_ENABLEMENT_UNSPECIFIED) as DatabasePointInTimeRecoveryEnablement;
    }
    set point_in_time_recovery_enablement(value: DatabasePointInTimeRecoveryEnablement) {
        pb_1.Message.setField(this, 21, value);
    }
    get app_engine_integration_mode() {
        return pb_1.Message.getFieldWithDefault(this, 19, DatabaseAppEngineIntegrationMode.APP_ENGINE_INTEGRATION_MODE_UNSPECIFIED) as DatabaseAppEngineIntegrationMode;
    }
    set app_engine_integration_mode(value: DatabaseAppEngineIntegrationMode) {
        pb_1.Message.setField(this, 19, value);
    }
    get key_prefix() {
        return pb_1.Message.getFieldWithDefault(this, 20, "") as string;
    }
    set key_prefix(value: string) {
        pb_1.Message.setField(this, 20, value);
    }
    get delete_protection_state() {
        return pb_1.Message.getFieldWithDefault(this, 22, DatabaseDeleteProtectionState.DELETE_PROTECTION_STATE_UNSPECIFIED) as DatabaseDeleteProtectionState;
    }
    set delete_protection_state(value: DatabaseDeleteProtectionState) {
        pb_1.Message.setField(this, 22, value);
    }
    get cmek_config() {
        return pb_1.Message.getWrapperField(this, DatabaseCmekConfig, 23) as DatabaseCmekConfig;
    }
    set cmek_config(value: DatabaseCmekConfig) {
        pb_1.Message.setWrapperField(this, 23, value);
    }
    get has_cmek_config() {
        return pb_1.Message.getField(this, 23) != null;
    }
    get previous_id() {
        return pb_1.Message.getFieldWithDefault(this, 25, "") as string;
    }
    set previous_id(value: string) {
        pb_1.Message.setField(this, 25, value);
    }
    get source_info() {
        return pb_1.Message.getWrapperField(this, DatabaseSourceInfo, 26) as DatabaseSourceInfo;
    }
    set source_info(value: DatabaseSourceInfo) {
        pb_1.Message.setWrapperField(this, 26, value);
    }
    get has_source_info() {
        return pb_1.Message.getField(this, 26) != null;
    }
    get etag() {
        return pb_1.Message.getFieldWithDefault(this, 99, "") as string;
    }
    set etag(value: string) {
        pb_1.Message.setField(this, 99, value);
    }
    static fromObject(data: {
        name?: string;
        uid?: string;
        create_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
        update_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
        delete_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
        location_id?: string;
        type?: DatabaseDatabaseType;
        concurrency_mode?: DatabaseConcurrencyMode;
        version_retention_period?: ReturnType<typeof dependency_3.Duration.prototype.toObject>;
        earliest_version_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
        point_in_time_recovery_enablement?: DatabasePointInTimeRecoveryEnablement;
        app_engine_integration_mode?: DatabaseAppEngineIntegrationMode;
        key_prefix?: string;
        delete_protection_state?: DatabaseDeleteProtectionState;
        cmek_config?: ReturnType<typeof DatabaseCmekConfig.prototype.toObject>;
        previous_id?: string;
        source_info?: ReturnType<typeof DatabaseSourceInfo.prototype.toObject>;
        etag?: string;
    }): Database {
        const message = new Database({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.uid != null) {
            message.uid = data.uid;
        }
        if (data.create_time != null) {
            message.create_time = dependency_4.Timestamp.fromObject(data.create_time);
        }
        if (data.update_time != null) {
            message.update_time = dependency_4.Timestamp.fromObject(data.update_time);
        }
        if (data.delete_time != null) {
            message.delete_time = dependency_4.Timestamp.fromObject(data.delete_time);
        }
        if (data.location_id != null) {
            message.location_id = data.location_id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.concurrency_mode != null) {
            message.concurrency_mode = data.concurrency_mode;
        }
        if (data.version_retention_period != null) {
            message.version_retention_period = dependency_3.Duration.fromObject(data.version_retention_period);
        }
        if (data.earliest_version_time != null) {
            message.earliest_version_time = dependency_4.Timestamp.fromObject(data.earliest_version_time);
        }
        if (data.point_in_time_recovery_enablement != null) {
            message.point_in_time_recovery_enablement = data.point_in_time_recovery_enablement;
        }
        if (data.app_engine_integration_mode != null) {
            message.app_engine_integration_mode = data.app_engine_integration_mode;
        }
        if (data.key_prefix != null) {
            message.key_prefix = data.key_prefix;
        }
        if (data.delete_protection_state != null) {
            message.delete_protection_state = data.delete_protection_state;
        }
        if (data.cmek_config != null) {
            message.cmek_config = DatabaseCmekConfig.fromObject(data.cmek_config);
        }
        if (data.previous_id != null) {
            message.previous_id = data.previous_id;
        }
        if (data.source_info != null) {
            message.source_info = DatabaseSourceInfo.fromObject(data.source_info);
        }
        if (data.etag != null) {
            message.etag = data.etag;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            uid?: string;
            create_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
            update_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
            delete_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
            location_id?: string;
            type?: DatabaseDatabaseType;
            concurrency_mode?: DatabaseConcurrencyMode;
            version_retention_period?: ReturnType<typeof dependency_3.Duration.prototype.toObject>;
            earliest_version_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
            point_in_time_recovery_enablement?: DatabasePointInTimeRecoveryEnablement;
            app_engine_integration_mode?: DatabaseAppEngineIntegrationMode;
            key_prefix?: string;
            delete_protection_state?: DatabaseDeleteProtectionState;
            cmek_config?: ReturnType<typeof DatabaseCmekConfig.prototype.toObject>;
            previous_id?: string;
            source_info?: ReturnType<typeof DatabaseSourceInfo.prototype.toObject>;
            etag?: string;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.uid != null) {
            data.uid = this.uid;
        }
        if (this.create_time != null) {
            data.create_time = this.create_time.toObject();
        }
        if (this.update_time != null) {
            data.update_time = this.update_time.toObject();
        }
        if (this.delete_time != null) {
            data.delete_time = this.delete_time.toObject();
        }
        if (this.location_id != null) {
            data.location_id = this.location_id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.concurrency_mode != null) {
            data.concurrency_mode = this.concurrency_mode;
        }
        if (this.version_retention_period != null) {
            data.version_retention_period = this.version_retention_period.toObject();
        }
        if (this.earliest_version_time != null) {
            data.earliest_version_time = this.earliest_version_time.toObject();
        }
        if (this.point_in_time_recovery_enablement != null) {
            data.point_in_time_recovery_enablement = this.point_in_time_recovery_enablement;
        }
        if (this.app_engine_integration_mode != null) {
            data.app_engine_integration_mode = this.app_engine_integration_mode;
        }
        if (this.key_prefix != null) {
            data.key_prefix = this.key_prefix;
        }
        if (this.delete_protection_state != null) {
            data.delete_protection_state = this.delete_protection_state;
        }
        if (this.cmek_config != null) {
            data.cmek_config = this.cmek_config.toObject();
        }
        if (this.previous_id != null) {
            data.previous_id = this.previous_id;
        }
        if (this.source_info != null) {
            data.source_info = this.source_info.toObject();
        }
        if (this.etag != null) {
            data.etag = this.etag;
        }
        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.uid.length)
            writer.writeString(3, this.uid);
        if (this.has_create_time)
            writer.writeMessage(5, this.create_time, () => this.create_time.serialize(writer));
        if (this.has_update_time)
            writer.writeMessage(6, this.update_time, () => this.update_time.serialize(writer));
        if (this.has_delete_time)
            writer.writeMessage(7, this.delete_time, () => this.delete_time.serialize(writer));
        if (this.location_id.length)
            writer.writeString(9, this.location_id);
        if (this.type != DatabaseDatabaseType.DATABASE_TYPE_UNSPECIFIED)
            writer.writeEnum(10, this.type);
        if (this.concurrency_mode != DatabaseConcurrencyMode.CONCURRENCY_MODE_UNSPECIFIED)
            writer.writeEnum(15, this.concurrency_mode);
        if (this.has_version_retention_period)
            writer.writeMessage(17, this.version_retention_period, () => this.version_retention_period.serialize(writer));
        if (this.has_earliest_version_time)
            writer.writeMessage(18, this.earliest_version_time, () => this.earliest_version_time.serialize(writer));
        if (this.point_in_time_recovery_enablement != DatabasePointInTimeRecoveryEnablement.POINT_IN_TIME_RECOVERY_ENABLEMENT_UNSPECIFIED)
            writer.writeEnum(21, this.point_in_time_recovery_enablement);
        if (this.app_engine_integration_mode != DatabaseAppEngineIntegrationMode.APP_ENGINE_INTEGRATION_MODE_UNSPECIFIED)
            writer.writeEnum(19, this.app_engine_integration_mode);
        if (this.key_prefix.length)
            writer.writeString(20, this.key_prefix);
        if (this.delete_protection_state != DatabaseDeleteProtectionState.DELETE_PROTECTION_STATE_UNSPECIFIED)
            writer.writeEnum(22, this.delete_protection_state);
        if (this.has_cmek_config)
            writer.writeMessage(23, this.cmek_config, () => this.cmek_config.serialize(writer));
        if (this.previous_id.length)
            writer.writeString(25, this.previous_id);
        if (this.has_source_info)
            writer.writeMessage(26, this.source_info, () => this.source_info.serialize(writer));
        if (this.etag.length)
            writer.writeString(99, this.etag);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Database {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Database();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 3:
                    message.uid = reader.readString();
                    break;
                case 5:
                    reader.readMessage(message.create_time, () => message.create_time = dependency_4.Timestamp.deserialize(reader));
                    break;
                case 6:
                    reader.readMessage(message.update_time, () => message.update_time = dependency_4.Timestamp.deserialize(reader));
                    break;
                case 7:
                    reader.readMessage(message.delete_time, () => message.delete_time = dependency_4.Timestamp.deserialize(reader));
                    break;
                case 9:
                    message.location_id = reader.readString();
                    break;
                case 10:
                    message.type = reader.readEnum();
                    break;
                case 15:
                    message.concurrency_mode = reader.readEnum();
                    break;
                case 17:
                    reader.readMessage(message.version_retention_period, () => message.version_retention_period = dependency_3.Duration.deserialize(reader));
                    break;
                case 18:
                    reader.readMessage(message.earliest_version_time, () => message.earliest_version_time = dependency_4.Timestamp.deserialize(reader));
                    break;
                case 21:
                    message.point_in_time_recovery_enablement = reader.readEnum();
                    break;
                case 19:
                    message.app_engine_integration_mode = reader.readEnum();
                    break;
                case 20:
                    message.key_prefix = reader.readString();
                    break;
                case 22:
                    message.delete_protection_state = reader.readEnum();
                    break;
                case 23:
                    reader.readMessage(message.cmek_config, () => message.cmek_config = DatabaseCmekConfig.deserialize(reader));
                    break;
                case 25:
                    message.previous_id = reader.readString();
                    break;
                case 26:
                    reader.readMessage(message.source_info, () => message.source_info = DatabaseSourceInfo.deserialize(reader));
                    break;
                case 99:
                    message.etag = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Database {
        return Database.deserialize(bytes);
    }
}
export enum DatabaseDatabaseType {
    DATABASE_TYPE_UNSPECIFIED = 0,
    FIRESTORE_NATIVE = 1,
    DATASTORE_MODE = 2
}
export enum DatabaseConcurrencyMode {
    CONCURRENCY_MODE_UNSPECIFIED = 0,
    OPTIMISTIC = 1,
    PESSIMISTIC = 2,
    OPTIMISTIC_WITH_ENTITY_GROUPS = 3
}
export enum DatabasePointInTimeRecoveryEnablement {
    POINT_IN_TIME_RECOVERY_ENABLEMENT_UNSPECIFIED = 0,
    POINT_IN_TIME_RECOVERY_ENABLED = 1,
    POINT_IN_TIME_RECOVERY_DISABLED = 2
}
export enum DatabaseAppEngineIntegrationMode {
    APP_ENGINE_INTEGRATION_MODE_UNSPECIFIED = 0,
    ENABLED = 1,
    DISABLED = 2
}
export enum DatabaseDeleteProtectionState {
    DELETE_PROTECTION_STATE_UNSPECIFIED = 0,
    DELETE_PROTECTION_DISABLED = 1,
    DELETE_PROTECTION_ENABLED = 2
}
export class DatabaseCmekConfig extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        kms_key_name?: string;
        active_key_version?: string[];
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("kms_key_name" in data && data.kms_key_name != undefined) {
                this.kms_key_name = data.kms_key_name;
            }
            if ("active_key_version" in data && data.active_key_version != undefined) {
                this.active_key_version = data.active_key_version;
            }
        }
    }
    get kms_key_name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set kms_key_name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get active_key_version() {
        return pb_1.Message.getFieldWithDefault(this, 2, []) as string[];
    }
    set active_key_version(value: string[]) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        kms_key_name?: string;
        active_key_version?: string[];
    }): DatabaseCmekConfig {
        const message = new DatabaseCmekConfig({});
        if (data.kms_key_name != null) {
            message.kms_key_name = data.kms_key_name;
        }
        if (data.active_key_version != null) {
            message.active_key_version = data.active_key_version;
        }
        return message;
    }
    toObject() {
        const data: {
            kms_key_name?: string;
            active_key_version?: string[];
        } = {};
        if (this.kms_key_name != null) {
            data.kms_key_name = this.kms_key_name;
        }
        if (this.active_key_version != null) {
            data.active_key_version = this.active_key_version;
        }
        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.kms_key_name.length)
            writer.writeString(1, this.kms_key_name);
        if (this.active_key_version.length)
            writer.writeRepeatedString(2, this.active_key_version);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DatabaseCmekConfig {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DatabaseCmekConfig();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.kms_key_name = reader.readString();
                    break;
                case 2:
                    pb_1.Message.addToRepeatedField(message, 2, reader.readString());
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DatabaseCmekConfig {
        return DatabaseCmekConfig.deserialize(bytes);
    }
}
export class DatabaseSourceInfo extends pb_1.Message {
    #one_of_decls: number[][] = [[1]];
    constructor(data?: any[] | ({
        operation?: string;
    } & (({
        backup?: DatabaseSourceInfoBackupSource;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("backup" in data && data.backup != undefined) {
                this.backup = data.backup;
            }
            if ("operation" in data && data.operation != undefined) {
                this.operation = data.operation;
            }
        }
    }
    get backup() {
        return pb_1.Message.getWrapperField(this, DatabaseSourceInfoBackupSource, 1) as DatabaseSourceInfoBackupSource;
    }
    set backup(value: DatabaseSourceInfoBackupSource) {
        pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
    }
    get has_backup() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get operation() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set operation(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get source() {
        const cases: {
            [index: number]: "none" | "backup";
        } = {
            0: "none",
            1: "backup"
        };
        return cases[pb_1.Message.computeOneofCase(this, [1])];
    }
    static fromObject(data: {
        backup?: ReturnType<typeof DatabaseSourceInfoBackupSource.prototype.toObject>;
        operation?: string;
    }): DatabaseSourceInfo {
        const message = new DatabaseSourceInfo({});
        if (data.backup != null) {
            message.backup = DatabaseSourceInfoBackupSource.fromObject(data.backup);
        }
        if (data.operation != null) {
            message.operation = data.operation;
        }
        return message;
    }
    toObject() {
        const data: {
            backup?: ReturnType<typeof DatabaseSourceInfoBackupSource.prototype.toObject>;
            operation?: string;
        } = {};
        if (this.backup != null) {
            data.backup = this.backup.toObject();
        }
        if (this.operation != null) {
            data.operation = this.operation;
        }
        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.has_backup)
            writer.writeMessage(1, this.backup, () => this.backup.serialize(writer));
        if (this.operation.length)
            writer.writeString(3, this.operation);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DatabaseSourceInfo {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DatabaseSourceInfo();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.backup, () => message.backup = DatabaseSourceInfoBackupSource.deserialize(reader));
                    break;
                case 3:
                    message.operation = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DatabaseSourceInfo {
        return DatabaseSourceInfo.deserialize(bytes);
    }
}
export class DatabaseSourceInfoBackupSource extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        backup?: 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 ("backup" in data && data.backup != undefined) {
                this.backup = data.backup;
            }
        }
    }
    get backup() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set backup(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        backup?: string;
    }): DatabaseSourceInfoBackupSource {
        const message = new DatabaseSourceInfoBackupSource({});
        if (data.backup != null) {
            message.backup = data.backup;
        }
        return message;
    }
    toObject() {
        const data: {
            backup?: string;
        } = {};
        if (this.backup != null) {
            data.backup = this.backup;
        }
        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.backup.length)
            writer.writeString(1, this.backup);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DatabaseSourceInfoBackupSource {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DatabaseSourceInfoBackupSource();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.backup = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DatabaseSourceInfoBackupSource {
        return DatabaseSourceInfoBackupSource.deserialize(bytes);
    }
}
export class DatabaseEncryptionConfig extends pb_1.Message {
    #one_of_decls: number[][] = [[1, 2, 3]];
    constructor(data?: any[] | ({} & (({
        google_default_encryption?: DatabaseEncryptionConfigGoogleDefaultEncryptionOptions;
        use_source_encryption?: never;
        customer_managed_encryption?: never;
    } | {
        google_default_encryption?: never;
        use_source_encryption?: DatabaseEncryptionConfigSourceEncryptionOptions;
        customer_managed_encryption?: never;
    } | {
        google_default_encryption?: never;
        use_source_encryption?: never;
        customer_managed_encryption?: DatabaseEncryptionConfigCustomerManagedEncryptionOptions;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("google_default_encryption" in data && data.google_default_encryption != undefined) {
                this.google_default_encryption = data.google_default_encryption;
            }
            if ("use_source_encryption" in data && data.use_source_encryption != undefined) {
                this.use_source_encryption = data.use_source_encryption;
            }
            if ("customer_managed_encryption" in data && data.customer_managed_encryption != undefined) {
                this.customer_managed_encryption = data.customer_managed_encryption;
            }
        }
    }
    get google_default_encryption() {
        return pb_1.Message.getWrapperField(this, DatabaseEncryptionConfigGoogleDefaultEncryptionOptions, 1) as DatabaseEncryptionConfigGoogleDefaultEncryptionOptions;
    }
    set google_default_encryption(value: DatabaseEncryptionConfigGoogleDefaultEncryptionOptions) {
        pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
    }
    get has_google_default_encryption() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get use_source_encryption() {
        return pb_1.Message.getWrapperField(this, DatabaseEncryptionConfigSourceEncryptionOptions, 2) as DatabaseEncryptionConfigSourceEncryptionOptions;
    }
    set use_source_encryption(value: DatabaseEncryptionConfigSourceEncryptionOptions) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_use_source_encryption() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get customer_managed_encryption() {
        return pb_1.Message.getWrapperField(this, DatabaseEncryptionConfigCustomerManagedEncryptionOptions, 3) as DatabaseEncryptionConfigCustomerManagedEncryptionOptions;
    }
    set customer_managed_encryption(value: DatabaseEncryptionConfigCustomerManagedEncryptionOptions) {
        pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
    }
    get has_customer_managed_encryption() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get encryption_type() {
        const cases: {
            [index: number]: "none" | "google_default_encryption" | "use_source_encryption" | "customer_managed_encryption";
        } = {
            0: "none",
            1: "google_default_encryption",
            2: "use_source_encryption",
            3: "customer_managed_encryption"
        };
        return cases[pb_1.Message.computeOneofCase(this, [1, 2, 3])];
    }
    static fromObject(data: {
        google_default_encryption?: ReturnType<typeof DatabaseEncryptionConfigGoogleDefaultEncryptionOptions.prototype.toObject>;
        use_source_encryption?: ReturnType<typeof DatabaseEncryptionConfigSourceEncryptionOptions.prototype.toObject>;
        customer_managed_encryption?: ReturnType<typeof DatabaseEncryptionConfigCustomerManagedEncryptionOptions.prototype.toObject>;
    }): DatabaseEncryptionConfig {
        const message = new DatabaseEncryptionConfig({});
        if (data.google_default_encryption != null) {
            message.google_default_encryption = DatabaseEncryptionConfigGoogleDefaultEncryptionOptions.fromObject(data.google_default_encryption);
        }
        if (data.use_source_encryption != null) {
            message.use_source_encryption = DatabaseEncryptionConfigSourceEncryptionOptions.fromObject(data.use_source_encryption);
        }
        if (data.customer_managed_encryption != null) {
            message.customer_managed_encryption = DatabaseEncryptionConfigCustomerManagedEncryptionOptions.fromObject(data.customer_managed_encryption);
        }
        return message;
    }
    toObject() {
        const data: {
            google_default_encryption?: ReturnType<typeof DatabaseEncryptionConfigGoogleDefaultEncryptionOptions.prototype.toObject>;
            use_source_encryption?: ReturnType<typeof DatabaseEncryptionConfigSourceEncryptionOptions.prototype.toObject>;
            customer_managed_encryption?: ReturnType<typeof DatabaseEncryptionConfigCustomerManagedEncryptionOptions.prototype.toObject>;
        } = {};
        if (this.google_default_encryption != null) {
            data.google_default_encryption = this.google_default_encryption.toObject();
        }
        if (this.use_source_encryption != null) {
            data.use_source_encryption = this.use_source_encryption.toObject();
        }
        if (this.customer_managed_encryption != null) {
            data.customer_managed_encryption = this.customer_managed_encryption.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.has_google_default_encryption)
            writer.writeMessage(1, this.google_default_encryption, () => this.google_default_encryption.serialize(writer));
        if (this.has_use_source_encryption)
            writer.writeMessage(2, this.use_source_encryption, () => this.use_source_encryption.serialize(writer));
        if (this.has_customer_managed_encryption)
            writer.writeMessage(3, this.customer_managed_encryption, () => this.customer_managed_encryption.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DatabaseEncryptionConfig {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DatabaseEncryptionConfig();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.google_default_encryption, () => message.google_default_encryption = DatabaseEncryptionConfigGoogleDefaultEncryptionOptions.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.use_source_encryption, () => message.use_source_encryption = DatabaseEncryptionConfigSourceEncryptionOptions.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.customer_managed_encryption, () => message.customer_managed_encryption = DatabaseEncryptionConfigCustomerManagedEncryptionOptions.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DatabaseEncryptionConfig {
        return DatabaseEncryptionConfig.deserialize(bytes);
    }
}
export class DatabaseEncryptionConfigGoogleDefaultEncryptionOptions extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {}) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") { }
    }
    static fromObject(data: {}): DatabaseEncryptionConfigGoogleDefaultEncryptionOptions {
        const message = new DatabaseEncryptionConfigGoogleDefaultEncryptionOptions({});
        return message;
    }
    toObject() {
        const data: {} = {};
        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 (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DatabaseEncryptionConfigGoogleDefaultEncryptionOptions {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DatabaseEncryptionConfigGoogleDefaultEncryptionOptions();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DatabaseEncryptionConfigGoogleDefaultEncryptionOptions {
        return DatabaseEncryptionConfigGoogleDefaultEncryptionOptions.deserialize(bytes);
    }
}
export class DatabaseEncryptionConfigSourceEncryptionOptions extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {}) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") { }
    }
    static fromObject(data: {}): DatabaseEncryptionConfigSourceEncryptionOptions {
        const message = new DatabaseEncryptionConfigSourceEncryptionOptions({});
        return message;
    }
    toObject() {
        const data: {} = {};
        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 (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DatabaseEncryptionConfigSourceEncryptionOptions {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DatabaseEncryptionConfigSourceEncryptionOptions();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DatabaseEncryptionConfigSourceEncryptionOptions {
        return DatabaseEncryptionConfigSourceEncryptionOptions.deserialize(bytes);
    }
}
export class DatabaseEncryptionConfigCustomerManagedEncryptionOptions extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        kms_key_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 ("kms_key_name" in data && data.kms_key_name != undefined) {
                this.kms_key_name = data.kms_key_name;
            }
        }
    }
    get kms_key_name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set kms_key_name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        kms_key_name?: string;
    }): DatabaseEncryptionConfigCustomerManagedEncryptionOptions {
        const message = new DatabaseEncryptionConfigCustomerManagedEncryptionOptions({});
        if (data.kms_key_name != null) {
            message.kms_key_name = data.kms_key_name;
        }
        return message;
    }
    toObject() {
        const data: {
            kms_key_name?: string;
        } = {};
        if (this.kms_key_name != null) {
            data.kms_key_name = this.kms_key_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.kms_key_name.length)
            writer.writeString(1, this.kms_key_name);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DatabaseEncryptionConfigCustomerManagedEncryptionOptions {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DatabaseEncryptionConfigCustomerManagedEncryptionOptions();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.kms_key_name = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DatabaseEncryptionConfigCustomerManagedEncryptionOptions {
        return DatabaseEncryptionConfigCustomerManagedEncryptionOptions.deserialize(bytes);
    }
}
