[SecureContext, Exposed=(Window,Worker)] interface PaymentManager { [SameObject] readonly attribute PaymentInstruments instruments; [Exposed=Window] static Promise requestPermission(); }; [SecureContext, Exposed=(Window,Worker)] interface PaymentInstruments { Promise delete(DOMString instrumentKey); Promise get(DOMString instrumentKey); Promise> keys(); Promise has(DOMString instrumentKey); Promise set(DOMString instrumentKey, PaymentInstrument details); Promise clear(); }; dictionary PaymentInstrument { required DOMString name; sequence icons; sequence enabledMethods; object capabilities; }; dictionary ImageObject { required USVString src; DOMString sizes; DOMString type; }; [Constructor(DOMString type, CanMakePaymentEventInit eventInitDict), Exposed=ServiceWorker] interface CanMakePaymentEvent : ExtendableEvent { readonly attribute USVString topLevelOrigin; readonly attribute USVString paymentRequestOrigin; readonly attribute FrozenArray methodData; readonly attribute FrozenArray modifiers; void respondWith(Promise canMakePaymentResponse); }; dictionary CanMakePaymentEventInit : ExtendableEventInit { USVString topLevelOrigin; USVString paymentRequestOrigin; sequence methodData; sequence modifiers; }; [Constructor(DOMString type, PaymentRequestEventInit eventInitDict), Exposed=ServiceWorker] interface PaymentRequestEvent : ExtendableEvent { readonly attribute USVString topLevelOrigin; readonly attribute USVString paymentRequestOrigin; readonly attribute DOMString paymentRequestId; readonly attribute FrozenArray methodData; readonly attribute object total; readonly attribute FrozenArray modifiers; readonly attribute DOMString instrumentKey; Promise openWindow(USVString url); void respondWith(Promise handlerResponse); }; dictionary PaymentRequestEventInit : ExtendableEventInit { USVString topLevelOrigin; USVString paymentRequestOrigin; DOMString paymentRequestId; sequence methodData; PaymentCurrencyAmount total; sequence modifiers; DOMString instrumentKey; }; dictionary PaymentHandlerResponse { DOMString methodName; object details; };