// 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 'split_bill_form_bloc.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 _$SplitBillFormEvent {
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(Order order) setOrder,
    required TResult Function(Customer? customer) customerChanged,
    required TResult Function(String customerName) customerNameChanged,
    required TResult Function(SplitType splitType) splitTypeChanged,
    required TResult Function(String itemId, int quantity) itemQuantityChanged,
    required TResult Function(int amount) amountChanged,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(Order order)? setOrder,
    TResult? Function(Customer? customer)? customerChanged,
    TResult? Function(String customerName)? customerNameChanged,
    TResult? Function(SplitType splitType)? splitTypeChanged,
    TResult? Function(String itemId, int quantity)? itemQuantityChanged,
    TResult? Function(int amount)? amountChanged,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(Order order)? setOrder,
    TResult Function(Customer? customer)? customerChanged,
    TResult Function(String customerName)? customerNameChanged,
    TResult Function(SplitType splitType)? splitTypeChanged,
    TResult Function(String itemId, int quantity)? itemQuantityChanged,
    TResult Function(int amount)? amountChanged,
    required TResult orElse(),
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_SetOrder value) setOrder,
    required TResult Function(_CustomerChanged value) customerChanged,
    required TResult Function(_CustomerNameChanged value) customerNameChanged,
    required TResult Function(_SplitTypeChanged value) splitTypeChanged,
    required TResult Function(_ItemQuantityChanged value) itemQuantityChanged,
    required TResult Function(_AmountChanged value) amountChanged,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_SetOrder value)? setOrder,
    TResult? Function(_CustomerChanged value)? customerChanged,
    TResult? Function(_CustomerNameChanged value)? customerNameChanged,
    TResult? Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult? Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult? Function(_AmountChanged value)? amountChanged,
  }) => throw _privateConstructorUsedError;
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_SetOrder value)? setOrder,
    TResult Function(_CustomerChanged value)? customerChanged,
    TResult Function(_CustomerNameChanged value)? customerNameChanged,
    TResult Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult Function(_AmountChanged value)? amountChanged,
    required TResult orElse(),
  }) => throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $SplitBillFormEventCopyWith<$Res> {
  factory $SplitBillFormEventCopyWith(
    SplitBillFormEvent value,
    $Res Function(SplitBillFormEvent) then,
  ) = _$SplitBillFormEventCopyWithImpl<$Res, SplitBillFormEvent>;
}

/// @nodoc
class _$SplitBillFormEventCopyWithImpl<$Res, $Val extends SplitBillFormEvent>
    implements $SplitBillFormEventCopyWith<$Res> {
  _$SplitBillFormEventCopyWithImpl(this._value, this._then);

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

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

/// @nodoc
abstract class _$$SetOrderImplCopyWith<$Res> {
  factory _$$SetOrderImplCopyWith(
    _$SetOrderImpl value,
    $Res Function(_$SetOrderImpl) then,
  ) = __$$SetOrderImplCopyWithImpl<$Res>;
  @useResult
  $Res call({Order order});

  $OrderCopyWith<$Res> get order;
}

/// @nodoc
class __$$SetOrderImplCopyWithImpl<$Res>
    extends _$SplitBillFormEventCopyWithImpl<$Res, _$SetOrderImpl>
    implements _$$SetOrderImplCopyWith<$Res> {
  __$$SetOrderImplCopyWithImpl(
    _$SetOrderImpl _value,
    $Res Function(_$SetOrderImpl) _then,
  ) : super(_value, _then);

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

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

/// @nodoc

class _$SetOrderImpl implements _SetOrder {
  const _$SetOrderImpl(this.order);

  @override
  final Order order;

  @override
  String toString() {
    return 'SplitBillFormEvent.setOrder(order: $order)';
  }

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

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

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

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(Order order) setOrder,
    required TResult Function(Customer? customer) customerChanged,
    required TResult Function(String customerName) customerNameChanged,
    required TResult Function(SplitType splitType) splitTypeChanged,
    required TResult Function(String itemId, int quantity) itemQuantityChanged,
    required TResult Function(int amount) amountChanged,
  }) {
    return setOrder(order);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(Order order)? setOrder,
    TResult? Function(Customer? customer)? customerChanged,
    TResult? Function(String customerName)? customerNameChanged,
    TResult? Function(SplitType splitType)? splitTypeChanged,
    TResult? Function(String itemId, int quantity)? itemQuantityChanged,
    TResult? Function(int amount)? amountChanged,
  }) {
    return setOrder?.call(order);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(Order order)? setOrder,
    TResult Function(Customer? customer)? customerChanged,
    TResult Function(String customerName)? customerNameChanged,
    TResult Function(SplitType splitType)? splitTypeChanged,
    TResult Function(String itemId, int quantity)? itemQuantityChanged,
    TResult Function(int amount)? amountChanged,
    required TResult orElse(),
  }) {
    if (setOrder != null) {
      return setOrder(order);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_SetOrder value) setOrder,
    required TResult Function(_CustomerChanged value) customerChanged,
    required TResult Function(_CustomerNameChanged value) customerNameChanged,
    required TResult Function(_SplitTypeChanged value) splitTypeChanged,
    required TResult Function(_ItemQuantityChanged value) itemQuantityChanged,
    required TResult Function(_AmountChanged value) amountChanged,
  }) {
    return setOrder(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_SetOrder value)? setOrder,
    TResult? Function(_CustomerChanged value)? customerChanged,
    TResult? Function(_CustomerNameChanged value)? customerNameChanged,
    TResult? Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult? Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult? Function(_AmountChanged value)? amountChanged,
  }) {
    return setOrder?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_SetOrder value)? setOrder,
    TResult Function(_CustomerChanged value)? customerChanged,
    TResult Function(_CustomerNameChanged value)? customerNameChanged,
    TResult Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult Function(_AmountChanged value)? amountChanged,
    required TResult orElse(),
  }) {
    if (setOrder != null) {
      return setOrder(this);
    }
    return orElse();
  }
}

