/// micIndex : 0
/// micLock : false
/// micMute : false
/// roomId : 0
/// roomToken : ""
/// user : {"account":"","charmLevel":0,"heartbeatVal":0,"id":0,"ownSpecialId":{"account":"","expiredTime":0},"roles":"","useProps":[{"expireTime":0,"propsResources":{"amount":0.0,"code":"","cover":"","expand":"","id":0,"name":"","sourceUrl":"","type":""},"userId":0}],"userAvatar":"","userNickname":"","userSex":0}

class SCMicGoUpRes {
  SCMicGoUpRes({
      num? micIndex,
      bool? micLock,
      bool? micMute,
      String? roomId,
      String? roomToken,
      User? user,}){
    _micIndex = micIndex;
    _micLock = micLock;
    _micMute = micMute;
    _roomId = roomId;
    _roomToken = roomToken;
    _user = user;
}

  SCMicGoUpRes.fromJson(dynamic json) {
    _micIndex = json['micIndex'];
    _micLock = json['micLock'];
    _micMute = json['micMute'];
    _roomId = json['roomId'];
    _roomToken = json['roomToken'];
    _user = json['user'] != null ? User.fromJson(json['user']) : null;
  }
  num? _micIndex;
  bool? _micLock;
  bool? _micMute;
  String? _roomId;
  String? _roomToken;
  User? _user;
SCMicGoUpRes copyWith({  num? micIndex,
  bool? micLock,
  bool? micMute,
  String? roomId,
  String? roomToken,
  User? user,
}) => SCMicGoUpRes(  micIndex: micIndex ?? _micIndex,
  micLock: micLock ?? _micLock,
  micMute: micMute ?? _micMute,
  roomId: roomId ?? _roomId,
  roomToken: roomToken ?? _roomToken,
  user: user ?? _user,
);
  num? get micIndex => _micIndex;
  bool? get micLock => _micLock;
  bool? get micMute => _micMute;
  String? get roomId => _roomId;
  String? get roomToken => _roomToken;
  User? get user => _user;

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['micIndex'] = _micIndex;
    map['micLock'] = _micLock;
    map['micMute'] = _micMute;
    map['roomId'] = _roomId;
    map['roomToken'] = _roomToken;
    if (_user != null) {
      map['user'] = _user?.toJson();
    }
    return map;
  }

}

/// account : ""
/// charmLevel : 0
/// heartbeatVal : 0
/// id : 0
/// ownSpecialId : {"account":"","expiredTime":0}
/// roles : ""
/// useProps : [{"expireTime":0,"propsResources":{"amount":0.0,"code":"","cover":"","expand":"","id":0,"name":"","sourceUrl":"","type":""},"userId":0}]
/// userAvatar : ""
/// userNickname : ""
/// userSex : 0

class User {
  User({
      String? account,
      num? charmLevel,
      num? heartbeatVal,
      String? id,
      OwnSpecialId? ownSpecialId,
      String? roles,
      List<UseProps>? useProps,
      String? userAvatar,
      String? userNickname,
      num? userSex,}){
    _account = account;
    _charmLevel = charmLevel;
    _heartbeatVal = heartbeatVal;
    _id = id;
    _ownSpecialId = ownSpecialId;
    _roles = roles;
    _useProps = useProps;
    _userAvatar = userAvatar;
    _userNickname = userNickname;
    _userSex = userSex;
}

  User.fromJson(dynamic json) {
    _account = json['account'];
    _charmLevel = json['charmLevel'];
    _heartbeatVal = json['heartbeatVal'];
    _id = json['id'];
    _ownSpecialId = json['ownSpecialId'] != null ? OwnSpecialId.fromJson(json['ownSpecialId']) : null;
    _roles = json['roles'];
    if (json['useProps'] != null) {
      _useProps = [];
      json['useProps'].forEach((v) {
        _useProps?.add(UseProps.fromJson(v));
      });
    }
    _userAvatar = json['userAvatar'];
    _userNickname = json['userNickname'];
    _userSex = json['userSex'];
  }
  String? _account;
  num? _charmLevel;
  num? _heartbeatVal;
  String? _id;
  OwnSpecialId? _ownSpecialId;
  String? _roles;
  List<UseProps>? _useProps;
  String? _userAvatar;
  String? _userNickname;
  num? _userSex;
User copyWith({  String? account,
  num? charmLevel,
  num? heartbeatVal,
  String? id,
  OwnSpecialId? ownSpecialId,
  String? roles,
  List<UseProps>? useProps,
  String? userAvatar,
  String? userNickname,
  num? userSex,
}) => User(  account: account ?? _account,
  charmLevel: charmLevel ?? _charmLevel,
  heartbeatVal: heartbeatVal ?? _heartbeatVal,
  id: id ?? _id,
  ownSpecialId: ownSpecialId ?? _ownSpecialId,
  roles: roles ?? _roles,
  useProps: useProps ?? _useProps,
  userAvatar: userAvatar ?? _userAvatar,
  userNickname: userNickname ?? _userNickname,
  userSex: userSex ?? _userSex,
);
  String? get account => _account;
  num? get charmLevel => _charmLevel;
  num? get heartbeatVal => _heartbeatVal;
  String? get id => _id;
  OwnSpecialId? get ownSpecialId => _ownSpecialId;
  String? get roles => _roles;
  List<UseProps>? get useProps => _useProps;
  String? get userAvatar => _userAvatar;
  String? get userNickname => _userNickname;
  num? get userSex => _userSex;

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['account'] = _account;
    map['charmLevel'] = _charmLevel;
    map['heartbeatVal'] = _heartbeatVal;
    map['id'] = _id;
    if (_ownSpecialId != null) {
      map['ownSpecialId'] = _ownSpecialId?.toJson();
    }
    map['roles'] = _roles;
    if (_useProps != null) {
      map['useProps'] = _useProps?.map((v) => v.toJson()).toList();
    }
    map['userAvatar'] = _userAvatar;
    map['userNickname'] = _userNickname;
    map['userSex'] = _userSex;
    return map;
  }

}

