// 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 'server_config.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');

ServerConfig _$ServerConfigFromJson(Map<String, dynamic> json) {
  return _ServerConfig.fromJson(json);
}

/// @nodoc
mixin _$ServerConfig {
  SystemConfig get system => throw _privateConstructorUsedError;
  StoriesConfig get stories => throw _privateConstructorUsedError;
  ChatsModuleConfig get chats => throw _privateConstructorUsedError;
  MessagesConfig get messages => throw _privateConstructorUsedError;
  WebRtcConfig get webRtc => throw _privateConstructorUsedError;
  KlipyConfig get klipy => throw _privateConstructorUsedError;
  ImportConfig get import => throw _privateConstructorUsedError;
  FederationConfig get federation => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $ServerConfigCopyWith<ServerConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ServerConfigCopyWith<$Res> {
  factory $ServerConfigCopyWith(
          ServerConfig value, $Res Function(ServerConfig) then) =
      _$ServerConfigCopyWithImpl<$Res, ServerConfig>;
  @useResult
  $Res call(
      {SystemConfig system,
      StoriesConfig stories,
      ChatsModuleConfig chats,
      MessagesConfig messages,
      WebRtcConfig webRtc,
      KlipyConfig klipy,
      ImportConfig import,
      FederationConfig federation});

  $SystemConfigCopyWith<$Res> get system;
  $StoriesConfigCopyWith<$Res> get stories;
  $ChatsModuleConfigCopyWith<$Res> get chats;
  $MessagesConfigCopyWith<$Res> get messages;
  $WebRtcConfigCopyWith<$Res> get webRtc;
  $KlipyConfigCopyWith<$Res> get klipy;
  $ImportConfigCopyWith<$Res> get import;
  $FederationConfigCopyWith<$Res> get federation;
}

/// @nodoc
class _$ServerConfigCopyWithImpl<$Res, $Val extends ServerConfig>
    implements $ServerConfigCopyWith<$Res> {
  _$ServerConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? system = null,
    Object? stories = null,
    Object? chats = null,
    Object? messages = null,
    Object? webRtc = null,
    Object? klipy = null,
    Object? import = null,
    Object? federation = null,
  }) {
    return _then(_value.copyWith(
      system: null == system
          ? _value.system
          : system // ignore: cast_nullable_to_non_nullable
              as SystemConfig,
      stories: null == stories
          ? _value.stories
          : stories // ignore: cast_nullable_to_non_nullable
              as StoriesConfig,
      chats: null == chats
          ? _value.chats
          : chats // ignore: cast_nullable_to_non_nullable
              as ChatsModuleConfig,
      messages: null == messages
          ? _value.messages
          : messages // ignore: cast_nullable_to_non_nullable
              as MessagesConfig,
      webRtc: null == webRtc
          ? _value.webRtc
          : webRtc // ignore: cast_nullable_to_non_nullable
              as WebRtcConfig,
      klipy: null == klipy
          ? _value.klipy
          : klipy // ignore: cast_nullable_to_non_nullable
              as KlipyConfig,
      import: null == import
          ? _value.import
          : import // ignore: cast_nullable_to_non_nullable
              as ImportConfig,
      federation: null == federation
          ? _value.federation
          : federation // ignore: cast_nullable_to_non_nullable
              as FederationConfig,
    ) as $Val);
  }

  @override
  @pragma('vm:prefer-inline')
  $SystemConfigCopyWith<$Res> get system {
    return $SystemConfigCopyWith<$Res>(_value.system, (value) {
      return _then(_value.copyWith(system: value) as $Val);
    });
  }

  @override
  @pragma('vm:prefer-inline')
  $StoriesConfigCopyWith<$Res> get stories {
    return $StoriesConfigCopyWith<$Res>(_value.stories, (value) {
      return _then(_value.copyWith(stories: value) as $Val);
    });
  }

  @override
  @pragma('vm:prefer-inline')
  $ChatsModuleConfigCopyWith<$Res> get chats {
    return $ChatsModuleConfigCopyWith<$Res>(_value.chats, (value) {
      return _then(_value.copyWith(chats: value) as $Val);
    });
  }

  @override
  @pragma('vm:prefer-inline')
  $MessagesConfigCopyWith<$Res> get messages {
    return $MessagesConfigCopyWith<$Res>(_value.messages, (value) {
      return _then(_value.copyWith(messages: value) as $Val);
    });
  }

  @override
  @pragma('vm:prefer-inline')
  $WebRtcConfigCopyWith<$Res> get webRtc {
    return $WebRtcConfigCopyWith<$Res>(_value.webRtc, (value) {
      return _then(_value.copyWith(webRtc: value) as $Val);
    });
  }

  @override
  @pragma('vm:prefer-inline')
  $KlipyConfigCopyWith<$Res> get klipy {
    return $KlipyConfigCopyWith<$Res>(_value.klipy, (value) {
      return _then(_value.copyWith(klipy: value) as $Val);
    });
  }

  @override
  @pragma('vm:prefer-inline')
  $ImportConfigCopyWith<$Res> get import {
    return $ImportConfigCopyWith<$Res>(_value.import, (value) {
      return _then(_value.copyWith(import: value) as $Val);
    });
  }

  @override
  @pragma('vm:prefer-inline')
  $FederationConfigCopyWith<$Res> get federation {
    return $FederationConfigCopyWith<$Res>(_value.federation, (value) {
      return _then(_value.copyWith(federation: value) as $Val);
    });
  }
}

/// @nodoc
abstract class _$$ServerConfigImplCopyWith<$Res>
    implements $ServerConfigCopyWith<$Res> {
  factory _$$ServerConfigImplCopyWith(
          _$ServerConfigImpl value, $Res Function(_$ServerConfigImpl) then) =
      __$$ServerConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call(
      {SystemConfig system,
      StoriesConfig stories,
      ChatsModuleConfig chats,
      MessagesConfig messages,
      WebRtcConfig webRtc,
      KlipyConfig klipy,
      ImportConfig import,
      FederationConfig federation});

  @override
  $SystemConfigCopyWith<$Res> get system;
  @override
  $StoriesConfigCopyWith<$Res> get stories;
  @override
  $ChatsModuleConfigCopyWith<$Res> get chats;
  @override
  $MessagesConfigCopyWith<$Res> get messages;
  @override
  $WebRtcConfigCopyWith<$Res> get webRtc;
  @override
  $KlipyConfigCopyWith<$Res> get klipy;
  @override
  $ImportConfigCopyWith<$Res> get import;
  @override
  $FederationConfigCopyWith<$Res> get federation;
}