abstract class _SetOrder implements SplitBillFormEvent {
  const factory _SetOrder(final Order order) = _$SetOrderImpl;

  Order get order;

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

/// @nodoc
abstract class _$$CustomerChangedImplCopyWith<$Res> {
  factory _$$CustomerChangedImplCopyWith(
    _$CustomerChangedImpl value,
    $Res Function(_$CustomerChangedImpl) then,
  ) = __$$CustomerChangedImplCopyWithImpl<$Res>;
  @useResult
  $Res call({Customer? customer});

  $CustomerCopyWith<$Res>? get customer;
}

/// @nodoc
class __$$CustomerChangedImplCopyWithImpl<$Res>
    extends _$SplitBillFormEventCopyWithImpl<$Res, _$CustomerChangedImpl>
    implements _$$CustomerChangedImplCopyWith<$Res> {
  __$$CustomerChangedImplCopyWithImpl(
    _$CustomerChangedImpl _value,
    $Res Function(_$CustomerChangedImpl) _then,
  ) : super(_value, _then);

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

  /// Create a copy of SplitBillFormEvent
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $CustomerCopyWith<$Res>? get customer {
    if (_value.customer == null) {
      return null;
    }

    return $CustomerCopyWith<$Res>(_value.customer!, (value) {
      return _then(_value.copyWith(customer: value));
    });
  }
}

/// @nodoc

class _$CustomerChangedImpl implements _CustomerChanged {
  const _$CustomerChangedImpl(this.customer);

  @override
  final Customer? customer;

  @override
  String toString() {
    return 'SplitBillFormEvent.customerChanged(customer: $customer)';
  }

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

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

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

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(Order order) setOrder,
    required TResult Function(Customer? customer) customerChanged,
    required TResult Function(String customerName) customerNameChanged,
    required TResult Function(SplitType splitType) splitTypeChanged,
    required TResult Function(String itemId, int quantity) itemQuantityChanged,
    required TResult Function(int amount) amountChanged,
  }) {
    return customerChanged(customer);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(Order order)? setOrder,
    TResult? Function(Customer? customer)? customerChanged,
    TResult? Function(String customerName)? customerNameChanged,
    TResult? Function(SplitType splitType)? splitTypeChanged,
    TResult? Function(String itemId, int quantity)? itemQuantityChanged,
    TResult? Function(int amount)? amountChanged,
  }) {
    return customerChanged?.call(customer);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(Order order)? setOrder,
    TResult Function(Customer? customer)? customerChanged,
    TResult Function(String customerName)? customerNameChanged,
    TResult Function(SplitType splitType)? splitTypeChanged,
    TResult Function(String itemId, int quantity)? itemQuantityChanged,
    TResult Function(int amount)? amountChanged,
    required TResult orElse(),
  }) {
    if (customerChanged != null) {
      return customerChanged(customer);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_SetOrder value) setOrder,
    required TResult Function(_CustomerChanged value) customerChanged,
    required TResult Function(_CustomerNameChanged value) customerNameChanged,
    required TResult Function(_SplitTypeChanged value) splitTypeChanged,
    required TResult Function(_ItemQuantityChanged value) itemQuantityChanged,
    required TResult Function(_AmountChanged value) amountChanged,
  }) {
    return customerChanged(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_SetOrder value)? setOrder,
    TResult? Function(_CustomerChanged value)? customerChanged,
    TResult? Function(_CustomerNameChanged value)? customerNameChanged,
    TResult? Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult? Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult? Function(_AmountChanged value)? amountChanged,
  }) {
    return customerChanged?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_SetOrder value)? setOrder,
    TResult Function(_CustomerChanged value)? customerChanged,
    TResult Function(_CustomerNameChanged value)? customerNameChanged,
    TResult Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult Function(_AmountChanged value)? amountChanged,
    required TResult orElse(),
  }) {
    if (customerChanged != null) {
      return customerChanged(this);
    }
    return orElse();
  }
}

