import * as pulumi from "@pulumi/pulumi";
import * as outputs from "../types/output";
/**
 * Use this data source to get Equinix Network Edge device details.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const byUuid = equinix.networkedge.getDevice({
 *     uuid: "f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee",
 * });
 * const byName = equinix.networkedge.getDevice({
 *     name: "Arcus-Gateway-A1",
 * });
 * ```
 */
export declare function getDevice(args?: GetDeviceArgs, opts?: pulumi.InvokeOptions): Promise<GetDeviceResult>;
/**
 * A collection of arguments for invoking getDevice.
 */
export interface GetDeviceArgs {
    /**
     * Name of an existing Equinix Network Edge device
     */
    name?: string;
    /**
     * UUID of an existing Equinix Network Edge device
     */
    uuid?: string;
    /**
     * Device states to be considered valid when searching for a device by name
     *
     * NOTE: Exactly one of either `uuid` or `name` must be specified.
     */
    validStatusList?: string;
}
/**
 * A collection of values returned by getDevice.
 */
export interface GetDeviceResult {
    readonly accountNumber: string;
    /**
     * Unique identifier of applied ACL template
     */
    readonly aclTemplateId: string;
    readonly additionalBandwidth: number;
    /**
     * Autonomous system number
     */
    readonly asn: number;
    readonly byol: boolean;
    readonly clusterDetails: outputs.networkedge.GetDeviceClusterDetail[];
    /**
     * Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT)
     */
    readonly connectivity: string;
    readonly coreCount: number;
    /**
     * diverse device uuid
     */
    readonly diverseDeviceId: string;
    /**
     * Name of the device with diverse device UUID
     */
    readonly diverseDeviceName: string;
    readonly hostname: string;
    /**
     * Device location Equinix Business Exchange name
     */
    readonly ibx: string;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    readonly interfaceCount: number;
    /**
     * List of device interfaces
     * * `interface.#.id` - interface identifier
     * * `interface.#.name` - interface name
     * * `interface.#.status` - interface status (AVAILABLE, RESERVED, ASSIGNED)
     * * `interface.#.operational_status` - interface operational status (up or down)
     * * `interface.#.mac_address` - interface MAC address
     * * `interface.#.ip_address` - interface IP address
     * * `interface.#.assigned_type` - interface management type (Equinix Managed or empty)
     * * `interface.#.type` - interface type
     */
    readonly interfaces: outputs.networkedge.GetDeviceInterface[];
    readonly licenseFile: string;
    /**
     * Unique identifier of applied license file
     */
    readonly licenseFileId: string;
    /**
     * Device license registration status
     * * APPLYING_LICENSE
     * * REGISTERED
     * * APPLIED
     * * WAITING_FOR_CLUSTER_SETUP
     * * REGISTRATION_FAILED
     * * NA
     */
    readonly licenseStatus: string;
    readonly licenseToken: string;
    readonly metroCode: string;
    readonly mgmtAclTemplateUuid: string;
    readonly name: string;
    readonly notifications: string[];
    readonly orderReference: string;
    readonly packageCode: string;
    readonly projectId: string;
    readonly purchaseOrderNumber: string;
    /**
     * Device redundancy type applicable for HA devices, either primary or secondary
     */
    readonly redundancyType: string;
    /**
     * Unique identifier for a redundant device applicable for HA devices
     */
    readonly redundantId: string;
    /**
     * Device location region
     */
    readonly region: string;
    readonly secondaryDevices: outputs.networkedge.GetDeviceSecondaryDevice[];
    readonly selfManaged: boolean;
    /**
     * IP address of SSH enabled interface on the device
     */
    readonly sshIpAddress: string;
    /**
     * FQDN of SSH enabled interface on the device
     */
    readonly sshIpFqdn: string;
    readonly sshKeys: outputs.networkedge.GetDeviceSshKey[];
    /**
     * Device provisioning status
     * * INITIALIZING
     * * PROVISIONING
     * * PROVISIONED (**NOTE: By default data source will only return devices in this state. To include other states see `validStateList`**)
     * * WAITING_FOR_PRIMARY
     * * WAITING_FOR_SECONDARY
     * * WAITING_FOR_REPLICA_CLUSTER_NODES
     * * CLUSTER_SETUP_IN_PROGRESS
     * * FAILED
     * * DEPROVISIONING
     * * DEPROVISIONED
     * * RESOURCE_UPGRADE_IN_PROGRESS
     * * RESOURCE_UPGRADE_FAILED
     */
    readonly status: string;
    readonly termLength: number;
    readonly throughput: number;
    readonly throughputUnit: string;
    /**
     * Throughput Tier (applicable for C8000V, C8000V-SDWAN devices)
     */
    readonly tier: number;
    readonly typeCode: string;
    /**
     * Device unique identifier
     */
    readonly uuid: string;
    /**
     * Comma separated list of device states (from see `status` for full list) to be considered valid. Default is 'PROVISIONED'. Case insensitive.
     */
    readonly validStatusList?: string;
    readonly vendorConfiguration: {
        [key: string]: string;
    };
    readonly version: string;
    readonly wanInterfaceId: string;
    /**
     * Device location zone code
     */
    readonly zoneCode: string;
}
/**
 * Use this data source to get Equinix Network Edge device details.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const byUuid = equinix.networkedge.getDevice({
 *     uuid: "f0b5c553-cdeb-4bc3-95b8-23db9ccfd5ee",
 * });
 * const byName = equinix.networkedge.getDevice({
 *     name: "Arcus-Gateway-A1",
 * });
 * ```
 */
export declare function getDeviceOutput(args?: GetDeviceOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetDeviceResult>;
/**
 * A collection of arguments for invoking getDevice.
 */
export interface GetDeviceOutputArgs {
    /**
     * Name of an existing Equinix Network Edge device
     */
    name?: pulumi.Input<string>;
    /**
     * UUID of an existing Equinix Network Edge device
     */
    uuid?: pulumi.Input<string>;
    /**
     * Device states to be considered valid when searching for a device by name
     *
     * NOTE: Exactly one of either `uuid` or `name` must be specified.
     */
    validStatusList?: pulumi.Input<string>;
}
