/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIPaymentFlowInfo;

[scriptable, function, uuid(b9afa678-71a5-4975-bcdb-0c4098730eff)]
interface nsIPaymentUIGlueCallback : nsISupports
{
    void onresult(in DOMString requestId, in DOMString result);
};

[scriptable, uuid(4dc09e33-d395-4e1d-acb4-e85415181270)]
interface nsIPaymentUIGlue : nsISupports
{
    // The 'paymentRequestsInfo' contains the payment request information
    // for each JWT provided via navigator.mozPay call.
    void confirmPaymentRequest(in DOMString requestId,
                               in jsval paymentRequestsInfo,
                               in nsIPaymentUIGlueCallback successCb,
                               in nsIPaymentUIGlueCallback errorCb);

    void showPaymentFlow(in DOMString requestId,
                         in nsIPaymentFlowInfo paymentFlowInfo,
                         in nsIPaymentUIGlueCallback errorCb);

    // The promise resolves with no value as soon as the payment window is
    // closed.
    jsval /*Promise*/ closePaymentFlow(in DOMString requestId);
};
