mirrored_repositories/awesome-flutter/examples/plugins/packages/in_app_purchase/in_app_purchase_platform_interface/lib/src
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'in_app_purchase_error.dart';
import 'purchase_status.dart';
import 'purchase_verification_data.dart';

/// Represents the transaction details of a purchase.
class PurchaseDetails {
  /// Creates a new PurchaseDetails object with the provided data.
  PurchaseDetails({
    this.purchaseID,
    required this.productID,
    required this.verificationData,
    required this.transactionDate,
    required this.status,
  });

  /// A unique identifier of the purchase.
  final String? purchaseID;

  /// The product identifier of the purchase.
  final String productID;

  /// The verification data of the purchase.
  ///
  /// Use this to verify the purchase. See [PurchaseVerificationData] for
  /// details on how to verify purchase use this data. You should never use any
  /// purchase data until verified.
  final PurchaseVerificationData verificationData;

  /// The timestamp of the transaction.
  ///
  /// Milliseconds since epoch.
  ///
  /// The value is `null` if [status] is not [PurchaseStatus.purchased].
  final String? transactionDate;

  /// The status that this [PurchaseDetails] is currently on.
  PurchaseStatus status;

  /// The error details when the [status] is [PurchaseStatus.error].
  ///
  /// The value is `null` if [status] is not [PurchaseStatus.error].
  IAPError? error;

  /// The developer has to call [InAppPurchasePlatform.completePurchase] if the value is `true`
  /// and the product has been delivered to the user.
  ///
  /// The initial value is `false`.
  /// * See also [InAppPurchasePlatform.completePurchase] for more details on completing purchases.
  bool pendingCompletePurchase = false;
}
