import 'package:guru_app/analytics/guru_analytics.dart';
import 'package:guru_app/database/guru_db.dart';
import 'package:guru_app/financial/asset/assets_model.dart';
import 'package:guru_app/financial/asset/assets_store.dart';
import 'package:guru_app/financial/data/db/order_database.dart';
import 'package:guru_app/financial/igb/igb_product.dart';
import 'package:guru_app/financial/igc/igc_model.dart';
import 'package:guru_app/financial/manifest/manifest_manager.dart';
import 'package:guru_app/financial/product/product_model.dart';
import 'package:guru_app/guru_app.dart';
import 'package:guru_app/inventory/inventory_manager.dart';
import 'package:guru_app/property/app_property.dart';
import 'package:guru_utils/extensions/extensions.dart';
import 'package:guru_utils/log/log.dart';
import 'package:guru_utils/property/app_property.dart';

/// Created by Haoyi on 2023/2/18

class IgbManager {
  static final IgbManager _instance = IgbManager._();

  static IgbManager get instance => _instance;

  IgbManager._();

  Future init() async {
    await InventoryManager.instance.init();
  }

  Future reloadAssets() async {}

  Future<bool> accumulate(int igc, TransactionMethod method, {String? scene}) async {
    return false;
  }

  Future clear() async {}

  Future<IgbProduct> buildIgbProduct(TransactionIntent intent) async {
    final manifest = await ManifestManager.instance.createManifest(intent);
    return IgbProduct(intent.productId, manifest, intent.igbCost);
  }

  Future<bool> redeem(IgbProduct product) async {
    Log.v("Igb buy");
    final result = await InventoryManager.instance.consume(product.cost, product.manifest);
    if (result) {
      await ManifestManager.instance.deliver(product.manifest, TransactionMethod.igb);
    }
    return true;
  }

  void dispose() {}
}
