import { AzureArcStatusEnum } from '../../azure/models/azureArcStatusEnum';
import { PowerShellSessionRequestOptions } from '../../data/powershell';
/**
 * Server Inventory query parameters.
 */
export interface ServerInventoryParams {
    /**
     * name of server node.
     */
    name: string;
    /**
     * options for PowerShell session request.
     */
    requestOptions?: PowerShellSessionRequestOptions;
}
/**
 * Windows Operating Systems
 */
export declare enum WindowsOperatingSystem {
    Unknown = 0,
    Legacy = 1,
    WindowsVista = 2,
    Windows7 = 3,
    WindowsServer2008 = 4,
    WindowsServer2008R2 = 5,
    Windows8 = 6,
    WindowsServer2012 = 7,
    Windows8Point1 = 8,
    WindowsServer2012R2 = 9,
    Windows10 = 10,
    WindowsServer2016 = 11,
    WindowsServer2019 = 12
}
/**
 * Windows Product Types
 */
export declare enum WindowsProductType {
    Workstation = 1,
    DomainController = 2,
    Server = 3
}
/**
 * Smbios Info
 */
export interface SmbiosData {
    /**
     * indicator of the Serial Number assigned from Company and is accessible on exterior of device.
     */
    serialNumber: string;
    /**
     * identifies the company brand name under which the device is marketed to the end user.
     */
    manufacturer: string;
    /**
     * This  is a unique value and is intended to be associated with this specific machine.
     * This can be null depending on the machine
     */
    uuid: string;
    /**
    * identifies the baseboard and should accurately reflect
    * variances in baseboards across different devices in the same family and product name.
    * This can be null depending on the machine
    */
    baseBoardProduct: string;
    /**
    *  physical frames or structures of a machine
    */
    chassis: string[];
    /**
    * Types of Chassis defined in the specification.
    */
    chassisTypes: string[];
    /**
     * identifies the company sub-brand name, specific to a grouping of similar devices known as a product line,
     *  under which the device is marketed to end users
     */
    systemFamily: string;
    /**
     * identifies the device in a format that can be determined by Company.
     */
    systemSkuNumber: string;
    /**
    * Asset tag number of the system enclosure
    */
    smBiosAssetTag: string;
}
/**
 * The address entry for address list.
 */
export interface ServerInventoryAddressEntry {
    ipAddress: string;
    addressFamily: 'InterNetwork' | 'InterNetworkV6';
}
/**
 * Server Inventory data interface.
 */