/// expireTime : 0
/// propsResources : {"amount":0.0,"code":"","cover":"","expand":"","id":0,"name":"","sourceUrl":"","type":""}
/// userId : 0

class UseProps {
  UseProps({
      String? expireTime,
      PropsResources? propsResources,
      String? userId,}){
    _expireTime = expireTime;
    _propsResources = propsResources;
    _userId = userId;
}

  UseProps.fromJson(dynamic json) {
    _expireTime = json['expireTime'];
    _propsResources = json['propsResources'] != null ? PropsResources.fromJson(json['propsResources']) : null;
    _userId = json['userId'];
  }
  String? _expireTime;
  PropsResources? _propsResources;
  String? _userId;
UseProps copyWith({  String? expireTime,
  PropsResources? propsResources,
  String? userId,
}) => UseProps(  expireTime: expireTime ?? _expireTime,
  propsResources: propsResources ?? _propsResources,
  userId: userId ?? _userId,
);
  String? get expireTime => _expireTime;
  PropsResources? get propsResources => _propsResources;
  String? get userId => _userId;

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['expireTime'] = _expireTime;
    if (_propsResources != null) {
      map['propsResources'] = _propsResources?.toJson();
    }
    map['userId'] = _userId;
    return map;
  }

}

/// amount : 0.0
/// code : ""
/// cover : ""
/// expand : ""
/// id : 0
/// name : ""
/// sourceUrl : ""
/// type : ""

class PropsResources {
  PropsResources({
      num? amount,
      String? code,
      String? cover,
      String? expand,
      num? id,
      String? name,
      String? sourceUrl,
      String? type,}){
    _amount = amount;
    _code = code;
    _cover = cover;
    _expand = expand;
    _id = id;
    _name = name;
    _sourceUrl = sourceUrl;
    _type = type;
}

  PropsResources.fromJson(dynamic json) {
    _amount = json['amount'];
    _code = json['code'];
    _cover = json['cover'];
    _expand = json['expand'];
    _id = json['id'];
    _name = json['name'];
    _sourceUrl = json['sourceUrl'];
    _type = json['type'];
  }
  num? _amount;
  String? _code;
  String? _cover;
  String? _expand;
  num? _id;
  String? _name;
  String? _sourceUrl;
  String? _type;
PropsResources copyWith({  num? amount,
  String? code,
  String? cover,
  String? expand,
  num? id,
  String? name,
  String? sourceUrl,
  String? type,
}) => PropsResources(  amount: amount ?? _amount,
  code: code ?? _code,
  cover: cover ?? _cover,
  expand: expand ?? _expand,
  id: id ?? _id,
  name: name ?? _name,
  sourceUrl: sourceUrl ?? _sourceUrl,
  type: type ?? _type,
);
  num? get amount => _amount;
  String? get code => _code;
  String? get cover => _cover;
  String? get expand => _expand;
  num? get id => _id;
  String? get name => _name;
  String? get sourceUrl => _sourceUrl;
  String? get type => _type;

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['amount'] = _amount;
    map['code'] = _code;
    map['cover'] = _cover;
    map['expand'] = _expand;
    map['id'] = _id;
    map['name'] = _name;
    map['sourceUrl'] = _sourceUrl;
    map['type'] = _type;
    return map;
  }

}

/// account : ""
/// expiredTime : 0

class OwnSpecialId {
  OwnSpecialId({
      String? account,
      num? expiredTime,}){
    _account = account;
    _expiredTime = expiredTime;
}

  OwnSpecialId.fromJson(dynamic json) {
    _account = json['account'];
    _expiredTime = json['expiredTime'];
  }
  String? _account;
  num? _expiredTime;
OwnSpecialId copyWith({  String? account,
  num? expiredTime,
}) => OwnSpecialId(  account: account ?? _account,
  expiredTime: expiredTime ?? _expiredTime,
);
  String? get account => _account;
  num? get expiredTime => _expiredTime;

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['account'] = _account;
    map['expiredTime'] = _expiredTime;
    return map;
  }

}