// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark

part of 'analytic.dart';

// **************************************************************************
// FreezedGenerator
// **************************************************************************

T _$identity<T>(T value) => value;

final _privateConstructorUsedError = UnsupportedError(
  'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models',
);

/// @nodoc
mixin _$DashboardAnalytic {
  String get organizationId => throw _privateConstructorUsedError;
  String get outletId => throw _privateConstructorUsedError;
  String get dateFrom => throw _privateConstructorUsedError;
  String get dateTo => throw _privateConstructorUsedError;
  DashboardOverview get overview => throw _privateConstructorUsedError;
  List<DashboardTopProduct> get topProducts =>
      throw _privateConstructorUsedError;
  List<DashboardPaymentMethod> get paymentMethods =>
      throw _privateConstructorUsedError;
  List<DashboardRecentSale> get recentSales =>
      throw _privateConstructorUsedError;

  /// Create a copy of DashboardAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $DashboardAnalyticCopyWith<DashboardAnalytic> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $DashboardAnalyticCopyWith<$Res> {
  factory $DashboardAnalyticCopyWith(
    DashboardAnalytic value,
    $Res Function(DashboardAnalytic) then,
  ) = _$DashboardAnalyticCopyWithImpl<$Res, DashboardAnalytic>;
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    String dateFrom,
    String dateTo,
    DashboardOverview overview,
    List<DashboardTopProduct> topProducts,
    List<DashboardPaymentMethod> paymentMethods,
    List<DashboardRecentSale> recentSales,
  });

  $DashboardOverviewCopyWith<$Res> get overview;
}

/// @nodoc
class _$DashboardAnalyticCopyWithImpl<$Res, $Val extends DashboardAnalytic>
    implements $DashboardAnalyticCopyWith<$Res> {
  _$DashboardAnalyticCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of DashboardAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? overview = null,
    Object? topProducts = null,
    Object? paymentMethods = null,
    Object? recentSales = null,
  }) {
    return _then(
      _value.copyWith(
            organizationId: null == organizationId
                ? _value.organizationId
                : organizationId // ignore: cast_nullable_to_non_nullable
                      as String,
            outletId: null == outletId
                ? _value.outletId
                : outletId // ignore: cast_nullable_to_non_nullable
                      as String,
            dateFrom: null == dateFrom
                ? _value.dateFrom
                : dateFrom // ignore: cast_nullable_to_non_nullable
                      as String,
            dateTo: null == dateTo
                ? _value.dateTo
                : dateTo // ignore: cast_nullable_to_non_nullable
                      as String,
            overview: null == overview
                ? _value.overview
                : overview // ignore: cast_nullable_to_non_nullable
                      as DashboardOverview,
            topProducts: null == topProducts
                ? _value.topProducts
                : topProducts // ignore: cast_nullable_to_non_nullable
                      as List<DashboardTopProduct>,
            paymentMethods: null == paymentMethods
                ? _value.paymentMethods
                : paymentMethods // ignore: cast_nullable_to_non_nullable
                      as List<DashboardPaymentMethod>,
            recentSales: null == recentSales
                ? _value.recentSales
                : recentSales // ignore: cast_nullable_to_non_nullable
                      as List<DashboardRecentSale>,
          )
          as $Val,
    );
  }

  /// Create a copy of DashboardAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $DashboardOverviewCopyWith<$Res> get overview {
    return $DashboardOverviewCopyWith<$Res>(_value.overview, (value) {
      return _then(_value.copyWith(overview: value) as $Val);
    });
  }
}

/// @nodoc
abstract class _$$DashboardAnalyticImplCopyWith<$Res>
    implements $DashboardAnalyticCopyWith<$Res> {
  factory _$$DashboardAnalyticImplCopyWith(
    _$DashboardAnalyticImpl value,
    $Res Function(_$DashboardAnalyticImpl) then,
  ) = __$$DashboardAnalyticImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    String dateFrom,
    String dateTo,
    DashboardOverview overview,
    List<DashboardTopProduct> topProducts,
    List<DashboardPaymentMethod> paymentMethods,
    List<DashboardRecentSale> recentSales,
  });

  @override
  $DashboardOverviewCopyWith<$Res> get overview;
}

/// @nodoc
class __$$DashboardAnalyticImplCopyWithImpl<$Res>
    extends _$DashboardAnalyticCopyWithImpl<$Res, _$DashboardAnalyticImpl>
    implements _$$DashboardAnalyticImplCopyWith<$Res> {
  __$$DashboardAnalyticImplCopyWithImpl(
    _$DashboardAnalyticImpl _value,
    $Res Function(_$DashboardAnalyticImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of DashboardAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? overview = null,
    Object? topProducts = null,
    Object? paymentMethods = null,
    Object? recentSales = null,
  }) {
    return _then(
      _$DashboardAnalyticImpl(
        organizationId: null == organizationId
            ? _value.organizationId
            : organizationId // ignore: cast_nullable_to_non_nullable
                  as String,
        outletId: null == outletId
            ? _value.outletId
            : outletId // ignore: cast_nullable_to_non_nullable
                  as String,
        dateFrom: null == dateFrom
            ? _value.dateFrom
            : dateFrom // ignore: cast_nullable_to_non_nullable
                  as String,
        dateTo: null == dateTo
            ? _value.dateTo
            : dateTo // ignore: cast_nullable_to_non_nullable
                  as String,
        overview: null == overview
            ? _value.overview
            : overview // ignore: cast_nullable_to_non_nullable
                  as DashboardOverview,
        topProducts: null == topProducts
            ? _value._topProducts
            : topProducts // ignore: cast_nullable_to_non_nullable
                  as List<DashboardTopProduct>,
        paymentMethods: null == paymentMethods
            ? _value._paymentMethods
            : paymentMethods // ignore: cast_nullable_to_non_nullable
                  as List<DashboardPaymentMethod>,
        recentSales: null == recentSales
            ? _value._recentSales
            : recentSales // ignore: cast_nullable_to_non_nullable
                  as List<DashboardRecentSale>,
      ),
    );
  }
}

/// @nodoc

class _$DashboardAnalyticImpl implements _DashboardAnalytic {
  const _$DashboardAnalyticImpl({
    required this.organizationId,
    required this.outletId,
    required this.dateFrom,
    required this.dateTo,
    required this.overview,
    required final List<DashboardTopProduct> topProducts,
    required final List<DashboardPaymentMethod> paymentMethods,
    required final List<DashboardRecentSale> recentSales,
  }) : _topProducts = topProducts,
       _paymentMethods = paymentMethods,
       _recentSales = recentSales;

  @override
  final String organizationId;
  @override
  final String outletId;
  @override
  final String dateFrom;
  @override
  final String dateTo;
  @override
  final DashboardOverview overview;
  final List<DashboardTopProduct> _topProducts;
  @override
  List<DashboardTopProduct> get topProducts {
    if (_topProducts is EqualUnmodifiableListView) return _topProducts;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_topProducts);
  }

  final List<DashboardPaymentMethod> _paymentMethods;
  @override
  List<DashboardPaymentMethod> get paymentMethods {
    if (_paymentMethods is EqualUnmodifiableListView) return _paymentMethods;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_paymentMethods);
  }

  final List<DashboardRecentSale> _recentSales;
  @override
  List<DashboardRecentSale> get recentSales {
    if (_recentSales is EqualUnmodifiableListView) return _recentSales;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_recentSales);
  }

  @override
  String toString() {
    return 'DashboardAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, overview: $overview, topProducts: $topProducts, paymentMethods: $paymentMethods, recentSales: $recentSales)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$DashboardAnalyticImpl &&
            (identical(other.organizationId, organizationId) ||
                other.organizationId == organizationId) &&
            (identical(other.outletId, outletId) ||
                other.outletId == outletId) &&
            (identical(other.dateFrom, dateFrom) ||
                other.dateFrom == dateFrom) &&
            (identical(other.dateTo, dateTo) || other.dateTo == dateTo) &&
            (identical(other.overview, overview) ||
                other.overview == overview) &&
            const DeepCollectionEquality().equals(
              other._topProducts,
              _topProducts,
            ) &&
            const DeepCollectionEquality().equals(
              other._paymentMethods,
              _paymentMethods,
            ) &&
            const DeepCollectionEquality().equals(
              other._recentSales,
              _recentSales,
            ));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    organizationId,
    outletId,
    dateFrom,
    dateTo,
    overview,
    const DeepCollectionEquality().hash(_topProducts),
    const DeepCollectionEquality().hash(_paymentMethods),
    const DeepCollectionEquality().hash(_recentSales),
  );

  /// Create a copy of DashboardAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$DashboardAnalyticImplCopyWith<_$DashboardAnalyticImpl> get copyWith =>
      __$$DashboardAnalyticImplCopyWithImpl<_$DashboardAnalyticImpl>(
        this,
        _$identity,
      );
}

abstract class _DashboardAnalytic implements DashboardAnalytic {
  const factory _DashboardAnalytic({
    required final String organizationId,
    required final String outletId,
    required final String dateFrom,
    required final String dateTo,
    required final DashboardOverview overview,
    required final List<DashboardTopProduct> topProducts,
    required final List<DashboardPaymentMethod> paymentMethods,
    required final List<DashboardRecentSale> recentSales,
  }) = _$DashboardAnalyticImpl;

  @override
  String get organizationId;
  @override
  String get outletId;
  @override
  String get dateFrom;
  @override
  String get dateTo;
  @override
  DashboardOverview get overview;
  @override
  List<DashboardTopProduct> get topProducts;
  @override
  List<DashboardPaymentMethod> get paymentMethods;
  @override
  List<DashboardRecentSale> get recentSales;

  /// Create a copy of DashboardAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$DashboardAnalyticImplCopyWith<_$DashboardAnalyticImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$DashboardOverview {
  int get totalSales => throw _privateConstructorUsedError;
  int get totalOrders => throw _privateConstructorUsedError;
  double get averageOrderValue => throw _privateConstructorUsedError;
  int get totalCustomers => throw _privateConstructorUsedError;
  int get voidedOrders => throw _privateConstructorUsedError;
  int get refundedOrders => throw _privateConstructorUsedError;

