// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: Payment Method: Basic Card (https://w3c.github.io/payment-method-basic-card/)

dictionary BasicCardRequest {
  sequence<DOMString> supportedNetworks = [];
};

dictionary BasicCardChangeDetails {
  PaymentAddress? billingAddress = null;
};

dictionary BasicCardResponse {
  required DOMString cardNumber;
  DOMString cardholderName = "";
  DOMString cardSecurityCode = "";
  DOMString expiryMonth = "";
  DOMString expiryYear = "";
  PaymentAddress? billingAddress = null;
};

dictionary BasicCardErrors {
  DOMString cardNumber;
  DOMString cardholderName;
  DOMString cardSecurityCode;
  DOMString expiryMonth;
  DOMString expiryYear;
  AddressErrors billingAddress;
};
