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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.UI.Popups.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Eui2Epopups_h__)")
cpp_quote("#include <Windows.UI.Popups.h>")
cpp_quote("#endif // !defined(__windows2Eui2Epopups_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

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

        interface IAsyncAction;

        typedef struct Rect Rect;

        typedef struct TimeSpan TimeSpan;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Popups
        {
            typedef enum Placement Placement;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Appointments
        {
            typedef enum AppointmentSensitivity AppointmentSensitivity;

            typedef enum AppointmentBusyStatus AppointmentBusyStatus;

            typedef enum AppointmentParticipantResponse AppointmentParticipantResponse;

            typedef enum AppointmentParticipantRole AppointmentParticipantRole;

            typedef enum AppointmentRecurrenceUnit AppointmentRecurrenceUnit;

            typedef enum AppointmentDaysOfWeek AppointmentDaysOfWeek;

            typedef enum AppointmentWeekOfMonth AppointmentWeekOfMonth;

            interface IAppointmentManagerStatics;

            interface IAppointmentParticipant;

            interface IAppointmentInvitee;

            interface IAppointmentRecurrence;

            interface IAppointment;

            runtimeclass Appointment;

            runtimeclass AppointmentOrganizer;

            runtimeclass AppointmentInvitee;

            runtimeclass AppointmentRecurrence;

            runtimeclass AppointmentManager;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Appointments
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Appointments.AppointmentInvitee*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Appointments.AppointmentInvitee*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Appointments.AppointmentInvitee*>;

                interface Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Appointments.AppointmentInvitee*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Appointments
        {
            [version(0x06030000)]
            enum AppointmentSensitivity
            {
                Public  = 0,
                Private = 1
            };

            [version(0x06030000)]
            enum AppointmentBusyStatus
            {
                Busy             = 0,
                Tentative        = 1,
                Free             = 2,
                OutOfOffice      = 3,
                WorkingElsewhere = 4
            };

            [version(0x06030000)]
            enum AppointmentParticipantResponse
            {
                None      = 0,
                Tentative = 1,
                Accepted  = 2,
                Declined  = 3,
                Unknown   = 4
            };

            [version(0x06030000)]
            enum AppointmentParticipantRole
            {
                RequiredAttendee = 0,
                OptionalAttendee = 1,
                Resource         = 2
            };

            [version(0x06030000)]
            enum AppointmentRecurrenceUnit
            {
                Daily        = 0,
                Weekly       = 1,
                Monthly      = 2,
                MonthlyOnDay = 3,
                Yearly       = 4,
                YearlyOnDay  = 5
            };

            [flags]
            [version(0x06030000)]
            enum AppointmentDaysOfWeek
            {
                None      = 0x0,
                Sunday    = 0x1,
                Monday    = 0x2,
                Tuesday   = 0x4,
                Wednesday = 0x8,
                Thursday  = 0x10,
                Friday    = 0x20,
                Saturday  = 0x40
            };

            [version(0x06030000)]
            enum AppointmentWeekOfMonth
            {
                First  = 0,
                Second = 1,
                Third  = 2,
                Fourth = 3,
                Last   = 4
            };

            [exclusiveto(Windows.ApplicationModel.Appointments.AppointmentManager)]
            [uuid(3A30FA01-5C40-499D-B33F-A43050F74FC4)]
            [version(0x06030000)]
            interface IAppointmentManagerStatics : IInspectable
            {
                [overload("ShowAddAppointmentAsync")] HRESULT ShowAddAppointmentAsync([in] Windows.ApplicationModel.Appointments.Appointment* appointment, [in] Windows.Foundation.Rect selection, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                [overload("ShowAddAppointmentAsync")] HRESULT ShowAddAppointmentWithPlacementAsync([in] Windows.ApplicationModel.Appointments.Appointment* appointment, [in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement preferredPlacement, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                [overload("ShowReplaceAppointmentAsync")] HRESULT ShowReplaceAppointmentAsync([in] HSTRING appointmentId, [in] Windows.ApplicationModel.Appointments.Appointment* appointment, [in] Windows.Foundation.Rect selection, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                [overload("ShowReplaceAppointmentAsync")] HRESULT ShowReplaceAppointmentWithPlacementAsync([in] HSTRING appointmentId, [in] Windows.ApplicationModel.Appointments.Appointment* appointment, [in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement preferredPlacement, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                [overload("ShowReplaceAppointmentAsync")] HRESULT ShowReplaceAppointmentWithPlacementAndDateAsync([in] HSTRING appointmentId, [in] Windows.ApplicationModel.Appointments.Appointment* appointment, [in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement preferredPlacement, [in] Windows.Foundation.DateTime instanceStartDate, [out] [retval] Windows.Foundation.IAsyncOperation<HSTRING>** operation);
                [overload("ShowRemoveAppointmentAsync")] HRESULT ShowRemoveAppointmentAsync([in] HSTRING appointmentId, [in] Windows.Foundation.Rect selection, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                [overload("ShowRemoveAppointmentAsync")] HRESULT ShowRemoveAppointmentWithPlacementAsync([in] HSTRING appointmentId, [in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement preferredPlacement, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                [overload("ShowRemoveAppointmentAsync")] HRESULT ShowRemoveAppointmentWithPlacementAndDateAsync([in] HSTRING appointmentId, [in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement preferredPlacement, [in] Windows.Foundation.DateTime instanceStartDate, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                HRESULT ShowTimeFrameAsync([in] Windows.Foundation.DateTime timeToShow, [in] Windows.Foundation.TimeSpan duration, [out] [retval] Windows.Foundation.IAsyncAction** asyncAction);
            }

            [uuid(615E2902-9718-467B-83FB-B293A19121DE)]
            [version(0x06030000)]
            interface IAppointmentParticipant : IInspectable
            {
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayName([in] HSTRING value);
                [propget] HRESULT Address([out] [retval] HSTRING* value);
                [propput] HRESULT Address([in] HSTRING value);
            }

            [exclusiveto(Windows.ApplicationModel.Appointments.AppointmentInvitee)]
            [uuid(13BF0796-9842-495B-B0E7-EF8F79C0701D)]
            [version(0x06030000)]
            interface IAppointmentInvitee : IInspectable
                requires
                    Windows.ApplicationModel.Appointments.IAppointmentParticipant
            {
                [propget] HRESULT Role([out] [retval] Windows.ApplicationModel.Appointments.AppointmentParticipantRole* value);
                [propput] HRESULT Role([in] Windows.ApplicationModel.Appointments.AppointmentParticipantRole value);
                [propget] HRESULT Response([out] [retval] Windows.ApplicationModel.Appointments.AppointmentParticipantResponse* value);
                [propput] HRESULT Response([in] Windows.ApplicationModel.Appointments.AppointmentParticipantResponse value);
            }

            [exclusiveto(Windows.ApplicationModel.Appointments.AppointmentRecurrence)]
            [uuid(D87B3E83-15A6-487B-B959-0C361E60E954)]
            [version(0x06030000)]
            interface IAppointmentRecurrence : IInspectable
            {
                [propget] HRESULT Unit([out] [retval] Windows.ApplicationModel.Appointments.AppointmentRecurrenceUnit* value);
                [propput] HRESULT Unit([in] Windows.ApplicationModel.Appointments.AppointmentRecurrenceUnit value);
                [propget] HRESULT Occurrences([out] [retval] Windows.Foundation.IReference<UINT32>** value);
                [propput] HRESULT Occurrences([in] Windows.Foundation.IReference<UINT32>* value);
                [propget] HRESULT Until([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                [propput] HRESULT Until([in] Windows.Foundation.IReference<Windows.Foundation.DateTime>* value);
                [propget] HRESULT Interval([out] [retval] UINT32* value);
                [propput] HRESULT Interval([in] UINT32 value);
                [propget] HRESULT DaysOfWeek([out] [retval] Windows.ApplicationModel.Appointments.AppointmentDaysOfWeek* value);
                [propput] HRESULT DaysOfWeek([in] Windows.ApplicationModel.Appointments.AppointmentDaysOfWeek value);
                [propget] HRESULT WeekOfMonth([out] [retval] Windows.ApplicationModel.Appointments.AppointmentWeekOfMonth* value);
                [propput] HRESULT WeekOfMonth([in] Windows.ApplicationModel.Appointments.AppointmentWeekOfMonth value);
                [propget] HRESULT Month([out] [retval] UINT32* value);
                [propput] HRESULT Month([in] UINT32 value);
                [propget] HRESULT Day([out] [retval] UINT32* value);
                [propput] HRESULT Day([in] UINT32 value);
            }

            [exclusiveto(Windows.ApplicationModel.Appointments.Appointment)]
            [uuid(DD002F2F-2BDD-4076-90A3-22C275312965)]
            [version(0x06030000)]
            interface IAppointment : IInspectable
            {
                [propget] HRESULT StartTime([out] [retval] Windows.Foundation.DateTime* value);
                [propput] HRESULT StartTime([in] Windows.Foundation.DateTime value);
                [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT Duration([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT Location([out] [retval] HSTRING* value);
                [propput] HRESULT Location([in] HSTRING value);
                [propget] HRESULT Subject([out] [retval] HSTRING* value);
                [propput] HRESULT Subject([in] HSTRING value);
                [propget] HRESULT Details([out] [retval] HSTRING* value);
                [propput] HRESULT Details([in] HSTRING value);
                [propget] HRESULT Reminder([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT Reminder([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
                [propget] HRESULT Organizer([out] [retval] Windows.ApplicationModel.Appointments.AppointmentOrganizer** value);
                [propput] HRESULT Organizer([in] Windows.ApplicationModel.Appointments.AppointmentOrganizer* value);
                [propget] HRESULT Invitees([out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Appointments.AppointmentInvitee*>** value);
                [propget] HRESULT Recurrence([out] [retval] Windows.ApplicationModel.Appointments.AppointmentRecurrence** value);
                [propput] HRESULT Recurrence([in] Windows.ApplicationModel.Appointments.AppointmentRecurrence* value);
                [propget] HRESULT BusyStatus([out] [retval] Windows.ApplicationModel.Appointments.AppointmentBusyStatus* value);
                [propput] HRESULT BusyStatus([in] Windows.ApplicationModel.Appointments.AppointmentBusyStatus value);
                [propget] HRESULT AllDay([out] [retval] boolean* value);
                [propput] HRESULT AllDay([in] boolean value);
                [propget] HRESULT Sensitivity([out] [retval] Windows.ApplicationModel.Appointments.AppointmentSensitivity* value);
                [propput] HRESULT Sensitivity([in] Windows.ApplicationModel.Appointments.AppointmentSensitivity value);
                [propget] HRESULT Uri([out] [retval] Windows.Foundation.Uri** value);
                [propput] HRESULT Uri([in] Windows.Foundation.Uri* value);
            }

            [activatable(0x06030000)]
            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass Appointment
            {
                [default] interface Windows.ApplicationModel.Appointments.IAppointment;
            }

            [activatable(0x06030000)]
            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass AppointmentOrganizer
            {
                [default] interface Windows.ApplicationModel.Appointments.IAppointmentParticipant;
            }

            [activatable(0x06030000)]
            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass AppointmentInvitee
            {
                [default] interface Windows.ApplicationModel.Appointments.IAppointmentInvitee;
                interface Windows.ApplicationModel.Appointments.IAppointmentParticipant;
            }

            [activatable(0x06030000)]
            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass AppointmentRecurrence
            {
                [default] interface Windows.ApplicationModel.Appointments.IAppointmentRecurrence;
            }

            [marshaling_behavior(standard)]
            [static(Windows.ApplicationModel.Appointments.IAppointmentManagerStatics, 0x06030000)]
            [version(0x06030000)]
            runtimeclass AppointmentManager
            {
            }
        }
    }
}