  /// Create a copy of DashboardOverview
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $DashboardOverviewCopyWith<DashboardOverview> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $DashboardOverviewCopyWith<$Res> {
  factory $DashboardOverviewCopyWith(
    DashboardOverview value,
    $Res Function(DashboardOverview) then,
  ) = _$DashboardOverviewCopyWithImpl<$Res, DashboardOverview>;
  @useResult
  $Res call({
    int totalSales,
    int totalOrders,
    double averageOrderValue,
    int totalCustomers,
    int voidedOrders,
    int refundedOrders,
  });
}

/// @nodoc
class _$DashboardOverviewCopyWithImpl<$Res, $Val extends DashboardOverview>
    implements $DashboardOverviewCopyWith<$Res> {
  _$DashboardOverviewCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of DashboardOverview
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalSales = null,
    Object? totalOrders = null,
    Object? averageOrderValue = null,
    Object? totalCustomers = null,
    Object? voidedOrders = null,
    Object? refundedOrders = null,
  }) {
    return _then(
      _value.copyWith(
            totalSales: null == totalSales
                ? _value.totalSales
                : totalSales // ignore: cast_nullable_to_non_nullable
                      as int,
            totalOrders: null == totalOrders
                ? _value.totalOrders
                : totalOrders // ignore: cast_nullable_to_non_nullable
                      as int,
            averageOrderValue: null == averageOrderValue
                ? _value.averageOrderValue
                : averageOrderValue // ignore: cast_nullable_to_non_nullable
                      as double,
            totalCustomers: null == totalCustomers
                ? _value.totalCustomers
                : totalCustomers // ignore: cast_nullable_to_non_nullable
                      as int,
            voidedOrders: null == voidedOrders
                ? _value.voidedOrders
                : voidedOrders // ignore: cast_nullable_to_non_nullable
                      as int,
            refundedOrders: null == refundedOrders
                ? _value.refundedOrders
                : refundedOrders // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$DashboardOverviewImplCopyWith<$Res>
    implements $DashboardOverviewCopyWith<$Res> {
  factory _$$DashboardOverviewImplCopyWith(
    _$DashboardOverviewImpl value,
    $Res Function(_$DashboardOverviewImpl) then,
  ) = __$$DashboardOverviewImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    int totalSales,
    int totalOrders,
    double averageOrderValue,
    int totalCustomers,
    int voidedOrders,
    int refundedOrders,
  });
}

/// @nodoc
class __$$DashboardOverviewImplCopyWithImpl<$Res>
    extends _$DashboardOverviewCopyWithImpl<$Res, _$DashboardOverviewImpl>
    implements _$$DashboardOverviewImplCopyWith<$Res> {
  __$$DashboardOverviewImplCopyWithImpl(
    _$DashboardOverviewImpl _value,
    $Res Function(_$DashboardOverviewImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of DashboardOverview
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalSales = null,
    Object? totalOrders = null,
    Object? averageOrderValue = null,
    Object? totalCustomers = null,
    Object? voidedOrders = null,
    Object? refundedOrders = null,
  }) {
    return _then(
      _$DashboardOverviewImpl(
        totalSales: null == totalSales
            ? _value.totalSales
            : totalSales // ignore: cast_nullable_to_non_nullable
                  as int,
        totalOrders: null == totalOrders
            ? _value.totalOrders
            : totalOrders // ignore: cast_nullable_to_non_nullable
                  as int,
        averageOrderValue: null == averageOrderValue
            ? _value.averageOrderValue
            : averageOrderValue // ignore: cast_nullable_to_non_nullable
                  as double,
        totalCustomers: null == totalCustomers
            ? _value.totalCustomers
            : totalCustomers // ignore: cast_nullable_to_non_nullable
                  as int,
        voidedOrders: null == voidedOrders
            ? _value.voidedOrders
            : voidedOrders // ignore: cast_nullable_to_non_nullable
                  as int,
        refundedOrders: null == refundedOrders
            ? _value.refundedOrders
            : refundedOrders // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$DashboardOverviewImpl implements _DashboardOverview {
  const _$DashboardOverviewImpl({
    required this.totalSales,
    required this.totalOrders,
    required this.averageOrderValue,
    required this.totalCustomers,
    required this.voidedOrders,
    required this.refundedOrders,
  });

  @override
  final int totalSales;
  @override
  final int totalOrders;
  @override
  final double averageOrderValue;
  @override
  final int totalCustomers;
  @override
  final int voidedOrders;
  @override
  final int refundedOrders;

  @override
  String toString() {
    return 'DashboardOverview(totalSales: $totalSales, totalOrders: $totalOrders, averageOrderValue: $averageOrderValue, totalCustomers: $totalCustomers, voidedOrders: $voidedOrders, refundedOrders: $refundedOrders)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$DashboardOverviewImpl &&
            (identical(other.totalSales, totalSales) ||
                other.totalSales == totalSales) &&
            (identical(other.totalOrders, totalOrders) ||
                other.totalOrders == totalOrders) &&
            (identical(other.averageOrderValue, averageOrderValue) ||
                other.averageOrderValue == averageOrderValue) &&
            (identical(other.totalCustomers, totalCustomers) ||
                other.totalCustomers == totalCustomers) &&
            (identical(other.voidedOrders, voidedOrders) ||
                other.voidedOrders == voidedOrders) &&
            (identical(other.refundedOrders, refundedOrders) ||
                other.refundedOrders == refundedOrders));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    totalSales,
    totalOrders,
    averageOrderValue,
    totalCustomers,
    voidedOrders,
    refundedOrders,
  );

  /// Create a copy of DashboardOverview
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$DashboardOverviewImplCopyWith<_$DashboardOverviewImpl> get copyWith =>
      __$$DashboardOverviewImplCopyWithImpl<_$DashboardOverviewImpl>(
        this,
        _$identity,
      );
}

abstract class _DashboardOverview implements DashboardOverview {
  const factory _DashboardOverview({
    required final int totalSales,
    required final int totalOrders,
    required final double averageOrderValue,
    required final int totalCustomers,
    required final int voidedOrders,
    required final int refundedOrders,
  }) = _$DashboardOverviewImpl;

  @override
  int get totalSales;
  @override
  int get totalOrders;
  @override
  double get averageOrderValue;
  @override
  int get totalCustomers;
  @override
  int get voidedOrders;
  @override
  int get refundedOrders;

  /// Create a copy of DashboardOverview
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$DashboardOverviewImplCopyWith<_$DashboardOverviewImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$DashboardTopProduct {
  String get productId => throw _privateConstructorUsedError;
  String get productName => throw _privateConstructorUsedError;
  String get categoryId => throw _privateConstructorUsedError;
  String get categoryName => throw _privateConstructorUsedError;
  int get quantitySold => throw _privateConstructorUsedError;
  int get revenue => throw _privateConstructorUsedError;
  double get averagePrice => throw _privateConstructorUsedError;
  int get orderCount => throw _privateConstructorUsedError;

  /// Create a copy of DashboardTopProduct
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $DashboardTopProductCopyWith<DashboardTopProduct> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $DashboardTopProductCopyWith<$Res> {
  factory $DashboardTopProductCopyWith(
    DashboardTopProduct value,
    $Res Function(DashboardTopProduct) then,
  ) = _$DashboardTopProductCopyWithImpl<$Res, DashboardTopProduct>;
  @useResult
  $Res call({
    String productId,
    String productName,
    String categoryId,
    String categoryName,
    int quantitySold,
    int revenue,
    double averagePrice,
    int orderCount,
  });
}

/// @nodoc
class _$DashboardTopProductCopyWithImpl<$Res, $Val extends DashboardTopProduct>
    implements $DashboardTopProductCopyWith<$Res> {
  _$DashboardTopProductCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of DashboardTopProduct
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? productId = null,
    Object? productName = null,
    Object? categoryId = null,
    Object? categoryName = null,
    Object? quantitySold = null,
    Object? revenue = null,
    Object? averagePrice = null,
    Object? orderCount = null,
  }) {
    return _then(
      _value.copyWith(
            productId: null == productId
                ? _value.productId
                : productId // ignore: cast_nullable_to_non_nullable
                      as String,
            productName: null == productName
                ? _value.productName
                : productName // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryId: null == categoryId
                ? _value.categoryId
                : categoryId // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryName: null == categoryName
                ? _value.categoryName
                : categoryName // ignore: cast_nullable_to_non_nullable
                      as String,
            quantitySold: null == quantitySold
                ? _value.quantitySold
                : quantitySold // ignore: cast_nullable_to_non_nullable
                      as int,
            revenue: null == revenue
                ? _value.revenue
                : revenue // ignore: cast_nullable_to_non_nullable
                      as int,
            averagePrice: null == averagePrice
                ? _value.averagePrice
                : averagePrice // ignore: cast_nullable_to_non_nullable
                      as double,
            orderCount: null == orderCount
                ? _value.orderCount
                : orderCount // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$DashboardTopProductImplCopyWith<$Res>
    implements $DashboardTopProductCopyWith<$Res> {
  factory _$$DashboardTopProductImplCopyWith(
    _$DashboardTopProductImpl value,
    $Res Function(_$DashboardTopProductImpl) then,
  ) = __$$DashboardTopProductImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String productId,
    String productName,
    String categoryId,
    String categoryName,
    int quantitySold,
    int revenue,
    double averagePrice,
    int orderCount,
  });
}

/// @nodoc
class __$$DashboardTopProductImplCopyWithImpl<$Res>
    extends _$DashboardTopProductCopyWithImpl<$Res, _$DashboardTopProductImpl>
    implements _$$DashboardTopProductImplCopyWith<$Res> {
  __$$DashboardTopProductImplCopyWithImpl(
    _$DashboardTopProductImpl _value,
    $Res Function(_$DashboardTopProductImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of DashboardTopProduct
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? productId = null,
    Object? productName = null,
    Object? categoryId = null,
    Object? categoryName = null,
    Object? quantitySold = null,
    Object? revenue = null,
    Object? averagePrice = null,
    Object? orderCount = null,
  }) {
    return _then(
      _$DashboardTopProductImpl(
        productId: null == productId
            ? _value.productId
            : productId // ignore: cast_nullable_to_non_nullable
                  as String,
        productName: null == productName
            ? _value.productName
            : productName // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryId: null == categoryId
            ? _value.categoryId
            : categoryId // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryName: null == categoryName
            ? _value.categoryName
            : categoryName // ignore: cast_nullable_to_non_nullable
                  as String,
        quantitySold: null == quantitySold
            ? _value.quantitySold
            : quantitySold // ignore: cast_nullable_to_non_nullable
                  as int,
        revenue: null == revenue
            ? _value.revenue
            : revenue // ignore: cast_nullable_to_non_nullable
                  as int,
        averagePrice: null == averagePrice
            ? _value.averagePrice
            : averagePrice // ignore: cast_nullable_to_non_nullable
                  as double,
        orderCount: null == orderCount
            ? _value.orderCount
            : orderCount // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$DashboardTopProductImpl implements _DashboardTopProduct {
  const _$DashboardTopProductImpl({
    required this.productId,
    required this.productName,
    required this.categoryId,
    required this.categoryName,
    required this.quantitySold,
    required this.revenue,
    required this.averagePrice,
    required this.orderCount,
  });

  @override
  final String productId;
  @override
  final String productName;
  @override
  final String categoryId;
  @override
  final String categoryName;
  @override
  final int quantitySold;
  @override
  final int revenue;
  @override
  final double averagePrice;
  @override
  final int orderCount;

  @override
  String toString() {
    return 'DashboardTopProduct(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, averagePrice: $averagePrice, orderCount: $orderCount)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$DashboardTopProductImpl &&
            (identical(other.productId, productId) ||
                other.productId == productId) &&
            (identical(other.productName, productName) ||
                other.productName == productName) &&
            (identical(other.categoryId, categoryId) ||
                other.categoryId == categoryId) &&
            (identical(other.categoryName, categoryName) ||
                other.categoryName == categoryName) &&
            (identical(other.quantitySold, quantitySold) ||
                other.quantitySold == quantitySold) &&
            (identical(other.revenue, revenue) || other.revenue == revenue) &&
            (identical(other.averagePrice, averagePrice) ||
                other.averagePrice == averagePrice) &&
            (identical(other.orderCount, orderCount) ||
                other.orderCount == orderCount));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    productId,
    productName,
    categoryId,
    categoryName,
    quantitySold,
    revenue,
    averagePrice,
    orderCount,
  );

  /// Create a copy of DashboardTopProduct
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$DashboardTopProductImplCopyWith<_$DashboardTopProductImpl> get copyWith =>
      __$$DashboardTopProductImplCopyWithImpl<_$DashboardTopProductImpl>(
        this,
        _$identity,
      );
}

abstract class _DashboardTopProduct implements DashboardTopProduct {
  const factory _DashboardTopProduct({
    required final String productId,
    required final String productName,
    required final String categoryId,
    required final String categoryName,
    required final int quantitySold,
    required final int revenue,
    required final double averagePrice,
    required final int orderCount,
  }) = _$DashboardTopProductImpl;

  @override
  String get productId;
  @override
  String get productName;
  @override
  String get categoryId;
  @override
  String get categoryName;
  @override
  int get quantitySold;
  @override
  int get revenue;
  @override
  double get averagePrice;
  @override
  int get orderCount;

  /// Create a copy of DashboardTopProduct
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$DashboardTopProductImplCopyWith<_$DashboardTopProductImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$DashboardPaymentMethod {
  String get paymentMethodId => throw _privateConstructorUsedError;
  String get paymentMethodName => throw _privateConstructorUsedError;
  String get paymentMethodType => throw _privateConstructorUsedError;
  int get totalAmount => throw _privateConstructorUsedError;
  int get orderCount => throw _privateConstructorUsedError;
  int get paymentCount => throw _privateConstructorUsedError;
  double get percentage => throw _privateConstructorUsedError;

  /// Create a copy of DashboardPaymentMethod
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $DashboardPaymentMethodCopyWith<DashboardPaymentMethod> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $DashboardPaymentMethodCopyWith<$Res> {
  factory $DashboardPaymentMethodCopyWith(
    DashboardPaymentMethod value,
    $Res Function(DashboardPaymentMethod) then,
  ) = _$DashboardPaymentMethodCopyWithImpl<$Res, DashboardPaymentMethod>;
  @useResult
  $Res call({
    String paymentMethodId,
    String paymentMethodName,
    String paymentMethodType,
    int totalAmount,
    int orderCount,
    int paymentCount,
    double percentage,
  });
}

/// @nodoc
class _$DashboardPaymentMethodCopyWithImpl<
  $Res,
  $Val extends DashboardPaymentMethod
>
    implements $DashboardPaymentMethodCopyWith<$Res> {
  _$DashboardPaymentMethodCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of DashboardPaymentMethod
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? paymentMethodId = null,
    Object? paymentMethodName = null,
    Object? paymentMethodType = null,
    Object? totalAmount = null,
    Object? orderCount = null,
    Object? paymentCount = null,
    Object? percentage = null,
  }) {
    return _then(
      _value.copyWith(
            paymentMethodId: null == paymentMethodId
                ? _value.paymentMethodId
                : paymentMethodId // ignore: cast_nullable_to_non_nullable
                      as String,
            paymentMethodName: null == paymentMethodName
                ? _value.paymentMethodName
                : paymentMethodName // ignore: cast_nullable_to_non_nullable
                      as String,
            paymentMethodType: null == paymentMethodType
                ? _value.paymentMethodType
                : paymentMethodType // ignore: cast_nullable_to_non_nullable
                      as String,
            totalAmount: null == totalAmount
                ? _value.totalAmount
                : totalAmount // ignore: cast_nullable_to_non_nullable
                      as int,
            orderCount: null == orderCount
                ? _value.orderCount
                : orderCount // ignore: cast_nullable_to_non_nullable
                      as int,
            paymentCount: null == paymentCount
                ? _value.paymentCount
                : paymentCount // ignore: cast_nullable_to_non_nullable
                      as int,
            percentage: null == percentage
                ? _value.percentage
                : percentage // ignore: cast_nullable_to_non_nullable
                      as double,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$DashboardPaymentMethodImplCopyWith<$Res>
    implements $DashboardPaymentMethodCopyWith<$Res> {
  factory _$$DashboardPaymentMethodImplCopyWith(
    _$DashboardPaymentMethodImpl value,
    $Res Function(_$DashboardPaymentMethodImpl) then,
  ) = __$$DashboardPaymentMethodImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String paymentMethodId,
    String paymentMethodName,
    String paymentMethodType,
    int totalAmount,
    int orderCount,
    int paymentCount,
    double percentage,
  });
}

/// @nodoc
class __$$DashboardPaymentMethodImplCopyWithImpl<$Res>
    extends
        _$DashboardPaymentMethodCopyWithImpl<$Res, _$DashboardPaymentMethodImpl>
    implements _$$DashboardPaymentMethodImplCopyWith<$Res> {
  __$$DashboardPaymentMethodImplCopyWithImpl(
    _$DashboardPaymentMethodImpl _value,
    $Res Function(_$DashboardPaymentMethodImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of DashboardPaymentMethod
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? paymentMethodId = null,
    Object? paymentMethodName = null,
    Object? paymentMethodType = null,
    Object? totalAmount = null,
    Object? orderCount = null,
    Object? paymentCount = null,
    Object? percentage = null,
  }) {
    return _then(
      _$DashboardPaymentMethodImpl(
        paymentMethodId: null == paymentMethodId
            ? _value.paymentMethodId
            : paymentMethodId // ignore: cast_nullable_to_non_nullable
                  as String,
        paymentMethodName: null == paymentMethodName
            ? _value.paymentMethodName
            : paymentMethodName // ignore: cast_nullable_to_non_nullable
                  as String,
        paymentMethodType: null == paymentMethodType
            ? _value.paymentMethodType
            : paymentMethodType // ignore: cast_nullable_to_non_nullable
                  as String,
        totalAmount: null == totalAmount
            ? _value.totalAmount
            : totalAmount // ignore: cast_nullable_to_non_nullable
                  as int,
        orderCount: null == orderCount
            ? _value.orderCount
            : orderCount // ignore: cast_nullable_to_non_nullable
                  as int,
        paymentCount: null == paymentCount
            ? _value.paymentCount
            : paymentCount // ignore: cast_nullable_to_non_nullable
                  as int,
        percentage: null == percentage
            ? _value.percentage
            : percentage // ignore: cast_nullable_to_non_nullable
                  as double,
      ),
    );
  }
}

/// @nodoc

class _$DashboardPaymentMethodImpl implements _DashboardPaymentMethod {
  const _$DashboardPaymentMethodImpl({
    required this.paymentMethodId,
    required this.paymentMethodName,
    required this.paymentMethodType,
    required this.totalAmount,
    required this.orderCount,
    required this.paymentCount,
    required this.percentage,
  });

  @override
  final String paymentMethodId;
  @override
  final String paymentMethodName;
  @override
  final String paymentMethodType;
  @override
  final int totalAmount;
  @override
  final int orderCount;
  @override
  final int paymentCount;
  @override
  final double percentage;

  @override
  String toString() {
    return 'DashboardPaymentMethod(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$DashboardPaymentMethodImpl &&
            (identical(other.paymentMethodId, paymentMethodId) ||
                other.paymentMethodId == paymentMethodId) &&
            (identical(other.paymentMethodName, paymentMethodName) ||
                other.paymentMethodName == paymentMethodName) &&
            (identical(other.paymentMethodType, paymentMethodType) ||
                other.paymentMethodType == paymentMethodType) &&
            (identical(other.totalAmount, totalAmount) ||
                other.totalAmount == totalAmount) &&
            (identical(other.orderCount, orderCount) ||
                other.orderCount == orderCount) &&
            (identical(other.paymentCount, paymentCount) ||
                other.paymentCount == paymentCount) &&
            (identical(other.percentage, percentage) ||
                other.percentage == percentage));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    paymentMethodId,
    paymentMethodName,
    paymentMethodType,
    totalAmount,
    orderCount,
    paymentCount,
    percentage,
  );

  /// Create a copy of DashboardPaymentMethod
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$DashboardPaymentMethodImplCopyWith<_$DashboardPaymentMethodImpl>
  get copyWith =>
      __$$DashboardPaymentMethodImplCopyWithImpl<_$DashboardPaymentMethodImpl>(
        this,
        _$identity,
      );
}

abstract class _DashboardPaymentMethod implements DashboardPaymentMethod {
  const factory _DashboardPaymentMethod({
    required final String paymentMethodId,
    required final String paymentMethodName,
    required final String paymentMethodType,
    required final int totalAmount,
    required final int orderCount,
    required final int paymentCount,
    required final double percentage,
  }) = _$DashboardPaymentMethodImpl;

  @override
  String get paymentMethodId;
  @override
  String get paymentMethodName;
  @override
  String get paymentMethodType;
  @override
  int get totalAmount;
  @override
  int get orderCount;
  @override
  int get paymentCount;
  @override
  double get percentage;

  /// Create a copy of DashboardPaymentMethod
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$DashboardPaymentMethodImplCopyWith<_$DashboardPaymentMethodImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$DashboardRecentSale {
  String get date => throw _privateConstructorUsedError;
  int get sales => throw _privateConstructorUsedError;
  int get orders => throw _privateConstructorUsedError;
  int get items => throw _privateConstructorUsedError;
  int get tax => throw _privateConstructorUsedError;
  int get discount => throw _privateConstructorUsedError;
  int get netSales => throw _privateConstructorUsedError;

  /// Create a copy of DashboardRecentSale
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $DashboardRecentSaleCopyWith<DashboardRecentSale> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $DashboardRecentSaleCopyWith<$Res> {
  factory $DashboardRecentSaleCopyWith(
    DashboardRecentSale value,
    $Res Function(DashboardRecentSale) then,
  ) = _$DashboardRecentSaleCopyWithImpl<$Res, DashboardRecentSale>;
  @useResult
  $Res call({
    String date,
    int sales,
    int orders,
    int items,
    int tax,
    int discount,
    int netSales,
  });
}

/// @nodoc
class _$DashboardRecentSaleCopyWithImpl<$Res, $Val extends DashboardRecentSale>
    implements $DashboardRecentSaleCopyWith<$Res> {
  _$DashboardRecentSaleCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of DashboardRecentSale
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? date = null,
    Object? sales = null,
    Object? orders = null,
    Object? items = null,
    Object? tax = null,
    Object? discount = null,
    Object? netSales = null,
  }) {
    return _then(
      _value.copyWith(
            date: null == date
                ? _value.date
                : date // ignore: cast_nullable_to_non_nullable
                      as String,
            sales: null == sales
                ? _value.sales
                : sales // ignore: cast_nullable_to_non_nullable
                      as int,
            orders: null == orders
                ? _value.orders
                : orders // ignore: cast_nullable_to_non_nullable
                      as int,
            items: null == items
                ? _value.items
                : items // ignore: cast_nullable_to_non_nullable
                      as int,
            tax: null == tax
                ? _value.tax
                : tax // ignore: cast_nullable_to_non_nullable
                      as int,
            discount: null == discount
                ? _value.discount
                : discount // ignore: cast_nullable_to_non_nullable
                      as int,
            netSales: null == netSales
                ? _value.netSales
                : netSales // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$DashboardRecentSaleImplCopyWith<$Res>
    implements $DashboardRecentSaleCopyWith<$Res> {
  factory _$$DashboardRecentSaleImplCopyWith(
    _$DashboardRecentSaleImpl value,
    $Res Function(_$DashboardRecentSaleImpl) then,
  ) = __$$DashboardRecentSaleImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String date,
    int sales,
    int orders,
    int items,
    int tax,
    int discount,
    int netSales,
  });
}

/// @nodoc
class __$$DashboardRecentSaleImplCopyWithImpl<$Res>
    extends _$DashboardRecentSaleCopyWithImpl<$Res, _$DashboardRecentSaleImpl>
    implements _$$DashboardRecentSaleImplCopyWith<$Res> {
  __$$DashboardRecentSaleImplCopyWithImpl(
    _$DashboardRecentSaleImpl _value,
    $Res Function(_$DashboardRecentSaleImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of DashboardRecentSale
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? date = null,
    Object? sales = null,
    Object? orders = null,
    Object? items = null,
    Object? tax = null,
    Object? discount = null,
    Object? netSales = null,
  }) {
    return _then(
      _$DashboardRecentSaleImpl(
        date: null == date
            ? _value.date
            : date // ignore: cast_nullable_to_non_nullable
                  as String,
        sales: null == sales
            ? _value.sales
            : sales // ignore: cast_nullable_to_non_nullable
                  as int,
        orders: null == orders
            ? _value.orders
            : orders // ignore: cast_nullable_to_non_nullable
                  as int,
        items: null == items
            ? _value.items
            : items // ignore: cast_nullable_to_non_nullable
                  as int,
        tax: null == tax
            ? _value.tax
            : tax // ignore: cast_nullable_to_non_nullable
                  as int,
        discount: null == discount
            ? _value.discount
            : discount // ignore: cast_nullable_to_non_nullable
                  as int,
        netSales: null == netSales
            ? _value.netSales
            : netSales // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$DashboardRecentSaleImpl implements _DashboardRecentSale {
  const _$DashboardRecentSaleImpl({
    required this.date,
    required this.sales,
    required this.orders,
    required this.items,
    required this.tax,
    required this.discount,
    required this.netSales,
  });

  @override
  final String date;
  @override
  final int sales;
  @override
  final int orders;
  @override
  final int items;
  @override
  final int tax;
  @override
  final int discount;
  @override
  final int netSales;

  @override
  String toString() {
    return 'DashboardRecentSale(date: $date, sales: $sales, orders: $orders, items: $items, tax: $tax, discount: $discount, netSales: $netSales)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$DashboardRecentSaleImpl &&
            (identical(other.date, date) || other.date == date) &&
            (identical(other.sales, sales) || other.sales == sales) &&
            (identical(other.orders, orders) || other.orders == orders) &&
            (identical(other.items, items) || other.items == items) &&
            (identical(other.tax, tax) || other.tax == tax) &&
            (identical(other.discount, discount) ||
                other.discount == discount) &&
            (identical(other.netSales, netSales) ||
                other.netSales == netSales));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    date,
    sales,
    orders,
    items,
    tax,
    discount,
    netSales,
  );

  /// Create a copy of DashboardRecentSale
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$DashboardRecentSaleImplCopyWith<_$DashboardRecentSaleImpl> get copyWith =>
      __$$DashboardRecentSaleImplCopyWithImpl<_$DashboardRecentSaleImpl>(
        this,
        _$identity,
      );
}

abstract class _DashboardRecentSale implements DashboardRecentSale {
  const factory _DashboardRecentSale({
    required final String date,
    required final int sales,
    required final int orders,
    required final int items,
    required final int tax,
    required final int discount,
    required final int netSales,
  }) = _$DashboardRecentSaleImpl;

  @override
  String get date;
  @override
  int get sales;
  @override
  int get orders;
  @override
  int get items;
  @override
  int get tax;
  @override
  int get discount;
  @override
  int get netSales;

  /// Create a copy of DashboardRecentSale
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$DashboardRecentSaleImplCopyWith<_$DashboardRecentSaleImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$SalesAnalytic {
  String get organizationId => throw _privateConstructorUsedError;
  String get outletId => throw _privateConstructorUsedError;
  DateTime get dateFrom => throw _privateConstructorUsedError;
  DateTime get dateTo => throw _privateConstructorUsedError;
  String get groupBy => throw _privateConstructorUsedError;
  SalesSummary get summary => throw _privateConstructorUsedError;
  List<SalesAnalyticItem> get data => throw _privateConstructorUsedError;

  /// Create a copy of SalesAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $SalesAnalyticCopyWith<SalesAnalytic> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $SalesAnalyticCopyWith<$Res> {
  factory $SalesAnalyticCopyWith(
    SalesAnalytic value,
    $Res Function(SalesAnalytic) then,
  ) = _$SalesAnalyticCopyWithImpl<$Res, SalesAnalytic>;
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    String groupBy,
    SalesSummary summary,
    List<SalesAnalyticItem> data,
  });

  $SalesSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class _$SalesAnalyticCopyWithImpl<$Res, $Val extends SalesAnalytic>
    implements $SalesAnalyticCopyWith<$Res> {
  _$SalesAnalyticCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of SalesAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? groupBy = null,
    Object? summary = null,
    Object? data = null,
  }) {
    return _then(
      _value.copyWith(
            organizationId: null == organizationId
                ? _value.organizationId
                : organizationId // ignore: cast_nullable_to_non_nullable
                      as String,
            outletId: null == outletId
                ? _value.outletId
                : outletId // ignore: cast_nullable_to_non_nullable
                      as String,
            dateFrom: null == dateFrom
                ? _value.dateFrom
                : dateFrom // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            dateTo: null == dateTo
                ? _value.dateTo
                : dateTo // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            groupBy: null == groupBy
                ? _value.groupBy
                : groupBy // ignore: cast_nullable_to_non_nullable
                      as String,
            summary: null == summary
                ? _value.summary
                : summary // ignore: cast_nullable_to_non_nullable
                      as SalesSummary,
            data: null == data
                ? _value.data
                : data // ignore: cast_nullable_to_non_nullable
                      as List<SalesAnalyticItem>,
          )
          as $Val,
    );
  }

  /// Create a copy of SalesAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $SalesSummaryCopyWith<$Res> get summary {
    return $SalesSummaryCopyWith<$Res>(_value.summary, (value) {
      return _then(_value.copyWith(summary: value) as $Val);
    });
  }
}

/// @nodoc
abstract class _$$SalesAnalyticImplCopyWith<$Res>
    implements $SalesAnalyticCopyWith<$Res> {
  factory _$$SalesAnalyticImplCopyWith(
    _$SalesAnalyticImpl value,
    $Res Function(_$SalesAnalyticImpl) then,
  ) = __$$SalesAnalyticImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    String groupBy,
    SalesSummary summary,
    List<SalesAnalyticItem> data,
  });

  @override
  $SalesSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class __$$SalesAnalyticImplCopyWithImpl<$Res>
    extends _$SalesAnalyticCopyWithImpl<$Res, _$SalesAnalyticImpl>
    implements _$$SalesAnalyticImplCopyWith<$Res> {
  __$$SalesAnalyticImplCopyWithImpl(
    _$SalesAnalyticImpl _value,
    $Res Function(_$SalesAnalyticImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of SalesAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? groupBy = null,
    Object? summary = null,
    Object? data = null,
  }) {
    return _then(
      _$SalesAnalyticImpl(
        organizationId: null == organizationId
            ? _value.organizationId
            : organizationId // ignore: cast_nullable_to_non_nullable
                  as String,
        outletId: null == outletId
            ? _value.outletId
            : outletId // ignore: cast_nullable_to_non_nullable
                  as String,
        dateFrom: null == dateFrom
            ? _value.dateFrom
            : dateFrom // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        dateTo: null == dateTo
            ? _value.dateTo
            : dateTo // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        groupBy: null == groupBy
            ? _value.groupBy
            : groupBy // ignore: cast_nullable_to_non_nullable
                  as String,
        summary: null == summary
            ? _value.summary
            : summary // ignore: cast_nullable_to_non_nullable
                  as SalesSummary,
        data: null == data
            ? _value._data
            : data // ignore: cast_nullable_to_non_nullable
                  as List<SalesAnalyticItem>,
      ),
    );
  }
}

/// @nodoc

class _$SalesAnalyticImpl extends _SalesAnalytic {
  const _$SalesAnalyticImpl({
    required this.organizationId,
    required this.outletId,
    required this.dateFrom,
    required this.dateTo,
    required this.groupBy,
    required this.summary,
    required final List<SalesAnalyticItem> data,
  }) : _data = data,
       super._();

  @override
  final String organizationId;
  @override
  final String outletId;
  @override
  final DateTime dateFrom;
  @override
  final DateTime dateTo;
  @override
  final String groupBy;
  @override
  final SalesSummary summary;
  final List<SalesAnalyticItem> _data;
  @override
  List<SalesAnalyticItem> get data {
    if (_data is EqualUnmodifiableListView) return _data;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_data);
  }

  @override
  String toString() {
    return 'SalesAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$SalesAnalyticImpl &&
            (identical(other.organizationId, organizationId) ||
                other.organizationId == organizationId) &&
            (identical(other.outletId, outletId) ||
                other.outletId == outletId) &&
            (identical(other.dateFrom, dateFrom) ||
                other.dateFrom == dateFrom) &&
            (identical(other.dateTo, dateTo) || other.dateTo == dateTo) &&
            (identical(other.groupBy, groupBy) || other.groupBy == groupBy) &&
            (identical(other.summary, summary) || other.summary == summary) &&
            const DeepCollectionEquality().equals(other._data, _data));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    organizationId,
    outletId,
    dateFrom,
    dateTo,
    groupBy,
    summary,
    const DeepCollectionEquality().hash(_data),
  );

  /// Create a copy of SalesAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$SalesAnalyticImplCopyWith<_$SalesAnalyticImpl> get copyWith =>
      __$$SalesAnalyticImplCopyWithImpl<_$SalesAnalyticImpl>(this, _$identity);
}

abstract class _SalesAnalytic extends SalesAnalytic {
  const factory _SalesAnalytic({
    required final String organizationId,
    required final String outletId,
    required final DateTime dateFrom,
    required final DateTime dateTo,
    required final String groupBy,
    required final SalesSummary summary,
    required final List<SalesAnalyticItem> data,
  }) = _$SalesAnalyticImpl;
  const _SalesAnalytic._() : super._();

  @override
  String get organizationId;
  @override
  String get outletId;
  @override
  DateTime get dateFrom;
  @override
  DateTime get dateTo;
  @override
  String get groupBy;
  @override
  SalesSummary get summary;
  @override
  List<SalesAnalyticItem> get data;

  /// Create a copy of SalesAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$SalesAnalyticImplCopyWith<_$SalesAnalyticImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$SalesSummary {
  int get totalSales => throw _privateConstructorUsedError;
  int get totalOrders => throw _privateConstructorUsedError;
  int get totalItems => throw _privateConstructorUsedError;
  double get averageOrderValue => throw _privateConstructorUsedError;
  int get totalTax => throw _privateConstructorUsedError;
  int get totalDiscount => throw _privateConstructorUsedError;
  int get netSales => throw _privateConstructorUsedError;

  /// Create a copy of SalesSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $SalesSummaryCopyWith<SalesSummary> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $SalesSummaryCopyWith<$Res> {
  factory $SalesSummaryCopyWith(
    SalesSummary value,
    $Res Function(SalesSummary) then,
  ) = _$SalesSummaryCopyWithImpl<$Res, SalesSummary>;
  @useResult
  $Res call({
    int totalSales,
    int totalOrders,
    int totalItems,
    double averageOrderValue,
    int totalTax,
    int totalDiscount,
    int netSales,
  });
}

/// @nodoc
class _$SalesSummaryCopyWithImpl<$Res, $Val extends SalesSummary>
    implements $SalesSummaryCopyWith<$Res> {
  _$SalesSummaryCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of SalesSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalSales = null,
    Object? totalOrders = null,
    Object? totalItems = null,
    Object? averageOrderValue = null,
    Object? totalTax = null,
    Object? totalDiscount = null,
    Object? netSales = null,
  }) {
    return _then(
      _value.copyWith(
            totalSales: null == totalSales
                ? _value.totalSales
                : totalSales // ignore: cast_nullable_to_non_nullable
                      as int,
            totalOrders: null == totalOrders
                ? _value.totalOrders
                : totalOrders // ignore: cast_nullable_to_non_nullable
                      as int,
            totalItems: null == totalItems
                ? _value.totalItems
                : totalItems // ignore: cast_nullable_to_non_nullable
                      as int,
            averageOrderValue: null == averageOrderValue
                ? _value.averageOrderValue
                : averageOrderValue // ignore: cast_nullable_to_non_nullable
                      as double,
            totalTax: null == totalTax
                ? _value.totalTax
                : totalTax // ignore: cast_nullable_to_non_nullable
                      as int,
            totalDiscount: null == totalDiscount
                ? _value.totalDiscount
                : totalDiscount // ignore: cast_nullable_to_non_nullable
                      as int,
            netSales: null == netSales
                ? _value.netSales
                : netSales // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$SalesSummaryImplCopyWith<$Res>
    implements $SalesSummaryCopyWith<$Res> {
  factory _$$SalesSummaryImplCopyWith(
    _$SalesSummaryImpl value,
    $Res Function(_$SalesSummaryImpl) then,
  ) = __$$SalesSummaryImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    int totalSales,
    int totalOrders,
    int totalItems,
    double averageOrderValue,
    int totalTax,
    int totalDiscount,
    int netSales,
  });
}

/// @nodoc
class __$$SalesSummaryImplCopyWithImpl<$Res>
    extends _$SalesSummaryCopyWithImpl<$Res, _$SalesSummaryImpl>
    implements _$$SalesSummaryImplCopyWith<$Res> {
  __$$SalesSummaryImplCopyWithImpl(
    _$SalesSummaryImpl _value,
    $Res Function(_$SalesSummaryImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of SalesSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalSales = null,
    Object? totalOrders = null,
    Object? totalItems = null,
    Object? averageOrderValue = null,
    Object? totalTax = null,
    Object? totalDiscount = null,
    Object? netSales = null,
  }) {
    return _then(
      _$SalesSummaryImpl(
        totalSales: null == totalSales
            ? _value.totalSales
            : totalSales // ignore: cast_nullable_to_non_nullable
                  as int,
        totalOrders: null == totalOrders
            ? _value.totalOrders
            : totalOrders // ignore: cast_nullable_to_non_nullable
                  as int,
        totalItems: null == totalItems
            ? _value.totalItems
            : totalItems // ignore: cast_nullable_to_non_nullable
                  as int,
        averageOrderValue: null == averageOrderValue
            ? _value.averageOrderValue
            : averageOrderValue // ignore: cast_nullable_to_non_nullable
                  as double,
        totalTax: null == totalTax
            ? _value.totalTax
            : totalTax // ignore: cast_nullable_to_non_nullable
                  as int,
        totalDiscount: null == totalDiscount
            ? _value.totalDiscount
            : totalDiscount // ignore: cast_nullable_to_non_nullable
                  as int,
        netSales: null == netSales
            ? _value.netSales
            : netSales // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$SalesSummaryImpl implements _SalesSummary {
  const _$SalesSummaryImpl({
    required this.totalSales,
    required this.totalOrders,
    required this.totalItems,
    required this.averageOrderValue,
    required this.totalTax,
    required this.totalDiscount,
    required this.netSales,
  });

  @override
  final int totalSales;
  @override
  final int totalOrders;
  @override
  final int totalItems;
  @override
  final double averageOrderValue;
  @override
  final int totalTax;
  @override
  final int totalDiscount;
  @override
  final int netSales;

  @override
  String toString() {
    return 'SalesSummary(totalSales: $totalSales, totalOrders: $totalOrders, totalItems: $totalItems, averageOrderValue: $averageOrderValue, totalTax: $totalTax, totalDiscount: $totalDiscount, netSales: $netSales)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$SalesSummaryImpl &&
            (identical(other.totalSales, totalSales) ||
                other.totalSales == totalSales) &&
            (identical(other.totalOrders, totalOrders) ||
                other.totalOrders == totalOrders) &&
            (identical(other.totalItems, totalItems) ||
                other.totalItems == totalItems) &&
            (identical(other.averageOrderValue, averageOrderValue) ||
                other.averageOrderValue == averageOrderValue) &&
            (identical(other.totalTax, totalTax) ||
                other.totalTax == totalTax) &&
            (identical(other.totalDiscount, totalDiscount) ||
                other.totalDiscount == totalDiscount) &&
            (identical(other.netSales, netSales) ||
                other.netSales == netSales));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    totalSales,
    totalOrders,
    totalItems,
    averageOrderValue,
    totalTax,
    totalDiscount,
    netSales,
  );

  /// Create a copy of SalesSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$SalesSummaryImplCopyWith<_$SalesSummaryImpl> get copyWith =>
      __$$SalesSummaryImplCopyWithImpl<_$SalesSummaryImpl>(this, _$identity);
}

abstract class _SalesSummary implements SalesSummary {
  const factory _SalesSummary({
    required final int totalSales,
    required final int totalOrders,
    required final int totalItems,
    required final double averageOrderValue,
    required final int totalTax,
    required final int totalDiscount,
    required final int netSales,
  }) = _$SalesSummaryImpl;

  @override
  int get totalSales;
  @override
  int get totalOrders;
  @override
  int get totalItems;
  @override
  double get averageOrderValue;
  @override
  int get totalTax;
  @override
  int get totalDiscount;
  @override
  int get netSales;

  /// Create a copy of SalesSummary
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$SalesSummaryImplCopyWith<_$SalesSummaryImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$SalesAnalyticItem {
  DateTime get date => throw _privateConstructorUsedError;
  int get sales => throw _privateConstructorUsedError;
  int get orders => throw _privateConstructorUsedError;
  int get items => throw _privateConstructorUsedError;
  int get tax => throw _privateConstructorUsedError;
  int get discount => throw _privateConstructorUsedError;
  int get netSales => throw _privateConstructorUsedError;

  /// Create a copy of SalesAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $SalesAnalyticItemCopyWith<SalesAnalyticItem> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $SalesAnalyticItemCopyWith<$Res> {
  factory $SalesAnalyticItemCopyWith(
    SalesAnalyticItem value,
    $Res Function(SalesAnalyticItem) then,
  ) = _$SalesAnalyticItemCopyWithImpl<$Res, SalesAnalyticItem>;
  @useResult
  $Res call({
    DateTime date,
    int sales,
    int orders,
    int items,
    int tax,
    int discount,
    int netSales,
  });
}

/// @nodoc
class _$SalesAnalyticItemCopyWithImpl<$Res, $Val extends SalesAnalyticItem>
    implements $SalesAnalyticItemCopyWith<$Res> {
  _$SalesAnalyticItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of SalesAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? date = null,
    Object? sales = null,
    Object? orders = null,
    Object? items = null,
    Object? tax = null,
    Object? discount = null,
    Object? netSales = null,
  }) {
    return _then(
      _value.copyWith(
            date: null == date
                ? _value.date
                : date // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            sales: null == sales
                ? _value.sales
                : sales // ignore: cast_nullable_to_non_nullable
                      as int,
            orders: null == orders
                ? _value.orders
                : orders // ignore: cast_nullable_to_non_nullable
                      as int,
            items: null == items
                ? _value.items
                : items // ignore: cast_nullable_to_non_nullable
                      as int,
            tax: null == tax
                ? _value.tax
                : tax // ignore: cast_nullable_to_non_nullable
                      as int,
            discount: null == discount
                ? _value.discount
                : discount // ignore: cast_nullable_to_non_nullable
                      as int,
            netSales: null == netSales
                ? _value.netSales
                : netSales // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$SalesAnalyticItemImplCopyWith<$Res>
    implements $SalesAnalyticItemCopyWith<$Res> {
  factory _$$SalesAnalyticItemImplCopyWith(
    _$SalesAnalyticItemImpl value,
    $Res Function(_$SalesAnalyticItemImpl) then,
  ) = __$$SalesAnalyticItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    DateTime date,
    int sales,
    int orders,
    int items,
    int tax,
    int discount,
    int netSales,
  });
}

/// @nodoc
class __$$SalesAnalyticItemImplCopyWithImpl<$Res>
    extends _$SalesAnalyticItemCopyWithImpl<$Res, _$SalesAnalyticItemImpl>
    implements _$$SalesAnalyticItemImplCopyWith<$Res> {
  __$$SalesAnalyticItemImplCopyWithImpl(
    _$SalesAnalyticItemImpl _value,
    $Res Function(_$SalesAnalyticItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of SalesAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? date = null,
    Object? sales = null,
    Object? orders = null,
    Object? items = null,
    Object? tax = null,
    Object? discount = null,
    Object? netSales = null,
  }) {
    return _then(
      _$SalesAnalyticItemImpl(
        date: null == date
            ? _value.date
            : date // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        sales: null == sales
            ? _value.sales
            : sales // ignore: cast_nullable_to_non_nullable
                  as int,
        orders: null == orders
            ? _value.orders
            : orders // ignore: cast_nullable_to_non_nullable
                  as int,
        items: null == items
            ? _value.items
            : items // ignore: cast_nullable_to_non_nullable
                  as int,
        tax: null == tax
            ? _value.tax
            : tax // ignore: cast_nullable_to_non_nullable
                  as int,
        discount: null == discount
            ? _value.discount
            : discount // ignore: cast_nullable_to_non_nullable
                  as int,
        netSales: null == netSales
            ? _value.netSales
            : netSales // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$SalesAnalyticItemImpl implements _SalesAnalyticItem {
  const _$SalesAnalyticItemImpl({
    required this.date,
    required this.sales,
    required this.orders,
    required this.items,
    required this.tax,
    required this.discount,
    required this.netSales,
  });

  @override
  final DateTime date;
  @override
  final int sales;
  @override
  final int orders;
  @override
  final int items;
  @override
  final int tax;
  @override
  final int discount;
  @override
  final int netSales;

  @override
  String toString() {
    return 'SalesAnalyticItem(date: $date, sales: $sales, orders: $orders, items: $items, tax: $tax, discount: $discount, netSales: $netSales)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$SalesAnalyticItemImpl &&
            (identical(other.date, date) || other.date == date) &&
            (identical(other.sales, sales) || other.sales == sales) &&
            (identical(other.orders, orders) || other.orders == orders) &&
            (identical(other.items, items) || other.items == items) &&
            (identical(other.tax, tax) || other.tax == tax) &&
            (identical(other.discount, discount) ||
                other.discount == discount) &&
            (identical(other.netSales, netSales) ||
                other.netSales == netSales));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    date,
    sales,
    orders,
    items,
    tax,
    discount,
    netSales,
  );

  /// Create a copy of SalesAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$SalesAnalyticItemImplCopyWith<_$SalesAnalyticItemImpl> get copyWith =>
      __$$SalesAnalyticItemImplCopyWithImpl<_$SalesAnalyticItemImpl>(
        this,
        _$identity,
      );
}

abstract class _SalesAnalyticItem implements SalesAnalyticItem {
  const factory _SalesAnalyticItem({
    required final DateTime date,
    required final int sales,
    required final int orders,
    required final int items,
    required final int tax,
    required final int discount,
    required final int netSales,
  }) = _$SalesAnalyticItemImpl;

  @override
  DateTime get date;
  @override
  int get sales;
  @override
  int get orders;
  @override
  int get items;
  @override
  int get tax;
  @override
  int get discount;
  @override
  int get netSales;

  /// Create a copy of SalesAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$SalesAnalyticItemImplCopyWith<_$SalesAnalyticItemImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$ProductAnalytic {
  String get organizationId => throw _privateConstructorUsedError;
  String get outletId => throw _privateConstructorUsedError;
  DateTime get dateFrom => throw _privateConstructorUsedError;
  DateTime get dateTo => throw _privateConstructorUsedError;
  List<ProductAnalyticItem> get data => throw _privateConstructorUsedError;

  /// Create a copy of ProductAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ProductAnalyticCopyWith<ProductAnalytic> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ProductAnalyticCopyWith<$Res> {
  factory $ProductAnalyticCopyWith(
    ProductAnalytic value,
    $Res Function(ProductAnalytic) then,
  ) = _$ProductAnalyticCopyWithImpl<$Res, ProductAnalytic>;
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    List<ProductAnalyticItem> data,
  });
}

/// @nodoc
class _$ProductAnalyticCopyWithImpl<$Res, $Val extends ProductAnalytic>
    implements $ProductAnalyticCopyWith<$Res> {
  _$ProductAnalyticCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ProductAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? data = null,
  }) {
    return _then(
      _value.copyWith(
            organizationId: null == organizationId
                ? _value.organizationId
                : organizationId // ignore: cast_nullable_to_non_nullable
                      as String,
            outletId: null == outletId
                ? _value.outletId
                : outletId // ignore: cast_nullable_to_non_nullable
                      as String,
            dateFrom: null == dateFrom
                ? _value.dateFrom
                : dateFrom // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            dateTo: null == dateTo
                ? _value.dateTo
                : dateTo // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            data: null == data
                ? _value.data
                : data // ignore: cast_nullable_to_non_nullable
                      as List<ProductAnalyticItem>,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$ProductAnalyticImplCopyWith<$Res>
    implements $ProductAnalyticCopyWith<$Res> {
  factory _$$ProductAnalyticImplCopyWith(
    _$ProductAnalyticImpl value,
    $Res Function(_$ProductAnalyticImpl) then,
  ) = __$$ProductAnalyticImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    List<ProductAnalyticItem> data,
  });
}

/// @nodoc
class __$$ProductAnalyticImplCopyWithImpl<$Res>
    extends _$ProductAnalyticCopyWithImpl<$Res, _$ProductAnalyticImpl>
    implements _$$ProductAnalyticImplCopyWith<$Res> {
  __$$ProductAnalyticImplCopyWithImpl(
    _$ProductAnalyticImpl _value,
    $Res Function(_$ProductAnalyticImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ProductAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? data = null,
  }) {
    return _then(
      _$ProductAnalyticImpl(
        organizationId: null == organizationId
            ? _value.organizationId
            : organizationId // ignore: cast_nullable_to_non_nullable
                  as String,
        outletId: null == outletId
            ? _value.outletId
            : outletId // ignore: cast_nullable_to_non_nullable
                  as String,
        dateFrom: null == dateFrom
            ? _value.dateFrom
            : dateFrom // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        dateTo: null == dateTo
            ? _value.dateTo
            : dateTo // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        data: null == data
            ? _value._data
            : data // ignore: cast_nullable_to_non_nullable
                  as List<ProductAnalyticItem>,
      ),
    );
  }
}

/// @nodoc

class _$ProductAnalyticImpl extends _ProductAnalytic {
  const _$ProductAnalyticImpl({
    required this.organizationId,
    required this.outletId,
    required this.dateFrom,
    required this.dateTo,
    required final List<ProductAnalyticItem> data,
  }) : _data = data,
       super._();

  @override
  final String organizationId;
  @override
  final String outletId;
  @override
  final DateTime dateFrom;
  @override
  final DateTime dateTo;
  final List<ProductAnalyticItem> _data;
  @override
  List<ProductAnalyticItem> get data {
    if (_data is EqualUnmodifiableListView) return _data;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_data);
  }

  @override
  String toString() {
    return 'ProductAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, data: $data)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ProductAnalyticImpl &&
            (identical(other.organizationId, organizationId) ||
                other.organizationId == organizationId) &&
            (identical(other.outletId, outletId) ||
                other.outletId == outletId) &&
            (identical(other.dateFrom, dateFrom) ||
                other.dateFrom == dateFrom) &&
            (identical(other.dateTo, dateTo) || other.dateTo == dateTo) &&
            const DeepCollectionEquality().equals(other._data, _data));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    organizationId,
    outletId,
    dateFrom,
    dateTo,
    const DeepCollectionEquality().hash(_data),
  );

  /// Create a copy of ProductAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ProductAnalyticImplCopyWith<_$ProductAnalyticImpl> get copyWith =>
      __$$ProductAnalyticImplCopyWithImpl<_$ProductAnalyticImpl>(
        this,
        _$identity,
      );
}

abstract class _ProductAnalytic extends ProductAnalytic {
  const factory _ProductAnalytic({
    required final String organizationId,
    required final String outletId,
    required final DateTime dateFrom,
    required final DateTime dateTo,
    required final List<ProductAnalyticItem> data,
  }) = _$ProductAnalyticImpl;
  const _ProductAnalytic._() : super._();

  @override
  String get organizationId;
  @override
  String get outletId;
  @override
  DateTime get dateFrom;
  @override
  DateTime get dateTo;
  @override
  List<ProductAnalyticItem> get data;

  /// Create a copy of ProductAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ProductAnalyticImplCopyWith<_$ProductAnalyticImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$ProductAnalyticItem {
  String get productId => throw _privateConstructorUsedError;
  String get productName => throw _privateConstructorUsedError;
  String get categoryId => throw _privateConstructorUsedError;
  String get categoryName => throw _privateConstructorUsedError;
  int get quantitySold => throw _privateConstructorUsedError;
  int get revenue => throw _privateConstructorUsedError;
  double get averagePrice => throw _privateConstructorUsedError;
  int get orderCount => throw _privateConstructorUsedError;

  /// Create a copy of ProductAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ProductAnalyticItemCopyWith<ProductAnalyticItem> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ProductAnalyticItemCopyWith<$Res> {
  factory $ProductAnalyticItemCopyWith(
    ProductAnalyticItem value,
    $Res Function(ProductAnalyticItem) then,
  ) = _$ProductAnalyticItemCopyWithImpl<$Res, ProductAnalyticItem>;
  @useResult
  $Res call({
    String productId,
    String productName,
    String categoryId,
    String categoryName,
    int quantitySold,
    int revenue,
    double averagePrice,
    int orderCount,
  });
}

/// @nodoc
class _$ProductAnalyticItemCopyWithImpl<$Res, $Val extends ProductAnalyticItem>
    implements $ProductAnalyticItemCopyWith<$Res> {
  _$ProductAnalyticItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ProductAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? productId = null,
    Object? productName = null,
    Object? categoryId = null,
    Object? categoryName = null,
    Object? quantitySold = null,
    Object? revenue = null,
    Object? averagePrice = null,
    Object? orderCount = null,
  }) {
    return _then(
      _value.copyWith(
            productId: null == productId
                ? _value.productId
                : productId // ignore: cast_nullable_to_non_nullable
                      as String,
            productName: null == productName
                ? _value.productName
                : productName // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryId: null == categoryId
                ? _value.categoryId
                : categoryId // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryName: null == categoryName
                ? _value.categoryName
                : categoryName // ignore: cast_nullable_to_non_nullable
                      as String,
            quantitySold: null == quantitySold
                ? _value.quantitySold
                : quantitySold // ignore: cast_nullable_to_non_nullable
                      as int,
            revenue: null == revenue
                ? _value.revenue
                : revenue // ignore: cast_nullable_to_non_nullable
                      as int,
            averagePrice: null == averagePrice
                ? _value.averagePrice
                : averagePrice // ignore: cast_nullable_to_non_nullable
                      as double,
            orderCount: null == orderCount
                ? _value.orderCount
                : orderCount // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$ProductAnalyticItemImplCopyWith<$Res>
    implements $ProductAnalyticItemCopyWith<$Res> {
  factory _$$ProductAnalyticItemImplCopyWith(
    _$ProductAnalyticItemImpl value,
    $Res Function(_$ProductAnalyticItemImpl) then,
  ) = __$$ProductAnalyticItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String productId,
    String productName,
    String categoryId,
    String categoryName,
    int quantitySold,
    int revenue,
    double averagePrice,
    int orderCount,
  });
}

/// @nodoc
class __$$ProductAnalyticItemImplCopyWithImpl<$Res>
    extends _$ProductAnalyticItemCopyWithImpl<$Res, _$ProductAnalyticItemImpl>
    implements _$$ProductAnalyticItemImplCopyWith<$Res> {
  __$$ProductAnalyticItemImplCopyWithImpl(
    _$ProductAnalyticItemImpl _value,
    $Res Function(_$ProductAnalyticItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ProductAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? productId = null,
    Object? productName = null,
    Object? categoryId = null,
    Object? categoryName = null,
    Object? quantitySold = null,
    Object? revenue = null,
    Object? averagePrice = null,
    Object? orderCount = null,
  }) {
    return _then(
      _$ProductAnalyticItemImpl(
        productId: null == productId
            ? _value.productId
            : productId // ignore: cast_nullable_to_non_nullable
                  as String,
        productName: null == productName
            ? _value.productName
            : productName // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryId: null == categoryId
            ? _value.categoryId
            : categoryId // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryName: null == categoryName
            ? _value.categoryName
            : categoryName // ignore: cast_nullable_to_non_nullable
                  as String,
        quantitySold: null == quantitySold
            ? _value.quantitySold
            : quantitySold // ignore: cast_nullable_to_non_nullable
                  as int,
        revenue: null == revenue
            ? _value.revenue
            : revenue // ignore: cast_nullable_to_non_nullable
                  as int,
        averagePrice: null == averagePrice
            ? _value.averagePrice
            : averagePrice // ignore: cast_nullable_to_non_nullable
                  as double,
        orderCount: null == orderCount
            ? _value.orderCount
            : orderCount // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$ProductAnalyticItemImpl implements _ProductAnalyticItem {
  const _$ProductAnalyticItemImpl({
    required this.productId,
    required this.productName,
    required this.categoryId,
    required this.categoryName,
    required this.quantitySold,
    required this.revenue,
    required this.averagePrice,
    required this.orderCount,
  });

  @override
  final String productId;
  @override
  final String productName;
  @override
  final String categoryId;
  @override
  final String categoryName;
  @override
  final int quantitySold;
  @override
  final int revenue;
  @override
  final double averagePrice;
  @override
  final int orderCount;

  @override
  String toString() {
    return 'ProductAnalyticItem(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, averagePrice: $averagePrice, orderCount: $orderCount)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ProductAnalyticItemImpl &&
            (identical(other.productId, productId) ||
                other.productId == productId) &&
            (identical(other.productName, productName) ||
                other.productName == productName) &&
            (identical(other.categoryId, categoryId) ||
                other.categoryId == categoryId) &&
            (identical(other.categoryName, categoryName) ||
                other.categoryName == categoryName) &&
            (identical(other.quantitySold, quantitySold) ||
                other.quantitySold == quantitySold) &&
            (identical(other.revenue, revenue) || other.revenue == revenue) &&
            (identical(other.averagePrice, averagePrice) ||
                other.averagePrice == averagePrice) &&
            (identical(other.orderCount, orderCount) ||
                other.orderCount == orderCount));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    productId,
    productName,
    categoryId,
    categoryName,
    quantitySold,
    revenue,
    averagePrice,
    orderCount,
  );

  /// Create a copy of ProductAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ProductAnalyticItemImplCopyWith<_$ProductAnalyticItemImpl> get copyWith =>
      __$$ProductAnalyticItemImplCopyWithImpl<_$ProductAnalyticItemImpl>(
        this,
        _$identity,
      );
}

abstract class _ProductAnalyticItem implements ProductAnalyticItem {
  const factory _ProductAnalyticItem({
    required final String productId,
    required final String productName,
    required final String categoryId,
    required final String categoryName,
    required final int quantitySold,
    required final int revenue,
    required final double averagePrice,
    required final int orderCount,
  }) = _$ProductAnalyticItemImpl;

  @override
  String get productId;
  @override
  String get productName;
  @override
  String get categoryId;
  @override
  String get categoryName;
  @override
  int get quantitySold;
  @override
  int get revenue;
  @override
  double get averagePrice;
  @override
  int get orderCount;

  /// Create a copy of ProductAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ProductAnalyticItemImplCopyWith<_$ProductAnalyticItemImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$ProductAnalyticCategoryItem {
  String get categoryName => throw _privateConstructorUsedError;
  int get productCount => throw _privateConstructorUsedError;
  int get totalRevenue => throw _privateConstructorUsedError;

  /// Create a copy of ProductAnalyticCategoryItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ProductAnalyticCategoryItemCopyWith<ProductAnalyticCategoryItem>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ProductAnalyticCategoryItemCopyWith<$Res> {
  factory $ProductAnalyticCategoryItemCopyWith(
    ProductAnalyticCategoryItem value,
    $Res Function(ProductAnalyticCategoryItem) then,
  ) =
      _$ProductAnalyticCategoryItemCopyWithImpl<
        $Res,
        ProductAnalyticCategoryItem
      >;
  @useResult
  $Res call({String categoryName, int productCount, int totalRevenue});
}

/// @nodoc
class _$ProductAnalyticCategoryItemCopyWithImpl<
  $Res,
  $Val extends ProductAnalyticCategoryItem
>
    implements $ProductAnalyticCategoryItemCopyWith<$Res> {
  _$ProductAnalyticCategoryItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ProductAnalyticCategoryItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? categoryName = null,
    Object? productCount = null,
    Object? totalRevenue = null,
  }) {
    return _then(
      _value.copyWith(
            categoryName: null == categoryName
                ? _value.categoryName
                : categoryName // ignore: cast_nullable_to_non_nullable
                      as String,
            productCount: null == productCount
                ? _value.productCount
                : productCount // ignore: cast_nullable_to_non_nullable
                      as int,
            totalRevenue: null == totalRevenue
                ? _value.totalRevenue
                : totalRevenue // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$ProductAnalyticCategoryItemImplCopyWith<$Res>
    implements $ProductAnalyticCategoryItemCopyWith<$Res> {
  factory _$$ProductAnalyticCategoryItemImplCopyWith(
    _$ProductAnalyticCategoryItemImpl value,
    $Res Function(_$ProductAnalyticCategoryItemImpl) then,
  ) = __$$ProductAnalyticCategoryItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({String categoryName, int productCount, int totalRevenue});
}

/// @nodoc
class __$$ProductAnalyticCategoryItemImplCopyWithImpl<$Res>
    extends
        _$ProductAnalyticCategoryItemCopyWithImpl<
          $Res,
          _$ProductAnalyticCategoryItemImpl
        >
    implements _$$ProductAnalyticCategoryItemImplCopyWith<$Res> {
  __$$ProductAnalyticCategoryItemImplCopyWithImpl(
    _$ProductAnalyticCategoryItemImpl _value,
    $Res Function(_$ProductAnalyticCategoryItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ProductAnalyticCategoryItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? categoryName = null,
    Object? productCount = null,
    Object? totalRevenue = null,
  }) {
    return _then(
      _$ProductAnalyticCategoryItemImpl(
        categoryName: null == categoryName
            ? _value.categoryName
            : categoryName // ignore: cast_nullable_to_non_nullable
                  as String,
        productCount: null == productCount
            ? _value.productCount
            : productCount // ignore: cast_nullable_to_non_nullable
                  as int,
        totalRevenue: null == totalRevenue
            ? _value.totalRevenue
            : totalRevenue // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$ProductAnalyticCategoryItemImpl
    implements _ProductAnalyticCategoryItem {
  const _$ProductAnalyticCategoryItemImpl({
    required this.categoryName,
    required this.productCount,
    required this.totalRevenue,
  });

  @override
  final String categoryName;
  @override
  final int productCount;
  @override
  final int totalRevenue;

  @override
  String toString() {
    return 'ProductAnalyticCategoryItem(categoryName: $categoryName, productCount: $productCount, totalRevenue: $totalRevenue)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ProductAnalyticCategoryItemImpl &&
            (identical(other.categoryName, categoryName) ||
                other.categoryName == categoryName) &&
            (identical(other.productCount, productCount) ||
                other.productCount == productCount) &&
            (identical(other.totalRevenue, totalRevenue) ||
                other.totalRevenue == totalRevenue));
  }

  @override
  int get hashCode =>
      Object.hash(runtimeType, categoryName, productCount, totalRevenue);

  /// Create a copy of ProductAnalyticCategoryItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ProductAnalyticCategoryItemImplCopyWith<_$ProductAnalyticCategoryItemImpl>
  get copyWith =>
      __$$ProductAnalyticCategoryItemImplCopyWithImpl<
        _$ProductAnalyticCategoryItemImpl
      >(this, _$identity);
}

abstract class _ProductAnalyticCategoryItem
    implements ProductAnalyticCategoryItem {
  const factory _ProductAnalyticCategoryItem({
    required final String categoryName,
    required final int productCount,
    required final int totalRevenue,
  }) = _$ProductAnalyticCategoryItemImpl;

  @override
  String get categoryName;
  @override
  int get productCount;
  @override
  int get totalRevenue;

  /// Create a copy of ProductAnalyticCategoryItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ProductAnalyticCategoryItemImplCopyWith<_$ProductAnalyticCategoryItemImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$PaymentMethodAnalytic {
  String get organizationId => throw _privateConstructorUsedError;
  String get outletId => throw _privateConstructorUsedError;
  DateTime get dateFrom => throw _privateConstructorUsedError;
  DateTime get dateTo => throw _privateConstructorUsedError;
  String get groupBy => throw _privateConstructorUsedError;
  PaymentMethodAnalyticSummary get summary =>
      throw _privateConstructorUsedError;
  List<PaymentMethodAnalyticItem> get data =>
      throw _privateConstructorUsedError;

  /// Create a copy of PaymentMethodAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $PaymentMethodAnalyticCopyWith<PaymentMethodAnalytic> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $PaymentMethodAnalyticCopyWith<$Res> {
  factory $PaymentMethodAnalyticCopyWith(
    PaymentMethodAnalytic value,
    $Res Function(PaymentMethodAnalytic) then,
  ) = _$PaymentMethodAnalyticCopyWithImpl<$Res, PaymentMethodAnalytic>;
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    String groupBy,
    PaymentMethodAnalyticSummary summary,
    List<PaymentMethodAnalyticItem> data,
  });

  $PaymentMethodAnalyticSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class _$PaymentMethodAnalyticCopyWithImpl<
  $Res,
  $Val extends PaymentMethodAnalytic
>
    implements $PaymentMethodAnalyticCopyWith<$Res> {
  _$PaymentMethodAnalyticCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of PaymentMethodAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? groupBy = null,
    Object? summary = null,
    Object? data = null,
  }) {
    return _then(
      _value.copyWith(
            organizationId: null == organizationId
                ? _value.organizationId
                : organizationId // ignore: cast_nullable_to_non_nullable
                      as String,
            outletId: null == outletId
                ? _value.outletId
                : outletId // ignore: cast_nullable_to_non_nullable
                      as String,
            dateFrom: null == dateFrom
                ? _value.dateFrom
                : dateFrom // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            dateTo: null == dateTo
                ? _value.dateTo
                : dateTo // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            groupBy: null == groupBy
                ? _value.groupBy
                : groupBy // ignore: cast_nullable_to_non_nullable
                      as String,
            summary: null == summary
                ? _value.summary
                : summary // ignore: cast_nullable_to_non_nullable
                      as PaymentMethodAnalyticSummary,
            data: null == data
                ? _value.data
                : data // ignore: cast_nullable_to_non_nullable
                      as List<PaymentMethodAnalyticItem>,
          )
          as $Val,
    );
  }

  /// Create a copy of PaymentMethodAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $PaymentMethodAnalyticSummaryCopyWith<$Res> get summary {
    return $PaymentMethodAnalyticSummaryCopyWith<$Res>(_value.summary, (value) {
      return _then(_value.copyWith(summary: value) as $Val);
    });
  }
}

/// @nodoc
abstract class _$$PaymentMethodAnalyticImplCopyWith<$Res>
    implements $PaymentMethodAnalyticCopyWith<$Res> {
  factory _$$PaymentMethodAnalyticImplCopyWith(
    _$PaymentMethodAnalyticImpl value,
    $Res Function(_$PaymentMethodAnalyticImpl) then,
  ) = __$$PaymentMethodAnalyticImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    String groupBy,
    PaymentMethodAnalyticSummary summary,
    List<PaymentMethodAnalyticItem> data,
  });

  @override
  $PaymentMethodAnalyticSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class __$$PaymentMethodAnalyticImplCopyWithImpl<$Res>
    extends
        _$PaymentMethodAnalyticCopyWithImpl<$Res, _$PaymentMethodAnalyticImpl>
    implements _$$PaymentMethodAnalyticImplCopyWith<$Res> {
  __$$PaymentMethodAnalyticImplCopyWithImpl(
    _$PaymentMethodAnalyticImpl _value,
    $Res Function(_$PaymentMethodAnalyticImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of PaymentMethodAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? groupBy = null,
    Object? summary = null,
    Object? data = null,
  }) {
    return _then(
      _$PaymentMethodAnalyticImpl(
        organizationId: null == organizationId
            ? _value.organizationId
            : organizationId // ignore: cast_nullable_to_non_nullable
                  as String,
        outletId: null == outletId
            ? _value.outletId
            : outletId // ignore: cast_nullable_to_non_nullable
                  as String,
        dateFrom: null == dateFrom
            ? _value.dateFrom
            : dateFrom // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        dateTo: null == dateTo
            ? _value.dateTo
            : dateTo // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        groupBy: null == groupBy
            ? _value.groupBy
            : groupBy // ignore: cast_nullable_to_non_nullable
                  as String,
        summary: null == summary
            ? _value.summary
            : summary // ignore: cast_nullable_to_non_nullable
                  as PaymentMethodAnalyticSummary,
        data: null == data
            ? _value._data
            : data // ignore: cast_nullable_to_non_nullable
                  as List<PaymentMethodAnalyticItem>,
      ),
    );
  }
}

/// @nodoc

class _$PaymentMethodAnalyticImpl implements _PaymentMethodAnalytic {
  const _$PaymentMethodAnalyticImpl({
    required this.organizationId,
    required this.outletId,
    required this.dateFrom,
    required this.dateTo,
    required this.groupBy,
    required this.summary,
    required final List<PaymentMethodAnalyticItem> data,
  }) : _data = data;

  @override
  final String organizationId;
  @override
  final String outletId;
  @override
  final DateTime dateFrom;
  @override
  final DateTime dateTo;
  @override
  final String groupBy;
  @override
  final PaymentMethodAnalyticSummary summary;
  final List<PaymentMethodAnalyticItem> _data;
  @override
  List<PaymentMethodAnalyticItem> get data {
    if (_data is EqualUnmodifiableListView) return _data;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_data);
  }

  @override
  String toString() {
    return 'PaymentMethodAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$PaymentMethodAnalyticImpl &&
            (identical(other.organizationId, organizationId) ||
                other.organizationId == organizationId) &&
            (identical(other.outletId, outletId) ||
                other.outletId == outletId) &&
            (identical(other.dateFrom, dateFrom) ||
                other.dateFrom == dateFrom) &&
            (identical(other.dateTo, dateTo) || other.dateTo == dateTo) &&
            (identical(other.groupBy, groupBy) || other.groupBy == groupBy) &&
            (identical(other.summary, summary) || other.summary == summary) &&
            const DeepCollectionEquality().equals(other._data, _data));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    organizationId,
    outletId,
    dateFrom,
    dateTo,
    groupBy,
    summary,
    const DeepCollectionEquality().hash(_data),
  );

  /// Create a copy of PaymentMethodAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$PaymentMethodAnalyticImplCopyWith<_$PaymentMethodAnalyticImpl>
  get copyWith =>
      __$$PaymentMethodAnalyticImplCopyWithImpl<_$PaymentMethodAnalyticImpl>(
        this,
        _$identity,
      );
}

abstract class _PaymentMethodAnalytic implements PaymentMethodAnalytic {
  const factory _PaymentMethodAnalytic({
    required final String organizationId,
    required final String outletId,
    required final DateTime dateFrom,
    required final DateTime dateTo,
    required final String groupBy,
    required final PaymentMethodAnalyticSummary summary,
    required final List<PaymentMethodAnalyticItem> data,
  }) = _$PaymentMethodAnalyticImpl;

  @override
  String get organizationId;
  @override
  String get outletId;
  @override
  DateTime get dateFrom;
  @override
  DateTime get dateTo;
  @override
  String get groupBy;
  @override
  PaymentMethodAnalyticSummary get summary;
  @override
  List<PaymentMethodAnalyticItem> get data;

  /// Create a copy of PaymentMethodAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$PaymentMethodAnalyticImplCopyWith<_$PaymentMethodAnalyticImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$PaymentMethodAnalyticItem {
  String get paymentMethodId => throw _privateConstructorUsedError;
  String get paymentMethodName => throw _privateConstructorUsedError;
  String get paymentMethodType => throw _privateConstructorUsedError;
  int get totalAmount => throw _privateConstructorUsedError;
  int get orderCount => throw _privateConstructorUsedError;
  int get paymentCount => throw _privateConstructorUsedError;
  num get percentage => throw _privateConstructorUsedError;

  /// Create a copy of PaymentMethodAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $PaymentMethodAnalyticItemCopyWith<PaymentMethodAnalyticItem> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $PaymentMethodAnalyticItemCopyWith<$Res> {
  factory $PaymentMethodAnalyticItemCopyWith(
    PaymentMethodAnalyticItem value,
    $Res Function(PaymentMethodAnalyticItem) then,
  ) = _$PaymentMethodAnalyticItemCopyWithImpl<$Res, PaymentMethodAnalyticItem>;
  @useResult
  $Res call({
    String paymentMethodId,
    String paymentMethodName,
    String paymentMethodType,
    int totalAmount,
    int orderCount,
    int paymentCount,
    num percentage,
  });
}

/// @nodoc
class _$PaymentMethodAnalyticItemCopyWithImpl<
  $Res,
  $Val extends PaymentMethodAnalyticItem
>
    implements $PaymentMethodAnalyticItemCopyWith<$Res> {
  _$PaymentMethodAnalyticItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of PaymentMethodAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? paymentMethodId = null,
    Object? paymentMethodName = null,
    Object? paymentMethodType = null,
    Object? totalAmount = null,
    Object? orderCount = null,
    Object? paymentCount = null,
    Object? percentage = null,
  }) {
    return _then(
      _value.copyWith(
            paymentMethodId: null == paymentMethodId
                ? _value.paymentMethodId
                : paymentMethodId // ignore: cast_nullable_to_non_nullable
                      as String,
            paymentMethodName: null == paymentMethodName
                ? _value.paymentMethodName
                : paymentMethodName // ignore: cast_nullable_to_non_nullable
                      as String,
            paymentMethodType: null == paymentMethodType
                ? _value.paymentMethodType
                : paymentMethodType // ignore: cast_nullable_to_non_nullable
                      as String,
            totalAmount: null == totalAmount
                ? _value.totalAmount
                : totalAmount // ignore: cast_nullable_to_non_nullable
                      as int,
            orderCount: null == orderCount
                ? _value.orderCount
                : orderCount // ignore: cast_nullable_to_non_nullable
                      as int,
            paymentCount: null == paymentCount
                ? _value.paymentCount
                : paymentCount // ignore: cast_nullable_to_non_nullable
                      as int,
            percentage: null == percentage
                ? _value.percentage
                : percentage // ignore: cast_nullable_to_non_nullable
                      as num,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$PaymentMethodAnalyticItemImplCopyWith<$Res>
    implements $PaymentMethodAnalyticItemCopyWith<$Res> {
  factory _$$PaymentMethodAnalyticItemImplCopyWith(
    _$PaymentMethodAnalyticItemImpl value,
    $Res Function(_$PaymentMethodAnalyticItemImpl) then,
  ) = __$$PaymentMethodAnalyticItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String paymentMethodId,
    String paymentMethodName,
    String paymentMethodType,
    int totalAmount,
    int orderCount,
    int paymentCount,
    num percentage,
  });
}

/// @nodoc
class __$$PaymentMethodAnalyticItemImplCopyWithImpl<$Res>
    extends
        _$PaymentMethodAnalyticItemCopyWithImpl<
          $Res,
          _$PaymentMethodAnalyticItemImpl
        >
    implements _$$PaymentMethodAnalyticItemImplCopyWith<$Res> {
  __$$PaymentMethodAnalyticItemImplCopyWithImpl(
    _$PaymentMethodAnalyticItemImpl _value,
    $Res Function(_$PaymentMethodAnalyticItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of PaymentMethodAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? paymentMethodId = null,
    Object? paymentMethodName = null,
    Object? paymentMethodType = null,
    Object? totalAmount = null,
    Object? orderCount = null,
    Object? paymentCount = null,
    Object? percentage = null,
  }) {
    return _then(
      _$PaymentMethodAnalyticItemImpl(
        paymentMethodId: null == paymentMethodId
            ? _value.paymentMethodId
            : paymentMethodId // ignore: cast_nullable_to_non_nullable
                  as String,
        paymentMethodName: null == paymentMethodName
            ? _value.paymentMethodName
            : paymentMethodName // ignore: cast_nullable_to_non_nullable
                  as String,
        paymentMethodType: null == paymentMethodType
            ? _value.paymentMethodType
            : paymentMethodType // ignore: cast_nullable_to_non_nullable
                  as String,
        totalAmount: null == totalAmount
            ? _value.totalAmount
            : totalAmount // ignore: cast_nullable_to_non_nullable
                  as int,
        orderCount: null == orderCount
            ? _value.orderCount
            : orderCount // ignore: cast_nullable_to_non_nullable
                  as int,
        paymentCount: null == paymentCount
            ? _value.paymentCount
            : paymentCount // ignore: cast_nullable_to_non_nullable
                  as int,
        percentage: null == percentage
            ? _value.percentage
            : percentage // ignore: cast_nullable_to_non_nullable
                  as num,
      ),
    );
  }
}

/// @nodoc

class _$PaymentMethodAnalyticItemImpl implements _PaymentMethodAnalyticItem {
  const _$PaymentMethodAnalyticItemImpl({
    required this.paymentMethodId,
    required this.paymentMethodName,
    required this.paymentMethodType,
    required this.totalAmount,
    required this.orderCount,
    required this.paymentCount,
    required this.percentage,
  });

  @override
  final String paymentMethodId;
  @override
  final String paymentMethodName;
  @override
  final String paymentMethodType;
  @override
  final int totalAmount;
  @override
  final int orderCount;
  @override
  final int paymentCount;
  @override
  final num percentage;

  @override
  String toString() {
    return 'PaymentMethodAnalyticItem(paymentMethodId: $paymentMethodId, paymentMethodName: $paymentMethodName, paymentMethodType: $paymentMethodType, totalAmount: $totalAmount, orderCount: $orderCount, paymentCount: $paymentCount, percentage: $percentage)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$PaymentMethodAnalyticItemImpl &&
            (identical(other.paymentMethodId, paymentMethodId) ||
                other.paymentMethodId == paymentMethodId) &&
            (identical(other.paymentMethodName, paymentMethodName) ||
                other.paymentMethodName == paymentMethodName) &&
            (identical(other.paymentMethodType, paymentMethodType) ||
                other.paymentMethodType == paymentMethodType) &&
            (identical(other.totalAmount, totalAmount) ||
                other.totalAmount == totalAmount) &&
            (identical(other.orderCount, orderCount) ||
                other.orderCount == orderCount) &&
            (identical(other.paymentCount, paymentCount) ||
                other.paymentCount == paymentCount) &&
            (identical(other.percentage, percentage) ||
                other.percentage == percentage));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    paymentMethodId,
    paymentMethodName,
    paymentMethodType,
    totalAmount,
    orderCount,
    paymentCount,
    percentage,
  );

  /// Create a copy of PaymentMethodAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$PaymentMethodAnalyticItemImplCopyWith<_$PaymentMethodAnalyticItemImpl>
  get copyWith =>
      __$$PaymentMethodAnalyticItemImplCopyWithImpl<
        _$PaymentMethodAnalyticItemImpl
      >(this, _$identity);
}

abstract class _PaymentMethodAnalyticItem implements PaymentMethodAnalyticItem {
  const factory _PaymentMethodAnalyticItem({
    required final String paymentMethodId,
    required final String paymentMethodName,
    required final String paymentMethodType,
    required final int totalAmount,
    required final int orderCount,
    required final int paymentCount,
    required final num percentage,
  }) = _$PaymentMethodAnalyticItemImpl;

  @override
  String get paymentMethodId;
  @override
  String get paymentMethodName;
  @override
  String get paymentMethodType;
  @override
  int get totalAmount;
  @override
  int get orderCount;
  @override
  int get paymentCount;
  @override
  num get percentage;

  /// Create a copy of PaymentMethodAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$PaymentMethodAnalyticItemImplCopyWith<_$PaymentMethodAnalyticItemImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$PaymentMethodAnalyticSummary {
  int get totalAmount => throw _privateConstructorUsedError;
  int get totalOrders => throw _privateConstructorUsedError;
  int get totalPayments => throw _privateConstructorUsedError;
  double get averageOrderValue => throw _privateConstructorUsedError;

  /// Create a copy of PaymentMethodAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $PaymentMethodAnalyticSummaryCopyWith<PaymentMethodAnalyticSummary>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $PaymentMethodAnalyticSummaryCopyWith<$Res> {
  factory $PaymentMethodAnalyticSummaryCopyWith(
    PaymentMethodAnalyticSummary value,
    $Res Function(PaymentMethodAnalyticSummary) then,
  ) =
      _$PaymentMethodAnalyticSummaryCopyWithImpl<
        $Res,
        PaymentMethodAnalyticSummary
      >;
  @useResult
  $Res call({
    int totalAmount,
    int totalOrders,
    int totalPayments,
    double averageOrderValue,
  });
}

/// @nodoc
class _$PaymentMethodAnalyticSummaryCopyWithImpl<
  $Res,
  $Val extends PaymentMethodAnalyticSummary
>
    implements $PaymentMethodAnalyticSummaryCopyWith<$Res> {
  _$PaymentMethodAnalyticSummaryCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of PaymentMethodAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalAmount = null,
    Object? totalOrders = null,
    Object? totalPayments = null,
    Object? averageOrderValue = null,
  }) {
    return _then(
      _value.copyWith(
            totalAmount: null == totalAmount
                ? _value.totalAmount
                : totalAmount // ignore: cast_nullable_to_non_nullable
                      as int,
            totalOrders: null == totalOrders
                ? _value.totalOrders
                : totalOrders // ignore: cast_nullable_to_non_nullable
                      as int,
            totalPayments: null == totalPayments
                ? _value.totalPayments
                : totalPayments // ignore: cast_nullable_to_non_nullable
                      as int,
            averageOrderValue: null == averageOrderValue
                ? _value.averageOrderValue
                : averageOrderValue // ignore: cast_nullable_to_non_nullable
                      as double,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$PaymentMethodAnalyticSummaryImplCopyWith<$Res>
    implements $PaymentMethodAnalyticSummaryCopyWith<$Res> {
  factory _$$PaymentMethodAnalyticSummaryImplCopyWith(
    _$PaymentMethodAnalyticSummaryImpl value,
    $Res Function(_$PaymentMethodAnalyticSummaryImpl) then,
  ) = __$$PaymentMethodAnalyticSummaryImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    int totalAmount,
    int totalOrders,
    int totalPayments,
    double averageOrderValue,
  });
}

/// @nodoc
class __$$PaymentMethodAnalyticSummaryImplCopyWithImpl<$Res>
    extends
        _$PaymentMethodAnalyticSummaryCopyWithImpl<
          $Res,
          _$PaymentMethodAnalyticSummaryImpl
        >
    implements _$$PaymentMethodAnalyticSummaryImplCopyWith<$Res> {
  __$$PaymentMethodAnalyticSummaryImplCopyWithImpl(
    _$PaymentMethodAnalyticSummaryImpl _value,
    $Res Function(_$PaymentMethodAnalyticSummaryImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of PaymentMethodAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalAmount = null,
    Object? totalOrders = null,
    Object? totalPayments = null,
    Object? averageOrderValue = null,
  }) {
    return _then(
      _$PaymentMethodAnalyticSummaryImpl(
        totalAmount: null == totalAmount
            ? _value.totalAmount
            : totalAmount // ignore: cast_nullable_to_non_nullable
                  as int,
        totalOrders: null == totalOrders
            ? _value.totalOrders
            : totalOrders // ignore: cast_nullable_to_non_nullable
                  as int,
        totalPayments: null == totalPayments
            ? _value.totalPayments
            : totalPayments // ignore: cast_nullable_to_non_nullable
                  as int,
        averageOrderValue: null == averageOrderValue
            ? _value.averageOrderValue
            : averageOrderValue // ignore: cast_nullable_to_non_nullable
                  as double,
      ),
    );
  }
}

/// @nodoc

class _$PaymentMethodAnalyticSummaryImpl
    implements _PaymentMethodAnalyticSummary {
  const _$PaymentMethodAnalyticSummaryImpl({
    required this.totalAmount,
    required this.totalOrders,
    required this.totalPayments,
    required this.averageOrderValue,
  });

  @override
  final int totalAmount;
  @override
  final int totalOrders;
  @override
  final int totalPayments;
  @override
  final double averageOrderValue;

  @override
  String toString() {
    return 'PaymentMethodAnalyticSummary(totalAmount: $totalAmount, totalOrders: $totalOrders, totalPayments: $totalPayments, averageOrderValue: $averageOrderValue)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$PaymentMethodAnalyticSummaryImpl &&
            (identical(other.totalAmount, totalAmount) ||
                other.totalAmount == totalAmount) &&
            (identical(other.totalOrders, totalOrders) ||
                other.totalOrders == totalOrders) &&
            (identical(other.totalPayments, totalPayments) ||
                other.totalPayments == totalPayments) &&
            (identical(other.averageOrderValue, averageOrderValue) ||
                other.averageOrderValue == averageOrderValue));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    totalAmount,
    totalOrders,
    totalPayments,
    averageOrderValue,
  );

  /// Create a copy of PaymentMethodAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$PaymentMethodAnalyticSummaryImplCopyWith<
    _$PaymentMethodAnalyticSummaryImpl
  >
  get copyWith =>
      __$$PaymentMethodAnalyticSummaryImplCopyWithImpl<
        _$PaymentMethodAnalyticSummaryImpl
      >(this, _$identity);
}

abstract class _PaymentMethodAnalyticSummary
    implements PaymentMethodAnalyticSummary {
  const factory _PaymentMethodAnalyticSummary({
    required final int totalAmount,
    required final int totalOrders,
    required final int totalPayments,
    required final double averageOrderValue,
  }) = _$PaymentMethodAnalyticSummaryImpl;

  @override
  int get totalAmount;
  @override
  int get totalOrders;
  @override
  int get totalPayments;
  @override
  double get averageOrderValue;

  /// Create a copy of PaymentMethodAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$PaymentMethodAnalyticSummaryImplCopyWith<
    _$PaymentMethodAnalyticSummaryImpl
  >
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$ProfitLossAnalytic {
  String get organizationId => throw _privateConstructorUsedError;
  String get dateFrom => throw _privateConstructorUsedError;
  String get dateTo => throw _privateConstructorUsedError;
  String get groupBy => throw _privateConstructorUsedError;
  ProfitLossAnalyticSummary get summary => throw _privateConstructorUsedError;
  List<ProfitLossAnalyticItem> get data => throw _privateConstructorUsedError;
  List<ProfitLossAnalyticProduct> get productData =>
      throw _privateConstructorUsedError;

  /// Create a copy of ProfitLossAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ProfitLossAnalyticCopyWith<ProfitLossAnalytic> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ProfitLossAnalyticCopyWith<$Res> {
  factory $ProfitLossAnalyticCopyWith(
    ProfitLossAnalytic value,
    $Res Function(ProfitLossAnalytic) then,
  ) = _$ProfitLossAnalyticCopyWithImpl<$Res, ProfitLossAnalytic>;
  @useResult
  $Res call({
    String organizationId,
    String dateFrom,
    String dateTo,
    String groupBy,
    ProfitLossAnalyticSummary summary,
    List<ProfitLossAnalyticItem> data,
    List<ProfitLossAnalyticProduct> productData,
  });

  $ProfitLossAnalyticSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class _$ProfitLossAnalyticCopyWithImpl<$Res, $Val extends ProfitLossAnalytic>
    implements $ProfitLossAnalyticCopyWith<$Res> {
  _$ProfitLossAnalyticCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ProfitLossAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? groupBy = null,
    Object? summary = null,
    Object? data = null,
    Object? productData = null,
  }) {
    return _then(
      _value.copyWith(
            organizationId: null == organizationId
                ? _value.organizationId
                : organizationId // ignore: cast_nullable_to_non_nullable
                      as String,
            dateFrom: null == dateFrom
                ? _value.dateFrom
                : dateFrom // ignore: cast_nullable_to_non_nullable
                      as String,
            dateTo: null == dateTo
                ? _value.dateTo
                : dateTo // ignore: cast_nullable_to_non_nullable
                      as String,
            groupBy: null == groupBy
                ? _value.groupBy
                : groupBy // ignore: cast_nullable_to_non_nullable
                      as String,
            summary: null == summary
                ? _value.summary
                : summary // ignore: cast_nullable_to_non_nullable
                      as ProfitLossAnalyticSummary,
            data: null == data
                ? _value.data
                : data // ignore: cast_nullable_to_non_nullable
                      as List<ProfitLossAnalyticItem>,
            productData: null == productData
                ? _value.productData
                : productData // ignore: cast_nullable_to_non_nullable
                      as List<ProfitLossAnalyticProduct>,
          )
          as $Val,
    );
  }

  /// Create a copy of ProfitLossAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $ProfitLossAnalyticSummaryCopyWith<$Res> get summary {
    return $ProfitLossAnalyticSummaryCopyWith<$Res>(_value.summary, (value) {
      return _then(_value.copyWith(summary: value) as $Val);
    });
  }
}

/// @nodoc
abstract class _$$ProfitLossAnalyticImplCopyWith<$Res>
    implements $ProfitLossAnalyticCopyWith<$Res> {
  factory _$$ProfitLossAnalyticImplCopyWith(
    _$ProfitLossAnalyticImpl value,
    $Res Function(_$ProfitLossAnalyticImpl) then,
  ) = __$$ProfitLossAnalyticImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String organizationId,
    String dateFrom,
    String dateTo,
    String groupBy,
    ProfitLossAnalyticSummary summary,
    List<ProfitLossAnalyticItem> data,
    List<ProfitLossAnalyticProduct> productData,
  });

  @override
  $ProfitLossAnalyticSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class __$$ProfitLossAnalyticImplCopyWithImpl<$Res>
    extends _$ProfitLossAnalyticCopyWithImpl<$Res, _$ProfitLossAnalyticImpl>
    implements _$$ProfitLossAnalyticImplCopyWith<$Res> {
  __$$ProfitLossAnalyticImplCopyWithImpl(
    _$ProfitLossAnalyticImpl _value,
    $Res Function(_$ProfitLossAnalyticImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ProfitLossAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? groupBy = null,
    Object? summary = null,
    Object? data = null,
    Object? productData = null,
  }) {
    return _then(
      _$ProfitLossAnalyticImpl(
        organizationId: null == organizationId
            ? _value.organizationId
            : organizationId // ignore: cast_nullable_to_non_nullable
                  as String,
        dateFrom: null == dateFrom
            ? _value.dateFrom
            : dateFrom // ignore: cast_nullable_to_non_nullable
                  as String,
        dateTo: null == dateTo
            ? _value.dateTo
            : dateTo // ignore: cast_nullable_to_non_nullable
                  as String,
        groupBy: null == groupBy
            ? _value.groupBy
            : groupBy // ignore: cast_nullable_to_non_nullable
                  as String,
        summary: null == summary
            ? _value.summary
            : summary // ignore: cast_nullable_to_non_nullable
                  as ProfitLossAnalyticSummary,
        data: null == data
            ? _value._data
            : data // ignore: cast_nullable_to_non_nullable
                  as List<ProfitLossAnalyticItem>,
        productData: null == productData
            ? _value._productData
            : productData // ignore: cast_nullable_to_non_nullable
                  as List<ProfitLossAnalyticProduct>,
      ),
    );
  }
}

/// @nodoc

class _$ProfitLossAnalyticImpl implements _ProfitLossAnalytic {
  const _$ProfitLossAnalyticImpl({
    required this.organizationId,
    required this.dateFrom,
    required this.dateTo,
    required this.groupBy,
    required this.summary,
    required final List<ProfitLossAnalyticItem> data,
    required final List<ProfitLossAnalyticProduct> productData,
  }) : _data = data,
       _productData = productData;

  @override
  final String organizationId;
  @override
  final String dateFrom;
  @override
  final String dateTo;
  @override
  final String groupBy;
  @override
  final ProfitLossAnalyticSummary summary;
  final List<ProfitLossAnalyticItem> _data;
  @override
  List<ProfitLossAnalyticItem> get data {
    if (_data is EqualUnmodifiableListView) return _data;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_data);
  }

  final List<ProfitLossAnalyticProduct> _productData;
  @override
  List<ProfitLossAnalyticProduct> get productData {
    if (_productData is EqualUnmodifiableListView) return _productData;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_productData);
  }

  @override
  String toString() {
    return 'ProfitLossAnalytic(organizationId: $organizationId, dateFrom: $dateFrom, dateTo: $dateTo, groupBy: $groupBy, summary: $summary, data: $data, productData: $productData)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ProfitLossAnalyticImpl &&
            (identical(other.organizationId, organizationId) ||
                other.organizationId == organizationId) &&
            (identical(other.dateFrom, dateFrom) ||
                other.dateFrom == dateFrom) &&
            (identical(other.dateTo, dateTo) || other.dateTo == dateTo) &&
            (identical(other.groupBy, groupBy) || other.groupBy == groupBy) &&
            (identical(other.summary, summary) || other.summary == summary) &&
            const DeepCollectionEquality().equals(other._data, _data) &&
            const DeepCollectionEquality().equals(
              other._productData,
              _productData,
            ));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    organizationId,
    dateFrom,
    dateTo,
    groupBy,
    summary,
    const DeepCollectionEquality().hash(_data),
    const DeepCollectionEquality().hash(_productData),
  );

  /// Create a copy of ProfitLossAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ProfitLossAnalyticImplCopyWith<_$ProfitLossAnalyticImpl> get copyWith =>
      __$$ProfitLossAnalyticImplCopyWithImpl<_$ProfitLossAnalyticImpl>(
        this,
        _$identity,
      );
}

