// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_PAYMENTS_CORE_PAYMENT_SHIPPING_OPTION_H_
#define COMPONENTS_PAYMENTS_CORE_PAYMENT_SHIPPING_OPTION_H_

#include "base/strings/string16.h"
#include "components/payments/core/payment_currency_amount.h"

// C++ bindings for the PaymentRequest API PaymentShippingOption. Conforms to
// the following spec:
// https://w3c.github.io/browser-payment-api/#dom-paymentshippingoption

namespace base {
class DictionaryValue;
}

namespace payments {

// Information describing a shipping option.
class PaymentShippingOption {
 public:
  PaymentShippingOption();
  PaymentShippingOption(const PaymentShippingOption& other);
  ~PaymentShippingOption();

  bool operator==(const PaymentShippingOption& other) const;
  bool operator!=(const PaymentShippingOption& other) const;
  PaymentShippingOption& operator=(const PaymentShippingOption& other);

  // Populates the properties of this PaymentShippingOption from |value|.
  // Returns true if the required values are present.
  bool FromDictionaryValue(const base::DictionaryValue& value);

  // An identifier used to reference this PaymentShippingOption. It is unique
  // for a given PaymentRequest.
  std::string id;

  // A human-readable description of the item. The user agent should use this
  // string to display the shipping option to the user.
  std::string label;

  // A PaymentCurrencyAmount containing the monetary amount for the option.
  mojom::PaymentCurrencyAmountPtr amount;

  // This is set to true to indicate that this is the default selected
  // PaymentShippingOption in a sequence. User agents should display this option
  // by default in the user interface.
  bool selected;
};

}  // namespace payments

#endif  // COMPONENTS_PAYMENTS_CORE_PAYMENT_SHIPPING_OPTION_H_