abstract class _CustomerChanged implements SplitBillFormEvent {
  const factory _CustomerChanged(final Customer? customer) =
      _$CustomerChangedImpl;

  Customer? get customer;

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

/// @nodoc
abstract class _$$CustomerNameChangedImplCopyWith<$Res> {
  factory _$$CustomerNameChangedImplCopyWith(
    _$CustomerNameChangedImpl value,
    $Res Function(_$CustomerNameChangedImpl) then,
  ) = __$$CustomerNameChangedImplCopyWithImpl<$Res>;
  @useResult
  $Res call({String customerName});
}

/// @nodoc
class __$$CustomerNameChangedImplCopyWithImpl<$Res>
    extends _$SplitBillFormEventCopyWithImpl<$Res, _$CustomerNameChangedImpl>
    implements _$$CustomerNameChangedImplCopyWith<$Res> {
  __$$CustomerNameChangedImplCopyWithImpl(
    _$CustomerNameChangedImpl _value,
    $Res Function(_$CustomerNameChangedImpl) _then,
  ) : super(_value, _then);

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

/// @nodoc

class _$CustomerNameChangedImpl implements _CustomerNameChanged {
  const _$CustomerNameChangedImpl(this.customerName);

  @override
  final String customerName;

  @override
  String toString() {
    return 'SplitBillFormEvent.customerNameChanged(customerName: $customerName)';
  }

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

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

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

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(Order order) setOrder,
    required TResult Function(Customer? customer) customerChanged,
    required TResult Function(String customerName) customerNameChanged,
    required TResult Function(SplitType splitType) splitTypeChanged,
    required TResult Function(String itemId, int quantity) itemQuantityChanged,
    required TResult Function(int amount) amountChanged,
  }) {
    return customerNameChanged(customerName);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(Order order)? setOrder,
    TResult? Function(Customer? customer)? customerChanged,
    TResult? Function(String customerName)? customerNameChanged,
    TResult? Function(SplitType splitType)? splitTypeChanged,
    TResult? Function(String itemId, int quantity)? itemQuantityChanged,
    TResult? Function(int amount)? amountChanged,
  }) {
    return customerNameChanged?.call(customerName);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(Order order)? setOrder,
    TResult Function(Customer? customer)? customerChanged,
    TResult Function(String customerName)? customerNameChanged,
    TResult Function(SplitType splitType)? splitTypeChanged,
    TResult Function(String itemId, int quantity)? itemQuantityChanged,
    TResult Function(int amount)? amountChanged,
    required TResult orElse(),
  }) {
    if (customerNameChanged != null) {
      return customerNameChanged(customerName);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_SetOrder value) setOrder,
    required TResult Function(_CustomerChanged value) customerChanged,
    required TResult Function(_CustomerNameChanged value) customerNameChanged,
    required TResult Function(_SplitTypeChanged value) splitTypeChanged,
    required TResult Function(_ItemQuantityChanged value) itemQuantityChanged,
    required TResult Function(_AmountChanged value) amountChanged,
  }) {
    return customerNameChanged(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_SetOrder value)? setOrder,
    TResult? Function(_CustomerChanged value)? customerChanged,
    TResult? Function(_CustomerNameChanged value)? customerNameChanged,
    TResult? Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult? Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult? Function(_AmountChanged value)? amountChanged,
  }) {
    return customerNameChanged?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_SetOrder value)? setOrder,
    TResult Function(_CustomerChanged value)? customerChanged,
    TResult Function(_CustomerNameChanged value)? customerNameChanged,
    TResult Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult Function(_AmountChanged value)? amountChanged,
    required TResult orElse(),
  }) {
    if (customerNameChanged != null) {
      return customerNameChanged(this);
    }
    return orElse();
  }
}