abstract class _ProfitLossAnalytic implements ProfitLossAnalytic {
  const factory _ProfitLossAnalytic({
    required final String organizationId,
    required final String dateFrom,
    required final String dateTo,
    required final String groupBy,
    required final ProfitLossAnalyticSummary summary,
    required final List<ProfitLossAnalyticItem> data,
    required final List<ProfitLossAnalyticProduct> productData,
  }) = _$ProfitLossAnalyticImpl;

  @override
  String get organizationId;
  @override
  String get dateFrom;
  @override
  String get dateTo;
  @override
  String get groupBy;
  @override
  ProfitLossAnalyticSummary get summary;
  @override
  List<ProfitLossAnalyticItem> get data;
  @override
  List<ProfitLossAnalyticProduct> get productData;

  /// Create a copy of ProfitLossAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ProfitLossAnalyticImplCopyWith<_$ProfitLossAnalyticImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$ProfitLossAnalyticSummary {
  int get totalRevenue => throw _privateConstructorUsedError;
  num get totalCost => throw _privateConstructorUsedError;
  num get grossProfit => throw _privateConstructorUsedError;
  double get grossProfitMargin => throw _privateConstructorUsedError;
  int get totalTax => throw _privateConstructorUsedError;
  int get totalDiscount => throw _privateConstructorUsedError;
  num get netProfit => throw _privateConstructorUsedError;
  double get netProfitMargin => throw _privateConstructorUsedError;
  int get totalOrders => throw _privateConstructorUsedError;
  double get averageProfit => throw _privateConstructorUsedError;
  double get profitabilityRatio => throw _privateConstructorUsedError;

