import * as pulumi from "@pulumi/pulumi";
/**
 * Use this resource to associate VLAN with a Dedicated Port from [Equinix Fabric - software-defined interconnections](https://deploy.equinix.com/developers/docs/metal/interconnections/introduction/#associating-a-vlan-with-a-dedicated-port).
 *
 * See the [Virtual Routing and Forwarding documentation](https://deploy.equinix.com/developers/docs/metal/layer2-networking/vrf/) for product details and API reference material.
 *
 * ## Example Usage
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const projectId = "52000fb2-ee46-4673-93a8-de2c2bdba33c";
 * const connId = "73f12f29-3e19-43a0-8e90-ae81580db1e0";
 * const test = equinix.metal.getInterconnectionOutput({
 *     connectionId: connId,
 * });
 * const testVlan = new equinix.metal.Vlan("testVlan", {
 *     projectId: projectId,
 *     metro: test.apply(test => test.metro),
 * });
 * const testVirtualCircuit = new equinix.metal.VirtualCircuit("testVirtualCircuit", {
 *     connectionId: connId,
 *     projectId: projectId,
 *     portId: test.apply(test => test.ports?.[0]?.id),
 *     vlanId: testVlan.id,
 *     nniVlan: 1056,
 * });
 * ```
 *
 * ## Import
 *
 * ```sh
 * $ pulumi import equinix:metal/virtualCircuit:VirtualCircuit equinix_metal_virtual_circuit {existing_id}
 * ```
 */
