# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/config/api/design_config_package.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen_sdk.chromiumos.config.api import design_pb2 as chromiumos_dot_config_dot_api_dot_design__pb2
from chromite.api.gen_sdk.chromiumos.config.api import partner_pb2 as chromiumos_dot_config_dot_api_dot_partner__pb2
from chromite.api.gen_sdk.chromiumos.config.api import program_pb2 as chromiumos_dot_config_dot_api_dot_program__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n1chromiumos/config/api/design_config_package.proto\x12\x15\x63hromiumos.config.api\x1a\"chromiumos/config/api/design.proto\x1a#chromiumos/config/api/partner.proto\x1a#chromiumos/config/api/program.proto\"\xdf\x01\n\x13\x44\x65signConfigPackage\x12;\n\rdesign_config\x18\x01 \x01(\x0b\x32$.chromiumos.config.api.Design.Config\x12-\n\x06\x64\x65sign\x18\x02 \x01(\x0b\x32\x1d.chromiumos.config.api.Design\x12+\n\x03odm\x18\x03 \x01(\x0b\x32\x1e.chromiumos.config.api.Partner\x12/\n\x07program\x18\x04 \x01(\x0b\x32\x1e.chromiumos.config.api.ProgramB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3')

_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.config.api.design_config_package_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'Z(go.chromium.org/chromiumos/config/go/api'
  _globals['_DESIGNCONFIGPACKAGE']._serialized_start=187
  _globals['_DESIGNCONFIGPACKAGE']._serialized_end=410
# @@protoc_insertion_point(module_scope)
