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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.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(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

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

        interface IAsyncAction;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Sms
        {
            typedef enum SmsMessageClass SmsMessageClass;

            typedef enum SmsDataFormat SmsDataFormat;

            typedef enum SmsEncoding SmsEncoding;

            typedef enum SmsMessageFilter SmsMessageFilter;

            typedef enum SmsMessageType SmsMessageType;

            typedef enum CellularClass CellularClass;

            typedef enum SmsDeviceStatus SmsDeviceStatus;

            typedef struct SmsEncodedLength SmsEncodedLength;

            delegate SmsMessageReceivedEventHandler;

            delegate SmsDeviceStatusChangedEventHandler;

            interface ISmsMessage;

            interface ISmsBinaryMessage;

            interface ISmsTextMessage;

            interface ISmsTextMessageStatics;

            interface ISmsDeviceMessageStore;

            interface ISmsMessageReceivedEventArgs;

            interface ISmsDeviceStatics;

            interface ISmsDevice;

            interface ISmsReceivedEventDetails;

            runtimeclass SmsBinaryMessage;

            runtimeclass SmsTextMessage;

            runtimeclass DeleteSmsMessageOperation;

            runtimeclass DeleteSmsMessagesOperation;

            runtimeclass GetSmsMessageOperation;

            runtimeclass GetSmsMessagesOperation;

            runtimeclass SmsDeviceMessageStore;

            runtimeclass SendSmsMessageOperation;

            runtimeclass SmsMessageReceivedEventArgs;

            runtimeclass SmsDevice;

            runtimeclass GetSmsDeviceOperation;

            runtimeclass SmsReceivedEventDetails;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Sms.ISmsMessage*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Sms.ISmsBinaryMessage*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Sms.ISmsMessage*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Sms.ISmsBinaryMessage*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Sms.ISmsMessage*>;

                interface Windows.Foundation.IAsyncOperationWithProgress<Windows.Foundation.Collections.IVectorView<Windows.Devices.Sms.ISmsMessage*>*, INT32>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Sms.ISmsMessage*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Sms.SmsDevice*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Sms
        {
            [version(0x06020000)]
            enum SmsMessageClass
            {
                None   = 0,
                Class0 = 1,
                Class1 = 2,
                Class2 = 3,
                Class3 = 4
            };

            [version(0x06020000)]
            enum SmsDataFormat
            {
                Unknown     = 0,
                CdmaSubmit  = 1,
                GsmSubmit   = 2,
                CdmaDeliver = 3,
                GsmDeliver  = 4
            };

            [version(0x06020000)]
            enum SmsEncoding
            {
                Unknown       = 0,
                Optimal       = 1,
                SevenBitAscii = 2,
                Unicode       = 3,
                GsmSevenBit   = 4
            };

            [version(0x06020000)]
            enum SmsMessageFilter
            {
                All    = 0,
                Unread = 1,
                Read   = 2,
                Sent   = 3,
                Draft  = 4
            };

            [version(0x06020000)]
            enum SmsMessageType
            {
                Binary = 0,
                Text   = 1
            };

            [version(0x06020000)]
            enum CellularClass
            {
                None = 0,
                Gsm  = 1,
                Cdma = 2
            };

            [version(0x06020000)]
            enum SmsDeviceStatus
            {
                Off                      = 0,
                Ready                    = 1,
                SimNotInserted           = 2,
                BadSim                   = 3,
                DeviceFailure            = 4,
                SubscriptionNotActivated = 5,
                DeviceLocked             = 6,
                DeviceBlocked            = 7
            };

            [version(0x06020000)]
            struct SmsEncodedLength
            {
                UINT32 SegmentCount;
                UINT32 CharacterCountLastSegment;
                UINT32 CharactersPerSegment;
                UINT32 ByteCountLastSegment;
                UINT32 BytesPerSegment;
            };

            [uuid(0B7AD409-EC2D-47CE-A253-732BEEEBCACD)]
            [version(0x06020000)]
            delegate
                HRESULT SmsMessageReceivedEventHandler([in] Windows.Devices.Sms.SmsDevice* sender, [in] Windows.Devices.Sms.SmsMessageReceivedEventArgs* e);

            [uuid(982B1162-3DD7-4618-AF89-0C272D5D06D8)]
            [version(0x06020000)]
            delegate
                HRESULT SmsDeviceStatusChangedEventHandler([in] Windows.Devices.Sms.SmsDevice* sender);

            [uuid(ED3C5E28-6984-4B07-811D-8D5906ED3CEA)]
            [version(0x06020000)]
            interface ISmsMessage : IInspectable
            {
                [propget] HRESULT Id([out] [retval] UINT32* value);
                [propget] HRESULT MessageClass([out] [retval] Windows.Devices.Sms.SmsMessageClass* value);
            }

            [uuid(5BF4E813-3B53-4C6E-B61A-D86A63755650)]
            [version(0x06020000)]
            interface ISmsBinaryMessage : IInspectable
                requires
                    Windows.Devices.Sms.ISmsMessage
            {
                [propget] HRESULT Format([out] [retval] Windows.Devices.Sms.SmsDataFormat* value);
                [propput] HRESULT Format([in] Windows.Devices.Sms.SmsDataFormat value);
                HRESULT GetData([out] UINT32* __valueSize, [out] [retval] [size_is(, *__valueSize)] BYTE** value);
                HRESULT SetData([in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value);
            }

            [uuid(D61C904C-A495-487F-9A6F-971548C5BC9F)]
            [version(0x06020000)]
            interface ISmsTextMessage : IInspectable
                requires
                    Windows.Devices.Sms.ISmsMessage
            {
                [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
                [propget] HRESULT PartReferenceId([out] [retval] UINT32* value);
                [propget] HRESULT PartNumber([out] [retval] UINT32* value);
                [propget] HRESULT PartCount([out] [retval] UINT32* value);
                [propget] HRESULT To([out] [retval] HSTRING* value);
                [propput] HRESULT To([in] HSTRING value);
                [propget] HRESULT From([out] [retval] HSTRING* value);
                [propput] HRESULT From([in] HSTRING value);
                [propget] HRESULT Body([out] [retval] HSTRING* value);
                [propput] HRESULT Body([in] HSTRING value);
                [propget] HRESULT Encoding([out] [retval] Windows.Devices.Sms.SmsEncoding* value);
                [propput] HRESULT Encoding([in] Windows.Devices.Sms.SmsEncoding value);
                HRESULT ToBinaryMessages([in] Windows.Devices.Sms.SmsDataFormat format, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Sms.ISmsBinaryMessage*>** messages);
            }

            [uuid(7F68C5ED-3CCC-47A3-8C55-380D3B010892)]
            [exclusiveto(Windows.Devices.Sms.SmsTextMessage)]
            [version(0x06020000)]
            interface ISmsTextMessageStatics : IInspectable
            {
                HRESULT FromBinaryMessage([in] Windows.Devices.Sms.SmsBinaryMessage* binaryMessage, [out] [retval] Windows.Devices.Sms.SmsTextMessage** textMessage);
                HRESULT FromBinaryData([in] Windows.Devices.Sms.SmsDataFormat format, [in] UINT32 __valueSize, [in] [size_is(__valueSize)] BYTE* value, [out] [retval] Windows.Devices.Sms.SmsTextMessage** textMessage);
            }

            [uuid(9889F253-F188-4427-8D54-CE0C2423C5C1)]
            [version(0x06020000)]
            [exclusiveto(Windows.Devices.Sms.SmsDeviceMessageStore)]
            interface ISmsDeviceMessageStore : IInspectable
            {
                HRESULT DeleteMessageAsync([in] UINT32 messageId, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT DeleteMessagesAsync([in] Windows.Devices.Sms.SmsMessageFilter messageFilter, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                HRESULT GetMessageAsync([in] UINT32 messageId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Sms.ISmsMessage*>** asyncInfo);
                HRESULT GetMessagesAsync([in] Windows.Devices.Sms.SmsMessageFilter messageFilter, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Foundation.Collections.IVectorView<Windows.Devices.Sms.ISmsMessage*>*, INT32>** asyncInfo);
                [propget] HRESULT MaxMessages([out] [retval] UINT32* value);
            }

            [uuid(08E80A98-B8E5-41C1-A3D8-D3ABFAE22675)]
            [version(0x06020000)]
            [exclusiveto(Windows.Devices.Sms.SmsMessageReceivedEventArgs)]
            interface ISmsMessageReceivedEventArgs : IInspectable
            {
                [propget] HRESULT TextMessage([out] [retval] Windows.Devices.Sms.SmsTextMessage** value);
                [propget] HRESULT BinaryMessage([out] [retval] Windows.Devices.Sms.SmsBinaryMessage** value);
            }

            [uuid(F88D07EA-D815-4DD1-A234-4520CE4604A4)]
            [version(0x06020000)]
            [exclusiveto(Windows.Devices.Sms.SmsDevice)]
            interface ISmsDeviceStatics : IInspectable
            {
                HRESULT GetDeviceSelector([out] [retval] HSTRING* phstrDeviceClassSelector);
                HRESULT FromIdAsync([in] HSTRING deviceInstanceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Sms.SmsDevice*>** asyncInfo);
                HRESULT GetDefaultAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Sms.SmsDevice*>** asyncInfo);
            }

            [uuid(091791ED-872B-4EEC-9C72-AB11627B34EC)]
            [version(0x06020000)]
            interface ISmsDevice : IInspectable
            {
                HRESULT SendMessageAsync([in] Windows.Devices.Sms.ISmsMessage* message, [out] [retval] Windows.Devices.Sms.SendSmsMessageOperation** asyncInfo);
                HRESULT CalculateLength([in] Windows.Devices.Sms.SmsTextMessage* message, [out] [retval] Windows.Devices.Sms.SmsEncodedLength* encodedLength);
                [propget] HRESULT AccountPhoneNumber([out] [retval] HSTRING* value);
                [propget] HRESULT CellularClass([out] [retval] Windows.Devices.Sms.CellularClass* value);
                [propget] HRESULT MessageStore([out] [retval] Windows.Devices.Sms.SmsDeviceMessageStore** value);
                [propget] HRESULT DeviceStatus([out] [retval] Windows.Devices.Sms.SmsDeviceStatus* value);
                [eventadd] HRESULT SmsMessageReceived([in] Windows.Devices.Sms.SmsMessageReceivedEventHandler* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT SmsMessageReceived([in] EventRegistrationToken eventCookie);
                [eventadd] HRESULT SmsDeviceStatusChanged([in] Windows.Devices.Sms.SmsDeviceStatusChangedEventHandler* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT SmsDeviceStatusChanged([in] EventRegistrationToken eventCookie);
            }

            [uuid(5BB50F15-E46D-4C82-847D-5A0304C1D53D)]
            [exclusiveto(Windows.Devices.Sms.SmsReceivedEventDetails)]
            [version(0x06020000)]
            interface ISmsReceivedEventDetails : IInspectable
            {
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT MessageIndex([out] [retval] UINT32* value);
            }

            [activatable(0x06020000)]
            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass SmsBinaryMessage
            {
                [default] interface Windows.Devices.Sms.ISmsBinaryMessage;
                interface Windows.Devices.Sms.ISmsMessage;
            }

            [marshaling_behavior(agile)]
            [activatable(0x06020000)]
            [threading(both)]
            [version(0x06020000)]
            [static(Windows.Devices.Sms.ISmsTextMessageStatics, 0x06020000)]
            runtimeclass SmsTextMessage
            {
                [default] interface Windows.Devices.Sms.ISmsTextMessage;
                interface Windows.Devices.Sms.ISmsMessage;
            }

            [version(0x06020000)]
            runtimeclass DeleteSmsMessageOperation
            {
                [default] interface Windows.Foundation.IAsyncAction;
            }

            [version(0x06020000)]
            runtimeclass DeleteSmsMessagesOperation
            {
                [default] interface Windows.Foundation.IAsyncAction;
            }

            [version(0x06020000)]
            runtimeclass GetSmsMessageOperation
            {
                [default] interface Windows.Foundation.IAsyncOperation<Windows.Devices.Sms.ISmsMessage*>;
            }

            [version(0x06020000)]
            runtimeclass GetSmsMessagesOperation
            {
                [default] interface Windows.Foundation.IAsyncOperationWithProgress<Windows.Foundation.Collections.IVectorView<Windows.Devices.Sms.ISmsMessage*>*, INT32>;
            }

            [version(0x06020000)]
            runtimeclass SmsDeviceMessageStore
            {
                [default] interface Windows.Devices.Sms.ISmsDeviceMessageStore;
            }

            [version(0x06020000)]
            runtimeclass SendSmsMessageOperation
            {
                [default] interface Windows.Foundation.IAsyncAction;
            }

            [version(0x06020000)]
            runtimeclass SmsMessageReceivedEventArgs
            {
                [default] interface Windows.Devices.Sms.ISmsMessageReceivedEventArgs;
            }

            [static(Windows.Devices.Sms.ISmsDeviceStatics, 0x06020000)]
            [version(0x06020000)]
            [threading(both)]
            runtimeclass SmsDevice
            {
                [default] interface Windows.Devices.Sms.ISmsDevice;
            }

            [version(0x06020000)]
            runtimeclass GetSmsDeviceOperation
            {
                [default] interface Windows.Foundation.IAsyncOperation<Windows.Devices.Sms.SmsDevice*>;
            }

            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass SmsReceivedEventDetails
            {
                [default] interface Windows.Devices.Sms.ISmsReceivedEventDetails;
            }
        }
    }
}