abstract class _CustomerNameChanged implements SplitBillFormEvent {
  const factory _CustomerNameChanged(final String customerName) =
      _$CustomerNameChangedImpl;

  String get customerName;

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

/// @nodoc
abstract class _$$SplitTypeChangedImplCopyWith<$Res> {
  factory _$$SplitTypeChangedImplCopyWith(
    _$SplitTypeChangedImpl value,
    $Res Function(_$SplitTypeChangedImpl) then,
  ) = __$$SplitTypeChangedImplCopyWithImpl<$Res>;
  @useResult
  $Res call({SplitType splitType});
}

/// @nodoc
class __$$SplitTypeChangedImplCopyWithImpl<$Res>
    extends _$SplitBillFormEventCopyWithImpl<$Res, _$SplitTypeChangedImpl>
    implements _$$SplitTypeChangedImplCopyWith<$Res> {
  __$$SplitTypeChangedImplCopyWithImpl(
    _$SplitTypeChangedImpl _value,
    $Res Function(_$SplitTypeChangedImpl) _then,
  ) : super(_value, _then);

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

/// @nodoc

class _$SplitTypeChangedImpl implements _SplitTypeChanged {
  const _$SplitTypeChangedImpl(this.splitType);

  @override
  final SplitType splitType;

  @override
  String toString() {
    return 'SplitBillFormEvent.splitTypeChanged(splitType: $splitType)';
  }

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

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

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

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(Order order) setOrder,
    required TResult Function(Customer? customer) customerChanged,
    required TResult Function(String customerName) customerNameChanged,
    required TResult Function(SplitType splitType) splitTypeChanged,
    required TResult Function(String itemId, int quantity) itemQuantityChanged,
    required TResult Function(int amount) amountChanged,
  }) {
    return splitTypeChanged(splitType);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(Order order)? setOrder,
    TResult? Function(Customer? customer)? customerChanged,
    TResult? Function(String customerName)? customerNameChanged,
    TResult? Function(SplitType splitType)? splitTypeChanged,
    TResult? Function(String itemId, int quantity)? itemQuantityChanged,
    TResult? Function(int amount)? amountChanged,
  }) {
    return splitTypeChanged?.call(splitType);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(Order order)? setOrder,
    TResult Function(Customer? customer)? customerChanged,
    TResult Function(String customerName)? customerNameChanged,
    TResult Function(SplitType splitType)? splitTypeChanged,
    TResult Function(String itemId, int quantity)? itemQuantityChanged,
    TResult Function(int amount)? amountChanged,
    required TResult orElse(),
  }) {
    if (splitTypeChanged != null) {
      return splitTypeChanged(splitType);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_SetOrder value) setOrder,
    required TResult Function(_CustomerChanged value) customerChanged,
    required TResult Function(_CustomerNameChanged value) customerNameChanged,
    required TResult Function(_SplitTypeChanged value) splitTypeChanged,
    required TResult Function(_ItemQuantityChanged value) itemQuantityChanged,
    required TResult Function(_AmountChanged value) amountChanged,
  }) {
    return splitTypeChanged(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_SetOrder value)? setOrder,
    TResult? Function(_CustomerChanged value)? customerChanged,
    TResult? Function(_CustomerNameChanged value)? customerNameChanged,
    TResult? Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult? Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult? Function(_AmountChanged value)? amountChanged,
  }) {
    return splitTypeChanged?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_SetOrder value)? setOrder,
    TResult Function(_CustomerChanged value)? customerChanged,
    TResult Function(_CustomerNameChanged value)? customerNameChanged,
    TResult Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult Function(_AmountChanged value)? amountChanged,
    required TResult orElse(),
  }) {
    if (splitTypeChanged != null) {
      return splitTypeChanged(this);
    }
    return orElse();
  }
}

abstract class _SplitTypeChanged implements SplitBillFormEvent {
  const factory _SplitTypeChanged(final SplitType splitType) =
      _$SplitTypeChangedImpl;