export declare class VirtualCircuit extends pulumi.CustomResource {
    /**
     * Get an existing VirtualCircuit 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?: VirtualCircuitState, opts?: pulumi.CustomResourceOptions): VirtualCircuit;
    /**
     * Returns true if the given object is an instance of VirtualCircuit.  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 VirtualCircuit;
    /**
     * UUID of Connection where the VC is scoped to.  Only used for dedicated connections
     */
    readonly connectionId: pulumi.Output<string>;
    /**
     * The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.
     */
    readonly customerIp: pulumi.Output<string>;
    /**
     * The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.
     */
    readonly customerIpv6: pulumi.Output<string>;
    /**
     * Description of the Virtual Circuit resource
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * The password that can be set for the VRF BGP peer
     */
    readonly md5: pulumi.Output<string | undefined>;
    /**
     * The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.
     */
    readonly metalIp: pulumi.Output<string>;
    /**
     * The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.
     */
    readonly metalIpv6: pulumi.Output<string>;
    /**
     * Name of the Virtual Circuit resource
     */
    readonly name: pulumi.Output<string>;
    /**
     * Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)
     */
    readonly nniVlan: pulumi.Output<number>;
    /**
     * Nni VLAN ID parameter, see https://deploy.equinix.com/developers/docs/metal/interconnections/introduction/
     */
    readonly nniVnid: pulumi.Output<number>;
    /**
     * The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the localAsn of the VRF.
     */
    readonly peerAsn: pulumi.Output<number | undefined>;
    /**
     * UUID of the Connection Port where the VC is scoped to
     */
    readonly portId: pulumi.Output<string>;
    /**
     * UUID of the Project where the VC is scoped to
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.
     */
    readonly speed: pulumi.Output<string>;
    /**
     * Status of the virtual circuit resource
     */
    readonly status: pulumi.Output<string>;
    /**
     * A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.
     * 			 * For a /31 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.
     * 			 * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.
     */
    readonly subnet: pulumi.Output<string | undefined>;
    /**
     * A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.
     * 			 * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.
     * 			 * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.
     */
    readonly subnetIpv6: pulumi.Output<string | undefined>;
    /**
     * Tags attached to the virtual circuit
     */
    readonly tags: pulumi.Output<string[] | undefined>;
    /**
     * UUID of an existing VC to configure. Used in the case of shared interconnections where the VC has already been created.
     */
    readonly virtualCircuitId: pulumi.Output<string | undefined>;
    /**
     * UUID of the VLAN to associate
     */
    readonly vlanId: pulumi.Output<string | undefined>;
    /**
     * VNID VLAN parameter, see https://deploy.equinix.com/developers/docs/metal/interconnections/introduction/
     */
    readonly vnid: pulumi.Output<number>;
    /**
     * UUID of the VRF to associate
     */
    readonly vrfId: pulumi.Output<string | undefined>;
    /**
     * Create a VirtualCircuit 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: VirtualCircuitArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering VirtualCircuit resources.
 */
export interface VirtualCircuitState {
    /**
     * UUID of Connection where the VC is scoped to.  Only used for dedicated connections
     */
    connectionId?: pulumi.Input<string>;
    /**
     * The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.
     */
    customerIp?: pulumi.Input<string>;
    /**
     * The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.
     */
    customerIpv6?: pulumi.Input<string>;
    /**
     * Description of the Virtual Circuit resource
     */
    description?: pulumi.Input<string>;
    /**
     * The password that can be set for the VRF BGP peer
     */
    md5?: pulumi.Input<string>;
    /**
     * The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.
     */
    metalIp?: pulumi.Input<string>;
    /**
     * The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.
     */
    metalIpv6?: pulumi.Input<string>;
    /**
     * Name of the Virtual Circuit resource
     */
    name?: pulumi.Input<string>;
    /**
     * Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)
     */
    nniVlan?: pulumi.Input<number>;
    /**
     * Nni VLAN ID parameter, see https://deploy.equinix.com/developers/docs/metal/interconnections/introduction/
     */
    nniVnid?: pulumi.Input<number>;
    /**
     * The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the localAsn of the VRF.
     */
    peerAsn?: pulumi.Input<number>;
    /**
     * UUID of the Connection Port where the VC is scoped to
     */
    portId?: pulumi.Input<string>;
    /**
     * UUID of the Project where the VC is scoped to
     */
    projectId?: pulumi.Input<string>;
    /**
     * Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.
     */
    speed?: pulumi.Input<string>;
    /**
     * Status of the virtual circuit resource
     */
    status?: pulumi.Input<string>;
    /**
     * A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.
     * 			 * For a /31 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.
     * 			 * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.
     */
    subnet?: pulumi.Input<string>;
    /**
     * A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.
     * 			 * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.
     * 			 * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.
     */
    subnetIpv6?: pulumi.Input<string>;
    /**
     * Tags attached to the virtual circuit
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * UUID of an existing VC to configure. Used in the case of shared interconnections where the VC has already been created.
     */
    virtualCircuitId?: pulumi.Input<string>;
    /**
     * UUID of the VLAN to associate
     */
    vlanId?: pulumi.Input<string>;
    /**
     * VNID VLAN parameter, see https://deploy.equinix.com/developers/docs/metal/interconnections/introduction/
     */
    vnid?: pulumi.Input<number>;
    /**
     * UUID of the VRF to associate
     */
    vrfId?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a VirtualCircuit resource.
 */
export interface VirtualCircuitArgs {
    /**
     * UUID of Connection where the VC is scoped to.  Only used for dedicated connections
     */
    connectionId?: pulumi.Input<string>;
    /**
     * The Customer IP address which the CSR switch will peer with. Will default to the other usable IP in the subnet.
     */
    customerIp?: pulumi.Input<string>;
    /**
     * The Customer IPv6 address which the CSR switch will peer with. Will default to the other usable IP in the IPv6 subnet.
     */
    customerIpv6?: pulumi.Input<string>;
    /**
     * Description of the Virtual Circuit resource
     */
    description?: pulumi.Input<string>;
    /**
     * The password that can be set for the VRF BGP peer
     */
    md5?: pulumi.Input<string>;
    /**
     * The Metal IP address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the subnet.
     */
    metalIp?: pulumi.Input<string>;
    /**
     * The Metal IPv6 address for the SVI (Switch Virtual Interface) of the VirtualCircuit. Will default to the first usable IP in the IPv6 subnet.
     */
    metalIpv6?: pulumi.Input<string>;
    /**
     * Name of the Virtual Circuit resource
     */
    name?: pulumi.Input<string>;
    /**
     * Equinix Metal network-to-network VLAN ID (optional when the connection has mode=tunnel)
     */
    nniVlan?: pulumi.Input<number>;
    /**
     * The BGP ASN of the peer. The same ASN may be the used across several VCs, but it cannot be the same as the localAsn of the VRF.
     */
    peerAsn?: pulumi.Input<number>;
    /**
     * UUID of the Connection Port where the VC is scoped to
     */
    portId: pulumi.Input<string>;
    /**
     * UUID of the Project where the VC is scoped to
     */
    projectId: pulumi.Input<string>;
    /**
     * Description of the Virtual Circuit speed. This is for information purposes and is computed when the connection type is shared.
     */
    speed?: pulumi.Input<string>;
    /**
     * A subnet from one of the IP blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /30 or /31.
     * 			 * For a /31 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.
     * 			 * For a /30 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.
     */
    subnet?: pulumi.Input<string>;
    /**
     * A subnet from one of the IPv6 blocks associated with the VRF that we will help create an IP reservation for. Can only be either a /126 or /127.
     * 			 * For a /127 block, it will only have two IP addresses, which will be used for the metal*ip and customer*ip.
     * 			 * For a /126 block, it will have four IP addresses, but the first and last IP addresses are not usable. We will default to the first usable IP address for the metal_ip.
     */
    subnetIpv6?: pulumi.Input<string>;
    /**
     * Tags attached to the virtual circuit
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * UUID of an existing VC to configure. Used in the case of shared interconnections where the VC has already been created.
     */
    virtualCircuitId?: pulumi.Input<string>;
    /**
     * UUID of the VLAN to associate
     */
    vlanId?: pulumi.Input<string>;
    /**
     * UUID of the VRF to associate
     */
    vrfId?: pulumi.Input<string>;
}