/// @nodoc
class __$$ServerConfigImplCopyWithImpl<$Res>
    extends _$ServerConfigCopyWithImpl<$Res, _$ServerConfigImpl>
    implements _$$ServerConfigImplCopyWith<$Res> {
  __$$ServerConfigImplCopyWithImpl(
      _$ServerConfigImpl _value, $Res Function(_$ServerConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? system = null,
    Object? stories = null,
    Object? chats = null,
    Object? messages = null,
    Object? webRtc = null,
    Object? klipy = null,
    Object? import = null,
    Object? federation = null,
  }) {
    return _then(_$ServerConfigImpl(
      system: null == system
          ? _value.system
          : system // ignore: cast_nullable_to_non_nullable
              as SystemConfig,
      stories: null == stories
          ? _value.stories
          : stories // ignore: cast_nullable_to_non_nullable
              as StoriesConfig,
      chats: null == chats
          ? _value.chats
          : chats // ignore: cast_nullable_to_non_nullable
              as ChatsModuleConfig,
      messages: null == messages
          ? _value.messages
          : messages // ignore: cast_nullable_to_non_nullable
              as MessagesConfig,
      webRtc: null == webRtc
          ? _value.webRtc
          : webRtc // ignore: cast_nullable_to_non_nullable
              as WebRtcConfig,
      klipy: null == klipy
          ? _value.klipy
          : klipy // ignore: cast_nullable_to_non_nullable
              as KlipyConfig,
      import: null == import
          ? _value.import
          : import // ignore: cast_nullable_to_non_nullable
              as ImportConfig,
      federation: null == federation
          ? _value.federation
          : federation // ignore: cast_nullable_to_non_nullable
              as FederationConfig,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$ServerConfigImpl implements _ServerConfig {
  const _$ServerConfigImpl(
      {required this.system,
      required this.stories,
      required this.chats,
      required this.messages,
      required this.webRtc,
      required this.klipy,
      required this.import,
      required this.federation});

  factory _$ServerConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$ServerConfigImplFromJson(json);

  @override
  final SystemConfig system;
  @override
  final StoriesConfig stories;
  @override
  final ChatsModuleConfig chats;
  @override
  final MessagesConfig messages;
  @override
  final WebRtcConfig webRtc;
  @override
  final KlipyConfig klipy;
  @override
  final ImportConfig import;
  @override
  final FederationConfig federation;

  @override
  String toString() {
    return 'ServerConfig(system: $system, stories: $stories, chats: $chats, messages: $messages, webRtc: $webRtc, klipy: $klipy, import: $import, federation: $federation)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ServerConfigImpl &&
            (identical(other.system, system) || other.system == system) &&
            (identical(other.stories, stories) || other.stories == stories) &&
            (identical(other.chats, chats) || other.chats == chats) &&
            (identical(other.messages, messages) ||
                other.messages == messages) &&
            (identical(other.webRtc, webRtc) || other.webRtc == webRtc) &&
            (identical(other.klipy, klipy) || other.klipy == klipy) &&
            (identical(other.import, import) || other.import == import) &&
            (identical(other.federation, federation) ||
                other.federation == federation));
  }

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(runtimeType, system, stories, chats, messages,
      webRtc, klipy, import, federation);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$ServerConfigImplCopyWith<_$ServerConfigImpl> get copyWith =>
      __$$ServerConfigImplCopyWithImpl<_$ServerConfigImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$ServerConfigImplToJson(
      this,
    );
  }
}

abstract class _ServerConfig implements ServerConfig {
  const factory _ServerConfig(
      {required final SystemConfig system,
      required final StoriesConfig stories,
      required final ChatsModuleConfig chats,
      required final MessagesConfig messages,
      required final WebRtcConfig webRtc,
      required final KlipyConfig klipy,
      required final ImportConfig import,
      required final FederationConfig federation}) = _$ServerConfigImpl;

  factory _ServerConfig.fromJson(Map<String, dynamic> json) =
      _$ServerConfigImpl.fromJson;

  @override
  SystemConfig get system;
  @override
  StoriesConfig get stories;
  @override
  ChatsModuleConfig get chats;
  @override
  MessagesConfig get messages;
  @override
  WebRtcConfig get webRtc;
  @override
  KlipyConfig get klipy;
  @override
  ImportConfig get import;
  @override
  FederationConfig get federation;
  @override
  @JsonKey(ignore: true)
  _$$ServerConfigImplCopyWith<_$ServerConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

SystemConfig _$SystemConfigFromJson(Map<String, dynamic> json) {
  return _SystemConfig.fromJson(json);
}

/// @nodoc
mixin _$SystemConfig {
  String get domainUrl => throw _privateConstructorUsedError;
  bool get enableRegistration => throw _privateConstructorUsedError;
  String get serverTimezone => throw _privateConstructorUsedError;
  String get adminRoute => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $SystemConfigCopyWith<SystemConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $SystemConfigCopyWith<$Res> {
  factory $SystemConfigCopyWith(
          SystemConfig value, $Res Function(SystemConfig) then) =
      _$SystemConfigCopyWithImpl<$Res, SystemConfig>;
  @useResult
  $Res call(
      {String domainUrl,
      bool enableRegistration,
      String serverTimezone,
      String adminRoute});
}

/// @nodoc
class _$SystemConfigCopyWithImpl<$Res, $Val extends SystemConfig>
    implements $SystemConfigCopyWith<$Res> {
  _$SystemConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? domainUrl = null,
    Object? enableRegistration = null,
    Object? serverTimezone = null,
    Object? adminRoute = null,
  }) {
    return _then(_value.copyWith(
      domainUrl: null == domainUrl
          ? _value.domainUrl
          : domainUrl // ignore: cast_nullable_to_non_nullable
              as String,
      enableRegistration: null == enableRegistration
          ? _value.enableRegistration
          : enableRegistration // ignore: cast_nullable_to_non_nullable
              as bool,
      serverTimezone: null == serverTimezone
          ? _value.serverTimezone
          : serverTimezone // ignore: cast_nullable_to_non_nullable
              as String,
      adminRoute: null == adminRoute
          ? _value.adminRoute
          : adminRoute // ignore: cast_nullable_to_non_nullable
              as String,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$SystemConfigImplCopyWith<$Res>
    implements $SystemConfigCopyWith<$Res> {
  factory _$$SystemConfigImplCopyWith(
          _$SystemConfigImpl value, $Res Function(_$SystemConfigImpl) then) =
      __$$SystemConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call(
      {String domainUrl,
      bool enableRegistration,
      String serverTimezone,
      String adminRoute});
}

/// @nodoc
class __$$SystemConfigImplCopyWithImpl<$Res>
    extends _$SystemConfigCopyWithImpl<$Res, _$SystemConfigImpl>
    implements _$$SystemConfigImplCopyWith<$Res> {
  __$$SystemConfigImplCopyWithImpl(
      _$SystemConfigImpl _value, $Res Function(_$SystemConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? domainUrl = null,
    Object? enableRegistration = null,
    Object? serverTimezone = null,
    Object? adminRoute = null,
  }) {
    return _then(_$SystemConfigImpl(
      domainUrl: null == domainUrl
          ? _value.domainUrl
          : domainUrl // ignore: cast_nullable_to_non_nullable
              as String,
      enableRegistration: null == enableRegistration
          ? _value.enableRegistration
          : enableRegistration // ignore: cast_nullable_to_non_nullable
              as bool,
      serverTimezone: null == serverTimezone
          ? _value.serverTimezone
          : serverTimezone // ignore: cast_nullable_to_non_nullable
              as String,
      adminRoute: null == adminRoute
          ? _value.adminRoute
          : adminRoute // ignore: cast_nullable_to_non_nullable
              as String,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$SystemConfigImpl implements _SystemConfig {
  const _$SystemConfigImpl(
      {required this.domainUrl,
      required this.enableRegistration,
      this.serverTimezone = 'UTC',
      this.adminRoute = 'admin'});

  factory _$SystemConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$SystemConfigImplFromJson(json);

  @override
  final String domainUrl;
  @override
  final bool enableRegistration;
  @override
  @JsonKey()
  final String serverTimezone;
  @override
  @JsonKey()
  final String adminRoute;

  @override
  String toString() {
    return 'SystemConfig(domainUrl: $domainUrl, enableRegistration: $enableRegistration, serverTimezone: $serverTimezone, adminRoute: $adminRoute)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$SystemConfigImpl &&
            (identical(other.domainUrl, domainUrl) ||
                other.domainUrl == domainUrl) &&
            (identical(other.enableRegistration, enableRegistration) ||
                other.enableRegistration == enableRegistration) &&
            (identical(other.serverTimezone, serverTimezone) ||
                other.serverTimezone == serverTimezone) &&
            (identical(other.adminRoute, adminRoute) ||
                other.adminRoute == adminRoute));
  }

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(
      runtimeType, domainUrl, enableRegistration, serverTimezone, adminRoute);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$SystemConfigImplCopyWith<_$SystemConfigImpl> get copyWith =>
      __$$SystemConfigImplCopyWithImpl<_$SystemConfigImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$SystemConfigImplToJson(
      this,
    );
  }
}

abstract class _SystemConfig implements SystemConfig {
  const factory _SystemConfig(
      {required final String domainUrl,
      required final bool enableRegistration,
      final String serverTimezone,
      final String adminRoute}) = _$SystemConfigImpl;

  factory _SystemConfig.fromJson(Map<String, dynamic> json) =
      _$SystemConfigImpl.fromJson;

  @override
  String get domainUrl;
  @override
  bool get enableRegistration;
  @override
  String get serverTimezone;
  @override
  String get adminRoute;
  @override
  @JsonKey(ignore: true)
  _$$SystemConfigImplCopyWith<_$SystemConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

StoriesConfig _$StoriesConfigFromJson(Map<String, dynamic> json) {
  return _StoriesConfig.fromJson(json);
}

/// @nodoc
mixin _$StoriesConfig {
  bool get enabled => throw _privateConstructorUsedError;
  int get maxStoriesPerPeriod => throw _privateConstructorUsedError;
  int get storyLifetimeHours => throw _privateConstructorUsedError;
  bool get textStoriesEnabled => throw _privateConstructorUsedError;
  int get textStoryDurationSeconds => throw _privateConstructorUsedError;
  int get mediaStoryMaxDurationSeconds => throw _privateConstructorUsedError;
  int get maxMediaSizeBytes => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $StoriesConfigCopyWith<StoriesConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $StoriesConfigCopyWith<$Res> {
  factory $StoriesConfigCopyWith(
          StoriesConfig value, $Res Function(StoriesConfig) then) =
      _$StoriesConfigCopyWithImpl<$Res, StoriesConfig>;
  @useResult
  $Res call(
      {bool enabled,
      int maxStoriesPerPeriod,
      int storyLifetimeHours,
      bool textStoriesEnabled,
      int textStoryDurationSeconds,
      int mediaStoryMaxDurationSeconds,
      int maxMediaSizeBytes});
}

/// @nodoc
class _$StoriesConfigCopyWithImpl<$Res, $Val extends StoriesConfig>
    implements $StoriesConfigCopyWith<$Res> {
  _$StoriesConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? maxStoriesPerPeriod = null,
    Object? storyLifetimeHours = null,
    Object? textStoriesEnabled = null,
    Object? textStoryDurationSeconds = null,
    Object? mediaStoryMaxDurationSeconds = null,
    Object? maxMediaSizeBytes = null,
  }) {
    return _then(_value.copyWith(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      maxStoriesPerPeriod: null == maxStoriesPerPeriod
          ? _value.maxStoriesPerPeriod
          : maxStoriesPerPeriod // ignore: cast_nullable_to_non_nullable
              as int,
      storyLifetimeHours: null == storyLifetimeHours
          ? _value.storyLifetimeHours
          : storyLifetimeHours // ignore: cast_nullable_to_non_nullable
              as int,
      textStoriesEnabled: null == textStoriesEnabled
          ? _value.textStoriesEnabled
          : textStoriesEnabled // ignore: cast_nullable_to_non_nullable
              as bool,
      textStoryDurationSeconds: null == textStoryDurationSeconds
          ? _value.textStoryDurationSeconds
          : textStoryDurationSeconds // ignore: cast_nullable_to_non_nullable
              as int,
      mediaStoryMaxDurationSeconds: null == mediaStoryMaxDurationSeconds
          ? _value.mediaStoryMaxDurationSeconds
          : mediaStoryMaxDurationSeconds // ignore: cast_nullable_to_non_nullable
              as int,
      maxMediaSizeBytes: null == maxMediaSizeBytes
          ? _value.maxMediaSizeBytes
          : maxMediaSizeBytes // ignore: cast_nullable_to_non_nullable
              as int,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$StoriesConfigImplCopyWith<$Res>
    implements $StoriesConfigCopyWith<$Res> {
  factory _$$StoriesConfigImplCopyWith(
          _$StoriesConfigImpl value, $Res Function(_$StoriesConfigImpl) then) =
      __$$StoriesConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call(
      {bool enabled,
      int maxStoriesPerPeriod,
      int storyLifetimeHours,
      bool textStoriesEnabled,
      int textStoryDurationSeconds,
      int mediaStoryMaxDurationSeconds,
      int maxMediaSizeBytes});
}

/// @nodoc
class __$$StoriesConfigImplCopyWithImpl<$Res>
    extends _$StoriesConfigCopyWithImpl<$Res, _$StoriesConfigImpl>
    implements _$$StoriesConfigImplCopyWith<$Res> {
  __$$StoriesConfigImplCopyWithImpl(
      _$StoriesConfigImpl _value, $Res Function(_$StoriesConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? maxStoriesPerPeriod = null,
    Object? storyLifetimeHours = null,
    Object? textStoriesEnabled = null,
    Object? textStoryDurationSeconds = null,
    Object? mediaStoryMaxDurationSeconds = null,
    Object? maxMediaSizeBytes = null,
  }) {
    return _then(_$StoriesConfigImpl(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      maxStoriesPerPeriod: null == maxStoriesPerPeriod
          ? _value.maxStoriesPerPeriod
          : maxStoriesPerPeriod // ignore: cast_nullable_to_non_nullable
              as int,
      storyLifetimeHours: null == storyLifetimeHours
          ? _value.storyLifetimeHours
          : storyLifetimeHours // ignore: cast_nullable_to_non_nullable
              as int,
      textStoriesEnabled: null == textStoriesEnabled
          ? _value.textStoriesEnabled
          : textStoriesEnabled // ignore: cast_nullable_to_non_nullable
              as bool,
      textStoryDurationSeconds: null == textStoryDurationSeconds
          ? _value.textStoryDurationSeconds
          : textStoryDurationSeconds // ignore: cast_nullable_to_non_nullable
              as int,
      mediaStoryMaxDurationSeconds: null == mediaStoryMaxDurationSeconds
          ? _value.mediaStoryMaxDurationSeconds
          : mediaStoryMaxDurationSeconds // ignore: cast_nullable_to_non_nullable
              as int,
      maxMediaSizeBytes: null == maxMediaSizeBytes
          ? _value.maxMediaSizeBytes
          : maxMediaSizeBytes // ignore: cast_nullable_to_non_nullable
              as int,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$StoriesConfigImpl implements _StoriesConfig {
  const _$StoriesConfigImpl(
      {required this.enabled,
      required this.maxStoriesPerPeriod,
      required this.storyLifetimeHours,
      required this.textStoriesEnabled,
      required this.textStoryDurationSeconds,
      required this.mediaStoryMaxDurationSeconds,
      required this.maxMediaSizeBytes});

  factory _$StoriesConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$StoriesConfigImplFromJson(json);

  @override
  final bool enabled;
  @override
  final int maxStoriesPerPeriod;
  @override
  final int storyLifetimeHours;
  @override
  final bool textStoriesEnabled;
  @override
  final int textStoryDurationSeconds;
  @override
  final int mediaStoryMaxDurationSeconds;
  @override
  final int maxMediaSizeBytes;

  @override
  String toString() {
    return 'StoriesConfig(enabled: $enabled, maxStoriesPerPeriod: $maxStoriesPerPeriod, storyLifetimeHours: $storyLifetimeHours, textStoriesEnabled: $textStoriesEnabled, textStoryDurationSeconds: $textStoryDurationSeconds, mediaStoryMaxDurationSeconds: $mediaStoryMaxDurationSeconds, maxMediaSizeBytes: $maxMediaSizeBytes)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$StoriesConfigImpl &&
            (identical(other.enabled, enabled) || other.enabled == enabled) &&
            (identical(other.maxStoriesPerPeriod, maxStoriesPerPeriod) ||
                other.maxStoriesPerPeriod == maxStoriesPerPeriod) &&
            (identical(other.storyLifetimeHours, storyLifetimeHours) ||
                other.storyLifetimeHours == storyLifetimeHours) &&
            (identical(other.textStoriesEnabled, textStoriesEnabled) ||
                other.textStoriesEnabled == textStoriesEnabled) &&
            (identical(
                    other.textStoryDurationSeconds, textStoryDurationSeconds) ||
                other.textStoryDurationSeconds == textStoryDurationSeconds) &&
            (identical(other.mediaStoryMaxDurationSeconds,
                    mediaStoryMaxDurationSeconds) ||
                other.mediaStoryMaxDurationSeconds ==
                    mediaStoryMaxDurationSeconds) &&
            (identical(other.maxMediaSizeBytes, maxMediaSizeBytes) ||
                other.maxMediaSizeBytes == maxMediaSizeBytes));
  }

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(
      runtimeType,
      enabled,
      maxStoriesPerPeriod,
      storyLifetimeHours,
      textStoriesEnabled,
      textStoryDurationSeconds,
      mediaStoryMaxDurationSeconds,
      maxMediaSizeBytes);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$StoriesConfigImplCopyWith<_$StoriesConfigImpl> get copyWith =>
      __$$StoriesConfigImplCopyWithImpl<_$StoriesConfigImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$StoriesConfigImplToJson(
      this,
    );
  }
}

abstract class _StoriesConfig implements StoriesConfig {
  const factory _StoriesConfig(
      {required final bool enabled,
      required final int maxStoriesPerPeriod,
      required final int storyLifetimeHours,
      required final bool textStoriesEnabled,
      required final int textStoryDurationSeconds,
      required final int mediaStoryMaxDurationSeconds,
      required final int maxMediaSizeBytes}) = _$StoriesConfigImpl;

  factory _StoriesConfig.fromJson(Map<String, dynamic> json) =
      _$StoriesConfigImpl.fromJson;

  @override
  bool get enabled;
  @override
  int get maxStoriesPerPeriod;
  @override
  int get storyLifetimeHours;
  @override
  bool get textStoriesEnabled;
  @override
  int get textStoryDurationSeconds;
  @override
  int get mediaStoryMaxDurationSeconds;
  @override
  int get maxMediaSizeBytes;
  @override
  @JsonKey(ignore: true)
  _$$StoriesConfigImplCopyWith<_$StoriesConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

ChatsModuleConfig _$ChatsModuleConfigFromJson(Map<String, dynamic> json) {
  return _ChatsModuleConfig.fromJson(json);
}

/// @nodoc
mixin _$ChatsModuleConfig {
  bool get supportGroups => throw _privateConstructorUsedError;
  int get maxGroupParticipants => throw _privateConstructorUsedError;
  bool get allowChatToGroupConversion => throw _privateConstructorUsedError;
  bool get enableFolders => throw _privateConstructorUsedError;
  bool get enableAutoClean => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $ChatsModuleConfigCopyWith<ChatsModuleConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ChatsModuleConfigCopyWith<$Res> {
  factory $ChatsModuleConfigCopyWith(
          ChatsModuleConfig value, $Res Function(ChatsModuleConfig) then) =
      _$ChatsModuleConfigCopyWithImpl<$Res, ChatsModuleConfig>;
  @useResult
  $Res call(
      {bool supportGroups,
      int maxGroupParticipants,
      bool allowChatToGroupConversion,
      bool enableFolders,
      bool enableAutoClean});
}

/// @nodoc
class _$ChatsModuleConfigCopyWithImpl<$Res, $Val extends ChatsModuleConfig>
    implements $ChatsModuleConfigCopyWith<$Res> {
  _$ChatsModuleConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? supportGroups = null,
    Object? maxGroupParticipants = null,
    Object? allowChatToGroupConversion = null,
    Object? enableFolders = null,
    Object? enableAutoClean = null,
  }) {
    return _then(_value.copyWith(
      supportGroups: null == supportGroups
          ? _value.supportGroups
          : supportGroups // ignore: cast_nullable_to_non_nullable
              as bool,
      maxGroupParticipants: null == maxGroupParticipants
          ? _value.maxGroupParticipants
          : maxGroupParticipants // ignore: cast_nullable_to_non_nullable
              as int,
      allowChatToGroupConversion: null == allowChatToGroupConversion
          ? _value.allowChatToGroupConversion
          : allowChatToGroupConversion // ignore: cast_nullable_to_non_nullable
              as bool,
      enableFolders: null == enableFolders
          ? _value.enableFolders
          : enableFolders // ignore: cast_nullable_to_non_nullable
              as bool,
      enableAutoClean: null == enableAutoClean
          ? _value.enableAutoClean
          : enableAutoClean // ignore: cast_nullable_to_non_nullable
              as bool,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$ChatsModuleConfigImplCopyWith<$Res>
    implements $ChatsModuleConfigCopyWith<$Res> {
  factory _$$ChatsModuleConfigImplCopyWith(_$ChatsModuleConfigImpl value,
          $Res Function(_$ChatsModuleConfigImpl) then) =
      __$$ChatsModuleConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call(
      {bool supportGroups,
      int maxGroupParticipants,
      bool allowChatToGroupConversion,
      bool enableFolders,
      bool enableAutoClean});
}

/// @nodoc
class __$$ChatsModuleConfigImplCopyWithImpl<$Res>
    extends _$ChatsModuleConfigCopyWithImpl<$Res, _$ChatsModuleConfigImpl>
    implements _$$ChatsModuleConfigImplCopyWith<$Res> {
  __$$ChatsModuleConfigImplCopyWithImpl(_$ChatsModuleConfigImpl _value,
      $Res Function(_$ChatsModuleConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? supportGroups = null,
    Object? maxGroupParticipants = null,
    Object? allowChatToGroupConversion = null,
    Object? enableFolders = null,
    Object? enableAutoClean = null,
  }) {
    return _then(_$ChatsModuleConfigImpl(
      supportGroups: null == supportGroups
          ? _value.supportGroups
          : supportGroups // ignore: cast_nullable_to_non_nullable
              as bool,
      maxGroupParticipants: null == maxGroupParticipants
          ? _value.maxGroupParticipants
          : maxGroupParticipants // ignore: cast_nullable_to_non_nullable
              as int,
      allowChatToGroupConversion: null == allowChatToGroupConversion
          ? _value.allowChatToGroupConversion
          : allowChatToGroupConversion // ignore: cast_nullable_to_non_nullable
              as bool,
      enableFolders: null == enableFolders
          ? _value.enableFolders
          : enableFolders // ignore: cast_nullable_to_non_nullable
              as bool,
      enableAutoClean: null == enableAutoClean
          ? _value.enableAutoClean
          : enableAutoClean // ignore: cast_nullable_to_non_nullable
              as bool,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$ChatsModuleConfigImpl implements _ChatsModuleConfig {
  const _$ChatsModuleConfigImpl(
      {required this.supportGroups,
      required this.maxGroupParticipants,
      required this.allowChatToGroupConversion,
      required this.enableFolders,
      this.enableAutoClean = false});

  factory _$ChatsModuleConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$ChatsModuleConfigImplFromJson(json);

  @override
  final bool supportGroups;
  @override
  final int maxGroupParticipants;
  @override
  final bool allowChatToGroupConversion;
  @override
  final bool enableFolders;
  @override
  @JsonKey()
  final bool enableAutoClean;

  @override
  String toString() {
    return 'ChatsModuleConfig(supportGroups: $supportGroups, maxGroupParticipants: $maxGroupParticipants, allowChatToGroupConversion: $allowChatToGroupConversion, enableFolders: $enableFolders, enableAutoClean: $enableAutoClean)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ChatsModuleConfigImpl &&
            (identical(other.supportGroups, supportGroups) ||
                other.supportGroups == supportGroups) &&
            (identical(other.maxGroupParticipants, maxGroupParticipants) ||
                other.maxGroupParticipants == maxGroupParticipants) &&
            (identical(other.allowChatToGroupConversion,
                    allowChatToGroupConversion) ||
                other.allowChatToGroupConversion ==
                    allowChatToGroupConversion) &&
            (identical(other.enableFolders, enableFolders) ||
                other.enableFolders == enableFolders) &&
            (identical(other.enableAutoClean, enableAutoClean) ||
                other.enableAutoClean == enableAutoClean));
  }

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(
      runtimeType,
      supportGroups,
      maxGroupParticipants,
      allowChatToGroupConversion,
      enableFolders,
      enableAutoClean);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$ChatsModuleConfigImplCopyWith<_$ChatsModuleConfigImpl> get copyWith =>
      __$$ChatsModuleConfigImplCopyWithImpl<_$ChatsModuleConfigImpl>(
          this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$ChatsModuleConfigImplToJson(
      this,
    );
  }
}

abstract class _ChatsModuleConfig implements ChatsModuleConfig {
  const factory _ChatsModuleConfig(
      {required final bool supportGroups,
      required final int maxGroupParticipants,
      required final bool allowChatToGroupConversion,
      required final bool enableFolders,
      final bool enableAutoClean}) = _$ChatsModuleConfigImpl;

  factory _ChatsModuleConfig.fromJson(Map<String, dynamic> json) =
      _$ChatsModuleConfigImpl.fromJson;

  @override
  bool get supportGroups;
  @override
  int get maxGroupParticipants;
  @override
  bool get allowChatToGroupConversion;
  @override
  bool get enableFolders;
  @override
  bool get enableAutoClean;
  @override
  @JsonKey(ignore: true)
  _$$ChatsModuleConfigImplCopyWith<_$ChatsModuleConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

MessagesConfig _$MessagesConfigFromJson(Map<String, dynamic> json) {
  return _MessagesConfig.fromJson(json);
}

/// @nodoc
mixin _$MessagesConfig {
  int get dailyMessageLimitPerUser => throw _privateConstructorUsedError;
  int get chatMessageLimit => throw _privateConstructorUsedError;
  bool get allowMedia => throw _privateConstructorUsedError;
  int get maxMediaSizeBytes => throw _privateConstructorUsedError;
  List<String> get allowedMediaTypes => throw _privateConstructorUsedError;
  bool get allowVoiceMessages => throw _privateConstructorUsedError;
  bool get allowForwarding => throw _privateConstructorUsedError;
  bool get allowReactions => throw _privateConstructorUsedError;
  bool get allowReplies => throw _privateConstructorUsedError;
  bool get allowQuoting => throw _privateConstructorUsedError;
  bool get allowMessageDeletion => throw _privateConstructorUsedError;
  bool get forbidCopying => throw _privateConstructorUsedError;
  bool get allowLinks => throw _privateConstructorUsedError;
  bool get allowPolls => throw _privateConstructorUsedError;
  bool get allowPinning => throw _privateConstructorUsedError;
  int get maxFileSize => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $MessagesConfigCopyWith<MessagesConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $MessagesConfigCopyWith<$Res> {
  factory $MessagesConfigCopyWith(
          MessagesConfig value, $Res Function(MessagesConfig) then) =
      _$MessagesConfigCopyWithImpl<$Res, MessagesConfig>;
  @useResult
  $Res call(
      {int dailyMessageLimitPerUser,
      int chatMessageLimit,
      bool allowMedia,
      int maxMediaSizeBytes,
      List<String> allowedMediaTypes,
      bool allowVoiceMessages,
      bool allowForwarding,
      bool allowReactions,
      bool allowReplies,
      bool allowQuoting,
      bool allowMessageDeletion,
      bool forbidCopying,
      bool allowLinks,
      bool allowPolls,
      bool allowPinning,
      int maxFileSize});
}

/// @nodoc
class _$MessagesConfigCopyWithImpl<$Res, $Val extends MessagesConfig>
    implements $MessagesConfigCopyWith<$Res> {
  _$MessagesConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? dailyMessageLimitPerUser = null,
    Object? chatMessageLimit = null,
    Object? allowMedia = null,
    Object? maxMediaSizeBytes = null,
    Object? allowedMediaTypes = null,
    Object? allowVoiceMessages = null,
    Object? allowForwarding = null,
    Object? allowReactions = null,
    Object? allowReplies = null,
    Object? allowQuoting = null,
    Object? allowMessageDeletion = null,
    Object? forbidCopying = null,
    Object? allowLinks = null,
    Object? allowPolls = null,
    Object? allowPinning = null,
    Object? maxFileSize = null,
  }) {
    return _then(_value.copyWith(
      dailyMessageLimitPerUser: null == dailyMessageLimitPerUser
          ? _value.dailyMessageLimitPerUser
          : dailyMessageLimitPerUser // ignore: cast_nullable_to_non_nullable
              as int,
      chatMessageLimit: null == chatMessageLimit
          ? _value.chatMessageLimit
          : chatMessageLimit // ignore: cast_nullable_to_non_nullable
              as int,
      allowMedia: null == allowMedia
          ? _value.allowMedia
          : allowMedia // ignore: cast_nullable_to_non_nullable
              as bool,
      maxMediaSizeBytes: null == maxMediaSizeBytes
          ? _value.maxMediaSizeBytes
          : maxMediaSizeBytes // ignore: cast_nullable_to_non_nullable
              as int,
      allowedMediaTypes: null == allowedMediaTypes
          ? _value.allowedMediaTypes
          : allowedMediaTypes // ignore: cast_nullable_to_non_nullable
              as List<String>,
      allowVoiceMessages: null == allowVoiceMessages
          ? _value.allowVoiceMessages
          : allowVoiceMessages // ignore: cast_nullable_to_non_nullable
              as bool,
      allowForwarding: null == allowForwarding
          ? _value.allowForwarding
          : allowForwarding // ignore: cast_nullable_to_non_nullable
              as bool,
      allowReactions: null == allowReactions
          ? _value.allowReactions
          : allowReactions // ignore: cast_nullable_to_non_nullable
              as bool,
      allowReplies: null == allowReplies
          ? _value.allowReplies
          : allowReplies // ignore: cast_nullable_to_non_nullable
              as bool,
      allowQuoting: null == allowQuoting
          ? _value.allowQuoting
          : allowQuoting // ignore: cast_nullable_to_non_nullable
              as bool,
      allowMessageDeletion: null == allowMessageDeletion
          ? _value.allowMessageDeletion
          : allowMessageDeletion // ignore: cast_nullable_to_non_nullable
              as bool,
      forbidCopying: null == forbidCopying
          ? _value.forbidCopying
          : forbidCopying // ignore: cast_nullable_to_non_nullable
              as bool,
      allowLinks: null == allowLinks
          ? _value.allowLinks
          : allowLinks // ignore: cast_nullable_to_non_nullable
              as bool,
      allowPolls: null == allowPolls
          ? _value.allowPolls
          : allowPolls // ignore: cast_nullable_to_non_nullable
              as bool,
      allowPinning: null == allowPinning
          ? _value.allowPinning
          : allowPinning // ignore: cast_nullable_to_non_nullable
              as bool,
      maxFileSize: null == maxFileSize
          ? _value.maxFileSize
          : maxFileSize // ignore: cast_nullable_to_non_nullable
              as int,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$MessagesConfigImplCopyWith<$Res>
    implements $MessagesConfigCopyWith<$Res> {
  factory _$$MessagesConfigImplCopyWith(_$MessagesConfigImpl value,
          $Res Function(_$MessagesConfigImpl) then) =
      __$$MessagesConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call(
      {int dailyMessageLimitPerUser,
      int chatMessageLimit,
      bool allowMedia,
      int maxMediaSizeBytes,
      List<String> allowedMediaTypes,
      bool allowVoiceMessages,
      bool allowForwarding,
      bool allowReactions,
      bool allowReplies,
      bool allowQuoting,
      bool allowMessageDeletion,
      bool forbidCopying,
      bool allowLinks,
      bool allowPolls,
      bool allowPinning,
      int maxFileSize});
}

/// @nodoc
class __$$MessagesConfigImplCopyWithImpl<$Res>
    extends _$MessagesConfigCopyWithImpl<$Res, _$MessagesConfigImpl>
    implements _$$MessagesConfigImplCopyWith<$Res> {
  __$$MessagesConfigImplCopyWithImpl(
      _$MessagesConfigImpl _value, $Res Function(_$MessagesConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? dailyMessageLimitPerUser = null,
    Object? chatMessageLimit = null,
    Object? allowMedia = null,
    Object? maxMediaSizeBytes = null,
    Object? allowedMediaTypes = null,
    Object? allowVoiceMessages = null,
    Object? allowForwarding = null,
    Object? allowReactions = null,
    Object? allowReplies = null,
    Object? allowQuoting = null,
    Object? allowMessageDeletion = null,
    Object? forbidCopying = null,
    Object? allowLinks = null,
    Object? allowPolls = null,
    Object? allowPinning = null,
    Object? maxFileSize = null,
  }) {
    return _then(_$MessagesConfigImpl(
      dailyMessageLimitPerUser: null == dailyMessageLimitPerUser
          ? _value.dailyMessageLimitPerUser
          : dailyMessageLimitPerUser // ignore: cast_nullable_to_non_nullable
              as int,
      chatMessageLimit: null == chatMessageLimit
          ? _value.chatMessageLimit
          : chatMessageLimit // ignore: cast_nullable_to_non_nullable
              as int,
      allowMedia: null == allowMedia
          ? _value.allowMedia
          : allowMedia // ignore: cast_nullable_to_non_nullable
              as bool,
      maxMediaSizeBytes: null == maxMediaSizeBytes
          ? _value.maxMediaSizeBytes
          : maxMediaSizeBytes // ignore: cast_nullable_to_non_nullable
              as int,
      allowedMediaTypes: null == allowedMediaTypes
          ? _value._allowedMediaTypes
          : allowedMediaTypes // ignore: cast_nullable_to_non_nullable
              as List<String>,
      allowVoiceMessages: null == allowVoiceMessages
          ? _value.allowVoiceMessages
          : allowVoiceMessages // ignore: cast_nullable_to_non_nullable
              as bool,
      allowForwarding: null == allowForwarding
          ? _value.allowForwarding
          : allowForwarding // ignore: cast_nullable_to_non_nullable
              as bool,
      allowReactions: null == allowReactions
          ? _value.allowReactions
          : allowReactions // ignore: cast_nullable_to_non_nullable
              as bool,
      allowReplies: null == allowReplies
          ? _value.allowReplies
          : allowReplies // ignore: cast_nullable_to_non_nullable
              as bool,
      allowQuoting: null == allowQuoting
          ? _value.allowQuoting
          : allowQuoting // ignore: cast_nullable_to_non_nullable
              as bool,
      allowMessageDeletion: null == allowMessageDeletion
          ? _value.allowMessageDeletion
          : allowMessageDeletion // ignore: cast_nullable_to_non_nullable
              as bool,
      forbidCopying: null == forbidCopying
          ? _value.forbidCopying
          : forbidCopying // ignore: cast_nullable_to_non_nullable
              as bool,
      allowLinks: null == allowLinks
          ? _value.allowLinks
          : allowLinks // ignore: cast_nullable_to_non_nullable
              as bool,
      allowPolls: null == allowPolls
          ? _value.allowPolls
          : allowPolls // ignore: cast_nullable_to_non_nullable
              as bool,
      allowPinning: null == allowPinning
          ? _value.allowPinning
          : allowPinning // ignore: cast_nullable_to_non_nullable
              as bool,
      maxFileSize: null == maxFileSize
          ? _value.maxFileSize
          : maxFileSize // ignore: cast_nullable_to_non_nullable
              as int,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$MessagesConfigImpl implements _MessagesConfig {
  const _$MessagesConfigImpl(
      {required this.dailyMessageLimitPerUser,
      required this.chatMessageLimit,
      required this.allowMedia,
      required this.maxMediaSizeBytes,
      required final List<String> allowedMediaTypes,
      required this.allowVoiceMessages,
      required this.allowForwarding,
      required this.allowReactions,
      required this.allowReplies,
      required this.allowQuoting,
      required this.allowMessageDeletion,
      required this.forbidCopying,
      required this.allowLinks,
      required this.allowPolls,
      required this.allowPinning,
      this.maxFileSize = 0})
      : _allowedMediaTypes = allowedMediaTypes;

  factory _$MessagesConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$MessagesConfigImplFromJson(json);

  @override
  final int dailyMessageLimitPerUser;
  @override
  final int chatMessageLimit;
  @override
  final bool allowMedia;
  @override
  final int maxMediaSizeBytes;
  final List<String> _allowedMediaTypes;
  @override
  List<String> get allowedMediaTypes {
    if (_allowedMediaTypes is EqualUnmodifiableListView)
      return _allowedMediaTypes;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_allowedMediaTypes);
  }

  @override
  final bool allowVoiceMessages;
  @override
  final bool allowForwarding;
  @override
  final bool allowReactions;
  @override
  final bool allowReplies;
  @override
  final bool allowQuoting;
  @override
  final bool allowMessageDeletion;
  @override
  final bool forbidCopying;
  @override
  final bool allowLinks;
  @override
  final bool allowPolls;
  @override
  final bool allowPinning;
  @override
  @JsonKey()
  final int maxFileSize;

  @override
  String toString() {
    return 'MessagesConfig(dailyMessageLimitPerUser: $dailyMessageLimitPerUser, chatMessageLimit: $chatMessageLimit, allowMedia: $allowMedia, maxMediaSizeBytes: $maxMediaSizeBytes, allowedMediaTypes: $allowedMediaTypes, allowVoiceMessages: $allowVoiceMessages, allowForwarding: $allowForwarding, allowReactions: $allowReactions, allowReplies: $allowReplies, allowQuoting: $allowQuoting, allowMessageDeletion: $allowMessageDeletion, forbidCopying: $forbidCopying, allowLinks: $allowLinks, allowPolls: $allowPolls, allowPinning: $allowPinning, maxFileSize: $maxFileSize)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$MessagesConfigImpl &&
            (identical(
                    other.dailyMessageLimitPerUser, dailyMessageLimitPerUser) ||
                other.dailyMessageLimitPerUser == dailyMessageLimitPerUser) &&
            (identical(other.chatMessageLimit, chatMessageLimit) ||
                other.chatMessageLimit == chatMessageLimit) &&
            (identical(other.allowMedia, allowMedia) ||
                other.allowMedia == allowMedia) &&
            (identical(other.maxMediaSizeBytes, maxMediaSizeBytes) ||
                other.maxMediaSizeBytes == maxMediaSizeBytes) &&
            const DeepCollectionEquality()
                .equals(other._allowedMediaTypes, _allowedMediaTypes) &&
            (identical(other.allowVoiceMessages, allowVoiceMessages) ||
                other.allowVoiceMessages == allowVoiceMessages) &&
            (identical(other.allowForwarding, allowForwarding) ||
                other.allowForwarding == allowForwarding) &&
            (identical(other.allowReactions, allowReactions) ||
                other.allowReactions == allowReactions) &&
            (identical(other.allowReplies, allowReplies) ||
                other.allowReplies == allowReplies) &&
            (identical(other.allowQuoting, allowQuoting) ||
                other.allowQuoting == allowQuoting) &&
            (identical(other.allowMessageDeletion, allowMessageDeletion) ||
                other.allowMessageDeletion == allowMessageDeletion) &&
            (identical(other.forbidCopying, forbidCopying) ||
                other.forbidCopying == forbidCopying) &&
            (identical(other.allowLinks, allowLinks) ||
                other.allowLinks == allowLinks) &&
            (identical(other.allowPolls, allowPolls) ||
                other.allowPolls == allowPolls) &&
            (identical(other.allowPinning, allowPinning) ||
                other.allowPinning == allowPinning) &&
            (identical(other.maxFileSize, maxFileSize) ||
                other.maxFileSize == maxFileSize));
  }

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(
      runtimeType,
      dailyMessageLimitPerUser,
      chatMessageLimit,
      allowMedia,
      maxMediaSizeBytes,
      const DeepCollectionEquality().hash(_allowedMediaTypes),
      allowVoiceMessages,
      allowForwarding,
      allowReactions,
      allowReplies,
      allowQuoting,
      allowMessageDeletion,
      forbidCopying,
      allowLinks,
      allowPolls,
      allowPinning,
      maxFileSize);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$MessagesConfigImplCopyWith<_$MessagesConfigImpl> get copyWith =>
      __$$MessagesConfigImplCopyWithImpl<_$MessagesConfigImpl>(
          this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$MessagesConfigImplToJson(
      this,
    );
  }
}

abstract class _MessagesConfig implements MessagesConfig {
  const factory _MessagesConfig(
      {required final int dailyMessageLimitPerUser,
      required final int chatMessageLimit,
      required final bool allowMedia,
      required final int maxMediaSizeBytes,
      required final List<String> allowedMediaTypes,
      required final bool allowVoiceMessages,
      required final bool allowForwarding,
      required final bool allowReactions,
      required final bool allowReplies,
      required final bool allowQuoting,
      required final bool allowMessageDeletion,
      required final bool forbidCopying,
      required final bool allowLinks,
      required final bool allowPolls,
      required final bool allowPinning,
      final int maxFileSize}) = _$MessagesConfigImpl;

  factory _MessagesConfig.fromJson(Map<String, dynamic> json) =
      _$MessagesConfigImpl.fromJson;

  @override
  int get dailyMessageLimitPerUser;
  @override
  int get chatMessageLimit;
  @override
  bool get allowMedia;
  @override
  int get maxMediaSizeBytes;
  @override
  List<String> get allowedMediaTypes;
  @override
  bool get allowVoiceMessages;
  @override
  bool get allowForwarding;
  @override
  bool get allowReactions;
  @override
  bool get allowReplies;
  @override
  bool get allowQuoting;
  @override
  bool get allowMessageDeletion;
  @override
  bool get forbidCopying;
  @override
  bool get allowLinks;
  @override
  bool get allowPolls;
  @override
  bool get allowPinning;
  @override
  int get maxFileSize;
  @override
  @JsonKey(ignore: true)
  _$$MessagesConfigImplCopyWith<_$MessagesConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

WebRtcConfig _$WebRtcConfigFromJson(Map<String, dynamic> json) {
  return _WebRtcConfig.fromJson(json);
}

/// @nodoc
mixin _$WebRtcConfig {
  bool get enabled => throw _privateConstructorUsedError;
  bool get enableVoiceCalls => throw _privateConstructorUsedError;
  bool get enableVideoCalls => throw _privateConstructorUsedError;
  bool get enableScreenSharing => throw _privateConstructorUsedError;
  String get turnHost => throw _privateConstructorUsedError;
  int get turnPort => throw _privateConstructorUsedError;
  String get turnUser => throw _privateConstructorUsedError;
  String get turnSecret => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $WebRtcConfigCopyWith<WebRtcConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $WebRtcConfigCopyWith<$Res> {
  factory $WebRtcConfigCopyWith(
          WebRtcConfig value, $Res Function(WebRtcConfig) then) =
      _$WebRtcConfigCopyWithImpl<$Res, WebRtcConfig>;
  @useResult
  $Res call(
      {bool enabled,
      bool enableVoiceCalls,
      bool enableVideoCalls,
      bool enableScreenSharing,
      String turnHost,
      int turnPort,
      String turnUser,
      String turnSecret});
}

/// @nodoc
class _$WebRtcConfigCopyWithImpl<$Res, $Val extends WebRtcConfig>
    implements $WebRtcConfigCopyWith<$Res> {
  _$WebRtcConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? enableVoiceCalls = null,
    Object? enableVideoCalls = null,
    Object? enableScreenSharing = null,
    Object? turnHost = null,
    Object? turnPort = null,
    Object? turnUser = null,
    Object? turnSecret = null,
  }) {
    return _then(_value.copyWith(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      enableVoiceCalls: null == enableVoiceCalls
          ? _value.enableVoiceCalls
          : enableVoiceCalls // ignore: cast_nullable_to_non_nullable
              as bool,
      enableVideoCalls: null == enableVideoCalls
          ? _value.enableVideoCalls
          : enableVideoCalls // ignore: cast_nullable_to_non_nullable
              as bool,
      enableScreenSharing: null == enableScreenSharing
          ? _value.enableScreenSharing
          : enableScreenSharing // ignore: cast_nullable_to_non_nullable
              as bool,
      turnHost: null == turnHost
          ? _value.turnHost
          : turnHost // ignore: cast_nullable_to_non_nullable
              as String,
      turnPort: null == turnPort
          ? _value.turnPort
          : turnPort // ignore: cast_nullable_to_non_nullable
              as int,
      turnUser: null == turnUser
          ? _value.turnUser
          : turnUser // ignore: cast_nullable_to_non_nullable
              as String,
      turnSecret: null == turnSecret
          ? _value.turnSecret
          : turnSecret // ignore: cast_nullable_to_non_nullable
              as String,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$WebRtcConfigImplCopyWith<$Res>
    implements $WebRtcConfigCopyWith<$Res> {
  factory _$$WebRtcConfigImplCopyWith(
          _$WebRtcConfigImpl value, $Res Function(_$WebRtcConfigImpl) then) =
      __$$WebRtcConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call(
      {bool enabled,
      bool enableVoiceCalls,
      bool enableVideoCalls,
      bool enableScreenSharing,
      String turnHost,
      int turnPort,
      String turnUser,
      String turnSecret});
}

/// @nodoc
class __$$WebRtcConfigImplCopyWithImpl<$Res>
    extends _$WebRtcConfigCopyWithImpl<$Res, _$WebRtcConfigImpl>
    implements _$$WebRtcConfigImplCopyWith<$Res> {
  __$$WebRtcConfigImplCopyWithImpl(
      _$WebRtcConfigImpl _value, $Res Function(_$WebRtcConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? enableVoiceCalls = null,
    Object? enableVideoCalls = null,
    Object? enableScreenSharing = null,
    Object? turnHost = null,
    Object? turnPort = null,
    Object? turnUser = null,
    Object? turnSecret = null,
  }) {
    return _then(_$WebRtcConfigImpl(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      enableVoiceCalls: null == enableVoiceCalls
          ? _value.enableVoiceCalls
          : enableVoiceCalls // ignore: cast_nullable_to_non_nullable
              as bool,
      enableVideoCalls: null == enableVideoCalls
          ? _value.enableVideoCalls
          : enableVideoCalls // ignore: cast_nullable_to_non_nullable
              as bool,
      enableScreenSharing: null == enableScreenSharing
          ? _value.enableScreenSharing
          : enableScreenSharing // ignore: cast_nullable_to_non_nullable
              as bool,
      turnHost: null == turnHost
          ? _value.turnHost
          : turnHost // ignore: cast_nullable_to_non_nullable
              as String,
      turnPort: null == turnPort
          ? _value.turnPort
          : turnPort // ignore: cast_nullable_to_non_nullable
              as int,
      turnUser: null == turnUser
          ? _value.turnUser
          : turnUser // ignore: cast_nullable_to_non_nullable
              as String,
      turnSecret: null == turnSecret
          ? _value.turnSecret
          : turnSecret // ignore: cast_nullable_to_non_nullable
              as String,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$WebRtcConfigImpl implements _WebRtcConfig {
  const _$WebRtcConfigImpl(
      {required this.enabled,
      required this.enableVoiceCalls,
      required this.enableVideoCalls,
      required this.enableScreenSharing,
      required this.turnHost,
      required this.turnPort,
      this.turnUser = '',
      this.turnSecret = ''});

  factory _$WebRtcConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$WebRtcConfigImplFromJson(json);

  @override
  final bool enabled;
  @override
  final bool enableVoiceCalls;
  @override
  final bool enableVideoCalls;
  @override
  final bool enableScreenSharing;
  @override
  final String turnHost;
  @override
  final int turnPort;
  @override
  @JsonKey()
  final String turnUser;
  @override
  @JsonKey()
  final String turnSecret;

  @override
  String toString() {
    return 'WebRtcConfig(enabled: $enabled, enableVoiceCalls: $enableVoiceCalls, enableVideoCalls: $enableVideoCalls, enableScreenSharing: $enableScreenSharing, turnHost: $turnHost, turnPort: $turnPort, turnUser: $turnUser, turnSecret: $turnSecret)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$WebRtcConfigImpl &&
            (identical(other.enabled, enabled) || other.enabled == enabled) &&
            (identical(other.enableVoiceCalls, enableVoiceCalls) ||
                other.enableVoiceCalls == enableVoiceCalls) &&
            (identical(other.enableVideoCalls, enableVideoCalls) ||
                other.enableVideoCalls == enableVideoCalls) &&
            (identical(other.enableScreenSharing, enableScreenSharing) ||
                other.enableScreenSharing == enableScreenSharing) &&
            (identical(other.turnHost, turnHost) ||
                other.turnHost == turnHost) &&
            (identical(other.turnPort, turnPort) ||
                other.turnPort == turnPort) &&
            (identical(other.turnUser, turnUser) ||
                other.turnUser == turnUser) &&
            (identical(other.turnSecret, turnSecret) ||
                other.turnSecret == turnSecret));
  }

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(
      runtimeType,
      enabled,
      enableVoiceCalls,
      enableVideoCalls,
      enableScreenSharing,
      turnHost,
      turnPort,
      turnUser,
      turnSecret);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$WebRtcConfigImplCopyWith<_$WebRtcConfigImpl> get copyWith =>
      __$$WebRtcConfigImplCopyWithImpl<_$WebRtcConfigImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$WebRtcConfigImplToJson(
      this,
    );
  }
}

abstract class _WebRtcConfig implements WebRtcConfig {
  const factory _WebRtcConfig(
      {required final bool enabled,
      required final bool enableVoiceCalls,
      required final bool enableVideoCalls,
      required final bool enableScreenSharing,
      required final String turnHost,
      required final int turnPort,
      final String turnUser,
      final String turnSecret}) = _$WebRtcConfigImpl;

  factory _WebRtcConfig.fromJson(Map<String, dynamic> json) =
      _$WebRtcConfigImpl.fromJson;

  @override
  bool get enabled;
  @override
  bool get enableVoiceCalls;
  @override
  bool get enableVideoCalls;
  @override
  bool get enableScreenSharing;
  @override
  String get turnHost;
  @override
  int get turnPort;
  @override
  String get turnUser;
  @override
  String get turnSecret;
  @override
  @JsonKey(ignore: true)
  _$$WebRtcConfigImplCopyWith<_$WebRtcConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

KlipyConfig _$KlipyConfigFromJson(Map<String, dynamic> json) {
  return _KlipyConfig.fromJson(json);
}

/// @nodoc
mixin _$KlipyConfig {
  bool get enabled => throw _privateConstructorUsedError;
  String get appName => throw _privateConstructorUsedError;
  String get apiKey => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $KlipyConfigCopyWith<KlipyConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $KlipyConfigCopyWith<$Res> {
  factory $KlipyConfigCopyWith(
          KlipyConfig value, $Res Function(KlipyConfig) then) =
      _$KlipyConfigCopyWithImpl<$Res, KlipyConfig>;
  @useResult
  $Res call({bool enabled, String appName, String apiKey});
}

/// @nodoc
class _$KlipyConfigCopyWithImpl<$Res, $Val extends KlipyConfig>
    implements $KlipyConfigCopyWith<$Res> {
  _$KlipyConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? appName = null,
    Object? apiKey = null,
  }) {
    return _then(_value.copyWith(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      appName: null == appName
          ? _value.appName
          : appName // ignore: cast_nullable_to_non_nullable
              as String,
      apiKey: null == apiKey
          ? _value.apiKey
          : apiKey // ignore: cast_nullable_to_non_nullable
              as String,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$KlipyConfigImplCopyWith<$Res>
    implements $KlipyConfigCopyWith<$Res> {
  factory _$$KlipyConfigImplCopyWith(
          _$KlipyConfigImpl value, $Res Function(_$KlipyConfigImpl) then) =
      __$$KlipyConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({bool enabled, String appName, String apiKey});
}

/// @nodoc
class __$$KlipyConfigImplCopyWithImpl<$Res>
    extends _$KlipyConfigCopyWithImpl<$Res, _$KlipyConfigImpl>
    implements _$$KlipyConfigImplCopyWith<$Res> {
  __$$KlipyConfigImplCopyWithImpl(
      _$KlipyConfigImpl _value, $Res Function(_$KlipyConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? appName = null,
    Object? apiKey = null,
  }) {
    return _then(_$KlipyConfigImpl(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      appName: null == appName
          ? _value.appName
          : appName // ignore: cast_nullable_to_non_nullable
              as String,
      apiKey: null == apiKey
          ? _value.apiKey
          : apiKey // ignore: cast_nullable_to_non_nullable
              as String,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$KlipyConfigImpl implements _KlipyConfig {
  const _$KlipyConfigImpl(
      {required this.enabled, required this.appName, this.apiKey = ''});

  factory _$KlipyConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$KlipyConfigImplFromJson(json);

  @override
  final bool enabled;
  @override
  final String appName;
  @override
  @JsonKey()
  final String apiKey;

  @override
  String toString() {
    return 'KlipyConfig(enabled: $enabled, appName: $appName, apiKey: $apiKey)';
  }

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

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(runtimeType, enabled, appName, apiKey);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$KlipyConfigImplCopyWith<_$KlipyConfigImpl> get copyWith =>
      __$$KlipyConfigImplCopyWithImpl<_$KlipyConfigImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$KlipyConfigImplToJson(
      this,
    );
  }
}

abstract class _KlipyConfig implements KlipyConfig {
  const factory _KlipyConfig(
      {required final bool enabled,
      required final String appName,
      final String apiKey}) = _$KlipyConfigImpl;

  factory _KlipyConfig.fromJson(Map<String, dynamic> json) =
      _$KlipyConfigImpl.fromJson;

  @override
  bool get enabled;
  @override
  String get appName;
  @override
  String get apiKey;
  @override
  @JsonKey(ignore: true)
  _$$KlipyConfigImplCopyWith<_$KlipyConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

ImportConfig _$ImportConfigFromJson(Map<String, dynamic> json) {
  return _ImportConfig.fromJson(json);
}

/// @nodoc
mixin _$ImportConfig {
  bool get enableTelegramImport => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $ImportConfigCopyWith<ImportConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ImportConfigCopyWith<$Res> {
  factory $ImportConfigCopyWith(
          ImportConfig value, $Res Function(ImportConfig) then) =
      _$ImportConfigCopyWithImpl<$Res, ImportConfig>;
  @useResult
  $Res call({bool enableTelegramImport});
}

/// @nodoc
class _$ImportConfigCopyWithImpl<$Res, $Val extends ImportConfig>
    implements $ImportConfigCopyWith<$Res> {
  _$ImportConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enableTelegramImport = null,
  }) {
    return _then(_value.copyWith(
      enableTelegramImport: null == enableTelegramImport
          ? _value.enableTelegramImport
          : enableTelegramImport // ignore: cast_nullable_to_non_nullable
              as bool,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$ImportConfigImplCopyWith<$Res>
    implements $ImportConfigCopyWith<$Res> {
  factory _$$ImportConfigImplCopyWith(
          _$ImportConfigImpl value, $Res Function(_$ImportConfigImpl) then) =
      __$$ImportConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({bool enableTelegramImport});
}

/// @nodoc
class __$$ImportConfigImplCopyWithImpl<$Res>
    extends _$ImportConfigCopyWithImpl<$Res, _$ImportConfigImpl>
    implements _$$ImportConfigImplCopyWith<$Res> {
  __$$ImportConfigImplCopyWithImpl(
      _$ImportConfigImpl _value, $Res Function(_$ImportConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enableTelegramImport = null,
  }) {
    return _then(_$ImportConfigImpl(
      enableTelegramImport: null == enableTelegramImport
          ? _value.enableTelegramImport
          : enableTelegramImport // ignore: cast_nullable_to_non_nullable
              as bool,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$ImportConfigImpl implements _ImportConfig {
  const _$ImportConfigImpl({this.enableTelegramImport = false});

  factory _$ImportConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$ImportConfigImplFromJson(json);

  @override
  @JsonKey()
  final bool enableTelegramImport;

  @override
  String toString() {
    return 'ImportConfig(enableTelegramImport: $enableTelegramImport)';
  }

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

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(runtimeType, enableTelegramImport);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$ImportConfigImplCopyWith<_$ImportConfigImpl> get copyWith =>
      __$$ImportConfigImplCopyWithImpl<_$ImportConfigImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$ImportConfigImplToJson(
      this,
    );
  }
}

abstract class _ImportConfig implements ImportConfig {
  const factory _ImportConfig({final bool enableTelegramImport}) =
      _$ImportConfigImpl;

  factory _ImportConfig.fromJson(Map<String, dynamic> json) =
      _$ImportConfigImpl.fromJson;

  @override
  bool get enableTelegramImport;
  @override
  @JsonKey(ignore: true)
  _$$ImportConfigImplCopyWith<_$ImportConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

FederationConfig _$FederationConfigFromJson(Map<String, dynamic> json) {
  return _FederationConfig.fromJson(json);
}

/// @nodoc
mixin _$FederationConfig {
  bool get enabled => throw _privateConstructorUsedError;
  String get serverDescription => throw _privateConstructorUsedError;
  List<FederationDomainConfig> get allowedDomains =>
      throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $FederationConfigCopyWith<FederationConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $FederationConfigCopyWith<$Res> {
  factory $FederationConfigCopyWith(
          FederationConfig value, $Res Function(FederationConfig) then) =
      _$FederationConfigCopyWithImpl<$Res, FederationConfig>;
  @useResult
  $Res call(
      {bool enabled,
      String serverDescription,
      List<FederationDomainConfig> allowedDomains});
}

/// @nodoc
class _$FederationConfigCopyWithImpl<$Res, $Val extends FederationConfig>
    implements $FederationConfigCopyWith<$Res> {
  _$FederationConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? serverDescription = null,
    Object? allowedDomains = null,
  }) {
    return _then(_value.copyWith(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      serverDescription: null == serverDescription
          ? _value.serverDescription
          : serverDescription // ignore: cast_nullable_to_non_nullable
              as String,
      allowedDomains: null == allowedDomains
          ? _value.allowedDomains
          : allowedDomains // ignore: cast_nullable_to_non_nullable
              as List<FederationDomainConfig>,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$FederationConfigImplCopyWith<$Res>
    implements $FederationConfigCopyWith<$Res> {
  factory _$$FederationConfigImplCopyWith(_$FederationConfigImpl value,
          $Res Function(_$FederationConfigImpl) then) =
      __$$FederationConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call(
      {bool enabled,
      String serverDescription,
      List<FederationDomainConfig> allowedDomains});
}

/// @nodoc
class __$$FederationConfigImplCopyWithImpl<$Res>
    extends _$FederationConfigCopyWithImpl<$Res, _$FederationConfigImpl>
    implements _$$FederationConfigImplCopyWith<$Res> {
  __$$FederationConfigImplCopyWithImpl(_$FederationConfigImpl _value,
      $Res Function(_$FederationConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? enabled = null,
    Object? serverDescription = null,
    Object? allowedDomains = null,
  }) {
    return _then(_$FederationConfigImpl(
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
      serverDescription: null == serverDescription
          ? _value.serverDescription
          : serverDescription // ignore: cast_nullable_to_non_nullable
              as String,
      allowedDomains: null == allowedDomains
          ? _value._allowedDomains
          : allowedDomains // ignore: cast_nullable_to_non_nullable
              as List<FederationDomainConfig>,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$FederationConfigImpl implements _FederationConfig {
  const _$FederationConfigImpl(
      {required this.enabled,
      required this.serverDescription,
      required final List<FederationDomainConfig> allowedDomains})
      : _allowedDomains = allowedDomains;

  factory _$FederationConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$FederationConfigImplFromJson(json);

  @override
  final bool enabled;
  @override
  final String serverDescription;
  final List<FederationDomainConfig> _allowedDomains;
  @override
  List<FederationDomainConfig> get allowedDomains {
    if (_allowedDomains is EqualUnmodifiableListView) return _allowedDomains;
    // ignore: implicit_dynamic_type
    return EqualUnmodifiableListView(_allowedDomains);
  }

  @override
  String toString() {
    return 'FederationConfig(enabled: $enabled, serverDescription: $serverDescription, allowedDomains: $allowedDomains)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$FederationConfigImpl &&
            (identical(other.enabled, enabled) || other.enabled == enabled) &&
            (identical(other.serverDescription, serverDescription) ||
                other.serverDescription == serverDescription) &&
            const DeepCollectionEquality()
                .equals(other._allowedDomains, _allowedDomains));
  }

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(runtimeType, enabled, serverDescription,
      const DeepCollectionEquality().hash(_allowedDomains));

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$FederationConfigImplCopyWith<_$FederationConfigImpl> get copyWith =>
      __$$FederationConfigImplCopyWithImpl<_$FederationConfigImpl>(
          this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$FederationConfigImplToJson(
      this,
    );
  }
}

abstract class _FederationConfig implements FederationConfig {
  const factory _FederationConfig(
          {required final bool enabled,
          required final String serverDescription,
          required final List<FederationDomainConfig> allowedDomains}) =
      _$FederationConfigImpl;

  factory _FederationConfig.fromJson(Map<String, dynamic> json) =
      _$FederationConfigImpl.fromJson;

  @override
  bool get enabled;
  @override
  String get serverDescription;
  @override
  List<FederationDomainConfig> get allowedDomains;
  @override
  @JsonKey(ignore: true)
  _$$FederationConfigImplCopyWith<_$FederationConfigImpl> get copyWith =>
      throw _privateConstructorUsedError;
}

FederationDomainConfig _$FederationDomainConfigFromJson(
    Map<String, dynamic> json) {
  return _FederationDomainConfig.fromJson(json);
}

/// @nodoc
mixin _$FederationDomainConfig {
  String get domain => throw _privateConstructorUsedError;
  bool get enabled => throw _privateConstructorUsedError;

  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
  @JsonKey(ignore: true)
  $FederationDomainConfigCopyWith<FederationDomainConfig> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $FederationDomainConfigCopyWith<$Res> {
  factory $FederationDomainConfigCopyWith(FederationDomainConfig value,
          $Res Function(FederationDomainConfig) then) =
      _$FederationDomainConfigCopyWithImpl<$Res, FederationDomainConfig>;
  @useResult
  $Res call({String domain, bool enabled});
}

/// @nodoc
class _$FederationDomainConfigCopyWithImpl<$Res,
        $Val extends FederationDomainConfig>
    implements $FederationDomainConfigCopyWith<$Res> {
  _$FederationDomainConfigCopyWithImpl(this._value, this._then);

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

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? domain = null,
    Object? enabled = null,
  }) {
    return _then(_value.copyWith(
      domain: null == domain
          ? _value.domain
          : domain // ignore: cast_nullable_to_non_nullable
              as String,
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
    ) as $Val);
  }
}

/// @nodoc
abstract class _$$FederationDomainConfigImplCopyWith<$Res>
    implements $FederationDomainConfigCopyWith<$Res> {
  factory _$$FederationDomainConfigImplCopyWith(
          _$FederationDomainConfigImpl value,
          $Res Function(_$FederationDomainConfigImpl) then) =
      __$$FederationDomainConfigImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({String domain, bool enabled});
}

/// @nodoc
class __$$FederationDomainConfigImplCopyWithImpl<$Res>
    extends _$FederationDomainConfigCopyWithImpl<$Res,
        _$FederationDomainConfigImpl>
    implements _$$FederationDomainConfigImplCopyWith<$Res> {
  __$$FederationDomainConfigImplCopyWithImpl(
      _$FederationDomainConfigImpl _value,
      $Res Function(_$FederationDomainConfigImpl) _then)
      : super(_value, _then);

  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? domain = null,
    Object? enabled = null,
  }) {
    return _then(_$FederationDomainConfigImpl(
      domain: null == domain
          ? _value.domain
          : domain // ignore: cast_nullable_to_non_nullable
              as String,
      enabled: null == enabled
          ? _value.enabled
          : enabled // ignore: cast_nullable_to_non_nullable
              as bool,
    ));
  }
}

/// @nodoc
@JsonSerializable()
class _$FederationDomainConfigImpl implements _FederationDomainConfig {
  const _$FederationDomainConfigImpl(
      {required this.domain, required this.enabled});

  factory _$FederationDomainConfigImpl.fromJson(Map<String, dynamic> json) =>
      _$$FederationDomainConfigImplFromJson(json);

  @override
  final String domain;
  @override
  final bool enabled;

  @override
  String toString() {
    return 'FederationDomainConfig(domain: $domain, enabled: $enabled)';
  }

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

  @JsonKey(ignore: true)
  @override
  int get hashCode => Object.hash(runtimeType, domain, enabled);

  @JsonKey(ignore: true)
  @override
  @pragma('vm:prefer-inline')
  _$$FederationDomainConfigImplCopyWith<_$FederationDomainConfigImpl>
      get copyWith => __$$FederationDomainConfigImplCopyWithImpl<
          _$FederationDomainConfigImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$FederationDomainConfigImplToJson(
      this,
    );
  }
}

abstract class _FederationDomainConfig implements FederationDomainConfig {
  const factory _FederationDomainConfig(
      {required final String domain,
      required final bool enabled}) = _$FederationDomainConfigImpl;

  factory _FederationDomainConfig.fromJson(Map<String, dynamic> json) =
      _$FederationDomainConfigImpl.fromJson;

  @override
  String get domain;
  @override
  bool get enabled;
  @override
  @JsonKey(ignore: true)
  _$$FederationDomainConfigImplCopyWith<_$FederationDomainConfigImpl>
      get copyWith => throw _privateConstructorUsedError;
}