  SplitType get splitType;

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

/// @nodoc
abstract class _$$ItemQuantityChangedImplCopyWith<$Res> {
  factory _$$ItemQuantityChangedImplCopyWith(
    _$ItemQuantityChangedImpl value,
    $Res Function(_$ItemQuantityChangedImpl) then,
  ) = __$$ItemQuantityChangedImplCopyWithImpl<$Res>;
  @useResult
  $Res call({String itemId, int quantity});
}

/// @nodoc
class __$$ItemQuantityChangedImplCopyWithImpl<$Res>
    extends _$SplitBillFormEventCopyWithImpl<$Res, _$ItemQuantityChangedImpl>
    implements _$$ItemQuantityChangedImplCopyWith<$Res> {
  __$$ItemQuantityChangedImplCopyWithImpl(
    _$ItemQuantityChangedImpl _value,
    $Res Function(_$ItemQuantityChangedImpl) _then,
  ) : super(_value, _then);

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

/// @nodoc

class _$ItemQuantityChangedImpl implements _ItemQuantityChanged {
  const _$ItemQuantityChangedImpl({
    required this.itemId,
    required this.quantity,
  });

  @override
  final String itemId;
  @override
  final int quantity;

  @override
  String toString() {
    return 'SplitBillFormEvent.itemQuantityChanged(itemId: $itemId, quantity: $quantity)';
  }

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

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

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

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(Order order) setOrder,
    required TResult Function(Customer? customer) customerChanged,
    required TResult Function(String customerName) customerNameChanged,
    required TResult Function(SplitType splitType) splitTypeChanged,
    required TResult Function(String itemId, int quantity) itemQuantityChanged,
    required TResult Function(int amount) amountChanged,
  }) {
    return itemQuantityChanged(itemId, quantity);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(Order order)? setOrder,
    TResult? Function(Customer? customer)? customerChanged,
    TResult? Function(String customerName)? customerNameChanged,
    TResult? Function(SplitType splitType)? splitTypeChanged,
    TResult? Function(String itemId, int quantity)? itemQuantityChanged,
    TResult? Function(int amount)? amountChanged,
  }) {
    return itemQuantityChanged?.call(itemId, quantity);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(Order order)? setOrder,
    TResult Function(Customer? customer)? customerChanged,
    TResult Function(String customerName)? customerNameChanged,
    TResult Function(SplitType splitType)? splitTypeChanged,
    TResult Function(String itemId, int quantity)? itemQuantityChanged,
    TResult Function(int amount)? amountChanged,
    required TResult orElse(),
  }) {
    if (itemQuantityChanged != null) {
      return itemQuantityChanged(itemId, quantity);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_SetOrder value) setOrder,
    required TResult Function(_CustomerChanged value) customerChanged,
    required TResult Function(_CustomerNameChanged value) customerNameChanged,
    required TResult Function(_SplitTypeChanged value) splitTypeChanged,
    required TResult Function(_ItemQuantityChanged value) itemQuantityChanged,
    required TResult Function(_AmountChanged value) amountChanged,
  }) {
    return itemQuantityChanged(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_SetOrder value)? setOrder,
    TResult? Function(_CustomerChanged value)? customerChanged,
    TResult? Function(_CustomerNameChanged value)? customerNameChanged,
    TResult? Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult? Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult? Function(_AmountChanged value)? amountChanged,
  }) {
    return itemQuantityChanged?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_SetOrder value)? setOrder,
    TResult Function(_CustomerChanged value)? customerChanged,
    TResult Function(_CustomerNameChanged value)? customerNameChanged,
    TResult Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult Function(_AmountChanged value)? amountChanged,
    required TResult orElse(),
  }) {
    if (itemQuantityChanged != null) {
      return itemQuantityChanged(this);
    }
    return orElse();
  }
}

abstract class _ItemQuantityChanged implements SplitBillFormEvent {
  const factory _ItemQuantityChanged({
    required final String itemId,
    required final int quantity,
  }) = _$ItemQuantityChangedImpl;