  /// Create a copy of ProfitLossAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ProfitLossAnalyticSummaryCopyWith<ProfitLossAnalyticSummary> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ProfitLossAnalyticSummaryCopyWith<$Res> {
  factory $ProfitLossAnalyticSummaryCopyWith(
    ProfitLossAnalyticSummary value,
    $Res Function(ProfitLossAnalyticSummary) then,
  ) = _$ProfitLossAnalyticSummaryCopyWithImpl<$Res, ProfitLossAnalyticSummary>;
  @useResult
  $Res call({
    int totalRevenue,
    num totalCost,
    num grossProfit,
    double grossProfitMargin,
    int totalTax,
    int totalDiscount,
    num netProfit,
    double netProfitMargin,
    int totalOrders,
    double averageProfit,
    double profitabilityRatio,
  });
}

/// @nodoc
class _$ProfitLossAnalyticSummaryCopyWithImpl<
  $Res,
  $Val extends ProfitLossAnalyticSummary
>
    implements $ProfitLossAnalyticSummaryCopyWith<$Res> {
  _$ProfitLossAnalyticSummaryCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ProfitLossAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalRevenue = null,
    Object? totalCost = null,
    Object? grossProfit = null,
    Object? grossProfitMargin = null,
    Object? totalTax = null,
    Object? totalDiscount = null,
    Object? netProfit = null,
    Object? netProfitMargin = null,
    Object? totalOrders = null,
    Object? averageProfit = null,
    Object? profitabilityRatio = null,
  }) {
    return _then(
      _value.copyWith(
            totalRevenue: null == totalRevenue
                ? _value.totalRevenue
                : totalRevenue // ignore: cast_nullable_to_non_nullable
                      as int,
            totalCost: null == totalCost
                ? _value.totalCost
                : totalCost // ignore: cast_nullable_to_non_nullable
                      as num,
            grossProfit: null == grossProfit
                ? _value.grossProfit
                : grossProfit // ignore: cast_nullable_to_non_nullable
                      as num,
            grossProfitMargin: null == grossProfitMargin
                ? _value.grossProfitMargin
                : grossProfitMargin // ignore: cast_nullable_to_non_nullable
                      as double,
            totalTax: null == totalTax
                ? _value.totalTax
                : totalTax // ignore: cast_nullable_to_non_nullable
                      as int,
            totalDiscount: null == totalDiscount
                ? _value.totalDiscount
                : totalDiscount // ignore: cast_nullable_to_non_nullable
                      as int,
            netProfit: null == netProfit
                ? _value.netProfit
                : netProfit // ignore: cast_nullable_to_non_nullable
                      as num,
            netProfitMargin: null == netProfitMargin
                ? _value.netProfitMargin
                : netProfitMargin // ignore: cast_nullable_to_non_nullable
                      as double,
            totalOrders: null == totalOrders
                ? _value.totalOrders
                : totalOrders // ignore: cast_nullable_to_non_nullable
                      as int,
            averageProfit: null == averageProfit
                ? _value.averageProfit
                : averageProfit // ignore: cast_nullable_to_non_nullable
                      as double,
            profitabilityRatio: null == profitabilityRatio
                ? _value.profitabilityRatio
                : profitabilityRatio // ignore: cast_nullable_to_non_nullable
                      as double,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$ProfitLossAnalyticSummaryImplCopyWith<$Res>
    implements $ProfitLossAnalyticSummaryCopyWith<$Res> {
  factory _$$ProfitLossAnalyticSummaryImplCopyWith(
    _$ProfitLossAnalyticSummaryImpl value,
    $Res Function(_$ProfitLossAnalyticSummaryImpl) then,
  ) = __$$ProfitLossAnalyticSummaryImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    int totalRevenue,
    num totalCost,
    num grossProfit,
    double grossProfitMargin,
    int totalTax,
    int totalDiscount,
    num netProfit,
    double netProfitMargin,
    int totalOrders,
    double averageProfit,
    double profitabilityRatio,
  });
}

/// @nodoc
class __$$ProfitLossAnalyticSummaryImplCopyWithImpl<$Res>
    extends
        _$ProfitLossAnalyticSummaryCopyWithImpl<
          $Res,
          _$ProfitLossAnalyticSummaryImpl
        >
    implements _$$ProfitLossAnalyticSummaryImplCopyWith<$Res> {
  __$$ProfitLossAnalyticSummaryImplCopyWithImpl(
    _$ProfitLossAnalyticSummaryImpl _value,
    $Res Function(_$ProfitLossAnalyticSummaryImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ProfitLossAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalRevenue = null,
    Object? totalCost = null,
    Object? grossProfit = null,
    Object? grossProfitMargin = null,
    Object? totalTax = null,
    Object? totalDiscount = null,
    Object? netProfit = null,
    Object? netProfitMargin = null,
    Object? totalOrders = null,
    Object? averageProfit = null,
    Object? profitabilityRatio = null,
  }) {
    return _then(
      _$ProfitLossAnalyticSummaryImpl(
        totalRevenue: null == totalRevenue
            ? _value.totalRevenue
            : totalRevenue // ignore: cast_nullable_to_non_nullable
                  as int,
        totalCost: null == totalCost
            ? _value.totalCost
            : totalCost // ignore: cast_nullable_to_non_nullable
                  as num,
        grossProfit: null == grossProfit
            ? _value.grossProfit
            : grossProfit // ignore: cast_nullable_to_non_nullable
                  as num,
        grossProfitMargin: null == grossProfitMargin
            ? _value.grossProfitMargin
            : grossProfitMargin // ignore: cast_nullable_to_non_nullable
                  as double,
        totalTax: null == totalTax
            ? _value.totalTax
            : totalTax // ignore: cast_nullable_to_non_nullable
                  as int,
        totalDiscount: null == totalDiscount
            ? _value.totalDiscount
            : totalDiscount // ignore: cast_nullable_to_non_nullable
                  as int,
        netProfit: null == netProfit
            ? _value.netProfit
            : netProfit // ignore: cast_nullable_to_non_nullable
                  as num,
        netProfitMargin: null == netProfitMargin
            ? _value.netProfitMargin
            : netProfitMargin // ignore: cast_nullable_to_non_nullable
                  as double,
        totalOrders: null == totalOrders
            ? _value.totalOrders
            : totalOrders // ignore: cast_nullable_to_non_nullable
                  as int,
        averageProfit: null == averageProfit
            ? _value.averageProfit
            : averageProfit // ignore: cast_nullable_to_non_nullable
                  as double,
        profitabilityRatio: null == profitabilityRatio
            ? _value.profitabilityRatio
            : profitabilityRatio // ignore: cast_nullable_to_non_nullable
                  as double,
      ),
    );
  }
}

/// @nodoc

class _$ProfitLossAnalyticSummaryImpl implements _ProfitLossAnalyticSummary {
  const _$ProfitLossAnalyticSummaryImpl({
    required this.totalRevenue,
    required this.totalCost,
    required this.grossProfit,
    required this.grossProfitMargin,
    required this.totalTax,
    required this.totalDiscount,
    required this.netProfit,
    required this.netProfitMargin,
    required this.totalOrders,
    required this.averageProfit,
    required this.profitabilityRatio,
  });

  @override
  final int totalRevenue;
  @override
  final num totalCost;
  @override
  final num grossProfit;
  @override
  final double grossProfitMargin;
  @override
  final int totalTax;
  @override
  final int totalDiscount;
  @override
  final num netProfit;
  @override
  final double netProfitMargin;
  @override
  final int totalOrders;
  @override
  final double averageProfit;
  @override
  final double profitabilityRatio;

  @override
  String toString() {
    return 'ProfitLossAnalyticSummary(totalRevenue: $totalRevenue, totalCost: $totalCost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, totalTax: $totalTax, totalDiscount: $totalDiscount, netProfit: $netProfit, netProfitMargin: $netProfitMargin, totalOrders: $totalOrders, averageProfit: $averageProfit, profitabilityRatio: $profitabilityRatio)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ProfitLossAnalyticSummaryImpl &&
            (identical(other.totalRevenue, totalRevenue) ||
                other.totalRevenue == totalRevenue) &&
            (identical(other.totalCost, totalCost) ||
                other.totalCost == totalCost) &&
            (identical(other.grossProfit, grossProfit) ||
                other.grossProfit == grossProfit) &&
            (identical(other.grossProfitMargin, grossProfitMargin) ||
                other.grossProfitMargin == grossProfitMargin) &&
            (identical(other.totalTax, totalTax) ||
                other.totalTax == totalTax) &&
            (identical(other.totalDiscount, totalDiscount) ||
                other.totalDiscount == totalDiscount) &&
            (identical(other.netProfit, netProfit) ||
                other.netProfit == netProfit) &&
            (identical(other.netProfitMargin, netProfitMargin) ||
                other.netProfitMargin == netProfitMargin) &&
            (identical(other.totalOrders, totalOrders) ||
                other.totalOrders == totalOrders) &&
            (identical(other.averageProfit, averageProfit) ||
                other.averageProfit == averageProfit) &&
            (identical(other.profitabilityRatio, profitabilityRatio) ||
                other.profitabilityRatio == profitabilityRatio));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    totalRevenue,
    totalCost,
    grossProfit,
    grossProfitMargin,
    totalTax,
    totalDiscount,
    netProfit,
    netProfitMargin,
    totalOrders,
    averageProfit,
    profitabilityRatio,
  );

  /// Create a copy of ProfitLossAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ProfitLossAnalyticSummaryImplCopyWith<_$ProfitLossAnalyticSummaryImpl>
  get copyWith =>
      __$$ProfitLossAnalyticSummaryImplCopyWithImpl<
        _$ProfitLossAnalyticSummaryImpl
      >(this, _$identity);
}

