import _m0 from 'protobufjs/minimal';
export declare const protobufPackage = "yandex.cloud.k8s.v1";
export declare enum IpVersion {
    IP_VERSION_UNSPECIFIED = 0,
    /** IPV4 - IPv4 address, for example 192.168.0.0. */
    IPV4 = 1,
    /** IPV6 - IPv6 address, not available yet. */
    IPV6 = 2,
    UNRECOGNIZED = -1
}
export declare function ipVersionFromJSON(object: any): IpVersion;
export declare function ipVersionToJSON(object: IpVersion): string;
export interface Node {
    /** Computed node status. */
    status: Node_Status;
    /** Node specificaion. */
    spec?: Node_Spec;
    /**
     * Cloud instance status.
     * Not available in `MISSING` status.
     */
    cloudStatus?: Node_CloudStatus;
    /**
     * Kubernetes node status.
     * Not available in `PROVISIONING` and `NOT_CONNECTED` states.
     */
    kubernetesStatus?: Node_KubernetesStatus;
}
/** Computed node status. */
export declare enum Node_Status {
    STATUS_UNSPECIFIED = 0,
    /** PROVISIONING - Node instance is not yet created (e.g. in progress). */
    PROVISIONING = 1,
    /**
     * NOT_CONNECTED - Node instance is created but not registered
     * (e.g. is still initializing).
     */
    NOT_CONNECTED = 2,
    /**
     * NOT_READY - Node has connected but is not ready for
     * workload (see conditions for details).
     */
    NOT_READY = 3,
    /** READY - Node has connected and ready for workload. */
    READY = 4,
    /**
     * MISSING - Node is still registered but its instance
     * is deleted (this is our bug).
     */
    MISSING = 5,
    /** STOPPED - Node is stopped */
    STOPPED = 6,
    /** UNKNOWN - Backend request to kubernetes api was unsuccessful. */
    UNKNOWN = 7,
    UNRECOGNIZED = -1
}
export declare function node_StatusFromJSON(object: any): Node_Status;
export declare function node_StatusToJSON(object: Node_Status): string;
/** Kubernetes node info */
export interface Node_KubernetesStatus {
    /** Node id (and instance name) */
    id: string;
    /**
     * Conditions is an array of current observed node conditions.
     * More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
     */
    conditions: Condition[];
    /** If specified, the node's taints. */
    taints: Taint[];
    /** List of volumes that are attached to the node. */
    attachedVolumes: AttachedVolume[];
}
/** Cloud instance info */
export interface Node_CloudStatus {
    /** Compute instance id */
    id: string;
    /** IG instance status */
    status: string;
    /** IG instance status message */
    statusMessage: string;
}
/** Node specification. */
export interface Node_Spec {
    /** Node group specified resources. */
    resources?: ResourcesSpec;
    /** Node group specified disk. */
    disk?: DiskSpec;
}
export interface Condition {
    /** Type of node condition. */
    type: string;
    /** Status is the status of the condition. */
    status: string;
    /** Human-readable message indicating details about last transition. */
    message: string;
    /** Last time we got an update on a given condition. */
    lastHeartbeatTime?: Date;
    /** Last time the condition transit from one status to another. */
    lastTransitionTime?: Date;
}
export interface Taint {
    /** The taint key to be applied to a node. */
    key: string;
    /** The taint value corresponding to the taint key. */
    value: string;
    /** The effect of the taint on pods that do not tolerate the taint. */
    effect: Taint_Effect;
}
export declare enum Taint_Effect {
    EFFECT_UNSPECIFIED = 0,
    /**
     * NO_SCHEDULE - Do not allow new pods to schedule onto the node unless they tolerate the taint,
     * but allow all pods submitted to Kubelet without going through the scheduler
     * to start, and allow all already-running pods to continue running.
     */
    NO_SCHEDULE = 1,
    /**
     * PREFER_NO_SCHEDULE - Like NO_SCHEDULE, but the scheduler tries not to schedule
     * new pods onto the node, rather than prohibiting new pods from scheduling
     * onto the node entirely. Enforced by the scheduler.
     */
    PREFER_NO_SCHEDULE = 2,
    /** NO_EXECUTE - Evict any already-running pods that do not tolerate the taint. */
    NO_EXECUTE = 3,
    UNRECOGNIZED = -1
}
export declare function taint_EffectFromJSON(object: any): Taint_Effect;
export declare function taint_EffectToJSON(object: Taint_Effect): string;
/** AttachedVolume describes a volume attached to a node */
export interface AttachedVolume {
    /** Name of the driver which has attached the volume */
    driverName: string;
    /** Volume handle (cloud disk id) */
    volumeHandle: string;
}
export interface NodeTemplate {
    /**
     * Name of the instance.
     * In order to be unique it must contain at least on of instance unique placeholders:
     *   {instance.short_id}
     *   {instance.index}
     *   combination of {instance.zone_id} and {instance.index_in_zone}
     * Example: my-instance-{instance.index}
     * If not set, default is used: {instance_group.id}-{instance.short_id}
     * It may also contain another placeholders, see metadata doc for full list.
     */
    name: string;
    /** these labels will be assigned to compute nodes (instances), created by the nodegroup */
    labels: {
        [key: string]: string;
    };
    /** ID of the hardware platform configuration for the node. */
    platformId: string;
    /** Computing resources of the node such as the amount of memory and number of cores. */
    resourcesSpec?: ResourcesSpec;
    /** Specification for the boot disk that will be attached to the node. */
    bootDiskSpec?: DiskSpec;
    /**
     * The metadata as `key:value` pairs assigned to this instance template. Only SSH keys are supported as metadata.
     *
     * For more information, see [Connecting to a node over SSH](/docs/managed-kubernetes/operations/node-connect-ssh).
     */
    metadata: {
        [key: string]: string;
    };
    /**
     * Specification for the create network interfaces for the node group compute instances.
     * Deprecated, please use network_interface_specs.
     *
     * @deprecated
     */
    v4AddressSpec?: NodeAddressSpec;
    /** Scheduling policy configuration. */
    schedulingPolicy?: SchedulingPolicy;
    /**
     * New api, to specify network interfaces for the node group compute instances.
     * Can not be used together with 'v4_address_spec'
     */
    networkInterfaceSpecs: NetworkInterfaceSpec[];
    placementPolicy?: PlacementPolicy;
    /** this parameter allows to specify type of network acceleration used on nodes (instances) */
    networkSettings?: NodeTemplate_NetworkSettings;
    containerRuntimeSettings?: NodeTemplate_ContainerRuntimeSettings;
    containerNetworkSettings?: NodeTemplate_ContainerNetworkSettings;
    /** GPU settings */
    gpuSettings?: GpuSettings;
}
export interface NodeTemplate_LabelsEntry {
    key: string;
    value: string;
}
export interface NodeTemplate_MetadataEntry {
    key: string;
    value: string;
}
export interface NodeTemplate_NetworkSettings {
    type: NodeTemplate_NetworkSettings_Type;
}
export declare enum NodeTemplate_NetworkSettings_Type {
    TYPE_UNSPECIFIED = 0,
    STANDARD = 1,
    /**
     * SOFTWARE_ACCELERATED - unsupported yet, commented for possible future utilization.
     * HARDWARE_ACCELERATED = 3;
     */
    SOFTWARE_ACCELERATED = 2,
    UNRECOGNIZED = -1
}
export declare function nodeTemplate_NetworkSettings_TypeFromJSON(object: any): NodeTemplate_NetworkSettings_Type;
export declare function nodeTemplate_NetworkSettings_TypeToJSON(object: NodeTemplate_NetworkSettings_Type): string;
export interface NodeTemplate_ContainerRuntimeSettings {
    type: NodeTemplate_ContainerRuntimeSettings_Type;
}
export declare enum NodeTemplate_ContainerRuntimeSettings_Type {
    TYPE_UNSPECIFIED = 0,
    DOCKER = 1,
    CONTAINERD = 2,
    UNRECOGNIZED = -1
}
export declare function nodeTemplate_ContainerRuntimeSettings_TypeFromJSON(object: any): NodeTemplate_ContainerRuntimeSettings_Type;
export declare function nodeTemplate_ContainerRuntimeSettings_TypeToJSON(object: NodeTemplate_ContainerRuntimeSettings_Type): string;
export interface NodeTemplate_ContainerNetworkSettings {
    podMtu: number;
}
export interface GpuSettings {
    /** GPU cluster id, that mk8s node will join. */
    gpuClusterId: string;
    /** GPU environment configured on node. */
    gpuEnvironment: GpuSettings_GpuEnvironment;
}
export declare enum GpuSettings_GpuEnvironment {
    /** GPU_ENVIRONMENT_UNSPECIFIED - Use one of the values below, depending on the default for the specific Cloud installation. */
    GPU_ENVIRONMENT_UNSPECIFIED = 0,
    /** RUNC_DRIVERS_CUDA - Use a node image with the pre-installed GPU toolkit, drivers and CUDA. */
    RUNC_DRIVERS_CUDA = 1,
    /**
     * RUNC - Use a node image with the pre-installed GPU toolkit but without drivers.
     * You should install drivers on a node yourself in that case.
     * There are tools to help you to do that, for example gpu-operator.
     */
    RUNC = 2,
    UNRECOGNIZED = -1
}
export declare function gpuSettings_GpuEnvironmentFromJSON(object: any): GpuSettings_GpuEnvironment;
export declare function gpuSettings_GpuEnvironmentToJSON(object: GpuSettings_GpuEnvironment): string;
export interface NetworkInterfaceSpec {
    /** IDs of the subnets. */
    subnetIds: string[];
    /** Primary IPv4 address that is assigned to the instance for this network interface. */
    primaryV4AddressSpec?: NodeAddressSpec;
    /** Primary IPv6 address that is assigned to the instance for this network interface. */
    primaryV6AddressSpec?: NodeAddressSpec;
    /** IDs of security groups. */
    securityGroupIds: string[];
}
export interface NodeAddressSpec {
    /** One-to-one NAT configuration. Setting up one-to-one NAT ensures that public IP addresses are assigned to nodes, and therefore internet is accessible for all nodes of the node group. If the field is not set, NAT will not be set up. */
    oneToOneNatSpec?: OneToOneNatSpec;
    /** Internal DNS configuration. */
    dnsRecordSpecs: DnsRecordSpec[];
}
export interface DnsRecordSpec {
    /** FQDN (required). */
    fqdn: string;
    /** DNS zone id (optional, if not set, private zone is used). */
    dnsZoneId: string;
    /** DNS record ttl, values in 0-86400 (optional). */
    ttl: number;
    /** When set to true, also create PTR DNS record (optional). */
    ptr: boolean;
}
export interface OneToOneNatSpec {
    /** IP version for the public IP address. */
    ipVersion: IpVersion;
}
export interface ResourcesSpec {
    /** Amount of memory available to the node, specified in bytes. */
    memory: number;
    /** Number of cores available to the node. */
    cores: number;
    /**
     * Baseline level of CPU performance with the possibility to burst performance above that baseline level.
     * This field sets baseline performance for each core.
     */
    coreFraction: number;
    /** Number of GPUs available to the node. */
    gpus: number;
}
export interface DiskSpec {
    /** ID of the disk type. */
    diskTypeId: string;
    /** Size of the disk, specified in bytes. */
    diskSize: number;
}
export interface SchedulingPolicy {
    /**
     * True for preemptible compute instances. Default value is false. Preemptible compute instances are stopped at least once every 24 hours, and can be stopped at any time
     * if their resources are needed by Compute.
     * For more information, see [Preemptible Virtual Machines](/docs/compute/concepts/preemptible-vm).
     */
    preemptible: boolean;
}
export interface PlacementPolicy {
    /** Identifier of placement group */
    placementGroupId: string;
}
export declare const Node: {
    encode(message: Node, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Node;
    fromJSON(object: any): Node;
    toJSON(message: Node): unknown;
    fromPartial<I extends {
        status?: Node_Status | undefined;
        spec?: {
            resources?: {
                memory?: number | undefined;
                cores?: number | undefined;
                coreFraction?: number | undefined;
                gpus?: number | undefined;
            } | undefined;
            disk?: {
                diskTypeId?: string | undefined;
                diskSize?: number | undefined;
            } | undefined;
        } | undefined;
        cloudStatus?: {
            id?: string | undefined;
            status?: string | undefined;
            statusMessage?: string | undefined;
        } | undefined;
        kubernetesStatus?: {
            id?: string | undefined;
            conditions?: {
                type?: string | undefined;
                status?: string | undefined;
                message?: string | undefined;
                lastHeartbeatTime?: Date | undefined;
                lastTransitionTime?: Date | undefined;
            }[] | undefined;
            taints?: {
                key?: string | undefined;
                value?: string | undefined;
                effect?: Taint_Effect | undefined;
            }[] | undefined;
            attachedVolumes?: {
                driverName?: string | undefined;
                volumeHandle?: string | undefined;
            }[] | undefined;
        } | undefined;
    } & {
        status?: Node_Status | undefined;
        spec?: ({
            resources?: {
                memory?: number | undefined;
                cores?: number | undefined;
                coreFraction?: number | undefined;
                gpus?: number | undefined;
            } | undefined;
            disk?: {
                diskTypeId?: string | undefined;
                diskSize?: number | undefined;
            } | undefined;
        } & {
            resources?: ({
                memory?: number | undefined;
                cores?: number | undefined;
                coreFraction?: number | undefined;
                gpus?: number | undefined;
            } & {
                memory?: number | undefined;
                cores?: number | undefined;
                coreFraction?: number | undefined;
                gpus?: number | undefined;
            } & Record<Exclude<keyof I["spec"]["resources"], keyof ResourcesSpec>, never>) | undefined;
            disk?: ({
                diskTypeId?: string | undefined;
                diskSize?: number | undefined;
            } & {
                diskTypeId?: string | undefined;
                diskSize?: number | undefined;
            } & Record<Exclude<keyof I["spec"]["disk"], keyof DiskSpec>, never>) | undefined;
        } & Record<Exclude<keyof I["spec"], keyof Node_Spec>, never>) | undefined;
        cloudStatus?: ({
            id?: string | undefined;
            status?: string | undefined;
            statusMessage?: string | undefined;
        } & {
            id?: string | undefined;
            status?: string | undefined;
            statusMessage?: string | undefined;
        } & Record<Exclude<keyof I["cloudStatus"], keyof Node_CloudStatus>, never>) | undefined;
        kubernetesStatus?: ({
            id?: string | undefined;
            conditions?: {
                type?: string | undefined;
                status?: string | undefined;
                message?: string | undefined;
                lastHeartbeatTime?: Date | undefined;
                lastTransitionTime?: Date | undefined;
            }[] | undefined;
            taints?: {
                key?: string | undefined;
                value?: string | undefined;
                effect?: Taint_Effect | undefined;
            }[] | undefined;
            attachedVolumes?: {
                driverName?: string | undefined;
                volumeHandle?: string | undefined;
            }[] | undefined;
        } & {
            id?: string | undefined;
            conditions?: ({
                type?: string | undefined;
                status?: string | undefined;
                message?: string | undefined;
                lastHeartbeatTime?: Date | undefined;
                lastTransitionTime?: Date | undefined;
            }[] & ({
                type?: string | undefined;
                status?: string | undefined;
                message?: string | undefined;
                lastHeartbeatTime?: Date | undefined;
                lastTransitionTime?: Date | undefined;
            } & {
                type?: string | undefined;
                status?: string | undefined;
                message?: string | undefined;
                lastHeartbeatTime?: Date | undefined;
                lastTransitionTime?: Date | undefined;
            } & Record<Exclude<keyof I["kubernetesStatus"]["conditions"][number], keyof Condition>, never>)[] & Record<Exclude<keyof I["kubernetesStatus"]["conditions"], keyof {
                type?: string | undefined;
                status?: string | undefined;
                message?: string | undefined;
                lastHeartbeatTime?: Date | undefined;
                lastTransitionTime?: Date | undefined;
            }[]>, never>) | undefined;
            taints?: ({
                key?: string | undefined;
                value?: string | undefined;
                effect?: Taint_Effect | undefined;
            }[] & ({
                key?: string | undefined;
                value?: string | undefined;
                effect?: Taint_Effect | undefined;
            } & {
                key?: string | undefined;
                value?: string | undefined;
                effect?: Taint_Effect | undefined;
            } & Record<Exclude<keyof I["kubernetesStatus"]["taints"][number], keyof Taint>, never>)[] & Record<Exclude<keyof I["kubernetesStatus"]["taints"], keyof {
                key?: string | undefined;
                value?: string | undefined;
                effect?: Taint_Effect | undefined;
            }[]>, never>) | undefined;
            attachedVolumes?: ({
                driverName?: string | undefined;
                volumeHandle?: string | undefined;
            }[] & ({
                driverName?: string | undefined;
                volumeHandle?: string | undefined;
            } & {
                driverName?: string | undefined;
                volumeHandle?: string | undefined;
            } & Record<Exclude<keyof I["kubernetesStatus"]["attachedVolumes"][number], keyof AttachedVolume>, never>)[] & Record<Exclude<keyof I["kubernetesStatus"]["attachedVolumes"], keyof {
                driverName?: string | undefined;
                volumeHandle?: string | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["kubernetesStatus"], keyof Node_KubernetesStatus>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof Node>, never>>(object: I): Node;
};
export declare const Node_KubernetesStatus: {
    encode(message: Node_KubernetesStatus, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Node_KubernetesStatus;
    fromJSON(object: any): Node_KubernetesStatus;
    toJSON(message: Node_KubernetesStatus): unknown;
    fromPartial<I extends {
        id?: string | undefined;
        conditions?: {
            type?: string | undefined;
            status?: string | undefined;
            message?: string | undefined;
            lastHeartbeatTime?: Date | undefined;
            lastTransitionTime?: Date | undefined;
        }[] | undefined;
        taints?: {
            key?: string | undefined;
            value?: string | undefined;
            effect?: Taint_Effect | undefined;
        }[] | undefined;
        attachedVolumes?: {
            driverName?: string | undefined;
            volumeHandle?: string | undefined;
        }[] | undefined;
    } & {
        id?: string | undefined;
        conditions?: ({
            type?: string | undefined;
            status?: string | undefined;
            message?: string | undefined;
            lastHeartbeatTime?: Date | undefined;
            lastTransitionTime?: Date | undefined;
        }[] & ({
            type?: string | undefined;
            status?: string | undefined;
            message?: string | undefined;
            lastHeartbeatTime?: Date | undefined;
            lastTransitionTime?: Date | undefined;
        } & {
            type?: string | undefined;
            status?: string | undefined;
            message?: string | undefined;
            lastHeartbeatTime?: Date | undefined;
            lastTransitionTime?: Date | undefined;
        } & Record<Exclude<keyof I["conditions"][number], keyof Condition>, never>)[] & Record<Exclude<keyof I["conditions"], keyof {
            type?: string | undefined;
            status?: string | undefined;
            message?: string | undefined;
            lastHeartbeatTime?: Date | undefined;
            lastTransitionTime?: Date | undefined;
        }[]>, never>) | undefined;
        taints?: ({
            key?: string | undefined;
            value?: string | undefined;
            effect?: Taint_Effect | undefined;
        }[] & ({
            key?: string | undefined;
            value?: string | undefined;
            effect?: Taint_Effect | undefined;
        } & {
            key?: string | undefined;
            value?: string | undefined;
            effect?: Taint_Effect | undefined;
        } & Record<Exclude<keyof I["taints"][number], keyof Taint>, never>)[] & Record<Exclude<keyof I["taints"], keyof {
            key?: string | undefined;
            value?: string | undefined;
            effect?: Taint_Effect | undefined;
        }[]>, never>) | undefined;
        attachedVolumes?: ({
            driverName?: string | undefined;
            volumeHandle?: string | undefined;
        }[] & ({
            driverName?: string | undefined;
            volumeHandle?: string | undefined;
        } & {
            driverName?: string | undefined;
            volumeHandle?: string | undefined;
        } & Record<Exclude<keyof I["attachedVolumes"][number], keyof AttachedVolume>, never>)[] & Record<Exclude<keyof I["attachedVolumes"], keyof {
            driverName?: string | undefined;
            volumeHandle?: string | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof Node_KubernetesStatus>, never>>(object: I): Node_KubernetesStatus;
};
export declare const Node_CloudStatus: {
    encode(message: Node_CloudStatus, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Node_CloudStatus;
    fromJSON(object: any): Node_CloudStatus;
    toJSON(message: Node_CloudStatus): unknown;
    fromPartial<I extends {
        id?: string | undefined;
        status?: string | undefined;
        statusMessage?: string | undefined;
    } & {
        id?: string | undefined;
        status?: string | undefined;
        statusMessage?: string | undefined;
    } & Record<Exclude<keyof I, keyof Node_CloudStatus>, never>>(object: I): Node_CloudStatus;
};
export declare const Node_Spec: {
    encode(message: Node_Spec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Node_Spec;
    fromJSON(object: any): Node_Spec;
    toJSON(message: Node_Spec): unknown;
    fromPartial<I extends {
        resources?: {
            memory?: number | undefined;
            cores?: number | undefined;
            coreFraction?: number | undefined;
            gpus?: number | undefined;
        } | undefined;
        disk?: {
            diskTypeId?: string | undefined;
            diskSize?: number | undefined;
        } | undefined;
    } & {
        resources?: ({
            memory?: number | undefined;
            cores?: number | undefined;
            coreFraction?: number | undefined;
            gpus?: number | undefined;
        } & {
            memory?: number | undefined;
            cores?: number | undefined;
            coreFraction?: number | undefined;
            gpus?: number | undefined;
        } & Record<Exclude<keyof I["resources"], keyof ResourcesSpec>, never>) | undefined;
        disk?: ({
            diskTypeId?: string | undefined;
            diskSize?: number | undefined;
        } & {
            diskTypeId?: string | undefined;
            diskSize?: number | undefined;
        } & Record<Exclude<keyof I["disk"], keyof DiskSpec>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof Node_Spec>, never>>(object: I): Node_Spec;
};
export declare const Condition: {
    encode(message: Condition, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Condition;
    fromJSON(object: any): Condition;
    toJSON(message: Condition): unknown;
    fromPartial<I extends {
        type?: string | undefined;
        status?: string | undefined;
        message?: string | undefined;
        lastHeartbeatTime?: Date | undefined;
        lastTransitionTime?: Date | undefined;
    } & {
        type?: string | undefined;
        status?: string | undefined;
        message?: string | undefined;
        lastHeartbeatTime?: Date | undefined;
        lastTransitionTime?: Date | undefined;
    } & Record<Exclude<keyof I, keyof Condition>, never>>(object: I): Condition;
};
export declare const Taint: {
    encode(message: Taint, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Taint;
    fromJSON(object: any): Taint;
    toJSON(message: Taint): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
        effect?: Taint_Effect | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
        effect?: Taint_Effect | undefined;
    } & Record<Exclude<keyof I, keyof Taint>, never>>(object: I): Taint;
};
export declare const AttachedVolume: {
    encode(message: AttachedVolume, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AttachedVolume;
    fromJSON(object: any): AttachedVolume;
    toJSON(message: AttachedVolume): unknown;
    fromPartial<I extends {
        driverName?: string | undefined;
        volumeHandle?: string | undefined;
    } & {
        driverName?: string | undefined;
        volumeHandle?: string | undefined;
    } & Record<Exclude<keyof I, keyof AttachedVolume>, never>>(object: I): AttachedVolume;
};
export declare const NodeTemplate: {
    encode(message: NodeTemplate, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NodeTemplate;
    fromJSON(object: any): NodeTemplate;
    toJSON(message: NodeTemplate): unknown;
    fromPartial<I extends {
        name?: string | undefined;
        labels?: {
            [x: string]: string | undefined;
        } | undefined;
        platformId?: string | undefined;
        resourcesSpec?: {
            memory?: number | undefined;
            cores?: number | undefined;
            coreFraction?: number | undefined;
            gpus?: number | undefined;
        } | undefined;
        bootDiskSpec?: {
            diskTypeId?: string | undefined;
            diskSize?: number | undefined;
        } | undefined;
        metadata?: {
            [x: string]: string | undefined;
        } | undefined;
        v4AddressSpec?: {
            oneToOneNatSpec?: {
                ipVersion?: IpVersion | undefined;
            } | undefined;
            dnsRecordSpecs?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } | undefined;
        schedulingPolicy?: {
            preemptible?: boolean | undefined;
        } | undefined;
        networkInterfaceSpecs?: {
            subnetIds?: string[] | undefined;
            primaryV4AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        }[] | undefined;
        placementPolicy?: {
            placementGroupId?: string | undefined;
        } | undefined;
        networkSettings?: {
            type?: NodeTemplate_NetworkSettings_Type | undefined;
        } | undefined;
        containerRuntimeSettings?: {
            type?: NodeTemplate_ContainerRuntimeSettings_Type | undefined;
        } | undefined;
        containerNetworkSettings?: {
            podMtu?: number | undefined;
        } | undefined;
        gpuSettings?: {
            gpuClusterId?: string | undefined;
            gpuEnvironment?: GpuSettings_GpuEnvironment | undefined;
        } | undefined;
    } & {
        name?: string | undefined;
        labels?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["labels"], string | number>, never>) | undefined;
        platformId?: string | undefined;
        resourcesSpec?: ({
            memory?: number | undefined;
            cores?: number | undefined;
            coreFraction?: number | undefined;
            gpus?: number | undefined;
        } & {
            memory?: number | undefined;
            cores?: number | undefined;
            coreFraction?: number | undefined;
            gpus?: number | undefined;
        } & Record<Exclude<keyof I["resourcesSpec"], keyof ResourcesSpec>, never>) | undefined;
        bootDiskSpec?: ({
            diskTypeId?: string | undefined;
            diskSize?: number | undefined;
        } & {
            diskTypeId?: string | undefined;
            diskSize?: number | undefined;
        } & Record<Exclude<keyof I["bootDiskSpec"], keyof DiskSpec>, never>) | undefined;
        metadata?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["metadata"], string | number>, never>) | undefined;
        v4AddressSpec?: ({
            oneToOneNatSpec?: {
                ipVersion?: IpVersion | undefined;
            } | undefined;
            dnsRecordSpecs?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } & {
            oneToOneNatSpec?: ({
                ipVersion?: IpVersion | undefined;
            } & {
                ipVersion?: IpVersion | undefined;
            } & Record<Exclude<keyof I["v4AddressSpec"]["oneToOneNatSpec"], "ipVersion">, never>) | undefined;
            dnsRecordSpecs?: ({
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] & ({
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            } & {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            } & Record<Exclude<keyof I["v4AddressSpec"]["dnsRecordSpecs"][number], keyof DnsRecordSpec>, never>)[] & Record<Exclude<keyof I["v4AddressSpec"]["dnsRecordSpecs"], keyof {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["v4AddressSpec"], keyof NodeAddressSpec>, never>) | undefined;
        schedulingPolicy?: ({
            preemptible?: boolean | undefined;
        } & {
            preemptible?: boolean | undefined;
        } & Record<Exclude<keyof I["schedulingPolicy"], "preemptible">, never>) | undefined;
        networkInterfaceSpecs?: ({
            subnetIds?: string[] | undefined;
            primaryV4AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        }[] & ({
            subnetIds?: string[] | undefined;
            primaryV4AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        } & {
            subnetIds?: (string[] & string[] & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["subnetIds"], keyof string[]>, never>) | undefined;
            primaryV4AddressSpec?: ({
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } & {
                oneToOneNatSpec?: ({
                    ipVersion?: IpVersion | undefined;
                } & {
                    ipVersion?: IpVersion | undefined;
                } & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV4AddressSpec"]["oneToOneNatSpec"], "ipVersion">, never>) | undefined;
                dnsRecordSpecs?: ({
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] & ({
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                } & {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                } & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV4AddressSpec"]["dnsRecordSpecs"][number], keyof DnsRecordSpec>, never>)[] & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV4AddressSpec"]["dnsRecordSpecs"], keyof {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV4AddressSpec"], keyof NodeAddressSpec>, never>) | undefined;
            primaryV6AddressSpec?: ({
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } & {
                oneToOneNatSpec?: ({
                    ipVersion?: IpVersion | undefined;
                } & {
                    ipVersion?: IpVersion | undefined;
                } & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV6AddressSpec"]["oneToOneNatSpec"], "ipVersion">, never>) | undefined;
                dnsRecordSpecs?: ({
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] & ({
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                } & {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                } & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV6AddressSpec"]["dnsRecordSpecs"][number], keyof DnsRecordSpec>, never>)[] & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV6AddressSpec"]["dnsRecordSpecs"], keyof {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["primaryV6AddressSpec"], keyof NodeAddressSpec>, never>) | undefined;
            securityGroupIds?: (string[] & string[] & Record<Exclude<keyof I["networkInterfaceSpecs"][number]["securityGroupIds"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["networkInterfaceSpecs"][number], keyof NetworkInterfaceSpec>, never>)[] & Record<Exclude<keyof I["networkInterfaceSpecs"], keyof {
            subnetIds?: string[] | undefined;
            primaryV4AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6AddressSpec?: {
                oneToOneNatSpec?: {
                    ipVersion?: IpVersion | undefined;
                } | undefined;
                dnsRecordSpecs?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        }[]>, never>) | undefined;
        placementPolicy?: ({
            placementGroupId?: string | undefined;
        } & {
            placementGroupId?: string | undefined;
        } & Record<Exclude<keyof I["placementPolicy"], "placementGroupId">, never>) | undefined;
        networkSettings?: ({
            type?: NodeTemplate_NetworkSettings_Type | undefined;
        } & {
            type?: NodeTemplate_NetworkSettings_Type | undefined;
        } & Record<Exclude<keyof I["networkSettings"], "type">, never>) | undefined;
        containerRuntimeSettings?: ({
            type?: NodeTemplate_ContainerRuntimeSettings_Type | undefined;
        } & {
            type?: NodeTemplate_ContainerRuntimeSettings_Type | undefined;
        } & Record<Exclude<keyof I["containerRuntimeSettings"], "type">, never>) | undefined;
        containerNetworkSettings?: ({
            podMtu?: number | undefined;
        } & {
            podMtu?: number | undefined;
        } & Record<Exclude<keyof I["containerNetworkSettings"], "podMtu">, never>) | undefined;
        gpuSettings?: ({
            gpuClusterId?: string | undefined;
            gpuEnvironment?: GpuSettings_GpuEnvironment | undefined;
        } & {
            gpuClusterId?: string | undefined;
            gpuEnvironment?: GpuSettings_GpuEnvironment | undefined;
        } & Record<Exclude<keyof I["gpuSettings"], keyof GpuSettings>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof NodeTemplate>, never>>(object: I): NodeTemplate;
};
export declare const NodeTemplate_LabelsEntry: {
    encode(message: NodeTemplate_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NodeTemplate_LabelsEntry;
    fromJSON(object: any): NodeTemplate_LabelsEntry;
    toJSON(message: NodeTemplate_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof NodeTemplate_LabelsEntry>, never>>(object: I): NodeTemplate_LabelsEntry;
};
export declare const NodeTemplate_MetadataEntry: {
    encode(message: NodeTemplate_MetadataEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NodeTemplate_MetadataEntry;
    fromJSON(object: any): NodeTemplate_MetadataEntry;
    toJSON(message: NodeTemplate_MetadataEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof NodeTemplate_MetadataEntry>, never>>(object: I): NodeTemplate_MetadataEntry;
};
export declare const NodeTemplate_NetworkSettings: {
    encode(message: NodeTemplate_NetworkSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NodeTemplate_NetworkSettings;
    fromJSON(object: any): NodeTemplate_NetworkSettings;
    toJSON(message: NodeTemplate_NetworkSettings): unknown;
    fromPartial<I extends {
        type?: NodeTemplate_NetworkSettings_Type | undefined;
    } & {
        type?: NodeTemplate_NetworkSettings_Type | undefined;
    } & Record<Exclude<keyof I, "type">, never>>(object: I): NodeTemplate_NetworkSettings;
};
export declare const NodeTemplate_ContainerRuntimeSettings: {
    encode(message: NodeTemplate_ContainerRuntimeSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NodeTemplate_ContainerRuntimeSettings;
    fromJSON(object: any): NodeTemplate_ContainerRuntimeSettings;
    toJSON(message: NodeTemplate_ContainerRuntimeSettings): unknown;
    fromPartial<I extends {
        type?: NodeTemplate_ContainerRuntimeSettings_Type | undefined;
    } & {
        type?: NodeTemplate_ContainerRuntimeSettings_Type | undefined;
    } & Record<Exclude<keyof I, "type">, never>>(object: I): NodeTemplate_ContainerRuntimeSettings;
};
export declare const NodeTemplate_ContainerNetworkSettings: {
    encode(message: NodeTemplate_ContainerNetworkSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NodeTemplate_ContainerNetworkSettings;
    fromJSON(object: any): NodeTemplate_ContainerNetworkSettings;
    toJSON(message: NodeTemplate_ContainerNetworkSettings): unknown;
    fromPartial<I extends {
        podMtu?: number | undefined;
    } & {
        podMtu?: number | undefined;
    } & Record<Exclude<keyof I, "podMtu">, never>>(object: I): NodeTemplate_ContainerNetworkSettings;
};
export declare const GpuSettings: {
    encode(message: GpuSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): GpuSettings;
    fromJSON(object: any): GpuSettings;
    toJSON(message: GpuSettings): unknown;
    fromPartial<I extends {
        gpuClusterId?: string | undefined;
        gpuEnvironment?: GpuSettings_GpuEnvironment | undefined;
    } & {
        gpuClusterId?: string | undefined;
        gpuEnvironment?: GpuSettings_GpuEnvironment | undefined;
    } & Record<Exclude<keyof I, keyof GpuSettings>, never>>(object: I): GpuSettings;
};
export declare const NetworkInterfaceSpec: {
    encode(message: NetworkInterfaceSpec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NetworkInterfaceSpec;
    fromJSON(object: any): NetworkInterfaceSpec;
    toJSON(message: NetworkInterfaceSpec): unknown;
    fromPartial<I extends {
        subnetIds?: string[] | undefined;
        primaryV4AddressSpec?: {
            oneToOneNatSpec?: {
                ipVersion?: IpVersion | undefined;
            } | undefined;
            dnsRecordSpecs?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } | undefined;
        primaryV6AddressSpec?: {
            oneToOneNatSpec?: {
                ipVersion?: IpVersion | undefined;
            } | undefined;
            dnsRecordSpecs?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } | undefined;
        securityGroupIds?: string[] | undefined;
    } & {
        subnetIds?: (string[] & string[] & Record<Exclude<keyof I["subnetIds"], keyof string[]>, never>) | undefined;
        primaryV4AddressSpec?: ({
            oneToOneNatSpec?: {
                ipVersion?: IpVersion | undefined;
            } | undefined;
            dnsRecordSpecs?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } & {
            oneToOneNatSpec?: ({
                ipVersion?: IpVersion | undefined;
            } & {
                ipVersion?: IpVersion | undefined;
            } & Record<Exclude<keyof I["primaryV4AddressSpec"]["oneToOneNatSpec"], "ipVersion">, never>) | undefined;
            dnsRecordSpecs?: ({
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] & ({
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            } & {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            } & Record<Exclude<keyof I["primaryV4AddressSpec"]["dnsRecordSpecs"][number], keyof DnsRecordSpec>, never>)[] & Record<Exclude<keyof I["primaryV4AddressSpec"]["dnsRecordSpecs"], keyof {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["primaryV4AddressSpec"], keyof NodeAddressSpec>, never>) | undefined;
        primaryV6AddressSpec?: ({
            oneToOneNatSpec?: {
                ipVersion?: IpVersion | undefined;
            } | undefined;
            dnsRecordSpecs?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } & {
            oneToOneNatSpec?: ({
                ipVersion?: IpVersion | undefined;
            } & {
                ipVersion?: IpVersion | undefined;
            } & Record<Exclude<keyof I["primaryV6AddressSpec"]["oneToOneNatSpec"], "ipVersion">, never>) | undefined;
            dnsRecordSpecs?: ({
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] & ({
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            } & {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            } & Record<Exclude<keyof I["primaryV6AddressSpec"]["dnsRecordSpecs"][number], keyof DnsRecordSpec>, never>)[] & Record<Exclude<keyof I["primaryV6AddressSpec"]["dnsRecordSpecs"], keyof {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["primaryV6AddressSpec"], keyof NodeAddressSpec>, never>) | undefined;
        securityGroupIds?: (string[] & string[] & Record<Exclude<keyof I["securityGroupIds"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof NetworkInterfaceSpec>, never>>(object: I): NetworkInterfaceSpec;
};
export declare const NodeAddressSpec: {
    encode(message: NodeAddressSpec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NodeAddressSpec;
    fromJSON(object: any): NodeAddressSpec;
    toJSON(message: NodeAddressSpec): unknown;
    fromPartial<I extends {
        oneToOneNatSpec?: {
            ipVersion?: IpVersion | undefined;
        } | undefined;
        dnsRecordSpecs?: {
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        }[] | undefined;
    } & {
        oneToOneNatSpec?: ({
            ipVersion?: IpVersion | undefined;
        } & {
            ipVersion?: IpVersion | undefined;
        } & Record<Exclude<keyof I["oneToOneNatSpec"], "ipVersion">, never>) | undefined;
        dnsRecordSpecs?: ({
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        }[] & ({
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        } & {
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        } & Record<Exclude<keyof I["dnsRecordSpecs"][number], keyof DnsRecordSpec>, never>)[] & Record<Exclude<keyof I["dnsRecordSpecs"], keyof {
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof NodeAddressSpec>, never>>(object: I): NodeAddressSpec;
};
export declare const DnsRecordSpec: {
    encode(message: DnsRecordSpec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DnsRecordSpec;
    fromJSON(object: any): DnsRecordSpec;
    toJSON(message: DnsRecordSpec): unknown;
    fromPartial<I extends {
        fqdn?: string | undefined;
        dnsZoneId?: string | undefined;
        ttl?: number | undefined;
        ptr?: boolean | undefined;
    } & {
        fqdn?: string | undefined;
        dnsZoneId?: string | undefined;
        ttl?: number | undefined;
        ptr?: boolean | undefined;
    } & Record<Exclude<keyof I, keyof DnsRecordSpec>, never>>(object: I): DnsRecordSpec;
};
export declare const OneToOneNatSpec: {
    encode(message: OneToOneNatSpec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): OneToOneNatSpec;
    fromJSON(object: any): OneToOneNatSpec;
    toJSON(message: OneToOneNatSpec): unknown;
    fromPartial<I extends {
        ipVersion?: IpVersion | undefined;
    } & {
        ipVersion?: IpVersion | undefined;
    } & Record<Exclude<keyof I, "ipVersion">, never>>(object: I): OneToOneNatSpec;
};
export declare const ResourcesSpec: {
    encode(message: ResourcesSpec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ResourcesSpec;
    fromJSON(object: any): ResourcesSpec;
    toJSON(message: ResourcesSpec): unknown;
    fromPartial<I extends {
        memory?: number | undefined;
        cores?: number | undefined;
        coreFraction?: number | undefined;
        gpus?: number | undefined;
    } & {
        memory?: number | undefined;
        cores?: number | undefined;
        coreFraction?: number | undefined;
        gpus?: number | undefined;
    } & Record<Exclude<keyof I, keyof ResourcesSpec>, never>>(object: I): ResourcesSpec;
};
export declare const DiskSpec: {
    encode(message: DiskSpec, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DiskSpec;
    fromJSON(object: any): DiskSpec;
    toJSON(message: DiskSpec): unknown;
    fromPartial<I extends {
        diskTypeId?: string | undefined;
        diskSize?: number | undefined;
    } & {
        diskTypeId?: string | undefined;
        diskSize?: number | undefined;
    } & Record<Exclude<keyof I, keyof DiskSpec>, never>>(object: I): DiskSpec;
};
export declare const SchedulingPolicy: {
    encode(message: SchedulingPolicy, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SchedulingPolicy;
    fromJSON(object: any): SchedulingPolicy;
    toJSON(message: SchedulingPolicy): unknown;
    fromPartial<I extends {
        preemptible?: boolean | undefined;
    } & {
        preemptible?: boolean | undefined;
    } & Record<Exclude<keyof I, "preemptible">, never>>(object: I): SchedulingPolicy;
};
export declare const PlacementPolicy: {
    encode(message: PlacementPolicy, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PlacementPolicy;
    fromJSON(object: any): PlacementPolicy;
    toJSON(message: PlacementPolicy): unknown;
    fromPartial<I extends {
        placementGroupId?: string | undefined;
    } & {
        placementGroupId?: string | undefined;
    } & Record<Exclude<keyof I, "placementGroupId">, never>>(object: I): PlacementPolicy;
};
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 {};