  String get itemId;
  int get quantity;

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

/// @nodoc
abstract class _$$AmountChangedImplCopyWith<$Res> {
  factory _$$AmountChangedImplCopyWith(
    _$AmountChangedImpl value,
    $Res Function(_$AmountChangedImpl) then,
  ) = __$$AmountChangedImplCopyWithImpl<$Res>;
  @useResult
  $Res call({int amount});
}

/// @nodoc
class __$$AmountChangedImplCopyWithImpl<$Res>
    extends _$SplitBillFormEventCopyWithImpl<$Res, _$AmountChangedImpl>
    implements _$$AmountChangedImplCopyWith<$Res> {
  __$$AmountChangedImplCopyWithImpl(
    _$AmountChangedImpl _value,
    $Res Function(_$AmountChangedImpl) _then,
  ) : super(_value, _then);

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

/// @nodoc

class _$AmountChangedImpl implements _AmountChanged {
  const _$AmountChangedImpl(this.amount);

  @override
  final int amount;

  @override
  String toString() {
    return 'SplitBillFormEvent.amountChanged(amount: $amount)';
  }

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

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

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

  @override
  @optionalTypeArgs
  TResult when<TResult extends Object?>({
    required TResult Function(Order order) setOrder,
    required TResult Function(Customer? customer) customerChanged,
    required TResult Function(String customerName) customerNameChanged,
    required TResult Function(SplitType splitType) splitTypeChanged,
    required TResult Function(String itemId, int quantity) itemQuantityChanged,
    required TResult Function(int amount) amountChanged,
  }) {
    return amountChanged(amount);
  }

  @override
  @optionalTypeArgs
  TResult? whenOrNull<TResult extends Object?>({
    TResult? Function(Order order)? setOrder,
    TResult? Function(Customer? customer)? customerChanged,
    TResult? Function(String customerName)? customerNameChanged,
    TResult? Function(SplitType splitType)? splitTypeChanged,
    TResult? Function(String itemId, int quantity)? itemQuantityChanged,
    TResult? Function(int amount)? amountChanged,
  }) {
    return amountChanged?.call(amount);
  }

  @override
  @optionalTypeArgs
  TResult maybeWhen<TResult extends Object?>({
    TResult Function(Order order)? setOrder,
    TResult Function(Customer? customer)? customerChanged,
    TResult Function(String customerName)? customerNameChanged,
    TResult Function(SplitType splitType)? splitTypeChanged,
    TResult Function(String itemId, int quantity)? itemQuantityChanged,
    TResult Function(int amount)? amountChanged,
    required TResult orElse(),
  }) {
    if (amountChanged != null) {
      return amountChanged(amount);
    }
    return orElse();
  }

  @override
  @optionalTypeArgs
  TResult map<TResult extends Object?>({
    required TResult Function(_SetOrder value) setOrder,
    required TResult Function(_CustomerChanged value) customerChanged,
    required TResult Function(_CustomerNameChanged value) customerNameChanged,
    required TResult Function(_SplitTypeChanged value) splitTypeChanged,
    required TResult Function(_ItemQuantityChanged value) itemQuantityChanged,
    required TResult Function(_AmountChanged value) amountChanged,
  }) {
    return amountChanged(this);
  }

  @override
  @optionalTypeArgs
  TResult? mapOrNull<TResult extends Object?>({
    TResult? Function(_SetOrder value)? setOrder,
    TResult? Function(_CustomerChanged value)? customerChanged,
    TResult? Function(_CustomerNameChanged value)? customerNameChanged,
    TResult? Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult? Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult? Function(_AmountChanged value)? amountChanged,
  }) {
    return amountChanged?.call(this);
  }

  @override
  @optionalTypeArgs
  TResult maybeMap<TResult extends Object?>({
    TResult Function(_SetOrder value)? setOrder,
    TResult Function(_CustomerChanged value)? customerChanged,
    TResult Function(_CustomerNameChanged value)? customerNameChanged,
    TResult Function(_SplitTypeChanged value)? splitTypeChanged,
    TResult Function(_ItemQuantityChanged value)? itemQuantityChanged,
    TResult Function(_AmountChanged value)? amountChanged,
    required TResult orElse(),
  }) {
    if (amountChanged != null) {
      return amountChanged(this);
    }
    return orElse();
  }
}

abstract class _AmountChanged implements SplitBillFormEvent {
  const factory _AmountChanged(final int amount) = _$AmountChangedImpl;

  int get amount;

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

/// @nodoc
mixin _$SplitBillFormState {
  Order get order => throw _privateConstructorUsedError;
  List<OrderItem> get pendingItems => throw _privateConstructorUsedError;
  Customer? get customer => throw _privateConstructorUsedError;
  String get customerName => throw _privateConstructorUsedError;
  SplitType get splitType => throw _privateConstructorUsedError;
  Map<String, int> get selectedProducts => throw _privateConstructorUsedError;
  int get totalAmount => throw _privateConstructorUsedError;
  bool get isConfirming => throw _privateConstructorUsedError;

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

/// @nodoc
abstract class $SplitBillFormStateCopyWith<$Res> {
  factory $SplitBillFormStateCopyWith(
    SplitBillFormState value,
    $Res Function(SplitBillFormState) then,
  ) = _$SplitBillFormStateCopyWithImpl<$Res, SplitBillFormState>;
  @useResult
  $Res call({
    Order order,
    List<OrderItem> pendingItems,
    Customer? customer,
    String customerName,
    SplitType splitType,
    Map<String, int> selectedProducts,
    int totalAmount,
    bool isConfirming,
  });

  $OrderCopyWith<$Res> get order;
  $CustomerCopyWith<$Res>? get customer;
}

/// @nodoc
class _$SplitBillFormStateCopyWithImpl<$Res, $Val extends SplitBillFormState>
    implements $SplitBillFormStateCopyWith<$Res> {
  _$SplitBillFormStateCopyWithImpl(this._value, this._then);

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

  /// Create a copy of SplitBillFormState
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? order = null,
    Object? pendingItems = null,
    Object? customer = freezed,
    Object? customerName = null,
    Object? splitType = null,
    Object? selectedProducts = null,
    Object? totalAmount = null,
    Object? isConfirming = null,
  }) {
    return _then(
      _value.copyWith(
            order: null == order
                ? _value.order
                : order // ignore: cast_nullable_to_non_nullable
                      as Order,
            pendingItems: null == pendingItems
                ? _value.pendingItems
                : pendingItems // ignore: cast_nullable_to_non_nullable
                      as List<OrderItem>,
            customer: freezed == customer
                ? _value.customer
                : customer // ignore: cast_nullable_to_non_nullable
                      as Customer?,
            customerName: null == customerName
                ? _value.customerName
                : customerName // ignore: cast_nullable_to_non_nullable
                      as String,
            splitType: null == splitType
                ? _value.splitType
                : splitType // ignore: cast_nullable_to_non_nullable
                      as SplitType,
            selectedProducts: null == selectedProducts
                ? _value.selectedProducts
                : selectedProducts // ignore: cast_nullable_to_non_nullable
                      as Map<String, int>,
            totalAmount: null == totalAmount
                ? _value.totalAmount
                : totalAmount // ignore: cast_nullable_to_non_nullable
                      as int,
            isConfirming: null == isConfirming
                ? _value.isConfirming
                : isConfirming // ignore: cast_nullable_to_non_nullable
                      as bool,
          )
          as $Val,
    );
  }

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

  /// Create a copy of SplitBillFormState
  /// with the given fields replaced by the non-null parameter values.
  @override
  @pragma('vm:prefer-inline')
  $CustomerCopyWith<$Res>? get customer {
    if (_value.customer == null) {
      return null;
    }

    return $CustomerCopyWith<$Res>(_value.customer!, (value) {
      return _then(_value.copyWith(customer: value) as $Val);
    });
  }
}

/// @nodoc
abstract class _$$SplitBillFormStateImplCopyWith<$Res>
    implements $SplitBillFormStateCopyWith<$Res> {
  factory _$$SplitBillFormStateImplCopyWith(
    _$SplitBillFormStateImpl value,
    $Res Function(_$SplitBillFormStateImpl) then,
  ) = __$$SplitBillFormStateImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    Order order,
    List<OrderItem> pendingItems,
    Customer? customer,
    String customerName,
    SplitType splitType,
    Map<String, int> selectedProducts,
    int totalAmount,
    bool isConfirming,
  });

