import * as pulumi from "@pulumi/pulumi";
import { input as inputs } from "../types";
export interface ECXL2ConnectionAction {
    message?: pulumi.Input<string>;
    operationId?: pulumi.Input<string>;
    requiredDatas?: pulumi.Input<pulumi.Input<inputs.ECXL2ConnectionActionRequiredData>[]>;
    type?: pulumi.Input<string>;
}
export interface ECXL2ConnectionActionRequiredData {
    editable?: pulumi.Input<boolean>;
    key?: pulumi.Input<string>;
    label?: pulumi.Input<string>;
    validationPattern?: pulumi.Input<string>;
    /**
     * additional information value
     */
    value?: pulumi.Input<string>;
}
export interface ECXL2ConnectionAdditionalInfo {
    /**
     * additional information key
     */
    name: pulumi.Input<string>;
    /**
     * additional information value
     */
    value: pulumi.Input<string>;
}
export interface ECXL2ConnectionSecondaryConnection {
    /**
     * One or more pending actions to complete connection provisioning.
     */
    actions?: pulumi.Input<pulumi.Input<inputs.ECXL2ConnectionSecondaryConnectionAction>[]>;
    /**
     * Unique identifier authorizing Equinix to provision a connection
     * towards a cloud service provider. If not specified primary `authorizationKey` will be used. However,
     * some service providers may require different keys for each connection. More information on
     * [Equinix Fabric how to guide](https://developer.equinix.com/docs/ecx-how-to-guide).
     */
    authorizationKey?: pulumi.Input<string>;
    /**
     * Applicable with `deviceUuid`, identifier of network interface
     * on a given device. If not specified then first available interface will be selected.
     */
    deviceInterfaceId?: pulumi.Input<number>;
    /**
     * Applicable with primary `deviceUuid`. Identifier of the Network Edge
     * virtual device from which the secondary connection would originate. If not specified primary
     * `deviceUuid` will be used.
     */
    deviceUuid?: pulumi.Input<string>;
    /**
     * secondary connection name
     */
    name: pulumi.Input<string>;
    /**
     * Applicable with primary `portUuid`. Identifier of the Equinix Fabric Port from
     * which the secondary connection would originate. If not specified primary `portUuid` will be used.
     */
    portUuid?: pulumi.Input<string>;
    /**
     * Unique identifier of the service provider's profile.
     */
    profileUuid?: pulumi.Input<string>;
    /**
     * Connection provisioning status on service provider's side.
     */
    providerStatus?: pulumi.Input<string>;
    /**
     * Unique identifier of group containing a primary and secondary connection.
     */
    redundancyGroup?: pulumi.Input<string>;
    /**
     * Connection redundancy type, applicable for HA connections. Valid values are
     * `PRIMARY`, `SECONDARY`.
     */
    redundancyType?: pulumi.Input<string>;
    /**
     * Unique identifier of the redundant connection, applicable for HA connections.
     *
     * @deprecated SecondaryConnection.0.RedundantUUID will not be returned. Use UUID instead
     */
    redundantUuid?: pulumi.Input<string>;
    /**
     * The metro code that denotes the secondary connection’s
     * destination (Z side). .
     */
    sellerMetroCode?: pulumi.Input<string>;
    /**
     * The region in which the seller port resides. If not specified
     * primary `sellerRegion` will be used.
     */
    sellerRegion?: pulumi.Input<string>;
    /**
     * Required with primary `serviceToken`. Unique Equinix Fabric key
     * given by a provider that grants you authorization to enable connectivity from an Equinix Fabric Port or
     * virtual device. Each connection (primary and secondary) requires a separate token.
     * More details in [Fabric Service Tokens](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm).
     */
    serviceToken?: pulumi.Input<string>;
    /**
     * Speed/Bandwidth to be allocated to the secondary connection. If not
     * specified primary `speed` will be used.
     */
    speed?: pulumi.Input<number>;
    /**
     * Unit of the speed/bandwidth to be allocated to the secondary
     * connection. If not specified primary `speedUnit` will be used.
     */
    speedUnit?: pulumi.Input<string>;
    /**
     * Connection provisioning status on Equinix Fabric side.
     */
    status?: pulumi.Input<string>;
    /**
     * Unique identifier of the connection.
     */
    uuid?: pulumi.Input<string>;
    /**
     * The Equinix Fabric Token the connection was created with. Applicable if the
     * connection was created with a `serviceToken` (a-side) or `zsideServiceToken` (z-side).
     * * `secondaryConnection`:
     * * `zsidePortUuid`
     * * `zsideVlanStag`
     * * `zsideVlanCtag`
     * * `redundancyType`
     * * `redundancyGroup`
     * * `vendorToken`
     */
    vendorToken?: pulumi.Input<string>;
    /**
     * Applicable with `portUuid`. C-Tag/Inner-Tag of the secondary
     * connection, a numeric character ranging from 2 - 4094.
     */
    vlanCtag?: pulumi.Input<number>;
    /**
     * S-Tag/Outer-Tag of the secondary connection, a
     * numeric character ranging from 2 - 4094.
     */
    vlanStag?: pulumi.Input<number>;
    /**
     * Unique identifier of the port on the remote/destination side
     * (z-side). Allows you to connect between your own ports or virtual devices across your company's
     * Equinix Fabric deployment, with no need for a private service profile.
     */
    zsidePortUuid?: pulumi.Input<string>;
    /**
     * C-Tag/Inner-Tag of the connection on the remote/destination
     * side (z-side) - a numeric character ranging from 2 - 4094.
     * `secondaryConnection` is defined it will internally use same `zsideVlanCtag` for the secondary
     * connection.
     */
    zsideVlanCtag?: pulumi.Input<number>;
    /**
     * S-Tag/Outer-Tag of the connection on the remote/destination
     * side (z-side) - a numeric character ranging from 2 - 4094.
     */
    zsideVlanStag?: pulumi.Input<number>;
}
export interface ECXL2ConnectionSecondaryConnectionAction {
    message?: pulumi.Input<string>;
    operationId?: pulumi.Input<string>;
    requiredDatas?: pulumi.Input<pulumi.Input<inputs.ECXL2ConnectionSecondaryConnectionActionRequiredData>[]>;
    type?: pulumi.Input<string>;
}
export interface ECXL2ConnectionSecondaryConnectionActionRequiredData {
    editable?: pulumi.Input<boolean>;
    key?: pulumi.Input<string>;
    label?: pulumi.Input<string>;
    validationPattern?: pulumi.Input<string>;
    /**
     * additional information value
     */
    value?: pulumi.Input<string>;
}
export interface ECXL2ServiceprofileFeatures {
    /**
     * Indicates whether or not connections to this profile
     * can be created from remote metro locations.
     */
    allowRemoteConnections: pulumi.Input<boolean>;
    /**
     * Indicates whether or not this profile can be used for test
     * connections.
     *
     * @deprecated TestProfile is no longer required and will be removed in a future release
     */
    testProfile?: pulumi.Input<boolean>;
}
export interface ECXL2ServiceprofilePort {
    /**
     * The metro code of location where the port resides.
     */
    metroCode: pulumi.Input<string>;
    /**
     * Unique identifier of the port.
     */
    uuid: pulumi.Input<string>;
}
export interface ECXL2ServiceprofileSpeedBand {
    /**
     * Speed/bandwidth supported by this service profile.
     */
    speed: pulumi.Input<number>;
    /**
     * Unit of the speed/bandwidth supported by this service profile. One of
     * `MB`, `GB`.
     */
    speedUnit: pulumi.Input<string>;
}
export interface GetMetalFacilityCapacity {
    /**
     * Device plan that must be available in selected location.
     */
    plan: string;
    /**
     * Minimun number of devices that must be available in selected location.
     * Default is `1`.
     */
    quantity?: number;
}
export interface GetMetalFacilityCapacityArgs {
    /**
     * Device plan that must be available in selected location.
     */
    plan: pulumi.Input<string>;
    /**
     * Minimun number of devices that must be available in selected location.
     * Default is `1`.
     */
    quantity?: pulumi.Input<number>;
}
export interface GetMetalMetroCapacity {
    /**
     * Device plan that must be available in selected location.
     */
    plan: string;
    /**
     * Minimun number of devices that must be available in selected location.
     * Default is `1`.
     */
    quantity?: number;
}
export interface GetMetalMetroCapacityArgs {
    /**
     * Device plan that must be available in selected location.
     */
    plan: pulumi.Input<string>;
    /**
     * Minimun number of devices that must be available in selected location.
     * Default is `1`.
     */
    quantity?: pulumi.Input<number>;
}
export interface GetMetalOrganizationAddress {
    /**
     * Postal address.
     */
    address?: string;
    /**
     * City name.
     */
    city?: string;
    /**
     * Two letter country code (ISO 3166-1 alpha-2), e.g. US.
     */
    country?: string;
    /**
     * State name.
     */
    state?: string;
    /**
     * Zip Code.
     */
    zipCode?: string;
}
export interface GetMetalOrganizationAddressArgs {
    /**
     * Postal address.
     */
    address?: pulumi.Input<string>;
    /**
     * City name.
     */
    city?: pulumi.Input<string>;
    /**
     * Two letter country code (ISO 3166-1 alpha-2), e.g. US.
     */
    country?: pulumi.Input<string>;
    /**
     * State name.
     */
    state?: pulumi.Input<string>;
    /**
     * Zip Code.
     */
    zipCode?: pulumi.Input<string>;
}
export interface GetMetalPlansFilter {
    /**
     * If is set to true, the values are joined with an AND, and the requests returns only the results that match all specified values. Default is `false`.
     */
    all?: boolean;
    /**
     * The attribute used to filter. Filter attributes are case-sensitive
     */
    attribute: string;
    /**
     * The type of comparison to apply. One of: `in` , `re`, `substring`, `lessThan`, `lessThanOrEqual`, `greaterThan`, `greaterThanOrEqual`. Default is `in`.
     */
    matchBy?: string;
    /**
     * The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR by default, and the request returns all results that match any of the specified values
     */
    values: string[];
}
export interface GetMetalPlansFilterArgs {
    /**
     * If is set to true, the values are joined with an AND, and the requests returns only the results that match all specified values. Default is `false`.
     */
    all?: pulumi.Input<boolean>;
    /**
     * The attribute used to filter. Filter attributes are case-sensitive
     */
    attribute: pulumi.Input<string>;
    /**
     * The type of comparison to apply. One of: `in` , `re`, `substring`, `lessThan`, `lessThanOrEqual`, `greaterThan`, `greaterThanOrEqual`. Default is `in`.
     */
    matchBy?: pulumi.Input<string>;
    /**
     * The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR by default, and the request returns all results that match any of the specified values
     */
    values: pulumi.Input<pulumi.Input<string>[]>;
}
export interface GetMetalPlansSort {
    /**
     * The attribute used to filter. Filter attributes are case-sensitive
     */
    attribute: string;
    /**
     * Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc
     */
    direction?: string;
}
export interface GetMetalPlansSortArgs {
    /**
     * The attribute used to filter. Filter attributes are case-sensitive
     */
    attribute: pulumi.Input<string>;
    /**
     * Sort results in ascending or descending order. Strings are sorted in alphabetical order. One of: asc, desc
     */
    direction?: pulumi.Input<string>;
}
export interface MetalConnectionPort {
    id?: pulumi.Input<string>;
    linkStatus?: pulumi.Input<string>;
    /**
     * Name of the connection resource
     */
    name?: pulumi.Input<string>;
    role?: pulumi.Input<string>;
    /**
     * Connection speed - one of 50Mbps, 200Mbps, 500Mbps, 1Gbps, 2Gbps, 5Gbps, 10Gbps.
     */
    speed?: pulumi.Input<number>;
    /**
     * Status of the connection resource.
     */
    status?: pulumi.Input<string>;
    virtualCircuitIds?: pulumi.Input<any[]>;
}
export interface MetalConnectionServiceToken {
    expiresAt?: pulumi.Input<string>;
    id?: pulumi.Input<string>;
    maxAllowedSpeed?: pulumi.Input<string>;
    role?: pulumi.Input<string>;
    state?: pulumi.Input<string>;
    /**
     * Connection type - dedicated or shared.
     */
    type?: pulumi.Input<string>;
}
export interface MetalDeviceIpAddress {
    /**
     * CIDR suffix for IP address block to be assigned, i.e. amount of addresses.
     */
    cidr?: pulumi.Input<number>;
    /**
     * List of UUIDs of IP block reservations
     * from which the public IPv4 address should be taken.
     */
    reservationIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * One of `privateIpv4`, `publicIpv4`, `publicIpv6`.
     */
    type: pulumi.Input<string>;
}
export interface MetalDeviceNetwork {
    /**
     * IPv4 or IPv6 address string.
     */
    address?: pulumi.Input<string>;
    /**
     * CIDR suffix for IP address block to be assigned, i.e. amount of addresses.
     */
    cidr?: pulumi.Input<number>;
    /**
     * IP version. One of `4`, `6`.
     */
    family?: pulumi.Input<number>;
    /**
     * Address of router.
     */
    gateway?: pulumi.Input<string>;
    /**
     * Whether the address is routable from the Internet.
     */
    public?: pulumi.Input<boolean>;
}
export interface MetalDevicePort {
    /**
     * Whether this port is part of a bond in bonded network setup.
     */
    bonded?: pulumi.Input<boolean>;
    /**
     * ID of the port.
     */
    id?: pulumi.Input<string>;
    /**
     * MAC address assigned to the port.
     */
    mac?: pulumi.Input<string>;
    /**
     * Name of the port (e.g. `eth0`, or `bond0`).
     */
    name?: pulumi.Input<string>;
    /**
     * One of `privateIpv4`, `publicIpv4`, `publicIpv6`.
     */
    type?: pulumi.Input<string>;
}
export interface MetalDeviceReinstall {
    /**
     * Whether the OS disk should be filled with `00h` bytes before reinstall.
     * Defaults to `false`.
     */
    deprovisionFast?: pulumi.Input<boolean>;
    /**
     * Whether the provider should favour reinstall over destroy and create. Defaults to
     * `false`.
     */
    enabled?: pulumi.Input<boolean>;
    /**
     * Whether the non-OS disks should be kept or wiped during reinstall.
     * Defaults to `false`.
     */
    preserveData?: pulumi.Input<boolean>;
}
export interface MetalOrganizationAddress {
    /**
     * Postal address.
     */
    address: pulumi.Input<string>;
    /**
     * City name.
     */
    city: pulumi.Input<string>;
    /**
     * Two letter country code (ISO 3166-1 alpha-2), e.g. US.
     */
    country: pulumi.Input<string>;
    /**
     * State name.
     */
    state?: pulumi.Input<string>;
    /**
     * Zip Code.
     */
    zipCode: pulumi.Input<string>;
}
export interface MetalProjectBgpConfig {
    /**
     * Autonomous System Number for local BGP deployment.
     */
    asn: pulumi.Input<number>;
    /**
     * `private` or `public`, the `private` is likely to be usable immediately, the
     * `public` will need to be reviewed by Equinix Metal engineers.
     */
    deploymentType: pulumi.Input<string>;
    /**
     * The maximum number of route filters allowed per server.
     */
    maxPrefix?: pulumi.Input<number>;
    /**
     * Password for BGP session in plaintext (not a checksum).
     */
    md5?: pulumi.Input<string>;
    /**
     * status of BGP configuration in the project.
     */
    status?: pulumi.Input<string>;
}
export interface MetalSpotMarketRequestInstanceParameters {
    alwaysPxe?: pulumi.Input<boolean>;
    billingCycle: pulumi.Input<string>;
    customdata?: pulumi.Input<string>;
    description?: pulumi.Input<string>;
    features?: pulumi.Input<pulumi.Input<string>[]>;
    hostname: pulumi.Input<string>;
    ipxeScriptUrl?: pulumi.Input<string>;
    /**
     * Blocks deletion of the SpotMarketRequest device until the lock is disabled.
     */
    locked?: pulumi.Input<boolean>;
    operatingSystem: pulumi.Input<string>;
    plan: pulumi.Input<string>;
    projectSshKeys?: pulumi.Input<pulumi.Input<string>[]>;
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    termintationTime?: pulumi.Input<string>;
    userSshKeys?: pulumi.Input<pulumi.Input<string>[]>;
    userdata?: pulumi.Input<string>;
}
export interface NetworkACLTemplateDeviceDetail {
    /**
     * Device ACL provisioning status where template was applied. One of `PROVISIONING`,
     * `PROVISIONED`.
     */
    aclStatus?: pulumi.Input<string>;
    /**
     * ACL template name.
     */
    name?: pulumi.Input<string>;
    /**
     * Device uuid.
     */
    uuid?: pulumi.Input<string>;
}
export interface NetworkACLTemplateInboundRule {
    /**
     * Inbound traffic destination ports. Allowed values are a comma separated
     * list of ports, e.g., `20,22,23`, port range, e.g., `1023-1040` or word `any`.
     */
    dstPort: pulumi.Input<string>;
    /**
     * Inbound traffic protocol. One of `IP`, `TCP`, `UDP`.
     */
    protocol: pulumi.Input<string>;
    sequenceNumber?: pulumi.Input<number>;
    /**
     * @deprecated Source Type will not be returned
     */
    sourceType?: pulumi.Input<string>;
    /**
     * Inbound traffic source ports. Allowed values are a comma separated list
     * of ports, e.g., `20,22,23`, port range, e.g., `1023-1040` or word `any`.
     */
    srcPort: pulumi.Input<string>;
    /**
     * Inbound traffic source IP subnet in CIDR format.
     */
    subnet?: pulumi.Input<string>;
    /**
     * Inbound traffic source IP subnets in CIDR format.
     *
     * @deprecated Use Subnet instead
     */
    subnets?: pulumi.Input<pulumi.Input<string>[]>;
}
export interface NetworkDeviceClusterDetails {
    /**
     * The ID of the cluster.
     */
    clusterId?: pulumi.Input<string>;
    /**
     * The name of the cluster device
     */
    clusterName: pulumi.Input<string>;
    /**
     * An object that has `node0` configuration.
     * See Cluster Details - Nodes below for more details.
     */
    node0: pulumi.Input<inputs.NetworkDeviceClusterDetailsNode0>;
    /**
     * An object that has `node1` configuration.
     * See Cluster Details - Nodes below for more details.
     */
    node1: pulumi.Input<inputs.NetworkDeviceClusterDetailsNode1>;
    /**
     * The number of nodes in the cluster.
     */
    numOfNodes?: pulumi.Input<number>;
}
export interface NetworkDeviceClusterDetailsNode0 {
    /**
     * License file id. This is necessary for Fortinet and Juniper clusters.
     */
    licenseFileId?: pulumi.Input<string>;
    /**
     * License token. This is necessary for Palo Alto clusters.
     */
    licenseToken?: pulumi.Input<string>;
    /**
     * Device name.
     */
    name?: pulumi.Input<string>;
    /**
     * Device unique identifier.
     */
    uuid?: pulumi.Input<string>;
    /**
     * An object that has fields relevant to the vendor of the
     * cluster device. See Cluster Details - Nodes - Vendor Configuration
     * below for more details.
     */
    vendorConfiguration?: pulumi.Input<inputs.NetworkDeviceClusterDetailsNode0VendorConfiguration>;
}
export interface NetworkDeviceClusterDetailsNode0VendorConfiguration {
    /**
     * Activation key. This is required for Velocloud clusters.
     */
    activationKey?: pulumi.Input<string>;
    /**
     * The administrative password of the device. You can use it to log in
     * to the console. This field is not available for all device types.
     */
    adminPassword?: pulumi.Input<string>;
    /**
     * System IP Address. Mandatory for the Fortinet SDWAN cluster device.
     */
    controller1?: pulumi.Input<string>;
    /**
     * Controller fqdn. This is required for Velocloud clusters.
     */
    controllerFqdn?: pulumi.Input<string>;
    /**
     * Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters.
     */
    hostname?: pulumi.Input<string>;
    /**
     * The CLI password of the device. This field is relevant only for the
     * Velocloud SDWAN cluster.
     */
    rootPassword?: pulumi.Input<string>;
}
export interface NetworkDeviceClusterDetailsNode1 {
    /**
     * License file id. This is necessary for Fortinet and Juniper clusters.
     */
    licenseFileId?: pulumi.Input<string>;
    /**
     * License token. This is necessary for Palo Alto clusters.
     */
    licenseToken?: pulumi.Input<string>;
    /**
     * Device name.
     */
    name?: pulumi.Input<string>;
    /**
     * Device unique identifier.
     */
    uuid?: pulumi.Input<string>;
    /**
     * An object that has fields relevant to the vendor of the
     * cluster device. See Cluster Details - Nodes - Vendor Configuration
     * below for more details.
     */
    vendorConfiguration?: pulumi.Input<inputs.NetworkDeviceClusterDetailsNode1VendorConfiguration>;
}
export interface NetworkDeviceClusterDetailsNode1VendorConfiguration {
    /**
     * Activation key. This is required for Velocloud clusters.
     */
    activationKey?: pulumi.Input<string>;
    /**
     * The administrative password of the device. You can use it to log in
     * to the console. This field is not available for all device types.
     */
    adminPassword?: pulumi.Input<string>;
    /**
     * System IP Address. Mandatory for the Fortinet SDWAN cluster device.
     */
    controller1?: pulumi.Input<string>;
    /**
     * Controller fqdn. This is required for Velocloud clusters.
     */
    controllerFqdn?: pulumi.Input<string>;
    /**
     * Hostname. This is necessary for Palo Alto, Juniper, and Fortinet clusters.
     */
    hostname?: pulumi.Input<string>;
    /**
     * The CLI password of the device. This field is relevant only for the
     * Velocloud SDWAN cluster.
     */
    rootPassword?: pulumi.Input<string>;
}
export interface NetworkDeviceInterface {
    /**
     * interface management type (Equinix Managed or empty).
     */
    assignedType?: pulumi.Input<string>;
    /**
     * interface identifier.
     */
    id?: pulumi.Input<number>;
    /**
     * interface IP address.
     */
    ipAddress?: pulumi.Input<string>;
    /**
     * interface MAC address.
     */
    macAddress?: pulumi.Input<string>;
    /**
     * Device name.
     */
    name?: pulumi.Input<string>;
    /**
     * interface operational status. One of `up`, `down`.
     */
    operationalStatus?: pulumi.Input<string>;
    /**
     * interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.
     */
    status?: pulumi.Input<string>;
    /**
     * interface type.
     */
    type?: pulumi.Input<string>;
}
export interface NetworkDeviceLinkDevice {
    /**
     * Device ASN number. Not required for self configured devices.
     */
    asn?: pulumi.Input<number>;
    /**
     * Device identifier.
     */
    id: pulumi.Input<string>;
    /**
     * Device network interface identifier to use for device link
     * connection.
     */
    interfaceId?: pulumi.Input<number>;
    /**
     * IP address from device link subnet that was assigned to the device
     */
    ipAddress?: pulumi.Input<string>;
    /**
     * device link provisioning status on a given device. One of `PROVISIONING`,
     * `PROVISIONED`, `DEPROVISIONING`, `DEPROVISIONED`, `FAILED`.
     */
    status?: pulumi.Input<string>;
}
export interface NetworkDeviceLinkLink {
    /**
     * billing account number to be used for
     * connection charges
     */
    accountNumber: pulumi.Input<string>;
    /**
     * connection destination metro code.
     */
    dstMetroCode: pulumi.Input<string>;
    /**
     * connection destination zone code is not required.
     *
     * @deprecated DestinationZoneCode is not required
     */
    dstZoneCode?: pulumi.Input<string>;
    /**
     * connection source metro code.
     */
    srcMetroCode: pulumi.Input<string>;
    /**
     * connection source zone code is not required.
     *
     * @deprecated SourceZoneCode is not required
     */
    srcZoneCode?: pulumi.Input<string>;
    /**
     * connection throughput.
     */
    throughput: pulumi.Input<string>;
    /**
     * connection throughput unit (Mbps or Gbps).
     */
    throughputUnit: pulumi.Input<string>;
}
export interface NetworkDeviceSecondaryDevice {
    /**
     * Billing account number for secondary device.
     */
    accountNumber: pulumi.Input<string>;
    /**
     * Identifier of a WAN interface ACL template that will be applied
     * on a secondary device.
     */
    aclTemplateId?: pulumi.Input<string>;
    /**
     * Additional Internet bandwidth, in Mbps, for a secondary
     * device.
     */
    additionalBandwidth?: pulumi.Input<number>;
    /**
     * (Autonomous System Number) Unique identifier for a network on the internet.
     */
    asn?: pulumi.Input<number>;
    /**
     * Secondary device hostname.
     */
    hostname?: pulumi.Input<string>;
    /**
     * Device location Equinix Business Exchange name.
     */
    ibx?: pulumi.Input<string>;
    /**
     * List of device interfaces. See Interface Attribute below
     * for more details.
     */
    interfaces?: pulumi.Input<pulumi.Input<inputs.NetworkDeviceSecondaryDeviceInterface>[]>;
    /**
     * Path to the license file that will be uploaded and applied on a
     * secondary device. Applicable for some devices types in BYOL licensing mode.
     */
    licenseFile?: pulumi.Input<string>;
    /**
     * License file id. This is necessary for Fortinet and Juniper clusters.
     */
    licenseFileId?: pulumi.Input<string>;
    /**
     * Device license registration status. Possible values are `APPLYING_LICENSE`,
     * `REGISTERED`, `APPLIED`, `WAITING_FOR_CLUSTER_SETUP`, `REGISTRATION_FAILED`.
     */
    licenseStatus?: pulumi.Input<string>;
    /**
     * License Token can be provided for some device types o the device.
     */
    licenseToken?: pulumi.Input<string>;
    /**
     * Metro location of a secondary device.
     */
    metroCode: pulumi.Input<string>;
    /**
     * Identifier of an MGMT interface ACL template that will be
     * applied on the device.
     * * `ssh-key` - (Optional) Up to one definition of SSH key that will be provisioned on a secondary
     * device.
     */
    mgmtAclTemplateUuid?: pulumi.Input<string>;
    /**
     * Secondary device name.
     */
    name: pulumi.Input<string>;
    /**
     * List of email addresses that will receive notifications about
     * secondary device.
     */
    notifications: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Device redundancy type applicable for HA devices, either
     * primary or secondary.
     */
    redundancyType?: pulumi.Input<string>;
    /**
     * Unique identifier for a redundant device applicable for HA devices.
     */
    redundantId?: pulumi.Input<string>;
    /**
     * Device location region.
     */
    region?: pulumi.Input<string>;
    /**
     * IP address of SSH enabled interface on the device.
     */
    sshIpAddress?: pulumi.Input<string>;
    /**
     * FQDN of SSH enabled interface on the device.
     */
    sshIpFqdn?: pulumi.Input<string>;
    sshKey?: pulumi.Input<inputs.NetworkDeviceSecondaryDeviceSshKey>;
    /**
     * interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.
     */
    status?: pulumi.Input<string>;
    /**
     * Device unique identifier.
     */
    uuid?: pulumi.Input<string>;
    /**
     * Key/Value pairs of vendor specific configuration parameters
     * for a secondary device. Key values are `controller1`, `activationKey`, `managementType`, `siteId`,
     * `systemIpAddress`.
     */
    vendorConfiguration?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    wanInterfaceId?: pulumi.Input<string>;
    /**
     * Device location zone code.
     */
    zoneCode?: pulumi.Input<string>;
}
export interface NetworkDeviceSecondaryDeviceInterface {
    /**
     * interface management type (Equinix Managed or empty).
     */
    assignedType?: pulumi.Input<string>;
    /**
     * interface identifier.
     */
    id?: pulumi.Input<number>;
    /**
     * interface IP address.
     */
    ipAddress?: pulumi.Input<string>;
    /**
     * interface MAC address.
     */
    macAddress?: pulumi.Input<string>;
    /**
     * Device name.
     */
    name?: pulumi.Input<string>;
    /**
     * interface operational status. One of `up`, `down`.
     */
    operationalStatus?: pulumi.Input<string>;
    /**
     * interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`.
     */
    status?: pulumi.Input<string>;
    /**
     * interface type.
     */
    type?: pulumi.Input<string>;
}
export interface NetworkDeviceSecondaryDeviceSshKey {
    keyName: pulumi.Input<string>;
    /**
     * username associated with given key.
     */
    username: pulumi.Input<string>;
}
export interface NetworkDeviceSshKey {
    keyName: pulumi.Input<string>;
    /**
     * username associated with given key.
     */
    username: pulumi.Input<string>;
}
