///
//  Generated code. Do not modify.
//  source: testpkg.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields

import 'dart:core' as $core;
import 'foobar.pbjson.dart' as $1;

const SomeRequest$json = const {
  '1': 'SomeRequest',
};

const SomeReply$json = const {
  '1': 'SomeReply',
};

const $core.Map<$core.String, $core.dynamic> TestServiceBase$json = const {
  '1': 'Test',
  '2': const [
    const {'1': 'AMethod', '2': '.testpkg.SomeRequest', '3': '.testpkg.SomeReply'},
    const {'1': 'AnotherMethod', '2': '.foo.bar.EmptyMessage', '3': '.foo.bar.AnotherReply'},
  ],
};

const $core.Map<$core.String, $core.Map<$core.String, $core.dynamic>> TestServiceBase$messageJson = const {
  '.testpkg.SomeRequest': SomeRequest$json,
  '.testpkg.SomeReply': SomeReply$json,
  '.foo.bar.EmptyMessage': $1.EmptyMessage$json,
  '.foo.bar.AnotherReply': $1.AnotherReply$json,
};