abstract class _ProfitLossAnalyticSummary implements ProfitLossAnalyticSummary {
  const factory _ProfitLossAnalyticSummary({
    required final int totalRevenue,
    required final num totalCost,
    required final num grossProfit,
    required final double grossProfitMargin,
    required final int totalTax,
    required final int totalDiscount,
    required final num netProfit,
    required final double netProfitMargin,
    required final int totalOrders,
    required final double averageProfit,
    required final double profitabilityRatio,
  }) = _$ProfitLossAnalyticSummaryImpl;

  @override
  int get totalRevenue;
  @override
  num get totalCost;
  @override
  num get grossProfit;
  @override
  double get grossProfitMargin;
  @override
  int get totalTax;
  @override
  int get totalDiscount;
  @override
  num get netProfit;
  @override
  double get netProfitMargin;
  @override
  int get totalOrders;
  @override
  double get averageProfit;
  @override
  double get profitabilityRatio;

  /// Create a copy of ProfitLossAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ProfitLossAnalyticSummaryImplCopyWith<_$ProfitLossAnalyticSummaryImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$ProfitLossAnalyticItem {
  String get date => throw _privateConstructorUsedError;
  int get revenue => throw _privateConstructorUsedError;
  num get cost => throw _privateConstructorUsedError;
  num get grossProfit => throw _privateConstructorUsedError;
  double get grossProfitMargin => throw _privateConstructorUsedError;
  int get tax => throw _privateConstructorUsedError;
  int get discount => throw _privateConstructorUsedError;
  num get netProfit => throw _privateConstructorUsedError;
  double get netProfitMargin => throw _privateConstructorUsedError;
  int get orders => throw _privateConstructorUsedError;

  /// Create a copy of ProfitLossAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ProfitLossAnalyticItemCopyWith<ProfitLossAnalyticItem> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ProfitLossAnalyticItemCopyWith<$Res> {
  factory $ProfitLossAnalyticItemCopyWith(
    ProfitLossAnalyticItem value,
    $Res Function(ProfitLossAnalyticItem) then,
  ) = _$ProfitLossAnalyticItemCopyWithImpl<$Res, ProfitLossAnalyticItem>;
  @useResult
  $Res call({
    String date,
    int revenue,
    num cost,
    num grossProfit,
    double grossProfitMargin,
    int tax,
    int discount,
    num netProfit,
    double netProfitMargin,
    int orders,
  });
}

/// @nodoc
class _$ProfitLossAnalyticItemCopyWithImpl<
  $Res,
  $Val extends ProfitLossAnalyticItem