  @override
  $OrderCopyWith<$Res> get order;
  @override
  $CustomerCopyWith<$Res>? get customer;
}

/// @nodoc
class __$$SplitBillFormStateImplCopyWithImpl<$Res>
    extends _$SplitBillFormStateCopyWithImpl<$Res, _$SplitBillFormStateImpl>
    implements _$$SplitBillFormStateImplCopyWith<$Res> {
  __$$SplitBillFormStateImplCopyWithImpl(
    _$SplitBillFormStateImpl _value,
    $Res Function(_$SplitBillFormStateImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of SplitBillFormState
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? order = null,
    Object? pendingItems = null,
    Object? customer = freezed,
    Object? customerName = null,
    Object? splitType = null,
    Object? selectedProducts = null,
    Object? totalAmount = null,
    Object? isConfirming = null,
  }) {
    return _then(
      _$SplitBillFormStateImpl(
        order: null == order
            ? _value.order
            : order // ignore: cast_nullable_to_non_nullable
                  as Order,
        pendingItems: null == pendingItems
            ? _value._pendingItems
            : pendingItems // ignore: cast_nullable_to_non_nullable
                  as List<OrderItem>,
        customer: freezed == customer
            ? _value.customer
            : customer // ignore: cast_nullable_to_non_nullable
                  as Customer?,
        customerName: null == customerName
            ? _value.customerName
            : customerName // ignore: cast_nullable_to_non_nullable
                  as String,
        splitType: null == splitType
            ? _value.splitType
            : splitType // ignore: cast_nullable_to_non_nullable
                  as SplitType,
        selectedProducts: null == selectedProducts
            ? _value._selectedProducts
            : selectedProducts // ignore: cast_nullable_to_non_nullable
                  as Map<String, int>,
        totalAmount: null == totalAmount
            ? _value.totalAmount
            : totalAmount // ignore: cast_nullable_to_non_nullable
                  as int,
        isConfirming: null == isConfirming
            ? _value.isConfirming
            : isConfirming // ignore: cast_nullable_to_non_nullable
                  as bool,
      ),
    );
  }
}

