import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a Network Interface.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 *
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-resources",
 *     location: "West Europe",
 * });
 * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
 *     name: "example-network",
 *     addressSpaces: ["10.0.0.0/16"],
 *     location: example.location,
 *     resourceGroupName: example.name,
 * });
 * const exampleSubnet = new azure.network.Subnet("example", {
 *     name: "internal",
 *     resourceGroupName: example.name,
 *     virtualNetworkName: exampleVirtualNetwork.name,
 *     addressPrefixes: ["10.0.2.0/24"],
 * });
 * const exampleNetworkInterface = new azure.network.NetworkInterface("example", {
 *     name: "example-nic",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     ipConfigurations: [{
 *         name: "internal",
 *         subnetId: exampleSubnet.id,
 *         privateIpAddressAllocation: "Dynamic",
 *     }],
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.Network` - 2025-01-01
 *
 * ## Import
 *
 * Network Interfaces can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:network/networkInterface:NetworkInterface example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Network/networkInterfaces/nic1
 * ```
 */
export declare class NetworkInterface extends pulumi.CustomResource {
    /**
     * Get an existing NetworkInterface resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: NetworkInterfaceState, opts?: pulumi.CustomResourceOptions): NetworkInterface;
    /**
     * Returns true if the given object is an instance of NetworkInterface.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is NetworkInterface;
    /**
     * Should Accelerated Networking be enabled? Defaults to `false`.
     *
     * > **Note:** Only certain Virtual Machine sizes are supported for Accelerated Networking - [more information can be found in this document](https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli).
     *
     * > **Note:** To use Accelerated Networking in an Availability Set, the Availability Set must be deployed onto an Accelerated Networking enabled cluster.
     */
    readonly acceleratedNetworkingEnabled: pulumi.Output<boolean | undefined>;
    /**
     * If the Virtual Machine using this Network Interface is part of an Availability Set, then this list will have the union of all DNS servers from all Network Interfaces that are part of the Availability Set.
     */
    readonly appliedDnsServers: pulumi.Output<string[]>;
    /**
     * Specifies the auxiliary mode used to enable network high-performance feature on Network Virtual Appliances (NVAs). This feature offers competitive performance in Connections Per Second (CPS) optimization, along with improvements to handling large amounts of simultaneous connections. Possible values are `AcceleratedConnections`, `Floating`, `MaxConnections` and `None`.
     *
     * > **Note:** `auxiliaryMode` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     */
    readonly auxiliaryMode: pulumi.Output<string | undefined>;
    /**
     * Specifies the SKU used for the network high-performance feature on Network Virtual Appliances (NVAs). Possible values are `A8`, `A4`, `A1`, `A2` and `None`.
     *
     * > **Note:** `auxiliarySku` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     */
    readonly auxiliarySku: pulumi.Output<string | undefined>;
    /**
     * A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
     *
     * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
     */
    readonly dnsServers: pulumi.Output<string[] | undefined>;
    /**
     * Specifies the Edge Zone within the Azure Region where this Network Interface should exist. Changing this forces a new Network Interface to be created.
     */
    readonly edgeZone: pulumi.Output<string | undefined>;
    /**
     * The (relative) DNS Name used for internal communications between Virtual Machines in the same Virtual Network.
     */
    readonly internalDnsNameLabel: pulumi.Output<string | undefined>;
    /**
     * Even if `internalDnsNameLabel` is not specified, a DNS entry is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the VM name with the value of `internalDomainNameSuffix`.
     */
    readonly internalDomainNameSuffix: pulumi.Output<string>;
    /**
     * One or more `ipConfiguration` blocks as defined below.
     */
    readonly ipConfigurations: pulumi.Output<outputs.network.NetworkInterfaceIpConfiguration[]>;
    /**
     * Should IP Forwarding be enabled? Defaults to `false`.
     */
    readonly ipForwardingEnabled: pulumi.Output<boolean | undefined>;
    /**
     * The location where the Network Interface should exist. Changing this forces a new resource to be created.
     */
    readonly location: pulumi.Output<string>;
    /**
     * The Media Access Control (MAC) Address of the Network Interface.
     */
    readonly macAddress: pulumi.Output<string>;
    /**
     * The name of the Network Interface. Changing this forces a new resource to be created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The first private IP address of the network interface.
     */
    readonly privateIpAddress: pulumi.Output<string>;
    /**
     * The private IP addresses of the network interface.
     */
    readonly privateIpAddresses: pulumi.Output<string[]>;
    /**
     * The name of the Resource Group in which to create the Network Interface. Changing this forces a new resource to be created.
     */
    readonly resourceGroupName: pulumi.Output<string>;
    /**
     * A mapping of tags to assign to the resource.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * The ID of the Virtual Machine which this Network Interface is connected to.
     */
    readonly virtualMachineId: pulumi.Output<string>;
    /**
     * Create a NetworkInterface resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: NetworkInterfaceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering NetworkInterface resources.
 */
export interface NetworkInterfaceState {
    /**
     * Should Accelerated Networking be enabled? Defaults to `false`.
     *
     * > **Note:** Only certain Virtual Machine sizes are supported for Accelerated Networking - [more information can be found in this document](https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli).
     *
     * > **Note:** To use Accelerated Networking in an Availability Set, the Availability Set must be deployed onto an Accelerated Networking enabled cluster.
     */
    acceleratedNetworkingEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * If the Virtual Machine using this Network Interface is part of an Availability Set, then this list will have the union of all DNS servers from all Network Interfaces that are part of the Availability Set.
     */
    appliedDnsServers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies the auxiliary mode used to enable network high-performance feature on Network Virtual Appliances (NVAs). This feature offers competitive performance in Connections Per Second (CPS) optimization, along with improvements to handling large amounts of simultaneous connections. Possible values are `AcceleratedConnections`, `Floating`, `MaxConnections` and `None`.
     *
     * > **Note:** `auxiliaryMode` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     */
    auxiliaryMode?: pulumi.Input<string | undefined>;
    /**
     * Specifies the SKU used for the network high-performance feature on Network Virtual Appliances (NVAs). Possible values are `A8`, `A4`, `A1`, `A2` and `None`.
     *
     * > **Note:** `auxiliarySku` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     */
    auxiliarySku?: pulumi.Input<string | undefined>;
    /**
     * A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
     *
     * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
     */
    dnsServers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies the Edge Zone within the Azure Region where this Network Interface should exist. Changing this forces a new Network Interface to be created.
     */
    edgeZone?: pulumi.Input<string | undefined>;
    /**
     * The (relative) DNS Name used for internal communications between Virtual Machines in the same Virtual Network.
     */
    internalDnsNameLabel?: pulumi.Input<string | undefined>;
    /**
     * Even if `internalDnsNameLabel` is not specified, a DNS entry is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the VM name with the value of `internalDomainNameSuffix`.
     */
    internalDomainNameSuffix?: pulumi.Input<string | undefined>;
    /**
     * One or more `ipConfiguration` blocks as defined below.
     */
    ipConfigurations?: pulumi.Input<pulumi.Input<inputs.network.NetworkInterfaceIpConfiguration>[] | undefined>;
    /**
     * Should IP Forwarding be enabled? Defaults to `false`.
     */
    ipForwardingEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The location where the Network Interface should exist. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * The Media Access Control (MAC) Address of the Network Interface.
     */
    macAddress?: pulumi.Input<string | undefined>;
    /**
     * The name of the Network Interface. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The first private IP address of the network interface.
     */
    privateIpAddress?: pulumi.Input<string | undefined>;
    /**
     * The private IP addresses of the network interface.
     */
    privateIpAddresses?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The name of the Resource Group in which to create the Network Interface. Changing this forces a new resource to be created.
     */
    resourceGroupName?: pulumi.Input<string | undefined>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The ID of the Virtual Machine which this Network Interface is connected to.
     */
    virtualMachineId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a NetworkInterface resource.
 */
export interface NetworkInterfaceArgs {
    /**
     * Should Accelerated Networking be enabled? Defaults to `false`.
     *
     * > **Note:** Only certain Virtual Machine sizes are supported for Accelerated Networking - [more information can be found in this document](https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli).
     *
     * > **Note:** To use Accelerated Networking in an Availability Set, the Availability Set must be deployed onto an Accelerated Networking enabled cluster.
     */
    acceleratedNetworkingEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the auxiliary mode used to enable network high-performance feature on Network Virtual Appliances (NVAs). This feature offers competitive performance in Connections Per Second (CPS) optimization, along with improvements to handling large amounts of simultaneous connections. Possible values are `AcceleratedConnections`, `Floating`, `MaxConnections` and `None`.
     *
     * > **Note:** `auxiliaryMode` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     */
    auxiliaryMode?: pulumi.Input<string | undefined>;
    /**
     * Specifies the SKU used for the network high-performance feature on Network Virtual Appliances (NVAs). Possible values are `A8`, `A4`, `A1`, `A2` and `None`.
     *
     * > **Note:** `auxiliarySku` is in **Preview** and requires that the preview is enabled - [more information can be found in the Azure documentation](https://learn.microsoft.com/azure/networking/nva-accelerated-connections#prerequisites).
     */
    auxiliarySku?: pulumi.Input<string | undefined>;
    /**
     * A list of IP Addresses defining the DNS Servers which should be used for this Network Interface.
     *
     * > **Note:** Configuring DNS Servers on the Network Interface will override the DNS Servers defined on the Virtual Network.
     */
    dnsServers?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies the Edge Zone within the Azure Region where this Network Interface should exist. Changing this forces a new Network Interface to be created.
     */
    edgeZone?: pulumi.Input<string | undefined>;
    /**
     * The (relative) DNS Name used for internal communications between Virtual Machines in the same Virtual Network.
     */
    internalDnsNameLabel?: pulumi.Input<string | undefined>;
    /**
     * One or more `ipConfiguration` blocks as defined below.
     */
    ipConfigurations: pulumi.Input<pulumi.Input<inputs.network.NetworkInterfaceIpConfiguration>[]>;
    /**
     * Should IP Forwarding be enabled? Defaults to `false`.
     */
    ipForwardingEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The location where the Network Interface should exist. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * The name of the Network Interface. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The name of the Resource Group in which to create the Network Interface. Changing this forces a new resource to be created.
     */
    resourceGroupName: pulumi.Input<string>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
}
//# sourceMappingURL=networkInterface.d.ts.map