//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Networking.Connectivity.idl";
import "Windows.Security.Credentials.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        interface IAsyncAction;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace Connectivity
        {
            runtimeclass NetworkAdapter;

            runtimeclass NetworkSecuritySettings;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass PasswordCredential;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace WiFi
        {
            typedef enum WiFiAccessStatus WiFiAccessStatus;

            typedef enum WiFiConnectionMethod WiFiConnectionMethod;

            typedef enum WiFiConnectionStatus WiFiConnectionStatus;

            typedef enum WiFiNetworkKind WiFiNetworkKind;

            typedef enum WiFiOnDemandHotspotAvailability WiFiOnDemandHotspotAvailability;

            typedef enum WiFiOnDemandHotspotCellularBars WiFiOnDemandHotspotCellularBars;

            typedef enum WiFiOnDemandHotspotConnectStatus WiFiOnDemandHotspotConnectStatus;

            typedef enum WiFiPhyKind WiFiPhyKind;

            typedef enum WiFiReconnectionKind WiFiReconnectionKind;

            typedef enum WiFiWpsConfigurationStatus WiFiWpsConfigurationStatus;

            typedef enum WiFiWpsKind WiFiWpsKind;

            interface IWiFiAdapter;

            interface IWiFiAdapter2;

            interface IWiFiAdapterStatics;

            interface IWiFiAvailableNetwork;

            interface IWiFiConnectionResult;

            interface IWiFiNetworkReport;

            interface IWiFiOnDemandHotspotConnectTriggerDetails;

            interface IWiFiOnDemandHotspotConnectionResult;

            interface IWiFiOnDemandHotspotNetwork;

            interface IWiFiOnDemandHotspotNetworkProperties;

            interface IWiFiOnDemandHotspotNetworkStatics;

            interface IWiFiWpsConfigurationResult;

            runtimeclass WiFiAdapter;

            runtimeclass WiFiAvailableNetwork;

            runtimeclass WiFiConnectionResult;

            runtimeclass WiFiNetworkReport;

            runtimeclass WiFiOnDemandHotspotConnectTriggerDetails;

            runtimeclass WiFiOnDemandHotspotConnectionResult;

            runtimeclass WiFiOnDemandHotspotNetwork;

            runtimeclass WiFiOnDemandHotspotNetworkProperties;

            runtimeclass WiFiWpsConfigurationResult;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace WiFi
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Devices.WiFi.WiFiAdapter*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.WiFi.WiFiAvailableNetwork*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.WiFi.WiFiWpsKind>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.WiFi.WiFiAdapter*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.WiFi.WiFiAvailableNetwork*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.WiFi.WiFiWpsKind>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFi.WiFiAdapter*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFi.WiFiAvailableNetwork*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFi.WiFiWpsKind>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiAccessStatus>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiAdapter*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiConnectionResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiOnDemandHotspotConnectionResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiWpsConfigurationResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFi.WiFiAdapter*>*>;

                interface Windows.Foundation.IReference<Windows.Devices.WiFi.WiFiOnDemandHotspotCellularBars>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.WiFi.WiFiAdapter*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace WiFi
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiAccessStatus
            {
                Unspecified    = 0,
                Allowed        = 1,
                DeniedByUser   = 2,
                DeniedBySystem = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum WiFiConnectionMethod
            {
                Default       = 0,
                WpsPin        = 1,
                WpsPushButton = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiConnectionStatus
            {
                UnspecifiedFailure                = 0,
                Success                           = 1,
                AccessRevoked                     = 2,
                InvalidCredential                 = 3,
                NetworkNotAvailable               = 4,
                Timeout                           = 5,
                UnsupportedAuthenticationProtocol = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiNetworkKind
            {
                Any            = 0,
                Infrastructure = 1,
                Adhoc          = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            enum WiFiOnDemandHotspotAvailability
            {
                Available   = 0,
                Unavailable = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            enum WiFiOnDemandHotspotCellularBars
            {
                ZeroBars  = 0,
                OneBar    = 1,
                TwoBars   = 2,
                ThreeBars = 3,
                FourBars  = 4,
                FiveBars  = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            enum WiFiOnDemandHotspotConnectStatus
            {
                UnspecifiedFailure                = 0,
                Success                           = 1,
                AppTimedOut                       = 2,
                InvalidCredential                 = 3,
                NetworkNotAvailable               = 4,
                UnsupportedAuthenticationProtocol = 5,
                BluetoothConnectFailed            = 6,
                BluetoothTransmissionError        = 7,
                OperationCanceledByUser           = 8,
                EntitlementCheckFailed            = 9,
                NoCellularSignal                  = 10,
                CellularDataTurnedOff             = 11,
                WlanConnectFailed                 = 12,
                WlanNotVisible                    = 13,
                AccessPointCannotConnect          = 14,
                CellularConnectTimedOut           = 15,
                RoamingNotAllowed                 = 16,
                PairingRequired                   = 17,
                DataLimitReached                  = 18
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiPhyKind
            {
                Unknown    = 0,
                Fhss       = 1,
                Dsss       = 2,
                IRBaseband = 3,
                Ofdm       = 4,
                Hrdsss     = 5,
                Erp        = 6,
                HT         = 7,
                Vht        = 8,
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                Dmg        = 9,
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                HE         = 10,
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                Eht        = 11
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum WiFiReconnectionKind
            {
                Automatic = 0,
                Manual    = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum WiFiWpsConfigurationStatus
            {
                UnspecifiedFailure = 0,
                Success            = 1,
                Timeout            = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum WiFiWpsKind
            {
                Unknown    = 0,
                Pin        = 1,
                PushButton = 2,
                Nfc        = 3,
                Ethernet   = 4,
                Usb        = 5
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiAdapter)]
            [uuid(A6C4E423-3D75-43A4-B9DE-11E26B72D9B0)]
            interface IWiFiAdapter : IInspectable
            {
                [propget] HRESULT NetworkAdapter([out] [retval] Windows.Networking.Connectivity.NetworkAdapter** value);
                HRESULT ScanAsync([out] [retval] Windows.Foundation.IAsyncAction** value);
                [propget] HRESULT NetworkReport([out] [retval] Windows.Devices.WiFi.WiFiNetworkReport** value);
                [eventadd] HRESULT AvailableNetworksChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.WiFi.WiFiAdapter*, IInspectable*>* args, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT AvailableNetworksChanged([in] EventRegistrationToken eventCookie);
                [overload("ConnectAsync")] HRESULT ConnectAsync([in] Windows.Devices.WiFi.WiFiAvailableNetwork* availableNetwork, [in] Windows.Devices.WiFi.WiFiReconnectionKind reconnectionKind, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiConnectionResult*>** value);
                [overload("ConnectAsync")] HRESULT ConnectWithPasswordCredentialAsync([in] Windows.Devices.WiFi.WiFiAvailableNetwork* availableNetwork, [in] Windows.Devices.WiFi.WiFiReconnectionKind reconnectionKind, [in] Windows.Security.Credentials.PasswordCredential* passwordCredential, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiConnectionResult*>** value);
                [overload("ConnectAsync")] HRESULT ConnectWithPasswordCredentialAndSsidAsync([in] Windows.Devices.WiFi.WiFiAvailableNetwork* availableNetwork, [in] Windows.Devices.WiFi.WiFiReconnectionKind reconnectionKind, [in] Windows.Security.Credentials.PasswordCredential* passwordCredential, [in] HSTRING ssid, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiConnectionResult*>** value);
                HRESULT Disconnect();
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiAdapter)]
            [uuid(5BC4501D-81E4-453D-9430-1FCAFBADD6B6)]
            interface IWiFiAdapter2 : IInspectable
            {
                HRESULT GetWpsConfigurationAsync([in] Windows.Devices.WiFi.WiFiAvailableNetwork* availableNetwork, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiWpsConfigurationResult*>** operation);
                [overload("ConnectAsync")] HRESULT ConnectWithPasswordCredentialAndSsidAndConnectionMethodAsync([in] Windows.Devices.WiFi.WiFiAvailableNetwork* availableNetwork, [in] Windows.Devices.WiFi.WiFiReconnectionKind reconnectionKind, [in] Windows.Security.Credentials.PasswordCredential* passwordCredential, [in] HSTRING ssid, [in] Windows.Devices.WiFi.WiFiConnectionMethod connectionMethod, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiConnectionResult*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiAdapter)]
            [uuid(DA25FDDD-D24C-43E3-AABD-C4659F730F99)]
            interface IWiFiAdapterStatics : IInspectable
            {
                HRESULT FindAllAdaptersAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFi.WiFiAdapter*>*>** value);
                HRESULT GetDeviceSelector([out] [retval] HSTRING* deviceSelector);
                [overload("FromIdAsync")] HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiAdapter*>** asyncOp);
                HRESULT RequestAccessAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiAccessStatus>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiAvailableNetwork)]
            [uuid(26E96246-183E-4704-9826-71B4A2F0F668)]
            interface IWiFiAvailableNetwork : IInspectable
            {
                [propget] HRESULT Uptime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT Ssid([out] [retval] HSTRING* value);
                [propget] HRESULT Bssid([out] [retval] HSTRING* value);
                [propget] HRESULT ChannelCenterFrequencyInKilohertz([out] [retval] INT32* value);
                [propget] HRESULT NetworkRssiInDecibelMilliwatts([out] [retval] DOUBLE* value);
                [propget] HRESULT SignalBars([out] [retval] BYTE* value);
                [propget] HRESULT NetworkKind([out] [retval] Windows.Devices.WiFi.WiFiNetworkKind* value);
                [propget] HRESULT PhyKind([out] [retval] Windows.Devices.WiFi.WiFiPhyKind* value);
                [propget] HRESULT SecuritySettings([out] [retval] Windows.Networking.Connectivity.NetworkSecuritySettings** value);
                [propget] HRESULT BeaconInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT IsWiFiDirect([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiConnectionResult)]
            [uuid(143BDFD9-C37D-40BE-A5C8-857BCE85A931)]
            interface IWiFiConnectionResult : IInspectable
            {
                [propget] HRESULT ConnectionStatus([out] [retval] Windows.Devices.WiFi.WiFiConnectionStatus* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiNetworkReport)]
            [uuid(9524DED2-5911-445E-8194-BE4F1A704895)]
            interface IWiFiNetworkReport : IInspectable
            {
                [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
                [propget] HRESULT AvailableNetworks([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFi.WiFiAvailableNetwork*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiOnDemandHotspotConnectTriggerDetails)]
            [uuid(A268EB58-68F5-59CF-8D38-35BF44B097EF)]
            interface IWiFiOnDemandHotspotConnectTriggerDetails : IInspectable
            {
                [propget] HRESULT RequestedNetwork([out] [retval] Windows.Devices.WiFi.WiFiOnDemandHotspotNetwork** value);
                HRESULT ReportError([in] Windows.Devices.WiFi.WiFiOnDemandHotspotConnectStatus status);
                HRESULT ConnectAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.WiFi.WiFiOnDemandHotspotConnectionResult*>** operation);
                HRESULT Connect([out] [retval] Windows.Devices.WiFi.WiFiOnDemandHotspotConnectionResult** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiOnDemandHotspotConnectionResult)]
            [uuid(911794A1-6C82-5DE3-8A4A-F9FF22A4957A)]
            interface IWiFiOnDemandHotspotConnectionResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Devices.WiFi.WiFiOnDemandHotspotConnectStatus* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiOnDemandHotspotNetwork)]
            [uuid(18DC7115-A04E-507C-BBAF-B78369D29FA7)]
            interface IWiFiOnDemandHotspotNetwork : IInspectable
            {
                HRESULT GetProperties([out] [retval] Windows.Devices.WiFi.WiFiOnDemandHotspotNetworkProperties** result);
                HRESULT UpdateProperties([in] Windows.Devices.WiFi.WiFiOnDemandHotspotNetworkProperties* newProperties);
                [propget] HRESULT Id([out] [retval] GUID* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiOnDemandHotspotNetworkProperties)]
            [uuid(C810A1F2-C81D-5852-BE50-E4BD4D81E98D)]
            interface IWiFiOnDemandHotspotNetworkProperties : IInspectable
            {
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayName([in] HSTRING value);
                [propget] HRESULT Availability([out] [retval] Windows.Devices.WiFi.WiFiOnDemandHotspotAvailability* value);
                [propput] HRESULT Availability([in] Windows.Devices.WiFi.WiFiOnDemandHotspotAvailability value);
                [propget] HRESULT RemainingBatteryPercent([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                [propput] HRESULT RemainingBatteryPercent([in] Windows.Foundation.IReference<UINT32>* value);
                [propget] HRESULT CellularBars([out] [retval] Windows.Foundation.IReference<Windows.Devices.WiFi.WiFiOnDemandHotspotCellularBars>** value);
                [propput] HRESULT CellularBars([in] Windows.Foundation.IReference<Windows.Devices.WiFi.WiFiOnDemandHotspotCellularBars>* value);
                [propget] HRESULT IsMetered([out] [retval] boolean* value);
                [propput] HRESULT IsMetered([in] boolean value);
                [propget] HRESULT Ssid([out] [retval] HSTRING* value);
                [propput] HRESULT Ssid([in] HSTRING value);
                [propget] HRESULT Password([out] [retval] Windows.Security.Credentials.PasswordCredential** value);
                [propput] HRESULT Password([in] Windows.Security.Credentials.PasswordCredential* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiOnDemandHotspotNetwork)]
            [uuid(00F5B8AC-80E7-5054-871C-8739F374E3C9)]
            interface IWiFiOnDemandHotspotNetworkStatics : IInspectable
            {
                HRESULT GetOrCreateById([in] GUID networkId, [out] [retval] Windows.Devices.WiFi.WiFiOnDemandHotspotNetwork** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Devices.WiFi.WiFiWpsConfigurationResult)]
            [uuid(67B49871-17EE-42D1-B14F-5A11F1226FB5)]
            interface IWiFiWpsConfigurationResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Devices.WiFi.WiFiWpsConfigurationStatus* value);
                [propget] HRESULT SupportedWpsKinds([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.WiFi.WiFiWpsKind>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.WiFi.IWiFiAdapterStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass WiFiAdapter
            {
                [default] interface Windows.Devices.WiFi.IWiFiAdapter;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Devices.WiFi.IWiFiAdapter2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiAvailableNetwork
            {
                [default] interface Windows.Devices.WiFi.IWiFiAvailableNetwork;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiConnectionResult
            {
                [default] interface Windows.Devices.WiFi.IWiFiConnectionResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiNetworkReport
            {
                [default] interface Windows.Devices.WiFi.IWiFiNetworkReport;
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiOnDemandHotspotConnectTriggerDetails
            {
                [default] interface Windows.Devices.WiFi.IWiFiOnDemandHotspotConnectTriggerDetails;
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiOnDemandHotspotConnectionResult
            {
                [default] interface Windows.Devices.WiFi.IWiFiOnDemandHotspotConnectionResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.WiFi.IWiFiOnDemandHotspotNetworkStatics, Windows.Foundation.UniversalApiContract, 15.0)]
            [threading(both)]
            runtimeclass WiFiOnDemandHotspotNetwork
            {
                [default] interface Windows.Devices.WiFi.IWiFiOnDemandHotspotNetwork;
            }

            [contract(Windows.Foundation.UniversalApiContract, 15.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiOnDemandHotspotNetworkProperties
            {
                [default] interface Windows.Devices.WiFi.IWiFiOnDemandHotspotNetworkProperties;
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            runtimeclass WiFiWpsConfigurationResult
            {
                [default] interface Windows.Devices.WiFi.IWiFiWpsConfigurationResult;
            }
        }
    }
}
