//
// 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.Devices.Geolocation.idl";
import "Windows.Globalization.idl";
import "Windows.Services.Maps.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Geolocation
        {
            runtimeclass Geocircle;

            runtimeclass Geopoint;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace Globalization
    {
        typedef enum DayOfWeek DayOfWeek;
    }
}
namespace Windows
{
    namespace Services
    {
        namespace Maps
        {
            apicontract LocalSearchContract;

            runtimeclass MapAddress;

            runtimeclass PlaceInfo;
        }
    }
}
namespace Windows
{
    namespace Services
    {
        namespace Maps
        {
            namespace LocalSearch
            {
                typedef enum LocalLocationFinderStatus LocalLocationFinderStatus;

                interface ILocalCategoriesStatics;

                interface ILocalLocation;

                interface ILocalLocation2;

                interface ILocalLocationFinderResult;

                interface ILocalLocationFinderStatics;

                interface ILocalLocationHoursOfOperationItem;

                interface ILocalLocationRatingInfo;

                interface IPlaceInfoHelperStatics;

                runtimeclass LocalCategories;

                runtimeclass LocalLocation;

                runtimeclass LocalLocationFinder;

                runtimeclass LocalLocationFinderResult;

                runtimeclass LocalLocationHoursOfOperationItem;

                runtimeclass LocalLocationRatingInfo;