export interface ServerInventoryData {
    /**
     * The server name.
     */
    serverName: string;
    /**
     * The name of server. (CSName/OperatingSystem)
     */
    name: string;
    /**
     * The domain name of server. (Domain/ComputerSystem)
     */
    domainName: string;
    /**
     * The workgroup name of server if any. (Workgroup/ComputerSystem)
     */
    workgroupName: string;
    /**
     * The FQDN of server if any. (ComputerSystem)
     */
    fullyQualifiedDomainName: string;
    /**
     * The FQDN of server if any. (ComputerSystem) Not lower cased.
     */
    fullyQualifiedDomainNameRaw: string;
    /**
     * The hostname of computer which was configured on the computer.
     */
    hostname: string;
    /**
     * The hostname of computer which was configured on the computer. Not lower cased.
     */
    hostnameRaw: string;
    /**
     * The NetBios name which might be trimmed by 15 characters.
     */
    netBios: string;
    /**
     * The IP address list.
     */
    addressList: ServerInventoryAddressEntry[];
    /**
     * The operating system name of server. (Caption/OperatingSystem)
     */
    operatingSystemName: string;
    /**
     * The operating system name of server. (SKU/OperatingSystem)
     */
    operatingSystemSKU: number;
    /**
     * The operating system version of server. (Version/OperatingSystem)
     */
    operatingSystemVersion: string;
    /**
     * The total size of physical memory.
     */
    totalPhysicalMemory: number;
    /**
     * The domain role.
     */
    domainRole: number;
    /**
     * The windows product type.
     */
    productType: WindowsProductType;
    /**
     * The computer manufacturer.
     */
    computerManufacturer: string;
    /**
     * The computer model.
     */
    computerModel: string;
    /**
     * The number of logical processors.
     */
    totalLogicalProcessors: number;
    /**
     * Indicating if the server has ManagementTools namespace to support TaskManager provider.
     */
    isManagementToolsAvailable: boolean;
    /**
     * Indicating if the computer has ServerManager namespace to support ServerManager provider.
     */
    isServerManagerAvailable: boolean;
    /**
     * Whether or not Windows Management Framework v5.0 or higher is installed.
     */
    isWmfInstalled: boolean;
    /**
     * Indicating if the server node is a part of Microsoft Cluster.
     */
    isCluster: boolean;
    /**
     * The FQDN of Microsoft Cluster if it's a part of Microsoft Cluster.
     */
    clusterFqdn: string;
    /**
     * Indicating if current user is a member of administrators group.
     */
    isAdministrator: boolean;
    /**
     * Indicates if the node has S2D enabled
     */
    isS2dEnabled: boolean;
    /**
    * Indicates if the node has Britannica enabled
    */
    isBritannicaEnabled: boolean;
    /**
     * Indicates if the hyper-v role is installed
     */
    isHyperVRoleInstalled: boolean;
    /**
     * Indicates if the hyper-v powershell feature is installed
     */
    isHyperVPowershellInstalled: boolean;
    /**
     * Indicates if CredSSP is enabled.
     */
    isCredSSPEnabled: boolean;
    /**
     * Indicating if remote app enabled.
     */
    isRemoteAppEnabled: boolean;
    /**
     * SMBIOS Data
     */
    smbiosData: SmbiosData;
    /**
     * The system lockdown policy enforcement mode.
     */
    systemLockdownPolicy: string;
    /**
     * Type of operating system value
     */
    osType: string;
    /**
     * Product name that a manufacturer gives to a computer
     */
    model: string;
    /**
     * Last reboot time
     */
    lastBootUpTime: string;
    /**
     * The status of the azure arc in the server
     * i.e connectioned, disconnected etc
     */
    azureArcStatus: AzureArcStatusEnum;
    /**
     * The operating system build number
     */
    buildNumber: string;
    /**
     * The operating system update build revision
     */
    updateBuildRevision: number;
    /**
     * The operating system display version eg: 22H2
     */
    operatingSystemDisplayVersion: string;
    /**
     * Indicating if the server is HCI.
     */
    isHciServer: boolean;
}
/**
 * Server Inventory class.
 */
