import _m0 from 'protobufjs/minimal';
import { MaintenancePolicy } from '../../../../yandex/cloud/compute/v1/maintenance';
import { Duration } from '../../../../google/protobuf/duration';
import { HardwareGeneration } from '../../../../yandex/cloud/compute/v1/hardware_generation';
export declare const protobufPackage = "yandex.cloud.compute.v1";
export declare enum IpVersion {
    IP_VERSION_UNSPECIFIED = 0,
    /** IPV4 - IPv4 address, for example 192.0.2.235. */
    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 declare enum MetadataOption {
    METADATA_OPTION_UNSPECIFIED = 0,
    /** ENABLED - Option is enabled */
    ENABLED = 1,
    /** DISABLED - Option is disabled */
    DISABLED = 2,
    UNRECOGNIZED = -1
}
export declare function metadataOptionFromJSON(object: any): MetadataOption;
export declare function metadataOptionToJSON(object: MetadataOption): string;
/** An Instance resource. For more information, see [Instances](/docs/compute/concepts/vm). */
export interface Instance {
    /** ID of the instance. */
    id: string;
    /** ID of the folder that the instance belongs to. */
    folderId: string;
    createdAt?: Date;
    /** Name of the instance. 1-63 characters long. */
    name: string;
    /** Description of the instance. 0-256 characters long. */
    description: string;
    /** Resource labels as `key:value` pairs. Maximum of 64 per resource. */
    labels: {
        [key: string]: string;
    };
    /** ID of the availability zone where the instance resides. */
    zoneId: string;
    /** ID of the hardware platform configuration for the instance. */
    platformId: string;
    /** Computing resources of the instance such as the amount of memory and number of cores. */
    resources?: Resources;
    /** Status of the instance. */
    status: Instance_Status;
    /**
     * The metadata `key:value` pairs assigned to this instance. This includes custom metadata and predefined keys.
     *
     * For example, you may use the metadata in order to provide your public SSH key to the instance.
     * For more information, see [Metadata](/docs/compute/concepts/vm-metadata).
     */
    metadata: {
        [key: string]: string;
    };
    /** Options allow user to configure access to instance's metadata */
    metadataOptions?: MetadataOptions;
    /** Boot disk that is attached to the instance. */
    bootDisk?: AttachedDisk;
    /** Array of secondary disks that are attached to the instance. */
    secondaryDisks: AttachedDisk[];
    /** Array of local disks that are attached to the instance. */
    localDisks: AttachedLocalDisk[];
    /** Array of filesystems that are attached to the instance. */
    filesystems: AttachedFilesystem[];
    /** Array of network interfaces that are attached to the instance. */
    networkInterfaces: NetworkInterface[];
    /** Serial port settings */
    serialPortSettings?: SerialPortSettings;
    /** GPU settings */
    gpuSettings?: GpuSettings;
    /**
     * A domain name of the instance. FQDN is defined by the server
     * in the format `<hostname>.<region_id>.internal` when the instance is created.
     * If the hostname were not specified when the instance was created, FQDN would be `<id>.auto.internal`.
     */
    fqdn: string;
    /** Scheduling policy configuration. */
    schedulingPolicy?: SchedulingPolicy;
    /**
     * ID of the service account to use for [authentication inside the instance](/docs/compute/operations/vm-connect/auth-inside-vm).
     * To get the service account ID, use a [yandex.cloud.iam.v1.ServiceAccountService.List] request.
     */
    serviceAccountId: string;
    /** Network Settings */
    networkSettings?: NetworkSettings;
    /** Placement policy configuration. */
    placementPolicy?: PlacementPolicy;
    /** ID of the dedicated host group that the instance belongs to. */
    hostGroupId: string;
    /** ID of the dedicated host that the instance belongs to. */
    hostId: string;
    /** Behaviour on maintenance events */
    maintenancePolicy: MaintenancePolicy;
    /** Time between notification via metadata service and maintenance */
    maintenanceGracePeriod?: Duration;
    /** This feature set is inherited from the image/disk used as a boot one at the creation of the instance. */
    hardwareGeneration?: HardwareGeneration;
    /** ID of the reserved instance pool that the instance belongs to. */
    reservedInstancePoolId: string;
}
export declare enum Instance_Status {
    STATUS_UNSPECIFIED = 0,
    /** PROVISIONING - Instance is waiting for resources to be allocated. */
    PROVISIONING = 1,
    /** RUNNING - Instance is running normally. */
    RUNNING = 2,
    /** STOPPING - Instance is being stopped. */
    STOPPING = 3,
    /** STOPPED - Instance stopped. */
    STOPPED = 4,
    /** STARTING - Instance is being started. */
    STARTING = 5,
    /** RESTARTING - Instance is being restarted. */
    RESTARTING = 6,
    /** UPDATING - Instance is being updated. */
    UPDATING = 7,
    /** ERROR - Instance encountered a problem and cannot operate. */
    ERROR = 8,
    /** CRASHED - Instance crashed and will be restarted automatically. */
    CRASHED = 9,
    /** DELETING - Instance is being deleted. */
    DELETING = 10,
    UNRECOGNIZED = -1
}
export declare function instance_StatusFromJSON(object: any): Instance_Status;
export declare function instance_StatusToJSON(object: Instance_Status): string;
export interface Instance_LabelsEntry {
    key: string;
    value: string;
}
export interface Instance_MetadataEntry {
    key: string;
    value: string;
}
export interface Resources {
    /** The amount of memory available to the instance, specified in bytes. */
    memory: number;
    /** The number of cores available to the instance. */
    cores: number;
    /**
     * Baseline level of CPU performance with the ability to burst performance above that baseline level.
     * This field sets baseline performance for each core.
     */
    coreFraction: number;
    /** The number of GPUs available to the instance. */
    gpus: number;
}
export interface AttachedDisk {
    /** Access mode to the Disk resource. */
    mode: AttachedDisk_Mode;
    /**
     * Serial number that is reflected into the /dev/disk/by-id/ tree
     * of a Linux operating system running within the instance.
     *
     * This value can be used to reference the device for mounting, resizing, and so on, from within the instance.
     */
    deviceName: string;
    /** Specifies whether the disk will be auto-deleted when the instance is deleted. */
    autoDelete: boolean;
    /** ID of the disk that is attached to the instance. */
    diskId: string;
}
export declare enum AttachedDisk_Mode {
    MODE_UNSPECIFIED = 0,
    /** READ_ONLY - Read-only access. */
    READ_ONLY = 1,
    /** READ_WRITE - Read/Write access. */
    READ_WRITE = 2,
    UNRECOGNIZED = -1
}
export declare function attachedDisk_ModeFromJSON(object: any): AttachedDisk_Mode;
export declare function attachedDisk_ModeToJSON(object: AttachedDisk_Mode): string;
export interface AttachedLocalDisk {
    /** Size of the disk, specified in bytes. */
    size: number;
    /**
     * Serial number that is reflected into the /dev/disk/by-id/ tree
     * of a Linux operating system running within the instance.
     *
     * This value can be used to reference the device for mounting, resizing, and so on, from within the instance.
     */
    deviceName: string;
}
export interface AttachedFilesystem {
    /** Access mode to the filesystem. */
    mode: AttachedFilesystem_Mode;
    /**
     * Name of the device representing the filesystem on the instance.
     *
     * The name should be used for referencing the filesystem from within the instance
     * when it's being mounted, resized etc.
     */
    deviceName: string;
    /** ID of the filesystem that is attached to the instance. */
    filesystemId: string;
}
export declare enum AttachedFilesystem_Mode {
    MODE_UNSPECIFIED = 0,
    /** READ_ONLY - Read-only access. */
    READ_ONLY = 1,
    /** READ_WRITE - Read/Write access. */
    READ_WRITE = 2,
    UNRECOGNIZED = -1
}
export declare function attachedFilesystem_ModeFromJSON(object: any): AttachedFilesystem_Mode;
export declare function attachedFilesystem_ModeToJSON(object: AttachedFilesystem_Mode): string;
export interface NetworkInterface {
    /** The index of the network interface, will be generated by the server, 0,1,2... etc if not specified. */
    index: string;
    /** MAC address that is assigned to the network interface. */
    macAddress: string;
    /** ID of the subnet. */
    subnetId: string;
    /** Primary IPv4 address that is assigned to the instance for this network interface. */
    primaryV4Address?: PrimaryAddress;
    /** Primary IPv6 address that is assigned to the instance for this network interface. IPv6 not available yet. */
    primaryV6Address?: PrimaryAddress;
    /** ID's of security groups attached to the interface */
    securityGroupIds: string[];
}
export interface PrimaryAddress {
    /** An IPv4 internal network address that is assigned to the instance for this network interface. */
    address: string;
    /** One-to-one NAT configuration. If missing, NAT has not been set up. */
    oneToOneNat?: OneToOneNat;
    /** Internal DNS configuration */
    dnsRecords: DnsRecord[];
}
export interface OneToOneNat {
    /** An external IP address associated with this instance. */
    address: string;
    /** IP version for the external IP address. */
    ipVersion: IpVersion;
    /** External DNS configuration */
    dnsRecords: DnsRecord[];
}
export interface DnsRecord {
    /**
     * Name of the A/AAAA record as specified when creating the instance.
     * Note that if `fqdn' has no trailing '.', it is specified relative to the zone (@see dns_zone_id).
     */
    fqdn: string;
    /** DNS zone id for the record (optional, if not set, some private zone is used). */
    dnsZoneId: string;
    /** DNS record ttl (optional, if not set, a reasonable default is used.) */
    ttl: number;
    /** When true, indicates there is a corresponding auto-created PTR DNS record. */
    ptr: boolean;
}
export interface SchedulingPolicy {
    /** True for short-lived compute instances. For more information, see [Preemptible VMs](/docs/compute/concepts/preemptible-vm). */
    preemptible: boolean;
}
export interface NetworkSettings {
    /** Network Type */
    type: NetworkSettings_Type;
}
export declare enum NetworkSettings_Type {
    TYPE_UNSPECIFIED = 0,
    /** STANDARD - Standard network. */
    STANDARD = 1,
    /** SOFTWARE_ACCELERATED - Software accelerated network. */
    SOFTWARE_ACCELERATED = 2,
    /** HARDWARE_ACCELERATED - Hardware accelerated network (not available yet, reserved for future use). */
    HARDWARE_ACCELERATED = 3,
    UNRECOGNIZED = -1
}
export declare function networkSettings_TypeFromJSON(object: any): NetworkSettings_Type;
export declare function networkSettings_TypeToJSON(object: NetworkSettings_Type): string;
export interface GpuSettings {
    /** Attach instance to specified GPU cluster. */
    gpuClusterId: string;
}
export interface PlacementPolicy {
    /** Placement group ID. */
    placementGroupId: string;
    /** List of affinity rules. Scheduler will attempt to allocate instances according to order of rules. */
    hostAffinityRules: PlacementPolicy_HostAffinityRule[];
    /** Placement group partition */
    placementGroupPartition: number;
}
/** Affinity definition */
export interface PlacementPolicy_HostAffinityRule {
    /** Affinity label or one of reserved values - 'yc.hostId', 'yc.hostGroupId' */
    key: string;
    /** Include or exclude action */
    op: PlacementPolicy_HostAffinityRule_Operator;
    /** Affinity value or host ID or host group ID */
    values: string[];
}
export declare enum PlacementPolicy_HostAffinityRule_Operator {
    OPERATOR_UNSPECIFIED = 0,
    IN = 1,
    NOT_IN = 2,
    UNRECOGNIZED = -1
}
export declare function placementPolicy_HostAffinityRule_OperatorFromJSON(object: any): PlacementPolicy_HostAffinityRule_Operator;
export declare function placementPolicy_HostAffinityRule_OperatorToJSON(object: PlacementPolicy_HostAffinityRule_Operator): string;
export interface MetadataOptions {
    /** Enabled access to GCE flavored metadata */
    gceHttpEndpoint: MetadataOption;
    /** Enabled access to AWS flavored metadata (IMDSv1) */
    awsV1HttpEndpoint: MetadataOption;
    /** Enabled access to IAM credentials with GCE flavored metadata */
    gceHttpToken: MetadataOption;
    /** Enabled access to IAM credentials with AWS flavored metadata (IMDSv1) */
    awsV1HttpToken: MetadataOption;
}
export interface SerialPortSettings {
    /** Authentication and authorization in serial console when using SSH protocol */
    sshAuthorization: SerialPortSettings_SSHAuthorization;
}
export declare enum SerialPortSettings_SSHAuthorization {
    SSH_AUTHORIZATION_UNSPECIFIED = 0,
    /** INSTANCE_METADATA - Authentication and authorization using SSH keys in instance metadata */
    INSTANCE_METADATA = 1,
    /** OS_LOGIN - Authentication and authorization using Oslogin service */
    OS_LOGIN = 2,
    UNRECOGNIZED = -1
}
export declare function serialPortSettings_SSHAuthorizationFromJSON(object: any): SerialPortSettings_SSHAuthorization;
export declare function serialPortSettings_SSHAuthorizationToJSON(object: SerialPortSettings_SSHAuthorization): string;
export declare const Instance: {
    encode(message: Instance, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Instance;
    fromJSON(object: any): Instance;
    toJSON(message: Instance): 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;
        zoneId?: string | undefined;
        platformId?: string | undefined;
        resources?: {
            memory?: number | undefined;
            cores?: number | undefined;
            coreFraction?: number | undefined;
            gpus?: number | undefined;
        } | undefined;
        status?: Instance_Status | undefined;
        metadata?: {
            [x: string]: string | undefined;
        } | undefined;
        metadataOptions?: {
            gceHttpEndpoint?: MetadataOption | undefined;
            awsV1HttpEndpoint?: MetadataOption | undefined;
            gceHttpToken?: MetadataOption | undefined;
            awsV1HttpToken?: MetadataOption | undefined;
        } | undefined;
        bootDisk?: {
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        } | undefined;
        secondaryDisks?: {
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        }[] | undefined;
        localDisks?: {
            size?: number | undefined;
            deviceName?: string | undefined;
        }[] | undefined;
        filesystems?: {
            mode?: AttachedFilesystem_Mode | undefined;
            deviceName?: string | undefined;
            filesystemId?: string | undefined;
        }[] | undefined;
        networkInterfaces?: {
            index?: string | undefined;
            macAddress?: string | undefined;
            subnetId?: string | undefined;
            primaryV4Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        }[] | undefined;
        serialPortSettings?: {
            sshAuthorization?: SerialPortSettings_SSHAuthorization | undefined;
        } | undefined;
        gpuSettings?: {
            gpuClusterId?: string | undefined;
        } | undefined;
        fqdn?: string | undefined;
        schedulingPolicy?: {
            preemptible?: boolean | undefined;
        } | undefined;
        serviceAccountId?: string | undefined;
        networkSettings?: {
            type?: NetworkSettings_Type | undefined;
        } | undefined;
        placementPolicy?: {
            placementGroupId?: string | undefined;
            hostAffinityRules?: {
                key?: string | undefined;
                op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
                values?: string[] | undefined;
            }[] | undefined;
            placementGroupPartition?: number | undefined;
        } | undefined;
        hostGroupId?: string | undefined;
        hostId?: string | undefined;
        maintenancePolicy?: MaintenancePolicy | undefined;
        maintenanceGracePeriod?: {
            seconds?: number | undefined;
            nanos?: number | undefined;
        } | undefined;
        hardwareGeneration?: {
            legacyFeatures?: {
                pciTopology?: import("../../../../yandex/cloud/compute/v1/hardware_generation").PCITopology | undefined;
            } | undefined;
            generation2Features?: {} | undefined;
        } | undefined;
        reservedInstancePoolId?: string | 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;
        zoneId?: string | undefined;
        platformId?: string | 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 Resources>, never>) | undefined;
        status?: Instance_Status | undefined;
        metadata?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & Record<Exclude<keyof I["metadata"], string | number>, never>) | undefined;
        metadataOptions?: ({
            gceHttpEndpoint?: MetadataOption | undefined;
            awsV1HttpEndpoint?: MetadataOption | undefined;
            gceHttpToken?: MetadataOption | undefined;
            awsV1HttpToken?: MetadataOption | undefined;
        } & {
            gceHttpEndpoint?: MetadataOption | undefined;
            awsV1HttpEndpoint?: MetadataOption | undefined;
            gceHttpToken?: MetadataOption | undefined;
            awsV1HttpToken?: MetadataOption | undefined;
        } & Record<Exclude<keyof I["metadataOptions"], keyof MetadataOptions>, never>) | undefined;
        bootDisk?: ({
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        } & {
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        } & Record<Exclude<keyof I["bootDisk"], keyof AttachedDisk>, never>) | undefined;
        secondaryDisks?: ({
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        }[] & ({
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        } & {
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        } & Record<Exclude<keyof I["secondaryDisks"][number], keyof AttachedDisk>, never>)[] & Record<Exclude<keyof I["secondaryDisks"], keyof {
            mode?: AttachedDisk_Mode | undefined;
            deviceName?: string | undefined;
            autoDelete?: boolean | undefined;
            diskId?: string | undefined;
        }[]>, never>) | undefined;
        localDisks?: ({
            size?: number | undefined;
            deviceName?: string | undefined;
        }[] & ({
            size?: number | undefined;
            deviceName?: string | undefined;
        } & {
            size?: number | undefined;
            deviceName?: string | undefined;
        } & Record<Exclude<keyof I["localDisks"][number], keyof AttachedLocalDisk>, never>)[] & Record<Exclude<keyof I["localDisks"], keyof {
            size?: number | undefined;
            deviceName?: string | undefined;
        }[]>, never>) | undefined;
        filesystems?: ({
            mode?: AttachedFilesystem_Mode | undefined;
            deviceName?: string | undefined;
            filesystemId?: string | undefined;
        }[] & ({
            mode?: AttachedFilesystem_Mode | undefined;
            deviceName?: string | undefined;
            filesystemId?: string | undefined;
        } & {
            mode?: AttachedFilesystem_Mode | undefined;
            deviceName?: string | undefined;
            filesystemId?: string | undefined;
        } & Record<Exclude<keyof I["filesystems"][number], keyof AttachedFilesystem>, never>)[] & Record<Exclude<keyof I["filesystems"], keyof {
            mode?: AttachedFilesystem_Mode | undefined;
            deviceName?: string | undefined;
            filesystemId?: string | undefined;
        }[]>, never>) | undefined;
        networkInterfaces?: ({
            index?: string | undefined;
            macAddress?: string | undefined;
            subnetId?: string | undefined;
            primaryV4Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        }[] & ({
            index?: string | undefined;
            macAddress?: string | undefined;
            subnetId?: string | undefined;
            primaryV4Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        } & {
            index?: string | undefined;
            macAddress?: string | undefined;
            subnetId?: string | undefined;
            primaryV4Address?: ({
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } & {
                address?: string | undefined;
                oneToOneNat?: ({
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } & {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: ({
                        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["networkInterfaces"][number]["primaryV4Address"]["oneToOneNat"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV4Address"]["oneToOneNat"]["dnsRecords"], keyof {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[]>, never>) | undefined;
                } & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV4Address"]["oneToOneNat"], keyof OneToOneNat>, never>) | undefined;
                dnsRecords?: ({
                    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["networkInterfaces"][number]["primaryV4Address"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV4Address"]["dnsRecords"], keyof {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV4Address"], keyof PrimaryAddress>, never>) | undefined;
            primaryV6Address?: ({
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } & {
                address?: string | undefined;
                oneToOneNat?: ({
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } & {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: ({
                        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["networkInterfaces"][number]["primaryV6Address"]["oneToOneNat"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV6Address"]["oneToOneNat"]["dnsRecords"], keyof {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[]>, never>) | undefined;
                } & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV6Address"]["oneToOneNat"], keyof OneToOneNat>, never>) | undefined;
                dnsRecords?: ({
                    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["networkInterfaces"][number]["primaryV6Address"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV6Address"]["dnsRecords"], keyof {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["networkInterfaces"][number]["primaryV6Address"], keyof PrimaryAddress>, never>) | undefined;
            securityGroupIds?: (string[] & string[] & Record<Exclude<keyof I["networkInterfaces"][number]["securityGroupIds"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["networkInterfaces"][number], keyof NetworkInterface>, never>)[] & Record<Exclude<keyof I["networkInterfaces"], keyof {
            index?: string | undefined;
            macAddress?: string | undefined;
            subnetId?: string | undefined;
            primaryV4Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            primaryV6Address?: {
                address?: string | undefined;
                oneToOneNat?: {
                    address?: string | undefined;
                    ipVersion?: IpVersion | undefined;
                    dnsRecords?: {
                        fqdn?: string | undefined;
                        dnsZoneId?: string | undefined;
                        ttl?: number | undefined;
                        ptr?: boolean | undefined;
                    }[] | undefined;
                } | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            securityGroupIds?: string[] | undefined;
        }[]>, never>) | undefined;
        serialPortSettings?: ({
            sshAuthorization?: SerialPortSettings_SSHAuthorization | undefined;
        } & {
            sshAuthorization?: SerialPortSettings_SSHAuthorization | undefined;
        } & Record<Exclude<keyof I["serialPortSettings"], "sshAuthorization">, never>) | undefined;
        gpuSettings?: ({
            gpuClusterId?: string | undefined;
        } & {
            gpuClusterId?: string | undefined;
        } & Record<Exclude<keyof I["gpuSettings"], "gpuClusterId">, never>) | undefined;
        fqdn?: string | undefined;
        schedulingPolicy?: ({
            preemptible?: boolean | undefined;
        } & {
            preemptible?: boolean | undefined;
        } & Record<Exclude<keyof I["schedulingPolicy"], "preemptible">, never>) | undefined;
        serviceAccountId?: string | undefined;
        networkSettings?: ({
            type?: NetworkSettings_Type | undefined;
        } & {
            type?: NetworkSettings_Type | undefined;
        } & Record<Exclude<keyof I["networkSettings"], "type">, never>) | undefined;
        placementPolicy?: ({
            placementGroupId?: string | undefined;
            hostAffinityRules?: {
                key?: string | undefined;
                op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
                values?: string[] | undefined;
            }[] | undefined;
            placementGroupPartition?: number | undefined;
        } & {
            placementGroupId?: string | undefined;
            hostAffinityRules?: ({
                key?: string | undefined;
                op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
                values?: string[] | undefined;
            }[] & ({
                key?: string | undefined;
                op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
                values?: string[] | undefined;
            } & {
                key?: string | undefined;
                op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
                values?: (string[] & string[] & Record<Exclude<keyof I["placementPolicy"]["hostAffinityRules"][number]["values"], keyof string[]>, never>) | undefined;
            } & Record<Exclude<keyof I["placementPolicy"]["hostAffinityRules"][number], keyof PlacementPolicy_HostAffinityRule>, never>)[] & Record<Exclude<keyof I["placementPolicy"]["hostAffinityRules"], keyof {
                key?: string | undefined;
                op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
                values?: string[] | undefined;
            }[]>, never>) | undefined;
            placementGroupPartition?: number | undefined;
        } & Record<Exclude<keyof I["placementPolicy"], keyof PlacementPolicy>, never>) | undefined;
        hostGroupId?: string | undefined;
        hostId?: string | undefined;
        maintenancePolicy?: MaintenancePolicy | undefined;
        maintenanceGracePeriod?: ({
            seconds?: number | undefined;
            nanos?: number | undefined;
        } & {
            seconds?: number | undefined;
            nanos?: number | undefined;
        } & Record<Exclude<keyof I["maintenanceGracePeriod"], keyof Duration>, never>) | undefined;
        hardwareGeneration?: ({
            legacyFeatures?: {
                pciTopology?: import("../../../../yandex/cloud/compute/v1/hardware_generation").PCITopology | undefined;
            } | undefined;
            generation2Features?: {} | undefined;
        } & {
            legacyFeatures?: ({
                pciTopology?: import("../../../../yandex/cloud/compute/v1/hardware_generation").PCITopology | undefined;
            } & {
                pciTopology?: import("../../../../yandex/cloud/compute/v1/hardware_generation").PCITopology | undefined;
            } & Record<Exclude<keyof I["hardwareGeneration"]["legacyFeatures"], "pciTopology">, never>) | undefined;
            generation2Features?: ({} & {} & Record<Exclude<keyof I["hardwareGeneration"]["generation2Features"], never>, never>) | undefined;
        } & Record<Exclude<keyof I["hardwareGeneration"], keyof HardwareGeneration>, never>) | undefined;
        reservedInstancePoolId?: string | undefined;
    } & Record<Exclude<keyof I, keyof Instance>, never>>(object: I): Instance;
};
export declare const Instance_LabelsEntry: {
    encode(message: Instance_LabelsEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Instance_LabelsEntry;
    fromJSON(object: any): Instance_LabelsEntry;
    toJSON(message: Instance_LabelsEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof Instance_LabelsEntry>, never>>(object: I): Instance_LabelsEntry;
};
export declare const Instance_MetadataEntry: {
    encode(message: Instance_MetadataEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Instance_MetadataEntry;
    fromJSON(object: any): Instance_MetadataEntry;
    toJSON(message: Instance_MetadataEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & Record<Exclude<keyof I, keyof Instance_MetadataEntry>, never>>(object: I): Instance_MetadataEntry;
};
export declare const Resources: {
    encode(message: Resources, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Resources;
    fromJSON(object: any): Resources;
    toJSON(message: Resources): 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 Resources>, never>>(object: I): Resources;
};
export declare const AttachedDisk: {
    encode(message: AttachedDisk, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AttachedDisk;
    fromJSON(object: any): AttachedDisk;
    toJSON(message: AttachedDisk): unknown;
    fromPartial<I extends {
        mode?: AttachedDisk_Mode | undefined;
        deviceName?: string | undefined;
        autoDelete?: boolean | undefined;
        diskId?: string | undefined;
    } & {
        mode?: AttachedDisk_Mode | undefined;
        deviceName?: string | undefined;
        autoDelete?: boolean | undefined;
        diskId?: string | undefined;
    } & Record<Exclude<keyof I, keyof AttachedDisk>, never>>(object: I): AttachedDisk;
};
export declare const AttachedLocalDisk: {
    encode(message: AttachedLocalDisk, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AttachedLocalDisk;
    fromJSON(object: any): AttachedLocalDisk;
    toJSON(message: AttachedLocalDisk): unknown;
    fromPartial<I extends {
        size?: number | undefined;
        deviceName?: string | undefined;
    } & {
        size?: number | undefined;
        deviceName?: string | undefined;
    } & Record<Exclude<keyof I, keyof AttachedLocalDisk>, never>>(object: I): AttachedLocalDisk;
};
export declare const AttachedFilesystem: {
    encode(message: AttachedFilesystem, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): AttachedFilesystem;
    fromJSON(object: any): AttachedFilesystem;
    toJSON(message: AttachedFilesystem): unknown;
    fromPartial<I extends {
        mode?: AttachedFilesystem_Mode | undefined;
        deviceName?: string | undefined;
        filesystemId?: string | undefined;
    } & {
        mode?: AttachedFilesystem_Mode | undefined;
        deviceName?: string | undefined;
        filesystemId?: string | undefined;
    } & Record<Exclude<keyof I, keyof AttachedFilesystem>, never>>(object: I): AttachedFilesystem;
};
export declare const NetworkInterface: {
    encode(message: NetworkInterface, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NetworkInterface;
    fromJSON(object: any): NetworkInterface;
    toJSON(message: NetworkInterface): unknown;
    fromPartial<I extends {
        index?: string | undefined;
        macAddress?: string | undefined;
        subnetId?: string | undefined;
        primaryV4Address?: {
            address?: string | undefined;
            oneToOneNat?: {
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            dnsRecords?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } | undefined;
        primaryV6Address?: {
            address?: string | undefined;
            oneToOneNat?: {
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            dnsRecords?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } | undefined;
        securityGroupIds?: string[] | undefined;
    } & {
        index?: string | undefined;
        macAddress?: string | undefined;
        subnetId?: string | undefined;
        primaryV4Address?: ({
            address?: string | undefined;
            oneToOneNat?: {
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            dnsRecords?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } & {
            address?: string | undefined;
            oneToOneNat?: ({
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } & {
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: ({
                    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["primaryV4Address"]["oneToOneNat"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["primaryV4Address"]["oneToOneNat"]["dnsRecords"], keyof {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["primaryV4Address"]["oneToOneNat"], keyof OneToOneNat>, never>) | undefined;
            dnsRecords?: ({
                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["primaryV4Address"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["primaryV4Address"]["dnsRecords"], keyof {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["primaryV4Address"], keyof PrimaryAddress>, never>) | undefined;
        primaryV6Address?: ({
            address?: string | undefined;
            oneToOneNat?: {
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } | undefined;
            dnsRecords?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } & {
            address?: string | undefined;
            oneToOneNat?: ({
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[] | undefined;
            } & {
                address?: string | undefined;
                ipVersion?: IpVersion | undefined;
                dnsRecords?: ({
                    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["primaryV6Address"]["oneToOneNat"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["primaryV6Address"]["oneToOneNat"]["dnsRecords"], keyof {
                    fqdn?: string | undefined;
                    dnsZoneId?: string | undefined;
                    ttl?: number | undefined;
                    ptr?: boolean | undefined;
                }[]>, never>) | undefined;
            } & Record<Exclude<keyof I["primaryV6Address"]["oneToOneNat"], keyof OneToOneNat>, never>) | undefined;
            dnsRecords?: ({
                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["primaryV6Address"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["primaryV6Address"]["dnsRecords"], keyof {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["primaryV6Address"], keyof PrimaryAddress>, never>) | undefined;
        securityGroupIds?: (string[] & string[] & Record<Exclude<keyof I["securityGroupIds"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof NetworkInterface>, never>>(object: I): NetworkInterface;
};
export declare const PrimaryAddress: {
    encode(message: PrimaryAddress, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PrimaryAddress;
    fromJSON(object: any): PrimaryAddress;
    toJSON(message: PrimaryAddress): unknown;
    fromPartial<I extends {
        address?: string | undefined;
        oneToOneNat?: {
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            dnsRecords?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } | undefined;
        dnsRecords?: {
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        }[] | undefined;
    } & {
        address?: string | undefined;
        oneToOneNat?: ({
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            dnsRecords?: {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[] | undefined;
        } & {
            address?: string | undefined;
            ipVersion?: IpVersion | undefined;
            dnsRecords?: ({
                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["oneToOneNat"]["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["oneToOneNat"]["dnsRecords"], keyof {
                fqdn?: string | undefined;
                dnsZoneId?: string | undefined;
                ttl?: number | undefined;
                ptr?: boolean | undefined;
            }[]>, never>) | undefined;
        } & Record<Exclude<keyof I["oneToOneNat"], keyof OneToOneNat>, never>) | undefined;
        dnsRecords?: ({
            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["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["dnsRecords"], keyof {
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof PrimaryAddress>, never>>(object: I): PrimaryAddress;
};
export declare const OneToOneNat: {
    encode(message: OneToOneNat, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): OneToOneNat;
    fromJSON(object: any): OneToOneNat;
    toJSON(message: OneToOneNat): unknown;
    fromPartial<I extends {
        address?: string | undefined;
        ipVersion?: IpVersion | undefined;
        dnsRecords?: {
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        }[] | undefined;
    } & {
        address?: string | undefined;
        ipVersion?: IpVersion | undefined;
        dnsRecords?: ({
            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["dnsRecords"][number], keyof DnsRecord>, never>)[] & Record<Exclude<keyof I["dnsRecords"], keyof {
            fqdn?: string | undefined;
            dnsZoneId?: string | undefined;
            ttl?: number | undefined;
            ptr?: boolean | undefined;
        }[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof OneToOneNat>, never>>(object: I): OneToOneNat;
};
export declare const DnsRecord: {
    encode(message: DnsRecord, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DnsRecord;
    fromJSON(object: any): DnsRecord;
    toJSON(message: DnsRecord): 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 DnsRecord>, never>>(object: I): DnsRecord;
};
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 NetworkSettings: {
    encode(message: NetworkSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): NetworkSettings;
    fromJSON(object: any): NetworkSettings;
    toJSON(message: NetworkSettings): unknown;
    fromPartial<I extends {
        type?: NetworkSettings_Type | undefined;
    } & {
        type?: NetworkSettings_Type | undefined;
    } & Record<Exclude<keyof I, "type">, never>>(object: I): NetworkSettings;
};
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;
    } & {
        gpuClusterId?: string | undefined;
    } & Record<Exclude<keyof I, "gpuClusterId">, never>>(object: I): GpuSettings;
};
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;
        hostAffinityRules?: {
            key?: string | undefined;
            op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
            values?: string[] | undefined;
        }[] | undefined;
        placementGroupPartition?: number | undefined;
    } & {
        placementGroupId?: string | undefined;
        hostAffinityRules?: ({
            key?: string | undefined;
            op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
            values?: string[] | undefined;
        }[] & ({
            key?: string | undefined;
            op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
            values?: string[] | undefined;
        } & {
            key?: string | undefined;
            op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
            values?: (string[] & string[] & Record<Exclude<keyof I["hostAffinityRules"][number]["values"], keyof string[]>, never>) | undefined;
        } & Record<Exclude<keyof I["hostAffinityRules"][number], keyof PlacementPolicy_HostAffinityRule>, never>)[] & Record<Exclude<keyof I["hostAffinityRules"], keyof {
            key?: string | undefined;
            op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
            values?: string[] | undefined;
        }[]>, never>) | undefined;
        placementGroupPartition?: number | undefined;
    } & Record<Exclude<keyof I, keyof PlacementPolicy>, never>>(object: I): PlacementPolicy;
};
export declare const PlacementPolicy_HostAffinityRule: {
    encode(message: PlacementPolicy_HostAffinityRule, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): PlacementPolicy_HostAffinityRule;
    fromJSON(object: any): PlacementPolicy_HostAffinityRule;
    toJSON(message: PlacementPolicy_HostAffinityRule): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
        values?: string[] | undefined;
    } & {
        key?: string | undefined;
        op?: PlacementPolicy_HostAffinityRule_Operator | undefined;
        values?: (string[] & string[] & Record<Exclude<keyof I["values"], keyof string[]>, never>) | undefined;
    } & Record<Exclude<keyof I, keyof PlacementPolicy_HostAffinityRule>, never>>(object: I): PlacementPolicy_HostAffinityRule;
};
export declare const MetadataOptions: {
    encode(message: MetadataOptions, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MetadataOptions;
    fromJSON(object: any): MetadataOptions;
    toJSON(message: MetadataOptions): unknown;
    fromPartial<I extends {
        gceHttpEndpoint?: MetadataOption | undefined;
        awsV1HttpEndpoint?: MetadataOption | undefined;
        gceHttpToken?: MetadataOption | undefined;
        awsV1HttpToken?: MetadataOption | undefined;
    } & {
        gceHttpEndpoint?: MetadataOption | undefined;
        awsV1HttpEndpoint?: MetadataOption | undefined;
        gceHttpToken?: MetadataOption | undefined;
        awsV1HttpToken?: MetadataOption | undefined;
    } & Record<Exclude<keyof I, keyof MetadataOptions>, never>>(object: I): MetadataOptions;
};
export declare const SerialPortSettings: {
    encode(message: SerialPortSettings, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): SerialPortSettings;
    fromJSON(object: any): SerialPortSettings;
    toJSON(message: SerialPortSettings): unknown;
    fromPartial<I extends {
        sshAuthorization?: SerialPortSettings_SSHAuthorization | undefined;
    } & {
        sshAuthorization?: SerialPortSettings_SSHAuthorization | undefined;
    } & Record<Exclude<keyof I, "sshAuthorization">, never>>(object: I): SerialPortSettings;
};
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 {};
