#ifndef THIRD_PARTY_UPB_WASM_ABI_MINI_TABLE_CONTAINER_H_
#define THIRD_PARTY_UPB_WASM_ABI_MINI_TABLE_CONTAINER_H_

#include <stdint.h>

#include "upb/mini_table/enum.h"
#include "upb/mini_table/extension.h"
#include "upb/mini_table/extension_registry.h"
#include "upb/mini_table/message.h"

#ifdef __cplusplus
extern "C" {
#endif

enum { kUpb_EncodedVersion_ContainerV1 = 0x01 };

// A MiniTable Container describing a set of proto schema.
typedef struct {
  // Counts listing number of schemas of each type.
  uint32_t enum_count;
  uint32_t message_count;
  uint32_t extension_count;

  // The contained schemas referenceable by index.
  upb_MiniTableEnum** enums;
  upb_MiniTable** messages;
  upb_MiniTableExtension** extensions;

  // A registry populated with the contained extensions.
  upb_ExtensionRegistry* registry;
} upb_MiniTableContainer;

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif  // THIRD_PARTY_UPB_WASM_ABI_MINI_TABLE_CONTAINER_H_