                runtimeclass PlaceInfoHelper;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Services
    {
        namespace Maps
        {
            namespace LocalSearch
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.LocalSearch.LocalLocation*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Services.Maps.LocalSearch.LocalLocationHoursOfOperationItem*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.LocalSearch.LocalLocation*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Services.Maps.LocalSearch.LocalLocationHoursOfOperationItem*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.LocalSearch.LocalLocation*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.LocalSearch.LocalLocationHoursOfOperationItem*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Services.Maps.LocalSearch.LocalLocationFinderResult*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Services
    {
        namespace Maps
        {
            namespace LocalSearch
            {
                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                enum LocalLocationFinderStatus
                {
                    Success            = 0,
                    UnknownError       = 1,
                    InvalidCredentials = 2,
                    InvalidCategory    = 3,
                    InvalidSearchTerm  = 4,
                    InvalidSearchArea  = 5,
                    NetworkFailure     = 6,
                    NotSupported       = 7
                };

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.LocalCategories)]
                [uuid(F49399F5-8261-4321-9974-EF92D49A8DCA)]
                interface ILocalCategoriesStatics : IInspectable
                {
                    [propget] HRESULT BankAndCreditUnions([out] [retval] HSTRING* value);
                    [propget] HRESULT EatDrink([out] [retval] HSTRING* value);
                    [propget] HRESULT Hospitals([out] [retval] HSTRING* value);
                    [propget] HRESULT HotelsAndMotels([out] [retval] HSTRING* value);
                    [propget] HRESULT All([out] [retval] HSTRING* value);
                    [propget] HRESULT Parking([out] [retval] HSTRING* value);
                    [propget] HRESULT SeeDo([out] [retval] HSTRING* value);
                    [propget] HRESULT Shop([out] [retval] HSTRING* value);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.LocalLocation)]
                [uuid(BB0FE9AB-4502-4F2C-94A9-0D60DE0E2163)]
                interface ILocalLocation : IInspectable
                {
                    [propget] HRESULT Address([out] [retval] Windows.Services.Maps.MapAddress** value);
                    [propget] HRESULT Identifier([out] [retval] HSTRING* value);
                    [propget] HRESULT Description([out] [retval] HSTRING* value);
                    [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                    [propget] HRESULT Point([out] [retval] Windows.Devices.Geolocation.Geopoint** value);
                    [propget] HRESULT PhoneNumber([out] [retval] HSTRING* value);
                    [propget] HRESULT DataAttribution([out] [retval] HSTRING* value);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 3.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.LocalLocation)]
                [uuid(6E9E307C-ECB5-4FFC-BB8C-BA50BA8C2DC6)]
                interface ILocalLocation2 : IInspectable
                {
                    [propget] HRESULT Category([out] [retval] HSTRING* value);
                    [propget] HRESULT RatingInfo([out] [retval] Windows.Services.Maps.LocalSearch.LocalLocationRatingInfo** value);
                    [propget] HRESULT HoursOfOperation([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.LocalSearch.LocalLocationHoursOfOperationItem*>** value);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.LocalLocationFinderResult)]
                [uuid(D09B6CC6-F338-4191-9FD8-5440B9A68F52)]
                interface ILocalLocationFinderResult : IInspectable
                {
                    [propget] HRESULT LocalLocations([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.Maps.LocalSearch.LocalLocation*>** value);
                    [propget] HRESULT Status([out] [retval] Windows.Services.Maps.LocalSearch.LocalLocationFinderStatus* value);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.LocalLocationFinder)]
                [uuid(D2EF7344-A0DE-48CA-81A8-07C7DCFD37AB)]
                interface ILocalLocationFinderStatics : IInspectable
                {
                    HRESULT FindLocalLocationsAsync([in] HSTRING searchTerm, [in] Windows.Devices.Geolocation.Geocircle* searchArea, [in] HSTRING localCategory, [in] UINT32 maxResults, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.Maps.LocalSearch.LocalLocationFinderResult*>** result);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 3.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.LocalLocationHoursOfOperationItem)]
                [uuid(23548C72-A1C7-43F1-A4F0-1091C39EC640)]
                interface ILocalLocationHoursOfOperationItem : IInspectable
                {
                    [propget] HRESULT Day([out] [retval] Windows.Globalization.DayOfWeek* value);
                    [propget] HRESULT Start([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propget] HRESULT Span([out] [retval] Windows.Foundation.TimeSpan* value);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 3.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.LocalLocationRatingInfo)]
                [uuid(CB1DAB56-3354-4311-8BC0-A2D4D5EB806E)]
                interface ILocalLocationRatingInfo : IInspectable
                {
                    [propget] HRESULT AggregateRating([out] [retval] Windows.Foundation.IReference<DOUBLE>** value);
                    [propget] HRESULT RatingCount([out] [retval] Windows.Foundation.IReference<INT32>** value);
                    [propget] HRESULT ProviderIdentifier([out] [retval] HSTRING* value);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 4.0)]
                [exclusiveto(Windows.Services.Maps.LocalSearch.PlaceInfoHelper)]
                [uuid(DD1CA9A7-A9C6-491B-BC09-E80FCEA48EE6)]
                interface IPlaceInfoHelperStatics : IInspectable
                {
                    HRESULT CreateFromLocalLocation([in] Windows.Services.Maps.LocalSearch.LocalLocation* location, [out] [retval] Windows.Services.Maps.PlaceInfo** resultValue);
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Services.Maps.LocalSearch.ILocalCategoriesStatics, Windows.Services.Maps.LocalSearchContract, 1.0)]
                [threading(both)]
                runtimeclass LocalCategories
                {
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LocalLocation
                {
                    [default] interface Windows.Services.Maps.LocalSearch.ILocalLocation;
                    [contract(Windows.Services.Maps.LocalSearchContract, 3.0)] interface Windows.Services.Maps.LocalSearch.ILocalLocation2;
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Services.Maps.LocalSearch.ILocalLocationFinderStatics, Windows.Services.Maps.LocalSearchContract, 1.0)]
                [threading(both)]
                runtimeclass LocalLocationFinder
                {
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LocalLocationFinderResult
                {
                    [default] interface Windows.Services.Maps.LocalSearch.ILocalLocationFinderResult;
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LocalLocationHoursOfOperationItem
                {
                    [default] interface Windows.Services.Maps.LocalSearch.ILocalLocationHoursOfOperationItem;
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LocalLocationRatingInfo
                {
                    [default] interface Windows.Services.Maps.LocalSearch.ILocalLocationRatingInfo;
                }

                [contract(Windows.Services.Maps.LocalSearchContract, 4.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Services.Maps.LocalSearch.IPlaceInfoHelperStatics, Windows.Services.Maps.LocalSearchContract, 4.0)]
                [threading(both)]
                runtimeclass PlaceInfoHelper
                {
                }
            }
        }
    }
}
