1<?hh // strict
2/*
3 * Copyright (c) Facebook, Inc. and its affiliates.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 * @package thrift
18 */
19
20type TStructFieldAnnotations = shape(
21  'field' => dict<string, \IThriftStruct>,
22  'type' => dict<string, \IThriftStruct>,
23);
24
25type TStructAnnotations = shape(
26  'struct' => dict<string, \IThriftStruct>,
27  'fields' => dict<string, TStructFieldAnnotations>,
28);
29
30type TServiceAnnotations = shape(
31  'service' => dict<string, \IThriftStruct>,
32  'functions' => dict<string, dict<string, \IThriftStruct>>,
33);
34
35type TEnumAnnotations = shape(
36  'enum' => dict<string, \IThriftStruct>,
37  'constants' => dict<string, dict<string, \IThriftStruct>>,
38);
39
40interface IThriftServiceStaticMetadata {
41  public static function getAllStructuredAnnotations(): \TServiceAnnotations;
42}
43
44interface IThriftEnumStaticMetadata {
45  public static function getAllStructuredAnnotations(): \TEnumAnnotations;
46}
47
48interface IThriftConstants {
49  public static function getAllStructuredAnnotations(
50  ): dict<string, dict<string, \IThriftStruct>>;
51}
52