//
//  Generated code. Do not modify.
//  source: test
//
// @dart = 2.12

// ignore_for_file: annotate_overrides, camel_case_types
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: return_of_invalid_type, unnecessary_this

import 'dart:convert' as $convert;
import 'dart:core' as $core;
import 'dart:typed_data' as $typed_data;

@$core.Deprecated('Use phoneTypeDescriptor instead')
const PhoneType$json = {
  '1': 'PhoneType',
  '2': [
    {'1': 'MOBILE', '2': 0},
    {'1': 'HOME', '2': 1},
    {'1': 'WORK', '2': 2},
    {'1': 'BUSINESS', '2': 2},
  ],
};

/// Descriptor for `PhoneType`. Decode as a `google.protobuf.EnumDescriptorProto`.
final $typed_data.Uint8List phoneTypeDescriptor = $convert.base64Decode(
    'CglQaG9uZVR5cGUSCgoGTU9CSUxFEAASCAoESE9NRRABEggKBFdPUksQAhIMCghCVVNJTkVTUx'
    'AC');

