//
// 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";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            runtimeclass ValueSet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Payments
        {
            typedef enum PaymentCanMakePaymentResultStatus PaymentCanMakePaymentResultStatus;

            typedef enum PaymentOptionPresence PaymentOptionPresence;

            typedef enum PaymentRequestChangeKind PaymentRequestChangeKind;

            typedef enum PaymentRequestCompletionStatus PaymentRequestCompletionStatus;

            typedef enum PaymentRequestStatus PaymentRequestStatus;

            typedef enum PaymentShippingType PaymentShippingType;

            delegate PaymentRequestChangedHandler;

            interface IPaymentAddress;

            interface IPaymentCanMakePaymentResult;

            interface IPaymentCanMakePaymentResultFactory;

            interface IPaymentCurrencyAmount;

            interface IPaymentCurrencyAmountFactory;

            interface IPaymentDetails;

            interface IPaymentDetailsFactory;

            interface IPaymentDetailsModifier;

            interface IPaymentDetailsModifierFactory;

            interface IPaymentItem;

            interface IPaymentItemFactory;

            interface IPaymentMediator;

            interface IPaymentMediator2;

            interface IPaymentMerchantInfo;

            interface IPaymentMerchantInfoFactory;

            interface IPaymentMethodData;

            interface IPaymentMethodDataFactory;

            interface IPaymentOptions;

            interface IPaymentRequest;

            interface IPaymentRequest2;

            interface IPaymentRequestChangedArgs;

            interface IPaymentRequestChangedResult;

            interface IPaymentRequestChangedResultFactory;

            interface IPaymentRequestFactory;

            interface IPaymentRequestFactory2;

            interface IPaymentRequestSubmitResult;

            interface IPaymentResponse;

            interface IPaymentShippingOption;

            interface IPaymentShippingOptionFactory;

            interface IPaymentToken;

            interface IPaymentTokenFactory;

            runtimeclass PaymentAddress;

            runtimeclass PaymentCanMakePaymentResult;

            runtimeclass PaymentCurrencyAmount;

            runtimeclass PaymentDetails;

            runtimeclass PaymentDetailsModifier;

            runtimeclass PaymentItem;

            runtimeclass PaymentMediator;

            runtimeclass PaymentMerchantInfo;

            runtimeclass PaymentMethodData;

            runtimeclass PaymentOptions;

            runtimeclass PaymentRequest;

            runtimeclass PaymentRequestChangedArgs;

            runtimeclass PaymentRequestChangedResult;

            runtimeclass PaymentRequestSubmitResult;

            runtimeclass PaymentResponse;

            runtimeclass PaymentShippingOption;

            runtimeclass PaymentToken;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentItem*>;

                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentMethodData*>;

                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentShippingOption*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Payments.PaymentDetailsModifier*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Payments.PaymentItem*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Payments.PaymentMethodData*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Payments.PaymentShippingOption*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentDetailsModifier*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentItem*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentMethodData*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentShippingOption*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Payments.PaymentCanMakePaymentResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Payments.PaymentRequestChangedResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Payments.PaymentRequestSubmitResult*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Payments
        {
            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            enum PaymentCanMakePaymentResultStatus
            {
                Unknown                               = 0,
                Yes                                   = 1,
                No                                    = 2,
                NotAllowed                            = 3,
                UserNotSignedIn                       = 4,
                SpecifiedPaymentMethodIdsNotSupported = 5,
                NoQualifyingCardOnFile                = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum PaymentOptionPresence
            {
                None     = 0,
                Optional = 1,
                Required = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum PaymentRequestChangeKind
            {
                ShippingOption  = 0,
                ShippingAddress = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum PaymentRequestCompletionStatus
            {
                Succeeded = 0,
                Failed    = 1,
                Unknown   = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum PaymentRequestStatus
            {
                Succeeded = 0,
                Failed    = 1,
                Canceled  = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum PaymentShippingType
            {
                Shipping = 0,
                Delivery = 1,
                Pickup   = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [uuid(5078B9E1-F398-4F2C-A27E-94D371CF6C7D)]
            delegate
                HRESULT PaymentRequestChangedHandler([in] Windows.ApplicationModel.Payments.PaymentRequest* paymentRequest, [in] Windows.ApplicationModel.Payments.PaymentRequestChangedArgs* args);

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentAddress)]
            [uuid(5F2264E9-6F3A-4166-A018-0A0B06BB32B5)]
            interface IPaymentAddress : IInspectable
            {
                [propget] HRESULT Country([out] [retval] HSTRING* value);
                [propput] HRESULT Country([in] HSTRING value);
                [propget] HRESULT AddressLines([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propput] HRESULT AddressLines([in] Windows.Foundation.Collections.IVectorView<HSTRING>* value);
                [propget] HRESULT Region([out] [retval] HSTRING* value);
                [propput] HRESULT Region([in] HSTRING value);
                [propget] HRESULT City([out] [retval] HSTRING* value);
                [propput] HRESULT City([in] HSTRING value);
                [propget] HRESULT DependentLocality([out] [retval] HSTRING* value);
                [propput] HRESULT DependentLocality([in] HSTRING value);
                [propget] HRESULT PostalCode([out] [retval] HSTRING* value);
                [propput] HRESULT PostalCode([in] HSTRING value);
                [propget] HRESULT SortingCode([out] [retval] HSTRING* value);
                [propput] HRESULT SortingCode([in] HSTRING value);
                [propget] HRESULT LanguageCode([out] [retval] HSTRING* value);
                [propput] HRESULT LanguageCode([in] HSTRING value);
                [propget] HRESULT Organization([out] [retval] HSTRING* value);
                [propput] HRESULT Organization([in] HSTRING value);
                [propget] HRESULT Recipient([out] [retval] HSTRING* value);
                [propput] HRESULT Recipient([in] HSTRING value);
                [propget] HRESULT PhoneNumber([out] [retval] HSTRING* value);
                [propput] HRESULT PhoneNumber([in] HSTRING value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.ValueSet** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentCanMakePaymentResult)]
            [uuid(7696FE55-D5D3-4D3D-B345-45591759C510)]
            interface IPaymentCanMakePaymentResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.ApplicationModel.Payments.PaymentCanMakePaymentResultStatus* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentCanMakePaymentResult)]
            [uuid(BBDCAA3E-7D49-4F69-AA53-2A0F8164B7C9)]
            interface IPaymentCanMakePaymentResultFactory : IInspectable
            {
                HRESULT Create([in] Windows.ApplicationModel.Payments.PaymentCanMakePaymentResultStatus value, [out] [retval] Windows.ApplicationModel.Payments.PaymentCanMakePaymentResult** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentCurrencyAmount)]
            [uuid(E3A3E9E0-B41F-4987-BDCB-071331F2DAA4)]
            interface IPaymentCurrencyAmount : IInspectable
            {
                [propget] HRESULT Currency([out] [retval] HSTRING* value);
                [propput] HRESULT Currency([in] HSTRING value);
                [propget] HRESULT CurrencySystem([out] [retval] HSTRING* value);
                [propput] HRESULT CurrencySystem([in] HSTRING value);
                [propget] HRESULT Value([out] [retval] HSTRING* value);
                [propput] HRESULT Value([in] HSTRING value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentCurrencyAmount)]
            [uuid(3257D338-140C-4575-8535-F773178C09A7)]
            interface IPaymentCurrencyAmountFactory : IInspectable
            {
                HRESULT Create([in] HSTRING value, [in] HSTRING currency, [out] [retval] Windows.ApplicationModel.Payments.PaymentCurrencyAmount** result);
                HRESULT CreateWithCurrencySystem([in] HSTRING value, [in] HSTRING currency, [in] HSTRING currencySystem, [out] [retval] Windows.ApplicationModel.Payments.PaymentCurrencyAmount** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentDetails)]
            [uuid(53BB2D7D-E0EB-4053-8EAE-CE7C48E02945)]
            interface IPaymentDetails : IInspectable
            {
                [propget] HRESULT Total([out] [retval] Windows.ApplicationModel.Payments.PaymentItem** value);
                [propput] HRESULT Total([in] Windows.ApplicationModel.Payments.PaymentItem* value);
                [propget] HRESULT DisplayItems([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentItem*>** value);
                [propput] HRESULT DisplayItems([in] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentItem*>* value);
                [propget] HRESULT ShippingOptions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentShippingOption*>** value);
                [propput] HRESULT ShippingOptions([in] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentShippingOption*>* value);
                [propget] HRESULT Modifiers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentDetailsModifier*>** value);
                [propput] HRESULT Modifiers([in] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentDetailsModifier*>* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentDetails)]
            [uuid(CFE8AFEE-C0EA-4CA1-8BC7-6DE67B1F3763)]
            interface IPaymentDetailsFactory : IInspectable
            {
                HRESULT Create([in] Windows.ApplicationModel.Payments.PaymentItem* total, [out] [retval] Windows.ApplicationModel.Payments.PaymentDetails** result);
                HRESULT CreateWithDisplayItems([in] Windows.ApplicationModel.Payments.PaymentItem* total, [in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentItem*>* displayItems, [out] [retval] Windows.ApplicationModel.Payments.PaymentDetails** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentDetailsModifier)]
            [uuid(BE1C7D65-4323-41D7-B305-DFCB765F69DE)]
            interface IPaymentDetailsModifier : IInspectable
            {
                [propget] HRESULT JsonData([out] [retval] HSTRING* value);
                [propget] HRESULT SupportedMethodIds([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT Total([out] [retval] Windows.ApplicationModel.Payments.PaymentItem** value);
                [propget] HRESULT AdditionalDisplayItems([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentItem*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentDetailsModifier)]
            [uuid(79005286-54DE-429C-9E4F-5DCE6E10EBCE)]
            interface IPaymentDetailsModifierFactory : IInspectable
            {
                HRESULT Create([in] Windows.Foundation.Collections.IIterable<HSTRING>* supportedMethodIds, [in] Windows.ApplicationModel.Payments.PaymentItem* total, [out] [retval] Windows.ApplicationModel.Payments.PaymentDetailsModifier** result);
                HRESULT CreateWithAdditionalDisplayItems([in] Windows.Foundation.Collections.IIterable<HSTRING>* supportedMethodIds, [in] Windows.ApplicationModel.Payments.PaymentItem* total, [in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentItem*>* additionalDisplayItems, [out] [retval] Windows.ApplicationModel.Payments.PaymentDetailsModifier** result);
                HRESULT CreateWithAdditionalDisplayItemsAndJsonData([in] Windows.Foundation.Collections.IIterable<HSTRING>* supportedMethodIds, [in] Windows.ApplicationModel.Payments.PaymentItem* total, [in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentItem*>* additionalDisplayItems, [in] HSTRING jsonData, [out] [retval] Windows.ApplicationModel.Payments.PaymentDetailsModifier** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentItem)]
            [uuid(685AC88B-79B2-4B76-9E03-A876223DFE72)]
            interface IPaymentItem : IInspectable
            {
                [propget] HRESULT Label([out] [retval] HSTRING* value);
                [propput] HRESULT Label([in] HSTRING value);
                [propget] HRESULT Amount([out] [retval] Windows.ApplicationModel.Payments.PaymentCurrencyAmount** value);
                [propput] HRESULT Amount([in] Windows.ApplicationModel.Payments.PaymentCurrencyAmount* value);
                [propget] HRESULT Pending([out] [retval] boolean* value);
                [propput] HRESULT Pending([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentItem)]
            [uuid(C6AB7AD8-2503-4D1D-A778-02B2E5927B2C)]
            interface IPaymentItemFactory : IInspectable
            {
                HRESULT Create([in] HSTRING label, [in] Windows.ApplicationModel.Payments.PaymentCurrencyAmount* amount, [out] [retval] Windows.ApplicationModel.Payments.PaymentItem** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentMediator)]
            [uuid(FB0EE829-EC0C-449A-83DA-7AE3073365A2)]
            interface IPaymentMediator : IInspectable
            {
                HRESULT GetSupportedMethodIdsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<HSTRING>*>** result);
                [overload("SubmitPaymentRequestAsync")] HRESULT SubmitPaymentRequestAsync([in] Windows.ApplicationModel.Payments.PaymentRequest* paymentRequest, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Payments.PaymentRequestSubmitResult*>** result);
                [overload("SubmitPaymentRequestAsync")] HRESULT SubmitPaymentRequestWithChangeHandlerAsync([in] Windows.ApplicationModel.Payments.PaymentRequest* paymentRequest, [in] Windows.ApplicationModel.Payments.PaymentRequestChangedHandler* changeHandler, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Payments.PaymentRequestSubmitResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentMediator)]
            [uuid(CEEF98F1-E407-4128-8E73-D93D5F822786)]
            interface IPaymentMediator2 : IInspectable
            {
                HRESULT CanMakePaymentAsync([in] Windows.ApplicationModel.Payments.PaymentRequest* paymentRequest, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Payments.PaymentCanMakePaymentResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentMerchantInfo)]
            [uuid(63445050-0E94-4ED6-AACB-E6012BD327A7)]
            interface IPaymentMerchantInfo : IInspectable
            {
                [propget] HRESULT PackageFullName([out] [retval] HSTRING* value);
                [propget] HRESULT Uri([out] [retval] Windows.Foundation.Uri** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentMerchantInfo)]
            [uuid(9E89CED3-CCB7-4167-A8EC-E10AE96DBCD1)]
            interface IPaymentMerchantInfoFactory : IInspectable
            {
                HRESULT Create([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.ApplicationModel.Payments.PaymentMerchantInfo** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentMethodData)]
            [uuid(D1D3CAF4-DE98-4129-B1B7-C3AD86237BF4)]
            interface IPaymentMethodData : IInspectable
            {
                [propget] HRESULT SupportedMethodIds([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT JsonData([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentMethodData)]
            [uuid(8ADDD27F-9BAA-4A82-8342-A8210992A36B)]
            interface IPaymentMethodDataFactory : IInspectable
            {
                HRESULT Create([in] Windows.Foundation.Collections.IIterable<HSTRING>* supportedMethodIds, [out] [retval] Windows.ApplicationModel.Payments.PaymentMethodData** result);
                HRESULT CreateWithJsonData([in] Windows.Foundation.Collections.IIterable<HSTRING>* supportedMethodIds, [in] HSTRING jsonData, [out] [retval] Windows.ApplicationModel.Payments.PaymentMethodData** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentOptions)]
            [uuid(AAA30854-1F2B-4365-8251-01B58915A5BC)]
            interface IPaymentOptions : IInspectable
            {
                [propget] HRESULT RequestPayerEmail([out] [retval] Windows.ApplicationModel.Payments.PaymentOptionPresence* value);
                [propput] HRESULT RequestPayerEmail([in] Windows.ApplicationModel.Payments.PaymentOptionPresence value);
                [propget] HRESULT RequestPayerName([out] [retval] Windows.ApplicationModel.Payments.PaymentOptionPresence* value);
                [propput] HRESULT RequestPayerName([in] Windows.ApplicationModel.Payments.PaymentOptionPresence value);
                [propget] HRESULT RequestPayerPhoneNumber([out] [retval] Windows.ApplicationModel.Payments.PaymentOptionPresence* value);
                [propput] HRESULT RequestPayerPhoneNumber([in] Windows.ApplicationModel.Payments.PaymentOptionPresence value);
                [propget] HRESULT RequestShipping([out] [retval] boolean* value);
                [propput] HRESULT RequestShipping([in] boolean value);
                [propget] HRESULT ShippingType([out] [retval] Windows.ApplicationModel.Payments.PaymentShippingType* value);
                [propput] HRESULT ShippingType([in] Windows.ApplicationModel.Payments.PaymentShippingType value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequest)]
            [uuid(B74942E1-ED7B-47EB-BC08-78CC5D6896B6)]
            interface IPaymentRequest : IInspectable
            {
                [propget] HRESULT MerchantInfo([out] [retval] Windows.ApplicationModel.Payments.PaymentMerchantInfo** value);
                [propget] HRESULT Details([out] [retval] Windows.ApplicationModel.Payments.PaymentDetails** value);
                [propget] HRESULT MethodData([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Payments.PaymentMethodData*>** value);
                [propget] HRESULT Options([out] [retval] Windows.ApplicationModel.Payments.PaymentOptions** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequest)]
            [uuid(B63CCFB5-5998-493E-A04C-67048A50F141)]
            interface IPaymentRequest2 : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequestChangedArgs)]
            [uuid(C6145E44-CD8B-4BE4-B555-27C99194C0C5)]
            interface IPaymentRequestChangedArgs : IInspectable
            {
                [propget] HRESULT ChangeKind([out] [retval] Windows.ApplicationModel.Payments.PaymentRequestChangeKind* value);
                [propget] HRESULT ShippingAddress([out] [retval] Windows.ApplicationModel.Payments.PaymentAddress** value);
                [propget] HRESULT SelectedShippingOption([out] [retval] Windows.ApplicationModel.Payments.PaymentShippingOption** value);
                HRESULT Acknowledge([in] Windows.ApplicationModel.Payments.PaymentRequestChangedResult* changeResult);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequestChangedResult)]
            [uuid(DF699E5C-16C4-47AD-9401-8440EC0757DB)]
            interface IPaymentRequestChangedResult : IInspectable
            {
                [propget] HRESULT ChangeAcceptedByMerchant([out] [retval] boolean* value);
                [propput] HRESULT ChangeAcceptedByMerchant([in] boolean value);
                [propget] HRESULT Message([out] [retval] HSTRING* value);
                [propput] HRESULT Message([in] HSTRING value);
                [propget] HRESULT UpdatedPaymentDetails([out] [retval] Windows.ApplicationModel.Payments.PaymentDetails** value);
                [propput] HRESULT UpdatedPaymentDetails([in] Windows.ApplicationModel.Payments.PaymentDetails* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequestChangedResult)]
            [uuid(08740F56-1D33-4431-814B-67EA24BF21DB)]
            interface IPaymentRequestChangedResultFactory : IInspectable
            {
                HRESULT Create([in] boolean changeAcceptedByMerchant, [out] [retval] Windows.ApplicationModel.Payments.PaymentRequestChangedResult** result);
                HRESULT CreateWithPaymentDetails([in] boolean changeAcceptedByMerchant, [in] Windows.ApplicationModel.Payments.PaymentDetails* updatedPaymentDetails, [out] [retval] Windows.ApplicationModel.Payments.PaymentRequestChangedResult** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequest)]
            [uuid(3E8A79DC-6B74-42D3-B103-F0DE35FB1848)]
            interface IPaymentRequestFactory : IInspectable
            {
                HRESULT Create([in] Windows.ApplicationModel.Payments.PaymentDetails* details, [in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentMethodData*>* methodData, [out] [retval] Windows.ApplicationModel.Payments.PaymentRequest** result);
                HRESULT CreateWithMerchantInfo([in] Windows.ApplicationModel.Payments.PaymentDetails* details, [in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentMethodData*>* methodData, [in] Windows.ApplicationModel.Payments.PaymentMerchantInfo* merchantInfo, [out] [retval] Windows.ApplicationModel.Payments.PaymentRequest** result);
                HRESULT CreateWithMerchantInfoAndOptions([in] Windows.ApplicationModel.Payments.PaymentDetails* details, [in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentMethodData*>* methodData, [in] Windows.ApplicationModel.Payments.PaymentMerchantInfo* merchantInfo, [in] Windows.ApplicationModel.Payments.PaymentOptions* options, [out] [retval] Windows.ApplicationModel.Payments.PaymentRequest** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequest)]
            [uuid(E6CE1325-A506-4372-B7EF-1A031D5662D1)]
            interface IPaymentRequestFactory2 : IInspectable
            {
                HRESULT CreateWithMerchantInfoOptionsAndId([in] Windows.ApplicationModel.Payments.PaymentDetails* details, [in] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Payments.PaymentMethodData*>* methodData, [in] Windows.ApplicationModel.Payments.PaymentMerchantInfo* merchantInfo, [in] Windows.ApplicationModel.Payments.PaymentOptions* options, [in] HSTRING id, [out] [retval] Windows.ApplicationModel.Payments.PaymentRequest** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentRequestSubmitResult)]
            [uuid(7B9C3912-30F2-4E90-B249-8CE7D78FFE56)]
            interface IPaymentRequestSubmitResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.ApplicationModel.Payments.PaymentRequestStatus* value);
                [propget] HRESULT Response([out] [retval] Windows.ApplicationModel.Payments.PaymentResponse** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentResponse)]
            [uuid(E1389457-8BD2-4888-9FA8-97985545108E)]
            interface IPaymentResponse : IInspectable
            {
                [propget] HRESULT PaymentToken([out] [retval] Windows.ApplicationModel.Payments.PaymentToken** value);
                [propget] HRESULT ShippingOption([out] [retval] Windows.ApplicationModel.Payments.PaymentShippingOption** value);
                [propget] HRESULT ShippingAddress([out] [retval] Windows.ApplicationModel.Payments.PaymentAddress** value);
                [propget] HRESULT PayerEmail([out] [retval] HSTRING* value);
                [propget] HRESULT PayerName([out] [retval] HSTRING* value);
                [propget] HRESULT PayerPhoneNumber([out] [retval] HSTRING* value);
                HRESULT CompleteAsync([in] Windows.ApplicationModel.Payments.PaymentRequestCompletionStatus status, [out] [retval] Windows.Foundation.IAsyncAction** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentShippingOption)]
            [uuid(13372ADA-9753-4574-8966-93145A76C7F9)]
            interface IPaymentShippingOption : IInspectable
            {
                [propget] HRESULT Label([out] [retval] HSTRING* value);
                [propput] HRESULT Label([in] HSTRING value);
                [propget] HRESULT Amount([out] [retval] Windows.ApplicationModel.Payments.PaymentCurrencyAmount** value);
                [propput] HRESULT Amount([in] Windows.ApplicationModel.Payments.PaymentCurrencyAmount* value);
                [propget] HRESULT Tag([out] [retval] HSTRING* value);
                [propput] HRESULT Tag([in] HSTRING value);
                [propget] HRESULT IsSelected([out] [retval] boolean* value);
                [propput] HRESULT IsSelected([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentShippingOption)]
            [uuid(5DE5F917-B2D7-446B-9D73-6123FBCA3BC6)]
            interface IPaymentShippingOptionFactory : IInspectable
            {
                HRESULT Create([in] HSTRING label, [in] Windows.ApplicationModel.Payments.PaymentCurrencyAmount* amount, [out] [retval] Windows.ApplicationModel.Payments.PaymentShippingOption** result);
                HRESULT CreateWithSelected([in] HSTRING label, [in] Windows.ApplicationModel.Payments.PaymentCurrencyAmount* amount, [in] boolean selected, [out] [retval] Windows.ApplicationModel.Payments.PaymentShippingOption** result);
                HRESULT CreateWithSelectedAndTag([in] HSTRING label, [in] Windows.ApplicationModel.Payments.PaymentCurrencyAmount* amount, [in] boolean selected, [in] HSTRING tag, [out] [retval] Windows.ApplicationModel.Payments.PaymentShippingOption** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentToken)]
            [uuid(BBCAC013-CCD0-41F2-B2A1-0A2E4B5DCE25)]
            interface IPaymentToken : IInspectable
            {
                [propget] HRESULT PaymentMethodId([out] [retval] HSTRING* value);
                [propget] HRESULT JsonDetails([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.ApplicationModel.Payments.PaymentToken)]
            [uuid(988CD7AA-4753-4904-8373-DD7B08B995C1)]
            interface IPaymentTokenFactory : IInspectable
            {
                HRESULT Create([in] HSTRING paymentMethodId, [out] [retval] Windows.ApplicationModel.Payments.PaymentToken** result);
                HRESULT CreateWithJsonDetails([in] HSTRING paymentMethodId, [in] HSTRING jsonDetails, [out] [retval] Windows.ApplicationModel.Payments.PaymentToken** result);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentAddress
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentAddress;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentCanMakePaymentResultFactory, Windows.Foundation.UniversalApiContract, 5.0)]
            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentCanMakePaymentResult
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentCanMakePaymentResult;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentCurrencyAmountFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentCurrencyAmount
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentCurrencyAmount;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentDetailsFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentDetails
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentDetails;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentDetailsModifierFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentDetailsModifier
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentDetailsModifier;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentItemFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentItem
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentItem;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentMediator
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentMediator;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.ApplicationModel.Payments.IPaymentMediator2;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentMerchantInfoFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentMerchantInfo
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentMerchantInfo;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentMethodDataFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentMethodData
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentMethodData;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentOptions
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentOptions;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentRequestFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [activatable(Windows.ApplicationModel.Payments.IPaymentRequestFactory2, Windows.Foundation.UniversalApiContract, 5.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentRequest
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentRequest;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.ApplicationModel.Payments.IPaymentRequest2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentRequestChangedArgs
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentRequestChangedArgs;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentRequestChangedResultFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentRequestChangedResult
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentRequestChangedResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentRequestSubmitResult
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentRequestSubmitResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentResponse
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentResponse;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentShippingOptionFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentShippingOption
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentShippingOption;
            }

            [activatable(Windows.ApplicationModel.Payments.IPaymentTokenFactory, Windows.Foundation.UniversalApiContract, 4.0)]
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PaymentToken
            {
                [default] interface Windows.ApplicationModel.Payments.IPaymentToken;
            }
        }
    }
}