>
    implements $ProfitLossAnalyticItemCopyWith<$Res> {
  _$ProfitLossAnalyticItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ProfitLossAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? date = null,
    Object? revenue = null,
    Object? cost = null,
    Object? grossProfit = null,
    Object? grossProfitMargin = null,
    Object? tax = null,
    Object? discount = null,
    Object? netProfit = null,
    Object? netProfitMargin = null,
    Object? orders = null,
  }) {
    return _then(
      _value.copyWith(
            date: null == date
                ? _value.date
                : date // ignore: cast_nullable_to_non_nullable
                      as String,
            revenue: null == revenue
                ? _value.revenue
                : revenue // ignore: cast_nullable_to_non_nullable
                      as int,
            cost: null == cost
                ? _value.cost
                : cost // ignore: cast_nullable_to_non_nullable
                      as num,
            grossProfit: null == grossProfit
                ? _value.grossProfit
                : grossProfit // ignore: cast_nullable_to_non_nullable
                      as num,
            grossProfitMargin: null == grossProfitMargin
                ? _value.grossProfitMargin
                : grossProfitMargin // ignore: cast_nullable_to_non_nullable
                      as double,
            tax: null == tax
                ? _value.tax
                : tax // ignore: cast_nullable_to_non_nullable
                      as int,
            discount: null == discount
                ? _value.discount
                : discount // ignore: cast_nullable_to_non_nullable
                      as int,
            netProfit: null == netProfit
                ? _value.netProfit
                : netProfit // ignore: cast_nullable_to_non_nullable
                      as num,
            netProfitMargin: null == netProfitMargin
                ? _value.netProfitMargin
                : netProfitMargin // ignore: cast_nullable_to_non_nullable
                      as double,
            orders: null == orders
                ? _value.orders
                : orders // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$ProfitLossAnalyticItemImplCopyWith<$Res>
    implements $ProfitLossAnalyticItemCopyWith<$Res> {
  factory _$$ProfitLossAnalyticItemImplCopyWith(
    _$ProfitLossAnalyticItemImpl value,
    $Res Function(_$ProfitLossAnalyticItemImpl) then,
  ) = __$$ProfitLossAnalyticItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String date,
    int revenue,
    num cost,
    num grossProfit,
    double grossProfitMargin,
    int tax,
    int discount,
    num netProfit,
    double netProfitMargin,
    int orders,
  });
}

/// @nodoc
class __$$ProfitLossAnalyticItemImplCopyWithImpl<$Res>
    extends
        _$ProfitLossAnalyticItemCopyWithImpl<$Res, _$ProfitLossAnalyticItemImpl>
    implements _$$ProfitLossAnalyticItemImplCopyWith<$Res> {
  __$$ProfitLossAnalyticItemImplCopyWithImpl(
    _$ProfitLossAnalyticItemImpl _value,
    $Res Function(_$ProfitLossAnalyticItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ProfitLossAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? date = null,
    Object? revenue = null,
    Object? cost = null,
    Object? grossProfit = null,
    Object? grossProfitMargin = null,
    Object? tax = null,
    Object? discount = null,
    Object? netProfit = null,
    Object? netProfitMargin = null,
    Object? orders = null,
  }) {
    return _then(
      _$ProfitLossAnalyticItemImpl(
        date: null == date
            ? _value.date
            : date // ignore: cast_nullable_to_non_nullable
                  as String,
        revenue: null == revenue
            ? _value.revenue
            : revenue // ignore: cast_nullable_to_non_nullable
                  as int,
        cost: null == cost
            ? _value.cost
            : cost // ignore: cast_nullable_to_non_nullable
                  as num,
        grossProfit: null == grossProfit
            ? _value.grossProfit
            : grossProfit // ignore: cast_nullable_to_non_nullable
                  as num,
        grossProfitMargin: null == grossProfitMargin
            ? _value.grossProfitMargin
            : grossProfitMargin // ignore: cast_nullable_to_non_nullable
                  as double,
        tax: null == tax
            ? _value.tax
            : tax // ignore: cast_nullable_to_non_nullable
                  as int,
        discount: null == discount
            ? _value.discount
            : discount // ignore: cast_nullable_to_non_nullable
                  as int,
        netProfit: null == netProfit
            ? _value.netProfit
            : netProfit // ignore: cast_nullable_to_non_nullable
                  as num,
        netProfitMargin: null == netProfitMargin
            ? _value.netProfitMargin
            : netProfitMargin // ignore: cast_nullable_to_non_nullable
                  as double,
        orders: null == orders
            ? _value.orders
            : orders // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$ProfitLossAnalyticItemImpl implements _ProfitLossAnalyticItem {
  const _$ProfitLossAnalyticItemImpl({
    required this.date,
    required this.revenue,
    required this.cost,
    required this.grossProfit,
    required this.grossProfitMargin,
    required this.tax,
    required this.discount,
    required this.netProfit,
    required this.netProfitMargin,
    required this.orders,
  });

  @override
  final String date;
  @override
  final int revenue;
  @override
  final num cost;
  @override
  final num grossProfit;
  @override
  final double grossProfitMargin;
  @override
  final int tax;
  @override
  final int discount;
  @override
  final num netProfit;
  @override
  final double netProfitMargin;
  @override
  final int orders;

  @override
  String toString() {
    return 'ProfitLossAnalyticItem(date: $date, revenue: $revenue, cost: $cost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, tax: $tax, discount: $discount, netProfit: $netProfit, netProfitMargin: $netProfitMargin, orders: $orders)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ProfitLossAnalyticItemImpl &&
            (identical(other.date, date) || other.date == date) &&
            (identical(other.revenue, revenue) || other.revenue == revenue) &&
            (identical(other.cost, cost) || other.cost == cost) &&
            (identical(other.grossProfit, grossProfit) ||
                other.grossProfit == grossProfit) &&
            (identical(other.grossProfitMargin, grossProfitMargin) ||
                other.grossProfitMargin == grossProfitMargin) &&
            (identical(other.tax, tax) || other.tax == tax) &&
            (identical(other.discount, discount) ||
                other.discount == discount) &&
            (identical(other.netProfit, netProfit) ||
                other.netProfit == netProfit) &&
            (identical(other.netProfitMargin, netProfitMargin) ||
                other.netProfitMargin == netProfitMargin) &&
            (identical(other.orders, orders) || other.orders == orders));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    date,
    revenue,
    cost,
    grossProfit,
    grossProfitMargin,
    tax,
    discount,
    netProfit,
    netProfitMargin,
    orders,
  );

  /// Create a copy of ProfitLossAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ProfitLossAnalyticItemImplCopyWith<_$ProfitLossAnalyticItemImpl>
  get copyWith =>
      __$$ProfitLossAnalyticItemImplCopyWithImpl<_$ProfitLossAnalyticItemImpl>(
        this,
        _$identity,
      );
}

abstract class _ProfitLossAnalyticItem implements ProfitLossAnalyticItem {
  const factory _ProfitLossAnalyticItem({
    required final String date,
    required final int revenue,
    required final num cost,
    required final num grossProfit,
    required final double grossProfitMargin,
    required final int tax,
    required final int discount,
    required final num netProfit,
    required final double netProfitMargin,
    required final int orders,
  }) = _$ProfitLossAnalyticItemImpl;

  @override
  String get date;
  @override
  int get revenue;
  @override
  num get cost;
  @override
  num get grossProfit;
  @override
  double get grossProfitMargin;
  @override
  int get tax;
  @override
  int get discount;
  @override
  num get netProfit;
  @override
  double get netProfitMargin;
  @override
  int get orders;

  /// Create a copy of ProfitLossAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ProfitLossAnalyticItemImplCopyWith<_$ProfitLossAnalyticItemImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$ProfitLossAnalyticProduct {
  String get productId => throw _privateConstructorUsedError;
  String get productName => throw _privateConstructorUsedError;
  String get categoryId => throw _privateConstructorUsedError;
  String get categoryName => throw _privateConstructorUsedError;
  int get quantitySold => throw _privateConstructorUsedError;
  int get revenue => throw _privateConstructorUsedError;
  num get cost => throw _privateConstructorUsedError;
  num get grossProfit => throw _privateConstructorUsedError;
  double get grossProfitMargin => throw _privateConstructorUsedError;
  int get averagePrice => throw _privateConstructorUsedError;
  num get averageCost => throw _privateConstructorUsedError;
  num get profitPerUnit => throw _privateConstructorUsedError;

  /// Create a copy of ProfitLossAnalyticProduct
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ProfitLossAnalyticProductCopyWith<ProfitLossAnalyticProduct> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ProfitLossAnalyticProductCopyWith<$Res> {
  factory $ProfitLossAnalyticProductCopyWith(
    ProfitLossAnalyticProduct value,
    $Res Function(ProfitLossAnalyticProduct) then,
  ) = _$ProfitLossAnalyticProductCopyWithImpl<$Res, ProfitLossAnalyticProduct>;
  @useResult
  $Res call({
    String productId,
    String productName,
    String categoryId,
    String categoryName,
    int quantitySold,
    int revenue,
    num cost,
    num grossProfit,
    double grossProfitMargin,
    int averagePrice,
    num averageCost,
    num profitPerUnit,
  });
}

/// @nodoc
class _$ProfitLossAnalyticProductCopyWithImpl<
  $Res,
  $Val extends ProfitLossAnalyticProduct
>
    implements $ProfitLossAnalyticProductCopyWith<$Res> {
  _$ProfitLossAnalyticProductCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ProfitLossAnalyticProduct
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? productId = null,
    Object? productName = null,
    Object? categoryId = null,
    Object? categoryName = null,
    Object? quantitySold = null,
    Object? revenue = null,
    Object? cost = null,
    Object? grossProfit = null,
    Object? grossProfitMargin = null,
    Object? averagePrice = null,
    Object? averageCost = null,
    Object? profitPerUnit = null,
  }) {
    return _then(
      _value.copyWith(
            productId: null == productId
                ? _value.productId
                : productId // ignore: cast_nullable_to_non_nullable
                      as String,
            productName: null == productName
                ? _value.productName
                : productName // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryId: null == categoryId
                ? _value.categoryId
                : categoryId // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryName: null == categoryName
                ? _value.categoryName
                : categoryName // ignore: cast_nullable_to_non_nullable
                      as String,
            quantitySold: null == quantitySold
                ? _value.quantitySold
                : quantitySold // ignore: cast_nullable_to_non_nullable
                      as int,
            revenue: null == revenue
                ? _value.revenue
                : revenue // ignore: cast_nullable_to_non_nullable
                      as int,
            cost: null == cost
                ? _value.cost
                : cost // ignore: cast_nullable_to_non_nullable
                      as num,
            grossProfit: null == grossProfit
                ? _value.grossProfit
                : grossProfit // ignore: cast_nullable_to_non_nullable
                      as num,
            grossProfitMargin: null == grossProfitMargin
                ? _value.grossProfitMargin
                : grossProfitMargin // ignore: cast_nullable_to_non_nullable
                      as double,
            averagePrice: null == averagePrice
                ? _value.averagePrice
                : averagePrice // ignore: cast_nullable_to_non_nullable
                      as int,
            averageCost: null == averageCost
                ? _value.averageCost
                : averageCost // ignore: cast_nullable_to_non_nullable
                      as num,
            profitPerUnit: null == profitPerUnit
                ? _value.profitPerUnit
                : profitPerUnit // ignore: cast_nullable_to_non_nullable
                      as num,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$ProfitLossAnalyticProductImplCopyWith<$Res>
    implements $ProfitLossAnalyticProductCopyWith<$Res> {
  factory _$$ProfitLossAnalyticProductImplCopyWith(
    _$ProfitLossAnalyticProductImpl value,
    $Res Function(_$ProfitLossAnalyticProductImpl) then,
  ) = __$$ProfitLossAnalyticProductImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String productId,
    String productName,
    String categoryId,
    String categoryName,
    int quantitySold,
    int revenue,
    num cost,
    num grossProfit,
    double grossProfitMargin,
    int averagePrice,
    num averageCost,
    num profitPerUnit,
  });
}

/// @nodoc
class __$$ProfitLossAnalyticProductImplCopyWithImpl<$Res>
    extends
        _$ProfitLossAnalyticProductCopyWithImpl<
          $Res,
          _$ProfitLossAnalyticProductImpl
        >
    implements _$$ProfitLossAnalyticProductImplCopyWith<$Res> {
  __$$ProfitLossAnalyticProductImplCopyWithImpl(
    _$ProfitLossAnalyticProductImpl _value,
    $Res Function(_$ProfitLossAnalyticProductImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ProfitLossAnalyticProduct
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? productId = null,
    Object? productName = null,
    Object? categoryId = null,
    Object? categoryName = null,
    Object? quantitySold = null,
    Object? revenue = null,
    Object? cost = null,
    Object? grossProfit = null,
    Object? grossProfitMargin = null,
    Object? averagePrice = null,
    Object? averageCost = null,
    Object? profitPerUnit = null,
  }) {
    return _then(
      _$ProfitLossAnalyticProductImpl(
        productId: null == productId
            ? _value.productId
            : productId // ignore: cast_nullable_to_non_nullable
                  as String,
        productName: null == productName
            ? _value.productName
            : productName // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryId: null == categoryId
            ? _value.categoryId
            : categoryId // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryName: null == categoryName
            ? _value.categoryName
            : categoryName // ignore: cast_nullable_to_non_nullable
                  as String,
        quantitySold: null == quantitySold
            ? _value.quantitySold
            : quantitySold // ignore: cast_nullable_to_non_nullable
                  as int,
        revenue: null == revenue
            ? _value.revenue
            : revenue // ignore: cast_nullable_to_non_nullable
                  as int,
        cost: null == cost
            ? _value.cost
            : cost // ignore: cast_nullable_to_non_nullable
                  as num,
        grossProfit: null == grossProfit
            ? _value.grossProfit
            : grossProfit // ignore: cast_nullable_to_non_nullable
                  as num,
        grossProfitMargin: null == grossProfitMargin
            ? _value.grossProfitMargin
            : grossProfitMargin // ignore: cast_nullable_to_non_nullable
                  as double,
        averagePrice: null == averagePrice
            ? _value.averagePrice
            : averagePrice // ignore: cast_nullable_to_non_nullable
                  as int,
        averageCost: null == averageCost
            ? _value.averageCost
            : averageCost // ignore: cast_nullable_to_non_nullable
                  as num,
        profitPerUnit: null == profitPerUnit
            ? _value.profitPerUnit
            : profitPerUnit // ignore: cast_nullable_to_non_nullable
                  as num,
      ),
    );
  }
}

/// @nodoc

class _$ProfitLossAnalyticProductImpl implements _ProfitLossAnalyticProduct {
  const _$ProfitLossAnalyticProductImpl({
    required this.productId,
    required this.productName,
    required this.categoryId,
    required this.categoryName,
    required this.quantitySold,
    required this.revenue,
    required this.cost,
    required this.grossProfit,
    required this.grossProfitMargin,
    required this.averagePrice,
    required this.averageCost,
    required this.profitPerUnit,
  });

  @override
  final String productId;
  @override
  final String productName;
  @override
  final String categoryId;
  @override
  final String categoryName;
  @override
  final int quantitySold;
  @override
  final int revenue;
  @override
  final num cost;
  @override
  final num grossProfit;
  @override
  final double grossProfitMargin;
  @override
  final int averagePrice;
  @override
  final num averageCost;
  @override
  final num profitPerUnit;

  @override
  String toString() {
    return 'ProfitLossAnalyticProduct(productId: $productId, productName: $productName, categoryId: $categoryId, categoryName: $categoryName, quantitySold: $quantitySold, revenue: $revenue, cost: $cost, grossProfit: $grossProfit, grossProfitMargin: $grossProfitMargin, averagePrice: $averagePrice, averageCost: $averageCost, profitPerUnit: $profitPerUnit)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ProfitLossAnalyticProductImpl &&
            (identical(other.productId, productId) ||
                other.productId == productId) &&
            (identical(other.productName, productName) ||
                other.productName == productName) &&
            (identical(other.categoryId, categoryId) ||
                other.categoryId == categoryId) &&
            (identical(other.categoryName, categoryName) ||
                other.categoryName == categoryName) &&
            (identical(other.quantitySold, quantitySold) ||
                other.quantitySold == quantitySold) &&
            (identical(other.revenue, revenue) || other.revenue == revenue) &&
            (identical(other.cost, cost) || other.cost == cost) &&
            (identical(other.grossProfit, grossProfit) ||
                other.grossProfit == grossProfit) &&
            (identical(other.grossProfitMargin, grossProfitMargin) ||
                other.grossProfitMargin == grossProfitMargin) &&
            (identical(other.averagePrice, averagePrice) ||
                other.averagePrice == averagePrice) &&
            (identical(other.averageCost, averageCost) ||
                other.averageCost == averageCost) &&
            (identical(other.profitPerUnit, profitPerUnit) ||
                other.profitPerUnit == profitPerUnit));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    productId,
    productName,
    categoryId,
    categoryName,
    quantitySold,
    revenue,
    cost,
    grossProfit,
    grossProfitMargin,
    averagePrice,
    averageCost,
    profitPerUnit,
  );

  /// Create a copy of ProfitLossAnalyticProduct
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ProfitLossAnalyticProductImplCopyWith<_$ProfitLossAnalyticProductImpl>
  get copyWith =>
      __$$ProfitLossAnalyticProductImplCopyWithImpl<
        _$ProfitLossAnalyticProductImpl
      >(this, _$identity);
}

abstract class _ProfitLossAnalyticProduct implements ProfitLossAnalyticProduct {
  const factory _ProfitLossAnalyticProduct({
    required final String productId,
    required final String productName,
    required final String categoryId,
    required final String categoryName,
    required final int quantitySold,
    required final int revenue,
    required final num cost,
    required final num grossProfit,
    required final double grossProfitMargin,
    required final int averagePrice,
    required final num averageCost,
    required final num profitPerUnit,
  }) = _$ProfitLossAnalyticProductImpl;

  @override
  String get productId;
  @override
  String get productName;
  @override
  String get categoryId;
  @override
  String get categoryName;
  @override
  int get quantitySold;
  @override
  int get revenue;
  @override
  num get cost;
  @override
  num get grossProfit;
  @override
  double get grossProfitMargin;
  @override
  int get averagePrice;
  @override
  num get averageCost;
  @override
  num get profitPerUnit;

  /// Create a copy of ProfitLossAnalyticProduct
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ProfitLossAnalyticProductImplCopyWith<_$ProfitLossAnalyticProductImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$CategoryAnalytic {
  String get organizationId => throw _privateConstructorUsedError;
  String get outletId => throw _privateConstructorUsedError;
  DateTime get dateFrom => throw _privateConstructorUsedError;
  DateTime get dateTo => throw _privateConstructorUsedError;
  List<CategoryAnalyticItem> get data => throw _privateConstructorUsedError;

  /// Create a copy of CategoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $CategoryAnalyticCopyWith<CategoryAnalytic> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $CategoryAnalyticCopyWith<$Res> {
  factory $CategoryAnalyticCopyWith(
    CategoryAnalytic value,
    $Res Function(CategoryAnalytic) then,
  ) = _$CategoryAnalyticCopyWithImpl<$Res, CategoryAnalytic>;
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    List<CategoryAnalyticItem> data,
  });
}

/// @nodoc
class _$CategoryAnalyticCopyWithImpl<$Res, $Val extends CategoryAnalytic>
    implements $CategoryAnalyticCopyWith<$Res> {
  _$CategoryAnalyticCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of CategoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? data = null,
  }) {
    return _then(
      _value.copyWith(
            organizationId: null == organizationId
                ? _value.organizationId
                : organizationId // ignore: cast_nullable_to_non_nullable
                      as String,
            outletId: null == outletId
                ? _value.outletId
                : outletId // ignore: cast_nullable_to_non_nullable
                      as String,
            dateFrom: null == dateFrom
                ? _value.dateFrom
                : dateFrom // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            dateTo: null == dateTo
                ? _value.dateTo
                : dateTo // ignore: cast_nullable_to_non_nullable
                      as DateTime,
            data: null == data
                ? _value.data
                : data // ignore: cast_nullable_to_non_nullable
                      as List<CategoryAnalyticItem>,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$CategoryAnalyticImplCopyWith<$Res>
    implements $CategoryAnalyticCopyWith<$Res> {
  factory _$$CategoryAnalyticImplCopyWith(
    _$CategoryAnalyticImpl value,
    $Res Function(_$CategoryAnalyticImpl) then,
  ) = __$$CategoryAnalyticImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String organizationId,
    String outletId,
    DateTime dateFrom,
    DateTime dateTo,
    List<CategoryAnalyticItem> data,
  });
}

/// @nodoc
class __$$CategoryAnalyticImplCopyWithImpl<$Res>
    extends _$CategoryAnalyticCopyWithImpl<$Res, _$CategoryAnalyticImpl>
    implements _$$CategoryAnalyticImplCopyWith<$Res> {
  __$$CategoryAnalyticImplCopyWithImpl(
    _$CategoryAnalyticImpl _value,
    $Res Function(_$CategoryAnalyticImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of CategoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? organizationId = null,
    Object? outletId = null,
    Object? dateFrom = null,
    Object? dateTo = null,
    Object? data = null,
  }) {
    return _then(
      _$CategoryAnalyticImpl(
        organizationId: null == organizationId
            ? _value.organizationId
            : organizationId // ignore: cast_nullable_to_non_nullable
                  as String,
        outletId: null == outletId
            ? _value.outletId
            : outletId // ignore: cast_nullable_to_non_nullable
                  as String,
        dateFrom: null == dateFrom
            ? _value.dateFrom
            : dateFrom // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        dateTo: null == dateTo
            ? _value.dateTo
            : dateTo // ignore: cast_nullable_to_non_nullable
                  as DateTime,
        data: null == data
            ? _value._data
            : data // ignore: cast_nullable_to_non_nullable
                  as List<CategoryAnalyticItem>,
      ),
    );
  }
}

/// @nodoc

class _$CategoryAnalyticImpl extends _CategoryAnalytic {
  const _$CategoryAnalyticImpl({
    required this.organizationId,
    required this.outletId,
    required this.dateFrom,
    required this.dateTo,
    required final List<CategoryAnalyticItem> data,
  }) : _data = data,
       super._();

  @override
  final String organizationId;
  @override
  final String outletId;
  @override
  final DateTime dateFrom;
  @override
  final DateTime dateTo;
  final List<CategoryAnalyticItem> _data;
  @override
  List<CategoryAnalyticItem> get data {
    if (_data is EqualUnmodifiableListView) return _data;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_data);
  }

  @override
  String toString() {
    return 'CategoryAnalytic(organizationId: $organizationId, outletId: $outletId, dateFrom: $dateFrom, dateTo: $dateTo, data: $data)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$CategoryAnalyticImpl &&
            (identical(other.organizationId, organizationId) ||
                other.organizationId == organizationId) &&
            (identical(other.outletId, outletId) ||
                other.outletId == outletId) &&
            (identical(other.dateFrom, dateFrom) ||
                other.dateFrom == dateFrom) &&
            (identical(other.dateTo, dateTo) || other.dateTo == dateTo) &&
            const DeepCollectionEquality().equals(other._data, _data));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    organizationId,
    outletId,
    dateFrom,
    dateTo,
    const DeepCollectionEquality().hash(_data),
  );

  /// Create a copy of CategoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$CategoryAnalyticImplCopyWith<_$CategoryAnalyticImpl> get copyWith =>
      __$$CategoryAnalyticImplCopyWithImpl<_$CategoryAnalyticImpl>(
        this,
        _$identity,
      );
}

abstract class _CategoryAnalytic extends CategoryAnalytic {
  const factory _CategoryAnalytic({
    required final String organizationId,
    required final String outletId,
    required final DateTime dateFrom,
    required final DateTime dateTo,
    required final List<CategoryAnalyticItem> data,
  }) = _$CategoryAnalyticImpl;
  const _CategoryAnalytic._() : super._();

  @override
  String get organizationId;
  @override
  String get outletId;
  @override
  DateTime get dateFrom;
  @override
  DateTime get dateTo;
  @override
  List<CategoryAnalyticItem> get data;

  /// Create a copy of CategoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$CategoryAnalyticImplCopyWith<_$CategoryAnalyticImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$CategoryAnalyticItem {
  String get categoryId => throw _privateConstructorUsedError;
  String get categoryName => throw _privateConstructorUsedError;
  int get totalRevenue => throw _privateConstructorUsedError;
  int get totalQuantity => throw _privateConstructorUsedError;
  int get productCount => throw _privateConstructorUsedError;
  int get orderCount => throw _privateConstructorUsedError;

  /// Create a copy of CategoryAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $CategoryAnalyticItemCopyWith<CategoryAnalyticItem> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $CategoryAnalyticItemCopyWith<$Res> {
  factory $CategoryAnalyticItemCopyWith(
    CategoryAnalyticItem value,
    $Res Function(CategoryAnalyticItem) then,
  ) = _$CategoryAnalyticItemCopyWithImpl<$Res, CategoryAnalyticItem>;
  @useResult
  $Res call({
    String categoryId,
    String categoryName,
    int totalRevenue,
    int totalQuantity,
    int productCount,
    int orderCount,
  });
}

/// @nodoc
class _$CategoryAnalyticItemCopyWithImpl<
  $Res,
  $Val extends CategoryAnalyticItem
>
    implements $CategoryAnalyticItemCopyWith<$Res> {
  _$CategoryAnalyticItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of CategoryAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? categoryId = null,
    Object? categoryName = null,
    Object? totalRevenue = null,
    Object? totalQuantity = null,
    Object? productCount = null,
    Object? orderCount = null,
  }) {
    return _then(
      _value.copyWith(
            categoryId: null == categoryId
                ? _value.categoryId
                : categoryId // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryName: null == categoryName
                ? _value.categoryName
                : categoryName // ignore: cast_nullable_to_non_nullable
                      as String,
            totalRevenue: null == totalRevenue
                ? _value.totalRevenue
                : totalRevenue // ignore: cast_nullable_to_non_nullable
                      as int,
            totalQuantity: null == totalQuantity
                ? _value.totalQuantity
                : totalQuantity // ignore: cast_nullable_to_non_nullable
                      as int,
            productCount: null == productCount
                ? _value.productCount
                : productCount // ignore: cast_nullable_to_non_nullable
                      as int,
            orderCount: null == orderCount
                ? _value.orderCount
                : orderCount // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$CategoryAnalyticItemImplCopyWith<$Res>
    implements $CategoryAnalyticItemCopyWith<$Res> {
  factory _$$CategoryAnalyticItemImplCopyWith(
    _$CategoryAnalyticItemImpl value,
    $Res Function(_$CategoryAnalyticItemImpl) then,
  ) = __$$CategoryAnalyticItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String categoryId,
    String categoryName,
    int totalRevenue,
    int totalQuantity,
    int productCount,
    int orderCount,
  });
}

/// @nodoc
class __$$CategoryAnalyticItemImplCopyWithImpl<$Res>
    extends _$CategoryAnalyticItemCopyWithImpl<$Res, _$CategoryAnalyticItemImpl>
    implements _$$CategoryAnalyticItemImplCopyWith<$Res> {
  __$$CategoryAnalyticItemImplCopyWithImpl(
    _$CategoryAnalyticItemImpl _value,
    $Res Function(_$CategoryAnalyticItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of CategoryAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? categoryId = null,
    Object? categoryName = null,
    Object? totalRevenue = null,
    Object? totalQuantity = null,
    Object? productCount = null,
    Object? orderCount = null,
  }) {
    return _then(
      _$CategoryAnalyticItemImpl(
        categoryId: null == categoryId
            ? _value.categoryId
            : categoryId // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryName: null == categoryName
            ? _value.categoryName
            : categoryName // ignore: cast_nullable_to_non_nullable
                  as String,
        totalRevenue: null == totalRevenue
            ? _value.totalRevenue
            : totalRevenue // ignore: cast_nullable_to_non_nullable
                  as int,
        totalQuantity: null == totalQuantity
            ? _value.totalQuantity
            : totalQuantity // ignore: cast_nullable_to_non_nullable
                  as int,
        productCount: null == productCount
            ? _value.productCount
            : productCount // ignore: cast_nullable_to_non_nullable
                  as int,
        orderCount: null == orderCount
            ? _value.orderCount
            : orderCount // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc

class _$CategoryAnalyticItemImpl implements _CategoryAnalyticItem {
  const _$CategoryAnalyticItemImpl({
    required this.categoryId,
    required this.categoryName,
    required this.totalRevenue,
    required this.totalQuantity,
    required this.productCount,
    required this.orderCount,
  });

  @override
  final String categoryId;
  @override
  final String categoryName;
  @override
  final int totalRevenue;
  @override
  final int totalQuantity;
  @override
  final int productCount;
  @override
  final int orderCount;

  @override
  String toString() {
    return 'CategoryAnalyticItem(categoryId: $categoryId, categoryName: $categoryName, totalRevenue: $totalRevenue, totalQuantity: $totalQuantity, productCount: $productCount, orderCount: $orderCount)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$CategoryAnalyticItemImpl &&
            (identical(other.categoryId, categoryId) ||
                other.categoryId == categoryId) &&
            (identical(other.categoryName, categoryName) ||
                other.categoryName == categoryName) &&
            (identical(other.totalRevenue, totalRevenue) ||
                other.totalRevenue == totalRevenue) &&
            (identical(other.totalQuantity, totalQuantity) ||
                other.totalQuantity == totalQuantity) &&
            (identical(other.productCount, productCount) ||
                other.productCount == productCount) &&
            (identical(other.orderCount, orderCount) ||
                other.orderCount == orderCount));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    categoryId,
    categoryName,
    totalRevenue,
    totalQuantity,
    productCount,
    orderCount,
  );

  /// Create a copy of CategoryAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$CategoryAnalyticItemImplCopyWith<_$CategoryAnalyticItemImpl>
  get copyWith =>
      __$$CategoryAnalyticItemImplCopyWithImpl<_$CategoryAnalyticItemImpl>(
        this,
        _$identity,
      );
}

abstract class _CategoryAnalyticItem implements CategoryAnalyticItem {
  const factory _CategoryAnalyticItem({
    required final String categoryId,
    required final String categoryName,
    required final int totalRevenue,
    required final int totalQuantity,
    required final int productCount,
    required final int orderCount,
  }) = _$CategoryAnalyticItemImpl;

  @override
  String get categoryId;
  @override
  String get categoryName;
  @override
  int get totalRevenue;
  @override
  int get totalQuantity;
  @override
  int get productCount;
  @override
  int get orderCount;

  /// Create a copy of CategoryAnalyticItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$CategoryAnalyticItemImplCopyWith<_$CategoryAnalyticItemImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$InventoryAnalytic {
  InventoryAnalyticSummary get summary => throw _privateConstructorUsedError;
  List<InventoryAnalyticProductItem> get products =>
      throw _privateConstructorUsedError;
  List<InventoryAnalyticIngredientItem> get ingredients =>
      throw _privateConstructorUsedError;

  /// Create a copy of InventoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $InventoryAnalyticCopyWith<InventoryAnalytic> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $InventoryAnalyticCopyWith<$Res> {
  factory $InventoryAnalyticCopyWith(
    InventoryAnalytic value,
    $Res Function(InventoryAnalytic) then,
  ) = _$InventoryAnalyticCopyWithImpl<$Res, InventoryAnalytic>;
  @useResult
  $Res call({
    InventoryAnalyticSummary summary,
    List<InventoryAnalyticProductItem> products,
    List<InventoryAnalyticIngredientItem> ingredients,
  });

  $InventoryAnalyticSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class _$InventoryAnalyticCopyWithImpl<$Res, $Val extends InventoryAnalytic>
    implements $InventoryAnalyticCopyWith<$Res> {
  _$InventoryAnalyticCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of InventoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? summary = null,
    Object? products = null,
    Object? ingredients = null,
  }) {
    return _then(
      _value.copyWith(
            summary: null == summary
                ? _value.summary
                : summary // ignore: cast_nullable_to_non_nullable
                      as InventoryAnalyticSummary,
            products: null == products
                ? _value.products
                : products // ignore: cast_nullable_to_non_nullable
                      as List<InventoryAnalyticProductItem>,
            ingredients: null == ingredients
                ? _value.ingredients
                : ingredients // ignore: cast_nullable_to_non_nullable
                      as List<InventoryAnalyticIngredientItem>,
          )
          as $Val,
    );
  }

  /// Create a copy of InventoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $InventoryAnalyticSummaryCopyWith<$Res> get summary {
    return $InventoryAnalyticSummaryCopyWith<$Res>(_value.summary, (value) {
      return _then(_value.copyWith(summary: value) as $Val);
    });
  }
}

/// @nodoc
abstract class _$$InventoryAnalyticImplCopyWith<$Res>
    implements $InventoryAnalyticCopyWith<$Res> {
  factory _$$InventoryAnalyticImplCopyWith(
    _$InventoryAnalyticImpl value,
    $Res Function(_$InventoryAnalyticImpl) then,
  ) = __$$InventoryAnalyticImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    InventoryAnalyticSummary summary,
    List<InventoryAnalyticProductItem> products,
    List<InventoryAnalyticIngredientItem> ingredients,
  });

  @override
  $InventoryAnalyticSummaryCopyWith<$Res> get summary;
}

