class PhoneType extends $pb.ProtobufEnum {
  static const PhoneType MOBILE = const PhoneType._(0, 'MOBILE');
  static const PhoneType HOME = const PhoneType._(1, 'HOME');
  static const PhoneType WORK = const PhoneType._(2, 'WORK');

  static const PhoneType BUSINESS = WORK;

  static const List<PhoneType> values = const <PhoneType> [
    MOBILE,
    HOME,
    WORK,
  ];

  static final Map<int, PhoneType> _byValue = $pb.ProtobufEnum.initByValue(values);
  static PhoneType valueOf(int value) => _byValue[value];
  static void $checkItem(PhoneType v) {
    if (v is! PhoneType) $pb.checkItemFailed(v, 'PhoneType');
  }

  const PhoneType._(int v, String n) : super(v, n);
}

