import _m0 from 'protobufjs/minimal';
import { Health } from '../../../../yandex/cloud/dataproc/v1/common';
export declare const protobufPackage = "yandex.cloud.dataproc.v1";
/** A Data Proc cluster. For details about the concept, see [documentation](/docs/data-proc/concepts/). */
export interface Cluster {
    /** ID of the cluster. Generated at creation time. */
    id: string;
    /** ID of the folder that the cluster belongs to. */
    folderId: string;
    /** Creation timestamp. */
    createdAt?: Date;
    /** Name of the cluster. The name is unique within the folder. */
    name: string;
    /** Description of the cluster. */
    description: string;
    /** Cluster labels as `key:value` pairs. */
    labels: {
        [key: string]: string;
    };
    /** Monitoring systems relevant to the cluster. */
    monitoring: Monitoring[];
    /** Configuration of the cluster. */
    config?: ClusterConfig;
    /** Aggregated cluster health. */
    health: Health;
    /** Cluster status. */
    status: Cluster_Status;
    /** ID of the availability zone where the cluster resides. */
    zoneId: string;
    /** ID of service account for the Data Proc manager agent. */
    serviceAccountId: string;
    /** Object Storage bucket to be used for Data Proc jobs that are run in the cluster. */
    bucket: string;
    /** Whether UI Proxy feature is enabled. */
    uiProxy: boolean;
    /** User security groups. */
    securityGroupIds: string[];
    /** Host groups hosting VMs of the cluster. */
    hostGroupIds: string[];
    /** Deletion Protection inhibits deletion of the cluster */
    deletionProtection: boolean;
    /**
     * ID of the cloud logging log group to write logs. If not set, default log group for the folder will be used.
     * To prevent logs from being sent to the cloud set cluster property dataproc:disable_cloud_logging = true
     */
    logGroupId: string;
    /** Environment of the cluster */
    environment: Cluster_Environment;
}
export declare enum Cluster_Status {
    /** STATUS_UNKNOWN - Cluster state is unknown. */
    STATUS_UNKNOWN = 0,
    /** CREATING - Cluster is being created. */
    CREATING = 1,
    /** RUNNING - Cluster is running normally. */
    RUNNING = 2,
    /** ERROR - Cluster encountered a problem and cannot operate. */
    ERROR = 3,
    /** STOPPING - Cluster is stopping. */
    STOPPING = 4,
    /** STOPPED - Cluster stopped. */
    STOPPED = 5,
    /** STARTING - Cluster is starting. */
    STARTING = 6,
    UNRECOGNIZED = -1
}
export declare function cluster_StatusFromJSON(object: any): Cluster_Status;
export declare function cluster_StatusToJSON(object: Cluster_Status): string;
export declare enum Cluster_Environment {
    ENVIRONMENT_UNSPECIFIED = 0,
    PRODUCTION = 1,
    PRESTABLE = 2,
    UNRECOGNIZED = -1
}
export declare function cluster_EnvironmentFromJSON(object: any): Cluster_Environment;
export declare function cluster_EnvironmentToJSON(object: Cluster_Environment): string;
export interface Cluster_LabelsEntry {
    key: string;
    value: string;
}
/** Metadata of a monitoring system for a Data Proc cluster. */
export interface Monitoring {
    /** Name of the monitoring system. */
    name: string;
    /** Description of the monitoring system. */
    description: string;
    /** Link to the monitoring system. */
    link: string;
}
/**
 * Hadoop configuration that describes services installed in a cluster,
 * their properties and settings.
 */