/// @nodoc
class __$$InventoryAnalyticImplCopyWithImpl<$Res>
    extends _$InventoryAnalyticCopyWithImpl<$Res, _$InventoryAnalyticImpl>
    implements _$$InventoryAnalyticImplCopyWith<$Res> {
  __$$InventoryAnalyticImplCopyWithImpl(
    _$InventoryAnalyticImpl _value,
    $Res Function(_$InventoryAnalyticImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of InventoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? summary = null,
    Object? products = null,
    Object? ingredients = null,
  }) {
    return _then(
      _$InventoryAnalyticImpl(
        summary: null == summary
            ? _value.summary
            : summary // ignore: cast_nullable_to_non_nullable
                  as InventoryAnalyticSummary,
        products: null == products
            ? _value._products
            : products // ignore: cast_nullable_to_non_nullable
                  as List<InventoryAnalyticProductItem>,
        ingredients: null == ingredients
            ? _value._ingredients
            : ingredients // ignore: cast_nullable_to_non_nullable
                  as List<InventoryAnalyticIngredientItem>,
      ),
    );
  }
}

/// @nodoc

class _$InventoryAnalyticImpl implements _InventoryAnalytic {
  const _$InventoryAnalyticImpl({
    required this.summary,
    required final List<InventoryAnalyticProductItem> products,
    required final List<InventoryAnalyticIngredientItem> ingredients,
  }) : _products = products,
       _ingredients = ingredients;

  @override
  final InventoryAnalyticSummary summary;
  final List<InventoryAnalyticProductItem> _products;
  @override
  List<InventoryAnalyticProductItem> get products {
    if (_products is EqualUnmodifiableListView) return _products;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_products);
  }

  final List<InventoryAnalyticIngredientItem> _ingredients;
  @override
  List<InventoryAnalyticIngredientItem> get ingredients {
    if (_ingredients is EqualUnmodifiableListView) return _ingredients;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_ingredients);
  }

  @override
  String toString() {
    return 'InventoryAnalytic(summary: $summary, products: $products, ingredients: $ingredients)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$InventoryAnalyticImpl &&
            (identical(other.summary, summary) || other.summary == summary) &&
            const DeepCollectionEquality().equals(other._products, _products) &&
            const DeepCollectionEquality().equals(
              other._ingredients,
              _ingredients,
            ));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    summary,
    const DeepCollectionEquality().hash(_products),
    const DeepCollectionEquality().hash(_ingredients),
  );

  /// Create a copy of InventoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$InventoryAnalyticImplCopyWith<_$InventoryAnalyticImpl> get copyWith =>
      __$$InventoryAnalyticImplCopyWithImpl<_$InventoryAnalyticImpl>(
        this,
        _$identity,
      );
}

abstract class _InventoryAnalytic implements InventoryAnalytic {
  const factory _InventoryAnalytic({
    required final InventoryAnalyticSummary summary,
    required final List<InventoryAnalyticProductItem> products,
    required final List<InventoryAnalyticIngredientItem> ingredients,
  }) = _$InventoryAnalyticImpl;

  @override
  InventoryAnalyticSummary get summary;
  @override
  List<InventoryAnalyticProductItem> get products;
  @override
  List<InventoryAnalyticIngredientItem> get ingredients;

  /// Create a copy of InventoryAnalytic
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$InventoryAnalyticImplCopyWith<_$InventoryAnalyticImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$InventoryAnalyticSummary {
  int get totalProducts => throw _privateConstructorUsedError;
  int get totalIngredients => throw _privateConstructorUsedError;
  int get totalValue => throw _privateConstructorUsedError;
  int get lowStockProducts => throw _privateConstructorUsedError;
  int get lowStockIngredients => throw _privateConstructorUsedError;
  int get zeroStockProducts => throw _privateConstructorUsedError;
  int get zeroStockIngredients => throw _privateConstructorUsedError;
  int get totalSoldProducts => throw _privateConstructorUsedError;
  int get totalSoldIngredients => throw _privateConstructorUsedError;
  String get outletId => throw _privateConstructorUsedError;
  String get outletName => throw _privateConstructorUsedError;
  DateTime get generatedAt => throw _privateConstructorUsedError;

  /// Create a copy of InventoryAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $InventoryAnalyticSummaryCopyWith<InventoryAnalyticSummary> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $InventoryAnalyticSummaryCopyWith<$Res> {
  factory $InventoryAnalyticSummaryCopyWith(
    InventoryAnalyticSummary value,
    $Res Function(InventoryAnalyticSummary) then,
  ) = _$InventoryAnalyticSummaryCopyWithImpl<$Res, InventoryAnalyticSummary>;
  @useResult
  $Res call({
    int totalProducts,
    int totalIngredients,
    int totalValue,
    int lowStockProducts,
    int lowStockIngredients,
    int zeroStockProducts,
    int zeroStockIngredients,
    int totalSoldProducts,
    int totalSoldIngredients,
    String outletId,
    String outletName,
    DateTime generatedAt,
  });
}

/// @nodoc
class _$InventoryAnalyticSummaryCopyWithImpl<
  $Res,
  $Val extends InventoryAnalyticSummary
>
    implements $InventoryAnalyticSummaryCopyWith<$Res> {
  _$InventoryAnalyticSummaryCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of InventoryAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalProducts = null,
    Object? totalIngredients = null,
    Object? totalValue = null,
    Object? lowStockProducts = null,
    Object? lowStockIngredients = null,
    Object? zeroStockProducts = null,
    Object? zeroStockIngredients = null,
    Object? totalSoldProducts = null,
    Object? totalSoldIngredients = null,
    Object? outletId = null,
    Object? outletName = null,
    Object? generatedAt = null,
  }) {
    return _then(
      _value.copyWith(
            totalProducts: null == totalProducts
                ? _value.totalProducts
                : totalProducts // ignore: cast_nullable_to_non_nullable
                      as int,
            totalIngredients: null == totalIngredients
                ? _value.totalIngredients
                : totalIngredients // ignore: cast_nullable_to_non_nullable
                      as int,
            totalValue: null == totalValue
                ? _value.totalValue
                : totalValue // ignore: cast_nullable_to_non_nullable
                      as int,
            lowStockProducts: null == lowStockProducts
                ? _value.lowStockProducts
                : lowStockProducts // ignore: cast_nullable_to_non_nullable
                      as int,
            lowStockIngredients: null == lowStockIngredients
                ? _value.lowStockIngredients
                : lowStockIngredients // ignore: cast_nullable_to_non_nullable
                      as int,
            zeroStockProducts: null == zeroStockProducts
                ? _value.zeroStockProducts
                : zeroStockProducts // ignore: cast_nullable_to_non_nullable
                      as int,
            zeroStockIngredients: null == zeroStockIngredients
                ? _value.zeroStockIngredients
                : zeroStockIngredients // ignore: cast_nullable_to_non_nullable
                      as int,
            totalSoldProducts: null == totalSoldProducts
                ? _value.totalSoldProducts
                : totalSoldProducts // ignore: cast_nullable_to_non_nullable
                      as int,
            totalSoldIngredients: null == totalSoldIngredients
                ? _value.totalSoldIngredients
                : totalSoldIngredients // ignore: cast_nullable_to_non_nullable
                      as int,
            outletId: null == outletId
                ? _value.outletId
                : outletId // ignore: cast_nullable_to_non_nullable
                      as String,
            outletName: null == outletName
                ? _value.outletName
                : outletName // ignore: cast_nullable_to_non_nullable
                      as String,
            generatedAt: null == generatedAt
                ? _value.generatedAt
                : generatedAt // ignore: cast_nullable_to_non_nullable
                      as DateTime,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$InventoryAnalyticSummaryImplCopyWith<$Res>
    implements $InventoryAnalyticSummaryCopyWith<$Res> {
  factory _$$InventoryAnalyticSummaryImplCopyWith(
    _$InventoryAnalyticSummaryImpl value,
    $Res Function(_$InventoryAnalyticSummaryImpl) then,
  ) = __$$InventoryAnalyticSummaryImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    int totalProducts,
    int totalIngredients,
    int totalValue,
    int lowStockProducts,
    int lowStockIngredients,
    int zeroStockProducts,
    int zeroStockIngredients,
    int totalSoldProducts,
    int totalSoldIngredients,
    String outletId,
    String outletName,
    DateTime generatedAt,
  });
}

/// @nodoc
class __$$InventoryAnalyticSummaryImplCopyWithImpl<$Res>
    extends
        _$InventoryAnalyticSummaryCopyWithImpl<
          $Res,
          _$InventoryAnalyticSummaryImpl
        >
    implements _$$InventoryAnalyticSummaryImplCopyWith<$Res> {
  __$$InventoryAnalyticSummaryImplCopyWithImpl(
    _$InventoryAnalyticSummaryImpl _value,
    $Res Function(_$InventoryAnalyticSummaryImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of InventoryAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? totalProducts = null,
    Object? totalIngredients = null,
    Object? totalValue = null,
    Object? lowStockProducts = null,
    Object? lowStockIngredients = null,
    Object? zeroStockProducts = null,
    Object? zeroStockIngredients = null,
    Object? totalSoldProducts = null,
    Object? totalSoldIngredients = null,
    Object? outletId = null,
    Object? outletName = null,
    Object? generatedAt = null,
  }) {
    return _then(
      _$InventoryAnalyticSummaryImpl(
        totalProducts: null == totalProducts
            ? _value.totalProducts
            : totalProducts // ignore: cast_nullable_to_non_nullable
                  as int,
        totalIngredients: null == totalIngredients
            ? _value.totalIngredients
            : totalIngredients // ignore: cast_nullable_to_non_nullable
                  as int,
        totalValue: null == totalValue
            ? _value.totalValue
            : totalValue // ignore: cast_nullable_to_non_nullable
                  as int,
        lowStockProducts: null == lowStockProducts
            ? _value.lowStockProducts
            : lowStockProducts // ignore: cast_nullable_to_non_nullable
                  as int,
        lowStockIngredients: null == lowStockIngredients
            ? _value.lowStockIngredients
            : lowStockIngredients // ignore: cast_nullable_to_non_nullable
                  as int,
        zeroStockProducts: null == zeroStockProducts
            ? _value.zeroStockProducts
            : zeroStockProducts // ignore: cast_nullable_to_non_nullable
                  as int,
        zeroStockIngredients: null == zeroStockIngredients
            ? _value.zeroStockIngredients
            : zeroStockIngredients // ignore: cast_nullable_to_non_nullable
                  as int,
        totalSoldProducts: null == totalSoldProducts
            ? _value.totalSoldProducts
            : totalSoldProducts // ignore: cast_nullable_to_non_nullable
                  as int,
        totalSoldIngredients: null == totalSoldIngredients
            ? _value.totalSoldIngredients
            : totalSoldIngredients // ignore: cast_nullable_to_non_nullable
                  as int,
        outletId: null == outletId
            ? _value.outletId
            : outletId // ignore: cast_nullable_to_non_nullable
                  as String,
        outletName: null == outletName
            ? _value.outletName
            : outletName // ignore: cast_nullable_to_non_nullable
                  as String,
        generatedAt: null == generatedAt
            ? _value.generatedAt
            : generatedAt // ignore: cast_nullable_to_non_nullable
                  as DateTime,
      ),
    );
  }
}

/// @nodoc

class _$InventoryAnalyticSummaryImpl implements _InventoryAnalyticSummary {
  const _$InventoryAnalyticSummaryImpl({
    required this.totalProducts,
    required this.totalIngredients,
    required this.totalValue,
    required this.lowStockProducts,
    required this.lowStockIngredients,
    required this.zeroStockProducts,
    required this.zeroStockIngredients,
    required this.totalSoldProducts,
    required this.totalSoldIngredients,
    required this.outletId,
    required this.outletName,
    required this.generatedAt,
  });

  @override
  final int totalProducts;
  @override
  final int totalIngredients;
  @override
  final int totalValue;
  @override
  final int lowStockProducts;
  @override
  final int lowStockIngredients;
  @override
  final int zeroStockProducts;
  @override
  final int zeroStockIngredients;
  @override
  final int totalSoldProducts;
  @override
  final int totalSoldIngredients;
  @override
  final String outletId;
  @override
  final String outletName;
  @override
  final DateTime generatedAt;

  @override
  String toString() {
    return 'InventoryAnalyticSummary(totalProducts: $totalProducts, totalIngredients: $totalIngredients, totalValue: $totalValue, lowStockProducts: $lowStockProducts, lowStockIngredients: $lowStockIngredients, zeroStockProducts: $zeroStockProducts, zeroStockIngredients: $zeroStockIngredients, totalSoldProducts: $totalSoldProducts, totalSoldIngredients: $totalSoldIngredients, outletId: $outletId, outletName: $outletName, generatedAt: $generatedAt)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$InventoryAnalyticSummaryImpl &&
            (identical(other.totalProducts, totalProducts) ||
                other.totalProducts == totalProducts) &&
            (identical(other.totalIngredients, totalIngredients) ||
                other.totalIngredients == totalIngredients) &&
            (identical(other.totalValue, totalValue) ||
                other.totalValue == totalValue) &&
            (identical(other.lowStockProducts, lowStockProducts) ||
                other.lowStockProducts == lowStockProducts) &&
            (identical(other.lowStockIngredients, lowStockIngredients) ||
                other.lowStockIngredients == lowStockIngredients) &&
            (identical(other.zeroStockProducts, zeroStockProducts) ||
                other.zeroStockProducts == zeroStockProducts) &&
            (identical(other.zeroStockIngredients, zeroStockIngredients) ||
                other.zeroStockIngredients == zeroStockIngredients) &&
            (identical(other.totalSoldProducts, totalSoldProducts) ||
                other.totalSoldProducts == totalSoldProducts) &&
            (identical(other.totalSoldIngredients, totalSoldIngredients) ||
                other.totalSoldIngredients == totalSoldIngredients) &&
            (identical(other.outletId, outletId) ||
                other.outletId == outletId) &&
            (identical(other.outletName, outletName) ||
                other.outletName == outletName) &&
            (identical(other.generatedAt, generatedAt) ||
                other.generatedAt == generatedAt));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    totalProducts,
    totalIngredients,
    totalValue,
    lowStockProducts,
    lowStockIngredients,
    zeroStockProducts,
    zeroStockIngredients,
    totalSoldProducts,
    totalSoldIngredients,
    outletId,
    outletName,
    generatedAt,
  );

  /// Create a copy of InventoryAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$InventoryAnalyticSummaryImplCopyWith<_$InventoryAnalyticSummaryImpl>
  get copyWith =>
      __$$InventoryAnalyticSummaryImplCopyWithImpl<
        _$InventoryAnalyticSummaryImpl
      >(this, _$identity);
}

abstract class _InventoryAnalyticSummary implements InventoryAnalyticSummary {
  const factory _InventoryAnalyticSummary({
    required final int totalProducts,
    required final int totalIngredients,
    required final int totalValue,
    required final int lowStockProducts,
    required final int lowStockIngredients,
    required final int zeroStockProducts,
    required final int zeroStockIngredients,
    required final int totalSoldProducts,
    required final int totalSoldIngredients,
    required final String outletId,
    required final String outletName,
    required final DateTime generatedAt,
  }) = _$InventoryAnalyticSummaryImpl;

  @override
  int get totalProducts;
  @override
  int get totalIngredients;
  @override
  int get totalValue;
  @override
  int get lowStockProducts;
  @override
  int get lowStockIngredients;
  @override
  int get zeroStockProducts;
  @override
  int get zeroStockIngredients;
  @override
  int get totalSoldProducts;
  @override
  int get totalSoldIngredients;
  @override
  String get outletId;
  @override
  String get outletName;
  @override
  DateTime get generatedAt;

  /// Create a copy of InventoryAnalyticSummary
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$InventoryAnalyticSummaryImplCopyWith<_$InventoryAnalyticSummaryImpl>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$InventoryAnalyticProductItem {
  String get id => throw _privateConstructorUsedError;
  String get productId => throw _privateConstructorUsedError;
  String get productName => throw _privateConstructorUsedError;
  String get categoryName => throw _privateConstructorUsedError;
  int get quantity => throw _privateConstructorUsedError;
  int get reorderLevel => throw _privateConstructorUsedError;
  num get unitCost => throw _privateConstructorUsedError;
  int get totalValue => throw _privateConstructorUsedError;
  int get totalIn => throw _privateConstructorUsedError;
  int get totalOut => throw _privateConstructorUsedError;
  bool get isLowStock => throw _privateConstructorUsedError;
  bool get isZeroStock => throw _privateConstructorUsedError;
  DateTime get updatedAt => throw _privateConstructorUsedError;

  /// Create a copy of InventoryAnalyticProductItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $InventoryAnalyticProductItemCopyWith<InventoryAnalyticProductItem>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $InventoryAnalyticProductItemCopyWith<$Res> {
  factory $InventoryAnalyticProductItemCopyWith(
    InventoryAnalyticProductItem value,
    $Res Function(InventoryAnalyticProductItem) then,
  ) =
      _$InventoryAnalyticProductItemCopyWithImpl<
        $Res,
        InventoryAnalyticProductItem
      >;
  @useResult
  $Res call({
    String id,
    String productId,
    String productName,
    String categoryName,
    int quantity,
    int reorderLevel,
    num unitCost,
    int totalValue,
    int totalIn,
    int totalOut,
    bool isLowStock,
    bool isZeroStock,
    DateTime updatedAt,
  });
}

/// @nodoc
class _$InventoryAnalyticProductItemCopyWithImpl<
  $Res,
  $Val extends InventoryAnalyticProductItem
>
    implements $InventoryAnalyticProductItemCopyWith<$Res> {
  _$InventoryAnalyticProductItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of InventoryAnalyticProductItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? id = null,
    Object? productId = null,
    Object? productName = null,
    Object? categoryName = null,
    Object? quantity = null,
    Object? reorderLevel = null,
    Object? unitCost = null,
    Object? totalValue = null,
    Object? totalIn = null,
    Object? totalOut = null,
    Object? isLowStock = null,
    Object? isZeroStock = null,
    Object? updatedAt = null,
  }) {
    return _then(
      _value.copyWith(
            id: null == id
                ? _value.id
                : id // ignore: cast_nullable_to_non_nullable
                      as String,
            productId: null == productId
                ? _value.productId
                : productId // ignore: cast_nullable_to_non_nullable
                      as String,
            productName: null == productName
                ? _value.productName
                : productName // ignore: cast_nullable_to_non_nullable
                      as String,
            categoryName: null == categoryName
                ? _value.categoryName
                : categoryName // ignore: cast_nullable_to_non_nullable
                      as String,
            quantity: null == quantity
                ? _value.quantity
                : quantity // ignore: cast_nullable_to_non_nullable
                      as int,
            reorderLevel: null == reorderLevel
                ? _value.reorderLevel
                : reorderLevel // ignore: cast_nullable_to_non_nullable
                      as int,
            unitCost: null == unitCost
                ? _value.unitCost
                : unitCost // ignore: cast_nullable_to_non_nullable
                      as num,
            totalValue: null == totalValue
                ? _value.totalValue
                : totalValue // ignore: cast_nullable_to_non_nullable
                      as int,
            totalIn: null == totalIn
                ? _value.totalIn
                : totalIn // ignore: cast_nullable_to_non_nullable
                      as int,
            totalOut: null == totalOut
                ? _value.totalOut
                : totalOut // ignore: cast_nullable_to_non_nullable
                      as int,
            isLowStock: null == isLowStock
                ? _value.isLowStock
                : isLowStock // ignore: cast_nullable_to_non_nullable
                      as bool,
            isZeroStock: null == isZeroStock
                ? _value.isZeroStock
                : isZeroStock // ignore: cast_nullable_to_non_nullable
                      as bool,
            updatedAt: null == updatedAt
                ? _value.updatedAt
                : updatedAt // ignore: cast_nullable_to_non_nullable
                      as DateTime,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$InventoryAnalyticProductItemImplCopyWith<$Res>
    implements $InventoryAnalyticProductItemCopyWith<$Res> {
  factory _$$InventoryAnalyticProductItemImplCopyWith(
    _$InventoryAnalyticProductItemImpl value,
    $Res Function(_$InventoryAnalyticProductItemImpl) then,
  ) = __$$InventoryAnalyticProductItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String id,
    String productId,
    String productName,
    String categoryName,
    int quantity,
    int reorderLevel,
    num unitCost,
    int totalValue,
    int totalIn,
    int totalOut,
    bool isLowStock,
    bool isZeroStock,
    DateTime updatedAt,
  });
}

/// @nodoc
class __$$InventoryAnalyticProductItemImplCopyWithImpl<$Res>
    extends
        _$InventoryAnalyticProductItemCopyWithImpl<
          $Res,
          _$InventoryAnalyticProductItemImpl
        >
    implements _$$InventoryAnalyticProductItemImplCopyWith<$Res> {
  __$$InventoryAnalyticProductItemImplCopyWithImpl(
    _$InventoryAnalyticProductItemImpl _value,
    $Res Function(_$InventoryAnalyticProductItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of InventoryAnalyticProductItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? id = null,
    Object? productId = null,
    Object? productName = null,
    Object? categoryName = null,
    Object? quantity = null,
    Object? reorderLevel = null,
    Object? unitCost = null,
    Object? totalValue = null,
    Object? totalIn = null,
    Object? totalOut = null,
    Object? isLowStock = null,
    Object? isZeroStock = null,
    Object? updatedAt = null,
  }) {
    return _then(
      _$InventoryAnalyticProductItemImpl(
        id: null == id
            ? _value.id
            : id // ignore: cast_nullable_to_non_nullable
                  as String,
        productId: null == productId
            ? _value.productId
            : productId // ignore: cast_nullable_to_non_nullable
                  as String,
        productName: null == productName
            ? _value.productName
            : productName // ignore: cast_nullable_to_non_nullable
                  as String,
        categoryName: null == categoryName
            ? _value.categoryName
            : categoryName // ignore: cast_nullable_to_non_nullable
                  as String,
        quantity: null == quantity
            ? _value.quantity
            : quantity // ignore: cast_nullable_to_non_nullable
                  as int,
        reorderLevel: null == reorderLevel
            ? _value.reorderLevel
            : reorderLevel // ignore: cast_nullable_to_non_nullable
                  as int,
        unitCost: null == unitCost
            ? _value.unitCost
            : unitCost // ignore: cast_nullable_to_non_nullable
                  as num,
        totalValue: null == totalValue
            ? _value.totalValue
            : totalValue // ignore: cast_nullable_to_non_nullable
                  as int,
        totalIn: null == totalIn
            ? _value.totalIn
            : totalIn // ignore: cast_nullable_to_non_nullable
                  as int,
        totalOut: null == totalOut
            ? _value.totalOut
            : totalOut // ignore: cast_nullable_to_non_nullable
                  as int,
        isLowStock: null == isLowStock
            ? _value.isLowStock
            : isLowStock // ignore: cast_nullable_to_non_nullable
                  as bool,
        isZeroStock: null == isZeroStock
            ? _value.isZeroStock
            : isZeroStock // ignore: cast_nullable_to_non_nullable
                  as bool,
        updatedAt: null == updatedAt
            ? _value.updatedAt
            : updatedAt // ignore: cast_nullable_to_non_nullable
                  as DateTime,
      ),
    );
  }
}

/// @nodoc

class _$InventoryAnalyticProductItemImpl
    implements _InventoryAnalyticProductItem {
  const _$InventoryAnalyticProductItemImpl({
    required this.id,
    required this.productId,
    required this.productName,
    required this.categoryName,
    required this.quantity,
    required this.reorderLevel,
    required this.unitCost,
    required this.totalValue,
    required this.totalIn,
    required this.totalOut,
    required this.isLowStock,
    required this.isZeroStock,
    required this.updatedAt,
  });

  @override
  final String id;
  @override
  final String productId;
  @override
  final String productName;
  @override
  final String categoryName;
  @override
  final int quantity;
  @override
  final int reorderLevel;
  @override
  final num unitCost;
  @override
  final int totalValue;
  @override
  final int totalIn;
  @override
  final int totalOut;
  @override
  final bool isLowStock;
  @override
  final bool isZeroStock;
  @override
  final DateTime updatedAt;

  @override
  String toString() {
    return 'InventoryAnalyticProductItem(id: $id, productId: $productId, productName: $productName, categoryName: $categoryName, quantity: $quantity, reorderLevel: $reorderLevel, unitCost: $unitCost, totalValue: $totalValue, totalIn: $totalIn, totalOut: $totalOut, isLowStock: $isLowStock, isZeroStock: $isZeroStock, updatedAt: $updatedAt)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$InventoryAnalyticProductItemImpl &&
            (identical(other.id, id) || other.id == id) &&
            (identical(other.productId, productId) ||
                other.productId == productId) &&
            (identical(other.productName, productName) ||
                other.productName == productName) &&
            (identical(other.categoryName, categoryName) ||
                other.categoryName == categoryName) &&
            (identical(other.quantity, quantity) ||
                other.quantity == quantity) &&
            (identical(other.reorderLevel, reorderLevel) ||
                other.reorderLevel == reorderLevel) &&
            (identical(other.unitCost, unitCost) ||
                other.unitCost == unitCost) &&
            (identical(other.totalValue, totalValue) ||
                other.totalValue == totalValue) &&
            (identical(other.totalIn, totalIn) || other.totalIn == totalIn) &&
            (identical(other.totalOut, totalOut) ||
                other.totalOut == totalOut) &&
            (identical(other.isLowStock, isLowStock) ||
                other.isLowStock == isLowStock) &&
            (identical(other.isZeroStock, isZeroStock) ||
                other.isZeroStock == isZeroStock) &&
            (identical(other.updatedAt, updatedAt) ||
                other.updatedAt == updatedAt));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    id,
    productId,
    productName,
    categoryName,
    quantity,
    reorderLevel,
    unitCost,
    totalValue,
    totalIn,
    totalOut,
    isLowStock,
    isZeroStock,
    updatedAt,
  );

  /// Create a copy of InventoryAnalyticProductItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$InventoryAnalyticProductItemImplCopyWith<
    _$InventoryAnalyticProductItemImpl
  >
  get copyWith =>
      __$$InventoryAnalyticProductItemImplCopyWithImpl<
        _$InventoryAnalyticProductItemImpl
      >(this, _$identity);
}