export declare class ServerInventory implements ServerInventoryData {
    serverName: string;
    private static nanoDisplayFormat;
    private static server19PreviewBuildNumber;
    private static nanoServerSkus;
    /**
     * The name of server. (CSName/OperatingSystem)
     */
    name: string;
    /**
     * The domain name of server. (Domain/ComputerSystem)
     */
    domainName: string;
    /**
     * The workgroup name of server if any. (Workgroup/ComputerSystem)
     */
    workgroupName: string;
    /**
     * The FQDN of server if any. (ComputerSystem)
     */
    fullyQualifiedDomainName: string;
    /**
     * The FQDN of server if any. (ComputerSystem) Not lower cased.
     */
    fullyQualifiedDomainNameRaw: string;
    /**
     * The hostname of computer which was configured on the computer.
     */
    hostname: string;
    /**
     * The hostname of computer which was configured on the computer. Not lower cased.
     */
    hostnameRaw: string;
    /**
     * The NetBios name which might be trimmed by 15 characters.
     */
    netBios: string;
    /**
     * The IP address list.
     */
    addressList: ServerInventoryAddressEntry[];
    /**
     * The operating system name of server. (Caption/OperatingSystem)
     */
    operatingSystemName: string;
    /**
     * The operating system name of server. (SKU/OperatingSystem)
     */
    operatingSystemSKU: number;
    /**
     * The operating system version of server. (Version/OperatingSystem)
     */
    operatingSystemVersion: string;
    /**
     * The total size of physical memory.
     */
    totalPhysicalMemory: number;
    /**
     * The domain role.
     */
    domainRole: number;
    /**
     * The windows product type.
     */
    productType: WindowsProductType;
    /**
     * The computer manufacturer.
     */
    computerManufacturer: string;
    /**
     * The computer model.
     */
    computerModel: string;
    /**
     * The number of logical processors.
     */
    totalLogicalProcessors: number;
    /**
     * Indicating if the server has ManagementTools namespace to support TaskManager provider.
     */
    isManagementToolsAvailable: boolean;
    /**
     * Indicating if the computer has ServerManager namespace to support ServerManager provider.
     */
    isServerManagerAvailable: boolean;
    /**
     * Whether or not Windows Management Framework v5.0 or higher is installed.
     */
    isWmfInstalled: boolean;
    /**
     * Indicating if the server node is a part of Microsoft Cluster.
     */
    isCluster: boolean;
    /**
     * The FQDN of Microsoft Cluster if it's a part of Microsoft Cluster.
     */
    clusterFqdn: string;
    /**
     * Indicating if current user is a member of administrators group.
     */
    isAdministrator: boolean;
    /**
     * Indicates if the node has S2D enabled
     */
    isS2dEnabled: boolean;
    /**
     * Indicates if the node has Britannica enabled
     */
    isBritannicaEnabled: boolean;
    /**
     * Indicates if the hyper-v role is installed
     */
    isHyperVRoleInstalled: boolean;
    /**
     * Indicates if the hyper-v powershell feature is installed
     */
    isHyperVPowershellInstalled: boolean;
    /**
     * Indicates if CredSSP is enabled.
     */
    isCredSSPEnabled: boolean;
    /**
     * Indicating if remote app enabled.
     */
    isRemoteAppEnabled: boolean;
    /**
     * SMBIOS Data
     */
    smbiosData: SmbiosData;
    /**
     * The system lockdown policy enforcement mode.
     */
    systemLockdownPolicy: string;
    /**
     * Type of operating system value
     */
    osType: string;
    /**
     * Product name that a manufacturer gives to a computer
     */
    model: string;
    /**
     * Last reboot time
     */
    lastBootUpTime: string;
    /**
     * The status of the azure arc in the server
     * i.e connectioned, disconnected etc
     */
    azureArcStatus: AzureArcStatusEnum;
    osSerialNumber: string;
    /**
     * The operating system build number
     */
    buildNumber: string;
    /**
     * The operating system update build revision
     */
    updateBuildRevision: number;
    /**
     * The operating system display version eg: 22H2
     */
    operatingSystemDisplayVersion: string;
    /**
     * Indicating if the server is HCI.
     */
    isHciServer: boolean;
    /**
     * Initializes a new instance of the ServerInventory Class.
     *
     * @param serverName the server name to query.
     * @param data the server inventory recovered data.
     */
    constructor(serverName: string, data?: ServerInventoryData);
    /**
     * Gets the sku number indicating whether the computer is Nano server.
     *
     * @return boolean true if nano
     */
    get isNano(): boolean;
    /**
     * Gets a value indicating if this is a windows server
     *
     * @return boolean true if this is a server
     */
    get isServer(): boolean;
    /**
     * Gets a value indicating if this is a windows client
     *
     * @return boolean true if this is a client
     */
    get isClient(): boolean;
    /**
     * Indicates whether the computer is domain controller or not.
     *
     * @return boolean true if domain controller
     */
    get isDomainController(): boolean;
    /**
     * Gets the display name of operating system.
     */
    get operatingSystemDisplayName(): string;
    /**
     * Gets the display name of total physical memory.
     */
    get totalPhysicalMemoryDisplayName(): string;
    /**
     * Gets the operating system enumb of the machine
     * see: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx for operating system version mapping.
     */
    get operatingSystem(): WindowsOperatingSystem;
}