export interface HadoopConfig {
    /** Set of services used in the cluster (if empty, the default set is used). */
    services: HadoopConfig_Service[];
    /**
     * Properties set for all hosts in `*-site.xml` configurations. The key should indicate
     * the service and the property.
     *
     * For example, use the key 'hdfs:dfs.replication' to set the `dfs.replication` property
     * in the file `/etc/hadoop/conf/hdfs-site.xml`.
     */
    properties: {
        [key: string]: string;
    };
    /** List of public SSH keys to access to cluster hosts. */
    sshPublicKeys: string[];
    /** Set of init-actions */
    initializationActions: InitializationAction[];
}
export declare enum HadoopConfig_Service {
    SERVICE_UNSPECIFIED = 0,
    HDFS = 1,
    YARN = 2,
    MAPREDUCE = 3,
    HIVE = 4,
    TEZ = 5,
    ZOOKEEPER = 6,
    HBASE = 7,
    SQOOP = 8,
    FLUME = 9,
    SPARK = 10,
    ZEPPELIN = 11,
    OOZIE = 12,
    LIVY = 13,
    UNRECOGNIZED = -1
}
export declare function hadoopConfig_ServiceFromJSON(object: any): HadoopConfig_Service;
export declare function hadoopConfig_ServiceToJSON(object: HadoopConfig_Service): string;
export interface HadoopConfig_PropertiesEntry {
    key: string;
    value: string;
}
export interface ClusterConfig {
    /**
     * Image version for cluster provisioning.
     * All available versions are listed in the [documentation](/docs/data-proc/concepts/environment).
     */
    versionId: string;
    /** Data Proc specific configuration options. */
    hadoop?: HadoopConfig;
}
export interface InitializationAction {
    /** URI of the executable file */
    uri: string;
    /** Arguments to the initialization action */
    args: string[];
    /** Execution timeout */
    timeout: number;
}
export declare const Cluster: {
    encode(message: Cluster, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Cluster;
    fromJSON(object: any): Cluster;
    toJSON(message: Cluster): unknown;
    fromPartial<I extends {
        id?: string | undefined;
        folderId?: string | undefined;
        createdAt?: Date | undefined;
        name?: string | undefined;
        description?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        monitoring?: {
            name?: string | undefined;
            description?: string | undefined;
            link?: string | undefined;
        }[] | undefined;
        config?: {
            versionId?: string | undefined;
            hadoop?: {
                services?: HadoopConfig_Service[] | undefined;
                properties?: {
                    [x: string]: string | undefined;
                } | undefined;
                sshPublicKeys?: string[] | undefined;
                initializationActions?: {
                    uri?: string | undefined;
                    args?: string[] | undefined;
                    timeout?: number | undefined;
                }[] | undefined;
            } | undefined;
        } | undefined;
        health?: Health | undefined;
        status?: Cluster_Status | undefined;
        zoneId?: string | undefined;
        serviceAccountId?: string | undefined;
        bucket?: string | undefined;
        uiProxy?: boolean | undefined;
        securityGroupIds?: string[] | undefined;
        hostGroupIds?: string[] | undefined;
        deletionProtection?: boolean | undefined;
        logGroupId?: string | undefined;
        environment?: Cluster_Environment | undefined;
    } & {
        id?: string | undefined;
        folderId?: string | undefined;
        createdAt?: Date | undefined;
        name?: string | undefined;
        description?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
        monitoring?: ({
            name?: string | undefined;
            description?: string | undefined;
            link?: string | undefined;
        }[] & ({
            name?: string | undefined;
            description?: string | undefined;
            link?: string | undefined;
        } & {
            name?: string | undefined;
            description?: string | undefined;
            link?: string | undefined;
        } & Record<Exclude<keyof I["monitoring"][number], keyof Monitoring>, never>)[] & Record<Exclude<keyof I["monitoring"], keyof {
            name?: string | undefined;
            description?: string | undefined;
            link?: string | undefined;
        }[]>, never>) | undefined;
        config?: ({
            versionId?: string | undefined;
            hadoop?: {
                services?: HadoopConfig_Service[] | undefined;
                properties?: {
                    [x: string]: string | undefined;
                } | undefined;
                sshPublicKeys?: string[] | undefined;
                initializationActions?: {
                    uri?: string | undefined;
                    args?: string[] | undefined;
                    timeout?: number | undefined;
                }[] | undefined;
            } | undefined;
        } & {
            versionId?: string | undefined;
            hadoop?: ({
                services?: HadoopConfig_Service[] | undefined;
                properties?: {
                    [x: string]: string | undefined;
                } | undefined;
                sshPublicKeys?: string[] | undefined;
                initializationActions?: {
                    uri?: string | undefined;
                    args?: string[] | undefined;
                    timeout?: number | undefined;
                }[] | undefined;
            } & {
                services?: (HadoopConfig_Service[] & HadoopConfig_Service[] & Record<Exclude<keyof I["config"]["hadoop"]["services"], keyof HadoopConfig_Service[]>, never>) | undefined;
                properties?: ({
                    [x: string]: string | undefined;
                } & {
                    [x: string]: string | undefined;
                } & Record<Exclude<keyof I["config"]["hadoop"]["properties"], string | number>, never>) | undefined;
                sshPublicKeys?: (string[] & string[] & Record<Exclude<keyof I["config"]["hadoop"]["sshPublicKeys"], keyof string[]>, never>) | undefined;
                initializationActions?: ({
                    uri?: string | undefined;
                    args?: string[] | undefined;
                    timeout?: number | undefined;
                }[] & ({
                    uri?: string | undefined;
                    args?: string[] | undefined;
                    timeout?: number | undefined;
                } & {
                    uri?: string | undefined;
                    args?: (string[] & string[] & Record<Exclude<keyof I["config"]["hadoop"]["initializationActions"][number]["args"], keyof string[]>, never>) | undefined;
                    timeout?: number | undefined;
                } & Record<Exclude<keyof I["config"]["hadoop"]["initializationActions"][number], keyof InitializationAction>, never>)[] & Record<Exclude<keyof I["config"]["hadoop"]["initializationActions"], keyof {
                    uri?: string | undefined;
                    args?: string[] | undefined;
                    timeout?: number | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["config"]["hadoop"], keyof HadoopConfig>, never>) | undefined;
        } & Record<Exclude<keyof I["config"], keyof ClusterConfig>, never>) | undefined;
        health?: Health | undefined;
        status?: Cluster_Status | undefined;
        zoneId?: string | undefined;
        serviceAccountId?: string | undefined;
        bucket?: string | undefined;
        uiProxy?: boolean | undefined;
        securityGroupIds?: (string[] & string[] & Record<Exclude<keyof I["securityGroupIds"], keyof string[]>, never>) | undefined;
        hostGroupIds?: (string[] & string[] & Record<Exclude<keyof I["hostGroupIds"], keyof string[]>, never>) | undefined;
        deletionProtection?: boolean | undefined;
        logGroupId?: string | undefined;
        environment?: Cluster_Environment | undefined;
    } & Record<Exclude<keyof I, keyof Cluster>, never>>(object: I): Cluster;
};
export declare const Cluster_LabelsEntry: {
    encode(message: Cluster_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Cluster_LabelsEntry;
    fromJSON(object: any): Cluster_LabelsEntry;
    toJSON(message: Cluster_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof Cluster_LabelsEntry>, never>>(object: I): Cluster_LabelsEntry;
};
export declare const Monitoring: {
    encode(message: Monitoring, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Monitoring;
    fromJSON(object: any): Monitoring;
    toJSON(message: Monitoring): unknown;
    fromPartial<I extends {
        name?: string | undefined;
        description?: string | undefined;
        link?: string | undefined;
    } & {
        name?: string | undefined;
        description?: string | undefined;
        link?: string | undefined;
    } & Record<Exclude<keyof I, keyof Monitoring>, never>>(object: I): Monitoring;
};
export declare const HadoopConfig: {
    encode(message: HadoopConfig, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): HadoopConfig;
    fromJSON(object: any): HadoopConfig;
    toJSON(message: HadoopConfig): unknown;
    fromPartial<I extends {
        services?: HadoopConfig_Service[] | undefined;
        properties?: {
            [x: string]: string | undefined;
        } | undefined;
        sshPublicKeys?: string[] | undefined;
        initializationActions?: {
            uri?: string | undefined;
            args?: string[] | undefined;
            timeout?: number | undefined;
        }[] | undefined;
    } & {
        services?: (HadoopConfig_Service[] & HadoopConfig_Service[] & Record<Exclude<keyof I["services"], keyof HadoopConfig_Service[]>, never>) | undefined;
        properties?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["properties"], string | number>, never>) | undefined;
        sshPublicKeys?: (string[] & string[] & Record<Exclude<keyof I["sshPublicKeys"], keyof string[]>, never>) | undefined;
        initializationActions?: ({
            uri?: string | undefined;
            args?: string[] | undefined;
            timeout?: number | undefined;
        }[] & ({
            uri?: string | undefined;
            args?: string[] | undefined;
            timeout?: number | undefined;
        } & {
            uri?: string | undefined;
            args?: (string[] & string[] & Record<Exclude<keyof I["initializationActions"][number]["args"], keyof string[]>, never>) | undefined;
            timeout?: number | undefined;
        } & Record<Exclude<keyof I["initializationActions"][number], keyof InitializationAction>, never>)[] & Record<Exclude<keyof I["initializationActions"], keyof {
            uri?: string | undefined;
            args?: string[] | undefined;
            timeout?: number | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof HadoopConfig>, never>>(object: I): HadoopConfig;
};
export declare const HadoopConfig_PropertiesEntry: {
    encode(message: HadoopConfig_PropertiesEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): HadoopConfig_PropertiesEntry;
    fromJSON(object: any): HadoopConfig_PropertiesEntry;
    toJSON(message: HadoopConfig_PropertiesEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof HadoopConfig_PropertiesEntry>, never>>(object: I): HadoopConfig_PropertiesEntry;
};
export declare const ClusterConfig: {
    encode(message: ClusterConfig, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ClusterConfig;
    fromJSON(object: any): ClusterConfig;
    toJSON(message: ClusterConfig): unknown;
    fromPartial<I extends {
        versionId?: string | undefined;
        hadoop?: {
            services?: HadoopConfig_Service[] | undefined;
            properties?: {
                [x: string]: string | undefined;
            } | undefined;
            sshPublicKeys?: string[] | undefined;
            initializationActions?: {
                uri?: string | undefined;
                args?: string[] | undefined;
                timeout?: number | undefined;
            }[] | undefined;
        } | undefined;
    } & {
        versionId?: string | undefined;
        hadoop?: ({
            services?: HadoopConfig_Service[] | undefined;
            properties?: {
                [x: string]: string | undefined;
            } | undefined;
            sshPublicKeys?: string[] | undefined;
            initializationActions?: {
                uri?: string | undefined;
                args?: string[] | undefined;
                timeout?: number | undefined;
            }[] | undefined;
        } & {
            services?: (HadoopConfig_Service[] & HadoopConfig_Service[] & Record<Exclude<keyof I["hadoop"]["services"], keyof HadoopConfig_Service[]>, never>) | undefined;
            properties?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & Record<Exclude<keyof I["hadoop"]["properties"], string | number>, never>) | undefined;
            sshPublicKeys?: (string[] & string[] & Record<Exclude<keyof I["hadoop"]["sshPublicKeys"], keyof string[]>, never>) | undefined;
            initializationActions?: ({
                uri?: string | undefined;
                args?: string[] | undefined;
                timeout?: number | undefined;
            }[] & ({
                uri?: string | undefined;
                args?: string[] | undefined;
                timeout?: number | undefined;
            } & {
                uri?: string | undefined;
                args?: (string[] & string[] & Record<Exclude<keyof I["hadoop"]["initializationActions"][number]["args"], keyof string[]>, never>) | undefined;
                timeout?: number | undefined;
            } & Record<Exclude<keyof I["hadoop"]["initializationActions"][number], keyof InitializationAction>, never>)[] & Record<Exclude<keyof I["hadoop"]["initializationActions"], keyof {
                uri?: string | undefined;
                args?: string[] | undefined;
                timeout?: number | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["hadoop"], keyof HadoopConfig>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof ClusterConfig>, never>>(object: I): ClusterConfig;
};
export declare const InitializationAction: {
    encode(message: InitializationAction, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): InitializationAction;
    fromJSON(object: any): InitializationAction;
    toJSON(message: InitializationAction): unknown;
    fromPartial<I extends {
        uri?: string | undefined;
        args?: string[] | undefined;
        timeout?: number | undefined;
    } & {
        uri?: string | undefined;
        args?: (string[] & string[] & Record<Exclude<keyof I["args"], keyof string[]>, never>) | undefined;
        timeout?: number | undefined;
    } & Record<Exclude<keyof I, keyof InitializationAction>, never>>(object: I): InitializationAction;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & Record<Exclude<keyof I, KeysOfUnion<P>>, never>;
export {};