abstract class _InventoryAnalyticProductItem
    implements InventoryAnalyticProductItem {
  const factory _InventoryAnalyticProductItem({
    required final String id,
    required final String productId,
    required final String productName,
    required final String categoryName,
    required final int quantity,
    required final int reorderLevel,
    required final num unitCost,
    required final int totalValue,
    required final int totalIn,
    required final int totalOut,
    required final bool isLowStock,
    required final bool isZeroStock,
    required final DateTime updatedAt,
  }) = _$InventoryAnalyticProductItemImpl;

  @override
  String get id;
  @override
  String get productId;
  @override
  String get productName;
  @override
  String get categoryName;
  @override
  int get quantity;
  @override
  int get reorderLevel;
  @override
  num get unitCost;
  @override
  int get totalValue;
  @override
  int get totalIn;
  @override
  int get totalOut;
  @override
  bool get isLowStock;
  @override
  bool get isZeroStock;
  @override
  DateTime get updatedAt;

  /// Create a copy of InventoryAnalyticProductItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$InventoryAnalyticProductItemImplCopyWith<
    _$InventoryAnalyticProductItemImpl
  >
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$InventoryAnalyticIngredientItem {
  String get id => throw _privateConstructorUsedError;
  String get ingredientId => throw _privateConstructorUsedError;
  String get ingredientName => throw _privateConstructorUsedError;
  String get unitName => throw _privateConstructorUsedError;
  int get quantity => throw _privateConstructorUsedError;
  int get reorderLevel => throw _privateConstructorUsedError;
  num get unitCost => throw _privateConstructorUsedError;
  int get totalValue => throw _privateConstructorUsedError;
  int get totalIn => throw _privateConstructorUsedError;
  int get totalOut => throw _privateConstructorUsedError;
  bool get isLowStock => throw _privateConstructorUsedError;
  bool get isZeroStock => throw _privateConstructorUsedError;
  DateTime get updatedAt => throw _privateConstructorUsedError;

  /// Create a copy of InventoryAnalyticIngredientItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $InventoryAnalyticIngredientItemCopyWith<InventoryAnalyticIngredientItem>
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $InventoryAnalyticIngredientItemCopyWith<$Res> {
  factory $InventoryAnalyticIngredientItemCopyWith(
    InventoryAnalyticIngredientItem value,
    $Res Function(InventoryAnalyticIngredientItem) then,
  ) =
      _$InventoryAnalyticIngredientItemCopyWithImpl<
        $Res,
        InventoryAnalyticIngredientItem
      >;
  @useResult
  $Res call({
    String id,
    String ingredientId,
    String ingredientName,
    String unitName,
    int quantity,
    int reorderLevel,
    num unitCost,
    int totalValue,
    int totalIn,
    int totalOut,
    bool isLowStock,
    bool isZeroStock,
    DateTime updatedAt,
  });
}

/// @nodoc
class _$InventoryAnalyticIngredientItemCopyWithImpl<
  $Res,
  $Val extends InventoryAnalyticIngredientItem
>
    implements $InventoryAnalyticIngredientItemCopyWith<$Res> {
  _$InventoryAnalyticIngredientItemCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of InventoryAnalyticIngredientItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? id = null,
    Object? ingredientId = null,
    Object? ingredientName = null,
    Object? unitName = null,
    Object? quantity = null,
    Object? reorderLevel = null,
    Object? unitCost = null,
    Object? totalValue = null,
    Object? totalIn = null,
    Object? totalOut = null,
    Object? isLowStock = null,
    Object? isZeroStock = null,
    Object? updatedAt = null,
  }) {
    return _then(
      _value.copyWith(
            id: null == id
                ? _value.id
                : id // ignore: cast_nullable_to_non_nullable
                      as String,
            ingredientId: null == ingredientId
                ? _value.ingredientId
                : ingredientId // ignore: cast_nullable_to_non_nullable
                      as String,
            ingredientName: null == ingredientName
                ? _value.ingredientName
                : ingredientName // ignore: cast_nullable_to_non_nullable
                      as String,
            unitName: null == unitName
                ? _value.unitName
                : unitName // ignore: cast_nullable_to_non_nullable
                      as String,
            quantity: null == quantity
                ? _value.quantity
                : quantity // ignore: cast_nullable_to_non_nullable
                      as int,
            reorderLevel: null == reorderLevel
                ? _value.reorderLevel
                : reorderLevel // ignore: cast_nullable_to_non_nullable
                      as int,
            unitCost: null == unitCost
                ? _value.unitCost
                : unitCost // ignore: cast_nullable_to_non_nullable
                      as num,
            totalValue: null == totalValue
                ? _value.totalValue
                : totalValue // ignore: cast_nullable_to_non_nullable
                      as int,
            totalIn: null == totalIn
                ? _value.totalIn
                : totalIn // ignore: cast_nullable_to_non_nullable
                      as int,
            totalOut: null == totalOut
                ? _value.totalOut
                : totalOut // ignore: cast_nullable_to_non_nullable
                      as int,
            isLowStock: null == isLowStock
                ? _value.isLowStock
                : isLowStock // ignore: cast_nullable_to_non_nullable
                      as bool,
            isZeroStock: null == isZeroStock
                ? _value.isZeroStock
                : isZeroStock // ignore: cast_nullable_to_non_nullable
                      as bool,
            updatedAt: null == updatedAt
                ? _value.updatedAt
                : updatedAt // ignore: cast_nullable_to_non_nullable
                      as DateTime,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$InventoryAnalyticIngredientItemImplCopyWith<$Res>
    implements $InventoryAnalyticIngredientItemCopyWith<$Res> {
  factory _$$InventoryAnalyticIngredientItemImplCopyWith(
    _$InventoryAnalyticIngredientItemImpl value,
    $Res Function(_$InventoryAnalyticIngredientItemImpl) then,
  ) = __$$InventoryAnalyticIngredientItemImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    String id,
    String ingredientId,
    String ingredientName,
    String unitName,
    int quantity,
    int reorderLevel,
    num unitCost,
    int totalValue,
    int totalIn,
    int totalOut,
    bool isLowStock,
    bool isZeroStock,
    DateTime updatedAt,
  });
}

/// @nodoc
class __$$InventoryAnalyticIngredientItemImplCopyWithImpl<$Res>
    extends
        _$InventoryAnalyticIngredientItemCopyWithImpl<
          $Res,
          _$InventoryAnalyticIngredientItemImpl
        >
    implements _$$InventoryAnalyticIngredientItemImplCopyWith<$Res> {
  __$$InventoryAnalyticIngredientItemImplCopyWithImpl(
    _$InventoryAnalyticIngredientItemImpl _value,
    $Res Function(_$InventoryAnalyticIngredientItemImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of InventoryAnalyticIngredientItem
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? id = null,
    Object? ingredientId = null,
    Object? ingredientName = null,
    Object? unitName = null,
    Object? quantity = null,
    Object? reorderLevel = null,
    Object? unitCost = null,
    Object? totalValue = null,
    Object? totalIn = null,
    Object? totalOut = null,
    Object? isLowStock = null,
    Object? isZeroStock = null,
    Object? updatedAt = null,
  }) {
    return _then(
      _$InventoryAnalyticIngredientItemImpl(
        id: null == id
            ? _value.id
            : id // ignore: cast_nullable_to_non_nullable
                  as String,
        ingredientId: null == ingredientId
            ? _value.ingredientId
            : ingredientId // ignore: cast_nullable_to_non_nullable
                  as String,
        ingredientName: null == ingredientName
            ? _value.ingredientName
            : ingredientName // ignore: cast_nullable_to_non_nullable
                  as String,
        unitName: null == unitName
            ? _value.unitName
            : unitName // ignore: cast_nullable_to_non_nullable
                  as String,
        quantity: null == quantity
            ? _value.quantity
            : quantity // ignore: cast_nullable_to_non_nullable
                  as int,
        reorderLevel: null == reorderLevel
            ? _value.reorderLevel
            : reorderLevel // ignore: cast_nullable_to_non_nullable
                  as int,
        unitCost: null == unitCost
            ? _value.unitCost
            : unitCost // ignore: cast_nullable_to_non_nullable
                  as num,
        totalValue: null == totalValue
            ? _value.totalValue
            : totalValue // ignore: cast_nullable_to_non_nullable
                  as int,
        totalIn: null == totalIn
            ? _value.totalIn
            : totalIn // ignore: cast_nullable_to_non_nullable
                  as int,
        totalOut: null == totalOut
            ? _value.totalOut
            : totalOut // ignore: cast_nullable_to_non_nullable
                  as int,
        isLowStock: null == isLowStock
            ? _value.isLowStock
            : isLowStock // ignore: cast_nullable_to_non_nullable
                  as bool,
        isZeroStock: null == isZeroStock
            ? _value.isZeroStock
            : isZeroStock // ignore: cast_nullable_to_non_nullable
                  as bool,
        updatedAt: null == updatedAt
            ? _value.updatedAt
            : updatedAt // ignore: cast_nullable_to_non_nullable
                  as DateTime,
      ),
    );
  }
}

/// @nodoc

class _$InventoryAnalyticIngredientItemImpl
    implements _InventoryAnalyticIngredientItem {
  const _$InventoryAnalyticIngredientItemImpl({
    required this.id,
    required this.ingredientId,
    required this.ingredientName,
    required this.unitName,
    required this.quantity,
    required this.reorderLevel,
    required this.unitCost,
    required this.totalValue,
    required this.totalIn,
    required this.totalOut,
    required this.isLowStock,
    required this.isZeroStock,
    required this.updatedAt,
  });

  @override
  final String id;
  @override
  final String ingredientId;
  @override
  final String ingredientName;
  @override
  final String unitName;
  @override
  final int quantity;
  @override
  final int reorderLevel;
  @override
  final num unitCost;
  @override
  final int totalValue;
  @override
  final int totalIn;
  @override
  final int totalOut;
  @override
  final bool isLowStock;
  @override
  final bool isZeroStock;
  @override
  final DateTime updatedAt;

  @override
  String toString() {
    return 'InventoryAnalyticIngredientItem(id: $id, ingredientId: $ingredientId, ingredientName: $ingredientName, unitName: $unitName, quantity: $quantity, reorderLevel: $reorderLevel, unitCost: $unitCost, totalValue: $totalValue, totalIn: $totalIn, totalOut: $totalOut, isLowStock: $isLowStock, isZeroStock: $isZeroStock, updatedAt: $updatedAt)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$InventoryAnalyticIngredientItemImpl &&
            (identical(other.id, id) || other.id == id) &&
            (identical(other.ingredientId, ingredientId) ||
                other.ingredientId == ingredientId) &&
            (identical(other.ingredientName, ingredientName) ||
                other.ingredientName == ingredientName) &&
            (identical(other.unitName, unitName) ||
                other.unitName == unitName) &&
            (identical(other.quantity, quantity) ||
                other.quantity == quantity) &&
            (identical(other.reorderLevel, reorderLevel) ||
                other.reorderLevel == reorderLevel) &&
            (identical(other.unitCost, unitCost) ||
                other.unitCost == unitCost) &&
            (identical(other.totalValue, totalValue) ||
                other.totalValue == totalValue) &&
            (identical(other.totalIn, totalIn) || other.totalIn == totalIn) &&
            (identical(other.totalOut, totalOut) ||
                other.totalOut == totalOut) &&
            (identical(other.isLowStock, isLowStock) ||
                other.isLowStock == isLowStock) &&
            (identical(other.isZeroStock, isZeroStock) ||
                other.isZeroStock == isZeroStock) &&
            (identical(other.updatedAt, updatedAt) ||
                other.updatedAt == updatedAt));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    id,
    ingredientId,
    ingredientName,
    unitName,
    quantity,
    reorderLevel,
    unitCost,
    totalValue,
    totalIn,
    totalOut,
    isLowStock,
    isZeroStock,
    updatedAt,
  );

  /// Create a copy of InventoryAnalyticIngredientItem
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$InventoryAnalyticIngredientItemImplCopyWith<
    _$InventoryAnalyticIngredientItemImpl
  >
  get copyWith =>
      __$$InventoryAnalyticIngredientItemImplCopyWithImpl<
        _$InventoryAnalyticIngredientItemImpl
      >(this, _$identity);
}

abstract class _InventoryAnalyticIngredientItem
    implements InventoryAnalyticIngredientItem {
  const factory _InventoryAnalyticIngredientItem({
    required final String id,
    required final String ingredientId,
    required final String ingredientName,
    required final String unitName,
    required final int quantity,
    required final int reorderLevel,
    required final num unitCost,
    required final int totalValue,
    required final int totalIn,
    required final int totalOut,
    required final bool isLowStock,
    required final bool isZeroStock,
    required final DateTime updatedAt,
  }) = _$InventoryAnalyticIngredientItemImpl;

  @override
  String get id;
  @override
  String get ingredientId;
  @override
  String get ingredientName;
  @override
  String get unitName;
  @override
  int get quantity;
  @override
  int get reorderLevel;
  @override
  num get unitCost;
  @override
  int get totalValue;
  @override
  int get totalIn;
  @override
  int get totalOut;
  @override
  bool get isLowStock;
  @override
  bool get isZeroStock;
  @override
  DateTime get updatedAt;

  /// Create a copy of InventoryAnalyticIngredientItem
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$InventoryAnalyticIngredientItemImplCopyWith<
    _$InventoryAnalyticIngredientItemImpl
  >
  get copyWith => throw _privateConstructorUsedError;
}

/// @nodoc
mixin _$AnalyticFailure {
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(ApiFailure failure) serverError,
    required TResult Function() unexpectedError,
    required TResult Function(String erroMessage) dynamicErrorMessage,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(ApiFailure failure)? serverError,
    TResult? Function()? unexpectedError,
    TResult? Function(String erroMessage)? dynamicErrorMessage,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(ApiFailure failure)? serverError,
    TResult Function()? unexpectedError,
    TResult Function(String erroMessage)? dynamicErrorMessage,
    required TResult orElse(),
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_ServerError value) serverError,
    required TResult Function(_UnexpectedError value) unexpectedError,
    required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_ServerError value)? serverError,
    TResult? Function(_UnexpectedError value)? unexpectedError,
    TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_ServerError value)? serverError,
    TResult Function(_UnexpectedError value)? unexpectedError,
    TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage,
    required TResult orElse(),
  }) => throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $AnalyticFailureCopyWith<$Res> {
  factory $AnalyticFailureCopyWith(
    AnalyticFailure value,
    $Res Function(AnalyticFailure) then,
  ) = _$AnalyticFailureCopyWithImpl<$Res, AnalyticFailure>;
}

/// @nodoc
class _$AnalyticFailureCopyWithImpl<$Res, $Val extends AnalyticFailure>
    implements $AnalyticFailureCopyWith<$Res> {
  _$AnalyticFailureCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
}

/// @nodoc
abstract class _$$ServerErrorImplCopyWith<$Res> {
  factory _$$ServerErrorImplCopyWith(
    _$ServerErrorImpl value,
    $Res Function(_$ServerErrorImpl) then,
  ) = __$$ServerErrorImplCopyWithImpl<$Res>;
  @useResult
  $Res call({ApiFailure failure});

  $ApiFailureCopyWith<$Res> get failure;
}

/// @nodoc
class __$$ServerErrorImplCopyWithImpl<$Res>
    extends _$AnalyticFailureCopyWithImpl<$Res, _$ServerErrorImpl>
    implements _$$ServerErrorImplCopyWith<$Res> {
  __$$ServerErrorImplCopyWithImpl(
    _$ServerErrorImpl _value,
    $Res Function(_$ServerErrorImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({Object? failure = null}) {
    return _then(
      _$ServerErrorImpl(
        null == failure
            ? _value.failure
            : failure // ignore: cast_nullable_to_non_nullable
                  as ApiFailure,
      ),
    );
  }

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $ApiFailureCopyWith<$Res> get failure {
    return $ApiFailureCopyWith<$Res>(_value.failure, (value) {
      return _then(_value.copyWith(failure: value));
    });
  }
}

/// @nodoc

class _$ServerErrorImpl implements _ServerError {
  const _$ServerErrorImpl(this.failure);

  @override
  final ApiFailure failure;

  @override
  String toString() {
    return 'AnalyticFailure.serverError(failure: $failure)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ServerErrorImpl &&
            (identical(other.failure, failure) || other.failure == failure));
  }

  @override
  int get hashCode => Object.hash(runtimeType, failure);

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith =>
      __$$ServerErrorImplCopyWithImpl<_$ServerErrorImpl>(this, _$identity);

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(ApiFailure failure) serverError,
    required TResult Function() unexpectedError,
    required TResult Function(String erroMessage) dynamicErrorMessage,
  }) {
    return serverError(failure);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(ApiFailure failure)? serverError,
    TResult? Function()? unexpectedError,
    TResult? Function(String erroMessage)? dynamicErrorMessage,
  }) {
    return serverError?.call(failure);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(ApiFailure failure)? serverError,
    TResult Function()? unexpectedError,
    TResult Function(String erroMessage)? dynamicErrorMessage,
    required TResult orElse(),
  }) {
    if (serverError != null) {
      return serverError(failure);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_ServerError value) serverError,
    required TResult Function(_UnexpectedError value) unexpectedError,
    required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage,
  }) {
    return serverError(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_ServerError value)? serverError,
    TResult? Function(_UnexpectedError value)? unexpectedError,
    TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage,
  }) {
    return serverError?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_ServerError value)? serverError,
    TResult Function(_UnexpectedError value)? unexpectedError,
    TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage,
    required TResult orElse(),
  }) {
    if (serverError != null) {
      return serverError(this);
    }
    return orElse();
  }
}

abstract class _ServerError implements AnalyticFailure {
  const factory _ServerError(final ApiFailure failure) = _$ServerErrorImpl;

  ApiFailure get failure;

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ServerErrorImplCopyWith<_$ServerErrorImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class _$$UnexpectedErrorImplCopyWith<$Res> {
  factory _$$UnexpectedErrorImplCopyWith(
    _$UnexpectedErrorImpl value,
    $Res Function(_$UnexpectedErrorImpl) then,
  ) = __$$UnexpectedErrorImplCopyWithImpl<$Res>;
}

/// @nodoc
class __$$UnexpectedErrorImplCopyWithImpl<$Res>
    extends _$AnalyticFailureCopyWithImpl<$Res, _$UnexpectedErrorImpl>
    implements _$$UnexpectedErrorImplCopyWith<$Res> {
  __$$UnexpectedErrorImplCopyWithImpl(
    _$UnexpectedErrorImpl _value,
    $Res Function(_$UnexpectedErrorImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
}

/// @nodoc

class _$UnexpectedErrorImpl implements _UnexpectedError {
  const _$UnexpectedErrorImpl();

  @override
  String toString() {
    return 'AnalyticFailure.unexpectedError()';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType && other is _$UnexpectedErrorImpl);
  }

  @override
  int get hashCode => runtimeType.hashCode;

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(ApiFailure failure) serverError,
    required TResult Function() unexpectedError,
    required TResult Function(String erroMessage) dynamicErrorMessage,
  }) {
    return unexpectedError();
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(ApiFailure failure)? serverError,
    TResult? Function()? unexpectedError,
    TResult? Function(String erroMessage)? dynamicErrorMessage,
  }) {
    return unexpectedError?.call();
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(ApiFailure failure)? serverError,
    TResult Function()? unexpectedError,
    TResult Function(String erroMessage)? dynamicErrorMessage,
    required TResult orElse(),
  }) {
    if (unexpectedError != null) {
      return unexpectedError();
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_ServerError value) serverError,
    required TResult Function(_UnexpectedError value) unexpectedError,
    required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage,
  }) {
    return unexpectedError(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_ServerError value)? serverError,
    TResult? Function(_UnexpectedError value)? unexpectedError,
    TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage,
  }) {
    return unexpectedError?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_ServerError value)? serverError,
    TResult Function(_UnexpectedError value)? unexpectedError,
    TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage,
    required TResult orElse(),
  }) {
    if (unexpectedError != null) {
      return unexpectedError(this);
    }
    return orElse();
  }
}

abstract class _UnexpectedError implements AnalyticFailure {
  const factory _UnexpectedError() = _$UnexpectedErrorImpl;
}

/// @nodoc
abstract class _$$DynamicErrorMessageImplCopyWith<$Res> {
  factory _$$DynamicErrorMessageImplCopyWith(
    _$DynamicErrorMessageImpl value,
    $Res Function(_$DynamicErrorMessageImpl) then,
  ) = __$$DynamicErrorMessageImplCopyWithImpl<$Res>;
  @useResult
  $Res call({String erroMessage});
}

/// @nodoc
class __$$DynamicErrorMessageImplCopyWithImpl<$Res>
    extends _$AnalyticFailureCopyWithImpl<$Res, _$DynamicErrorMessageImpl>
    implements _$$DynamicErrorMessageImplCopyWith<$Res> {
  __$$DynamicErrorMessageImplCopyWithImpl(
    _$DynamicErrorMessageImpl _value,
    $Res Function(_$DynamicErrorMessageImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({Object? erroMessage = null}) {
    return _then(
      _$DynamicErrorMessageImpl(
        null == erroMessage
            ? _value.erroMessage
            : erroMessage // ignore: cast_nullable_to_non_nullable
                  as String,
      ),
    );
  }
}

/// @nodoc

class _$DynamicErrorMessageImpl implements _DynamicErrorMessage {
  const _$DynamicErrorMessageImpl(this.erroMessage);

  @override
  final String erroMessage;

  @override
  String toString() {
    return 'AnalyticFailure.dynamicErrorMessage(erroMessage: $erroMessage)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$DynamicErrorMessageImpl &&
            (identical(other.erroMessage, erroMessage) ||
                other.erroMessage == erroMessage));
  }

  @override
  int get hashCode => Object.hash(runtimeType, erroMessage);

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith =>
      __$$DynamicErrorMessageImplCopyWithImpl<_$DynamicErrorMessageImpl>(
        this,
        _$identity,
      );

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(ApiFailure failure) serverError,
    required TResult Function() unexpectedError,
    required TResult Function(String erroMessage) dynamicErrorMessage,
  }) {
    return dynamicErrorMessage(erroMessage);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(ApiFailure failure)? serverError,
    TResult? Function()? unexpectedError,
    TResult? Function(String erroMessage)? dynamicErrorMessage,
  }) {
    return dynamicErrorMessage?.call(erroMessage);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(ApiFailure failure)? serverError,
    TResult Function()? unexpectedError,
    TResult Function(String erroMessage)? dynamicErrorMessage,
    required TResult orElse(),
  }) {
    if (dynamicErrorMessage != null) {
      return dynamicErrorMessage(erroMessage);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_ServerError value) serverError,
    required TResult Function(_UnexpectedError value) unexpectedError,
    required TResult Function(_DynamicErrorMessage value) dynamicErrorMessage,
  }) {
    return dynamicErrorMessage(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_ServerError value)? serverError,
    TResult? Function(_UnexpectedError value)? unexpectedError,
    TResult? Function(_DynamicErrorMessage value)? dynamicErrorMessage,
  }) {
    return dynamicErrorMessage?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_ServerError value)? serverError,
    TResult Function(_UnexpectedError value)? unexpectedError,
    TResult Function(_DynamicErrorMessage value)? dynamicErrorMessage,
    required TResult orElse(),
  }) {
    if (dynamicErrorMessage != null) {
      return dynamicErrorMessage(this);
    }
    return orElse();
  }
}

abstract class _DynamicErrorMessage implements AnalyticFailure {
  const factory _DynamicErrorMessage(final String erroMessage) =
      _$DynamicErrorMessageImpl;

  String get erroMessage;

  /// Create a copy of AnalyticFailure
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$DynamicErrorMessageImplCopyWith<_$DynamicErrorMessageImpl> get copyWith =>
      throw _privateConstructorUsedError;
}
