blob: 5e169e383211af43b87d03161456bfdb4f770bf8 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:js_interop';
import 'dom.dart';
import 'html.dart';
typedef PaymentComplete = String;
@JS('PaymentRequest')
@staticInterop
class PaymentRequest implements EventTarget {
external factory PaymentRequest(
JSArray methodData,
PaymentDetailsInit details,
);
external static JSPromise isSecurePaymentConfirmationAvailable();
}
extension PaymentRequestExtension on PaymentRequest {
external JSPromise show([JSPromise detailsPromise]);
external JSPromise abort();
external JSPromise canMakePayment();
external String get id;
external set onpaymentmethodchange(EventHandler value);
external EventHandler get onpaymentmethodchange;
}
@JS()
@staticInterop
@anonymous
class PaymentMethodData implements JSObject {
external factory PaymentMethodData({
required String supportedMethods,
JSObject data,
});
}
extension PaymentMethodDataExtension on PaymentMethodData {
external set supportedMethods(String value);
external String get supportedMethods;
external set data(JSObject value);
external JSObject get data;
}
@JS()
@staticInterop
@anonymous
class PaymentCurrencyAmount implements JSObject {
external factory PaymentCurrencyAmount({
required String currency,
required String value,
});
}
extension PaymentCurrencyAmountExtension on PaymentCurrencyAmount {
external set currency(String value);
external String get currency;
external set value(String value);
external String get value;
}
@JS()
@staticInterop
@anonymous
class PaymentDetailsBase implements JSObject {
external factory PaymentDetailsBase({
JSArray displayItems,
JSArray modifiers,
});
}
extension PaymentDetailsBaseExtension on PaymentDetailsBase {
external set displayItems(JSArray value);
external JSArray get displayItems;
external set modifiers(JSArray value);
external JSArray get modifiers;
}
@JS()
@staticInterop
@anonymous
class PaymentDetailsInit implements PaymentDetailsBase {
external factory PaymentDetailsInit({
String id,
required PaymentItem total,
});
}
extension PaymentDetailsInitExtension on PaymentDetailsInit {
external set id(String value);
external String get id;
external set total(PaymentItem value);
external PaymentItem get total;
}
@JS()
@staticInterop
@anonymous
class PaymentDetailsUpdate implements PaymentDetailsBase {
external factory PaymentDetailsUpdate({
PaymentItem total,
JSObject paymentMethodErrors,
});
}
extension PaymentDetailsUpdateExtension on PaymentDetailsUpdate {
external set total(PaymentItem value);
external PaymentItem get total;
external set paymentMethodErrors(JSObject value);
external JSObject get paymentMethodErrors;
}
@JS()
@staticInterop
@anonymous
class PaymentDetailsModifier implements JSObject {
external factory PaymentDetailsModifier({
required String supportedMethods,
PaymentItem total,
JSArray additionalDisplayItems,
JSObject data,
});
}
extension PaymentDetailsModifierExtension on PaymentDetailsModifier {
external set supportedMethods(String value);
external String get supportedMethods;
external set total(PaymentItem value);
external PaymentItem get total;
external set additionalDisplayItems(JSArray value);
external JSArray get additionalDisplayItems;
external set data(JSObject value);
external JSObject get data;
}
@JS()
@staticInterop
@anonymous
class PaymentItem implements JSObject {
external factory PaymentItem({
required String label,
required PaymentCurrencyAmount amount,
bool pending,
});
}
extension PaymentItemExtension on PaymentItem {
external set label(String value);
external String get label;
external set amount(PaymentCurrencyAmount value);
external PaymentCurrencyAmount get amount;
external set pending(bool value);
external bool get pending;
}
@JS()
@staticInterop
@anonymous
class PaymentCompleteDetails implements JSObject {
external factory PaymentCompleteDetails({JSObject? data});
}
extension PaymentCompleteDetailsExtension on PaymentCompleteDetails {
external set data(JSObject? value);
external JSObject? get data;
}
@JS('PaymentResponse')
@staticInterop
class PaymentResponse implements EventTarget {}
extension PaymentResponseExtension on PaymentResponse {
external JSObject toJSON();
external JSPromise complete([
PaymentComplete result,
PaymentCompleteDetails details,
]);
external JSPromise retry([PaymentValidationErrors errorFields]);
external String get requestId;
external String get methodName;
external JSObject get details;
}
@JS()
@staticInterop
@anonymous
class PaymentValidationErrors implements JSObject {
external factory PaymentValidationErrors({
String error,
JSObject paymentMethod,
});
}
extension PaymentValidationErrorsExtension on PaymentValidationErrors {
external set error(String value);
external String get error;
external set paymentMethod(JSObject value);
external JSObject get paymentMethod;
}
@JS('PaymentMethodChangeEvent')
@staticInterop
class PaymentMethodChangeEvent implements PaymentRequestUpdateEvent {
external factory PaymentMethodChangeEvent(
String type, [
PaymentMethodChangeEventInit eventInitDict,
]);
}
extension PaymentMethodChangeEventExtension on PaymentMethodChangeEvent {
external String get methodName;
external JSObject? get methodDetails;
}
@JS()
@staticInterop
@anonymous
class PaymentMethodChangeEventInit implements PaymentRequestUpdateEventInit {
external factory PaymentMethodChangeEventInit({
String methodName,
JSObject? methodDetails,
});
}
extension PaymentMethodChangeEventInitExtension
on PaymentMethodChangeEventInit {
external set methodName(String value);
external String get methodName;
external set methodDetails(JSObject? value);
external JSObject? get methodDetails;
}
@JS('PaymentRequestUpdateEvent')
@staticInterop
class PaymentRequestUpdateEvent implements Event {
external factory PaymentRequestUpdateEvent(
String type, [
PaymentRequestUpdateEventInit eventInitDict,
]);
}
extension PaymentRequestUpdateEventExtension on PaymentRequestUpdateEvent {
external JSVoid updateWith(JSPromise detailsPromise);
}
@JS()
@staticInterop
@anonymous
class PaymentRequestUpdateEventInit implements EventInit {
external factory PaymentRequestUpdateEventInit();
}