/// @nodoc

class _$SplitBillFormStateImpl implements _SplitBillFormState {
  _$SplitBillFormStateImpl({
    required this.order,
    required final List<OrderItem> pendingItems,
    this.customer,
    required this.customerName,
    required this.splitType,
    required final Map<String, int> selectedProducts,
    this.totalAmount = 0,
    this.isConfirming = false,
  }) : _pendingItems = pendingItems,
       _selectedProducts = selectedProducts;

  @override
  final Order order;
  final List<OrderItem> _pendingItems;
  @override
  List<OrderItem> get pendingItems {
    if (_pendingItems is EqualUnmodifiableListView) return _pendingItems;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_pendingItems);
  }

  @override
  final Customer? customer;
  @override
  final String customerName;
  @override
  final SplitType splitType;
  final Map<String, int> _selectedProducts;
  @override
  Map<String, int> get selectedProducts {
    if (_selectedProducts is EqualUnmodifiableMapView) return _selectedProducts;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableMapView(_selectedProducts);
  }

  @override
  @JsonKey()
  final int totalAmount;
  @override
  @JsonKey()
  final bool isConfirming;

  @override
  String toString() {
    return 'SplitBillFormState(order: $order, pendingItems: $pendingItems, customer: $customer, customerName: $customerName, splitType: $splitType, selectedProducts: $selectedProducts, totalAmount: $totalAmount, isConfirming: $isConfirming)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$SplitBillFormStateImpl &&
            (identical(other.order, order) || other.order == order) &&
            const DeepCollectionEquality().equals(
              other._pendingItems,
              _pendingItems,
            ) &&
            (identical(other.customer, customer) ||
                other.customer == customer) &&
            (identical(other.customerName, customerName) ||
                other.customerName == customerName) &&
            (identical(other.splitType, splitType) ||
                other.splitType == splitType) &&
            const DeepCollectionEquality().equals(
              other._selectedProducts,
              _selectedProducts,
            ) &&
            (identical(other.totalAmount, totalAmount) ||
                other.totalAmount == totalAmount) &&
            (identical(other.isConfirming, isConfirming) ||
                other.isConfirming == isConfirming));
  }

  @override
  int get hashCode => Object.hash(
    runtimeType,
    order,
    const DeepCollectionEquality().hash(_pendingItems),
    customer,
    customerName,
    splitType,
    const DeepCollectionEquality().hash(_selectedProducts),
    totalAmount,
    isConfirming,
  );

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

abstract class _SplitBillFormState implements SplitBillFormState {
  factory _SplitBillFormState({
    required final Order order,
    required final List<OrderItem> pendingItems,
    final Customer? customer,
    required final String customerName,
    required final SplitType splitType,
    required final Map<String, int> selectedProducts,
    final int totalAmount,
    final bool isConfirming,
  }) = _$SplitBillFormStateImpl;

  @override
  Order get order;
  @override
  List<OrderItem> get pendingItems;
  @override
  Customer? get customer;
  @override
  String get customerName;
  @override
  SplitType get splitType;
  @override
  Map<String, int> get selectedProducts;
  @override
  int get totalAmount;
  @override
  bool get isConfirming;

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