yandex-cloud
Version:
Yandex Cloud SDK
1,581 lines (1,327 loc) • 42.7 kB
TypeScript
// autogenerated file
import * as grpc from 'grpc';
import { util } from 'protobufjs';
import Long = util.Long;
import * as events from 'events';
import { Session } from '../../../index.js';
export interface Duration {
seconds?: Long;
nanos?: Long;
}
export interface Any {
type_url?: string;
value?: Buffer;
}
export interface Timestamp {
seconds?: Long;
nanos?: Long;
}
export interface FieldMask {
paths?: string[];
}
export interface DoubleValue {
value?: number;
}
export interface FloatValue {
value?: number;
}
export interface Int64Value {
value?: Long;
}
export interface UInt64Value {
value?: Long;
}
export interface Int32Value {
value?: Long;
}
export interface UInt32Value {
value?: Long;
}
export interface BoolValue {
value?: boolean;
}
export interface StringValue {
value?: string;
}
export interface BytesValue {
value?: Buffer;
}
/**
* Api is a light-weight descriptor for a protocol buffer service.
*/
export interface Api {
/**
* The fully qualified name of this api, including package name
* followed by the api's simple name.
*/
name?: string;
/**
* The methods of this api, in unspecified order.
*/
methods?: Method[];
/**
* Any metadata attached to the API.
*/
options?: Option[];
/**
* A version string for this api. If specified, must have the form
* `major-version.minor-version`, as in `1.10`. If the minor version
* is omitted, it defaults to zero. If the entire version field is
* empty, the major version is derived from the package name, as
* outlined below. If the field is not empty, the version in the
* package name will be verified to be consistent with what is
* provided here.
*
* The versioning schema uses [semantic
* versioning](http://semver.org) where the major version number
* indicates a breaking change and the minor version an additive,
* non-breaking change. Both version numbers are signals to users
* what to expect from different versions, and should be carefully
* chosen based on the product plan.
*
* The major version is also reflected in the package name of the
* API, which must end in `v<major-version>`, as in
* `google.feature.v1`. For major versions 0 and 1, the suffix can
* be omitted. Zero major versions must only be used for
* experimental, none-GA apis.
*/
version?: string;
/**
* Source context for the protocol buffer service represented by this
* message.
*/
sourceContext?: SourceContext;
/**
* Included APIs. See [Mixin][].
*/
mixins?: Mixin[];
/**
* The source syntax of the service.
*/
syntax?: Syntax;
}
/**
* Method represents a method of an api.
*/
export interface Method {
/**
* The simple name of this method.
*/
name?: string;
/**
* A URL of the input message type.
*/
requestTypeUrl?: string;
/**
* If true, the request is streamed.
*/
requestStreaming?: boolean;
/**
* The URL of the output message type.
*/
responseTypeUrl?: string;
/**
* If true, the response is streamed.
*/
responseStreaming?: boolean;
/**
* Any metadata attached to the method.
*/
options?: Option[];
/**
* The source syntax of this method.
*/
syntax?: Syntax;
}
/**
* Declares an API to be included in this API. The including API must
* redeclare all the methods from the included API, but documentation
* and options are inherited as follows:
*
* - If after comment and whitespace stripping, the documentation
* string of the redeclared method is empty, it will be inherited
* from the original method.
*
* - Each annotation belonging to the service config (http,
* visibility) which is not set in the redeclared method will be
* inherited.
*
* - If an http annotation is inherited, the path pattern will be
* modified as follows. Any version prefix will be replaced by the
* version of the including API plus the [root][] path if specified.
*
* Example of a simple mixin:
*
* package google.acl.v1;
* service AccessControl {
* // Get the underlying ACL object.
* rpc GetAcl(GetAclRequest) returns (Acl) {
* option (google.api.http).get = "/v1/{resource=**}:getAcl";
* }
* }
*
* package google.storage.v2;
* service Storage {
* rpc GetAcl(GetAclRequest) returns (Acl);
*
* // Get a data record.
* rpc GetData(GetDataRequest) returns (Data) {
* option (google.api.http).get = "/v2/{resource=**}";
* }
* }
*
* Example of a mixin configuration:
*
* apis:
* - name: google.storage.v2.Storage
* mixins:
* - name: google.acl.v1.AccessControl
*
* The mixin construct implies that all methods in `AccessControl` are
* also declared with same name and request/response types in
* `Storage`. A documentation generator or annotation processor will
* see the effective `Storage.GetAcl` method after inherting
* documentation and annotations as follows:
*
* service Storage {
* // Get the underlying ACL object.
* rpc GetAcl(GetAclRequest) returns (Acl) {
* option (google.api.http).get = "/v2/{resource=**}:getAcl";
* }
* ...
* }
*
* Note how the version in the path pattern changed from `v1` to `v2`.
*
* If the `root` field in the mixin is specified, it should be a
* relative path under which inherited HTTP paths are placed. Example:
*
* apis:
* - name: google.storage.v2.Storage
* mixins:
* - name: google.acl.v1.AccessControl
* root: acls
*
* This implies the following inherited HTTP annotation:
*
* service Storage {
* // Get the underlying ACL object.
* rpc GetAcl(GetAclRequest) returns (Acl) {
* option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
* }
* ...
* }
*/
export interface Mixin {
/**
* The fully qualified name of the API which is included.
*/
name?: string;
/**
* If non-empty specifies a path under which inherited HTTP paths
* are rooted.
*/
root?: string;
}
/**
* The protocol compiler can output a FileDescriptorSet containing the .proto
* files it parses.
*/
export interface FileDescriptorSet {
file?: FileDescriptorProto[];
}
/**
* Describes a complete .proto file.
*/
export interface FileDescriptorProto {
/**
* file name, relative to root of source tree
*/
name?: string;
/**
* file name, relative to root of source tree
*/
package?: string;
/**
* Names of files imported by this file.
*/
dependency?: string[];
/**
* Indexes of the public imported files in the dependency list above.
*/
publicDependency?: Long[];
/**
* Indexes of the weak imported files in the dependency list.
* For Google-internal migration only. Do not use.
*/
weakDependency?: Long[];
/**
* All top-level definitions in this file.
*/
messageType?: DescriptorProto[];
enumType?: EnumDescriptorProto[];
service?: ServiceDescriptorProto[];
extension?: FieldDescriptorProto[];
options?: FileOptions;
/**
* This field contains optional information about the original source code.
* You may safely remove this entire field without harming runtime
* functionality of the descriptors -- the information is needed only by
* development tools.
*/
sourceCodeInfo?: SourceCodeInfo;
/**
* The syntax of the proto file.
* The supported values are "proto2" and "proto3".
*/
syntax?: string;
}
/**
* Describes a message type.
*/
export interface DescriptorProto {
name?: string;
field?: FieldDescriptorProto[];
extension?: FieldDescriptorProto[];
nestedType?: DescriptorProto[];
enumType?: EnumDescriptorProto[];
extensionRange?: DescriptorProto.ExtensionRange[];
oneofDecl?: OneofDescriptorProto[];
options?: MessageOptions;
reservedRange?: DescriptorProto.ReservedRange[];
/**
* Reserved field names, which may not be used by fields in the same message.
* A given name may only be reserved once.
*/
reservedName?: string[];
}
export namespace DescriptorProto {
export interface ExtensionRange {
start?: Long;
end?: Long;
}
/**
* Range of reserved tag numbers. Reserved tag numbers may not be used by
* fields or extension ranges in the same message. Reserved ranges may
* not overlap.
*/
export interface ReservedRange {
/**
* Inclusive.
*/
start?: Long;
/**
* Inclusive.
*/
end?: Long;
}
}
/**
* Describes a field within a message.
*/
export interface FieldDescriptorProto {
name?: string;
number?: Long;
label?: FieldDescriptorProto.Label;
/**
* If type_name is set, this need not be set. If both this and type_name
* are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
*/
type?: FieldDescriptorProto.Type;
/**
* For message and enum types, this is the name of the type. If the name
* starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
* rules are used to find the type (i.e. first the nested types within this
* message are searched, then within the parent, on up to the root
* namespace).
*/
typeName?: string;
/**
* For extensions, this is the name of the type being extended. It is
* resolved in the same manner as type_name.
*/
extendee?: string;
/**
* For numeric types, contains the original text representation of the value.
* For booleans, "true" or "false".
* For strings, contains the default text contents (not escaped in any way).
* For bytes, contains the C escaped value. All bytes >= 128 are escaped.
* TODO(kenton): Base-64 encode?
*/
defaultValue?: string;
/**
* If set, gives the index of a oneof in the containing type's oneof_decl
* list. This field is a member of that oneof.
*/
oneofIndex?: Long;
/**
* JSON name of this field. The value is set by protocol compiler. If the
* user has set a "json_name" option on this field, that option's value
* will be used. Otherwise, it's deduced from the field's name by converting
* it to camelCase.
*/
jsonName?: string;
options?: FieldOptions;
}
export namespace FieldDescriptorProto {
export enum Type {
/**
* 0 is reserved for errors.
* Order is weird for historical reasons.
*/
TYPE_DOUBLE = 1,
TYPE_FLOAT = 2,
/**
* Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
* negative values are likely.
*/
TYPE_INT64 = 3,
TYPE_UINT64 = 4,
/**
* Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
* negative values are likely.
*/
TYPE_INT32 = 5,
TYPE_FIXED64 = 6,
TYPE_FIXED32 = 7,
TYPE_BOOL = 8,
TYPE_STRING = 9,
/**
* Tag-delimited aggregate.
*/
TYPE_GROUP = 10,
/**
* Tag-delimited aggregate.
*/
TYPE_MESSAGE = 11,
/**
* New in version 2.
*/
TYPE_BYTES = 12,
TYPE_UINT32 = 13,
TYPE_ENUM = 14,
TYPE_SFIXED32 = 15,
TYPE_SFIXED64 = 16,
/**
* Uses ZigZag encoding.
*/
TYPE_SINT32 = 17,
/**
* Uses ZigZag encoding.
*/
TYPE_SINT64 = 18,
}
export enum Label {
/**
* 0 is reserved for errors
*/
LABEL_OPTIONAL = 1,
LABEL_REQUIRED = 2,
LABEL_REPEATED = 3,
}
}
/**
* Describes a oneof.
*/
export interface OneofDescriptorProto {
name?: string;
options?: OneofOptions;
}
/**
* Describes an enum type.
*/
export interface EnumDescriptorProto {
name?: string;
value?: EnumValueDescriptorProto[];
options?: EnumOptions;
}
/**
* Describes a value within an enum.
*/
export interface EnumValueDescriptorProto {
name?: string;
number?: Long;
options?: EnumValueOptions;
}
/**
* Describes a service.
*/
export interface ServiceDescriptorProto {
name?: string;
method?: MethodDescriptorProto[];
options?: ServiceOptions;
}
/**
* Describes a method of a service.
*/
export interface MethodDescriptorProto {
name?: string;
/**
* Input and output type names. These are resolved in the same way as
* FieldDescriptorProto.type_name, but must refer to a message type.
*/
inputType?: string;
outputType?: string;
options?: MethodOptions;
/**
* Identifies if client streams multiple client messages
*/
clientStreaming?: boolean;
/**
* Identifies if server streams multiple server messages
*/
serverStreaming?: boolean;
}
export interface FileOptions {
/**
* Sets the Java package where classes generated from this .proto will be
* placed. By default, the proto package is used, but this is often
* inappropriate because proto packages do not normally start with backwards
* domain names.
*/
javaPackage?: string;
/**
* If set, all the classes from the .proto file are wrapped in a single
* outer class with the given name. This applies to both Proto1
* (equivalent to the old "--one_java_file" option) and Proto2 (where
* a .proto always translates to a single class, but you may want to
* explicitly choose the class name).
*/
javaOuterClassname?: string;
/**
* If set true, then the Java code generator will generate a separate .java
* file for each top-level message, enum, and service defined in the .proto
* file. Thus, these types will *not* be nested inside the outer class
* named by java_outer_classname. However, the outer class will still be
* generated to contain the file's getDescriptor() method as well as any
* top-level extensions defined in the file.
*/
javaMultipleFiles?: boolean;
/**
* If set true, then the Java code generator will generate equals() and
* hashCode() methods for all messages defined in the .proto file.
* This increases generated code size, potentially substantially for large
* protos, which may harm a memory-constrained application.
* - In the full runtime this is a speed optimization, as the
* AbstractMessage base class includes reflection-based implementations of
* these methods.
* - In the lite runtime, setting this option changes the semantics of
* equals() and hashCode() to more closely match those of the full runtime;
* the generated methods compute their results based on field values rather
* than object identity. (Implementations should not assume that hashcodes
* will be consistent across runtimes or versions of the protocol compiler.)
*/
javaGenerateEqualsAndHash?: boolean;
/**
* If set true, then the Java2 code generator will generate code that
* throws an exception whenever an attempt is made to assign a non-UTF-8
* byte sequence to a string field.
* Message reflection will do the same.
* However, an extension field still accepts non-UTF-8 byte sequences.
* This option has no effect on when used with the lite runtime.
*/
javaStringCheckUtf8?: boolean;
optimizeFor?: FileOptions.OptimizeMode;
/**
* Sets the Go package where structs generated from this .proto will be
* placed. If omitted, the Go package will be derived from the following:
* - The basename of the package import path, if provided.
* - Otherwise, the package statement in the .proto file, if present.
* - Otherwise, the basename of the .proto file, without extension.
*/
goPackage?: string;
/**
* Should generic services be generated in each language? "Generic" services
* are not specific to any particular RPC system. They are generated by the
* main code generators in each language (without additional plugins).
* Generic services were the only kind of service generation supported by
* early versions of google.protobuf.
*
* Generic services are now considered deprecated in favor of using plugins
* that generate code specific to your particular RPC system. Therefore,
* these default to false. Old code which depends on generic services should
* explicitly set them to true.
*/
ccGenericServices?: boolean;
javaGenericServices?: boolean;
pyGenericServices?: boolean;
/**
* Is this file deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for everything in the file, or it will be completely ignored; in the very
* least, this is a formalization for deprecating files.
*/
deprecated?: boolean;
/**
* Enables the use of arenas for the proto messages in this file. This applies
* only to generated classes for C++.
*/
ccEnableArenas?: boolean;
/**
* Sets the objective c class prefix which is prepended to all objective c
* generated classes from this .proto. There is no default.
*/
objcClassPrefix?: string;
/**
* Namespace for generated classes; defaults to the package.
*/
csharpNamespace?: string;
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.api.tools.file'?: FileOptions;
}
export namespace FileOptions {
/**
* Generated classes can be optimized for speed or code size.
*/
export enum OptimizeMode {
/**
* Generate complete code for parsing, serialization,
* etc.
*/
SPEED = 1,
/**
* Generate complete code for parsing, serialization,
* etc.
*/
CODE_SIZE = 2,
/**
* Use ReflectionOps to implement these methods.
*/
LITE_RUNTIME = 3,
}
}
export interface MessageOptions {
/**
* Set true to use the old proto1 MessageSet wire format for extensions.
* This is provided for backwards-compatibility with the MessageSet wire
* format. You should not use this for any other reason: It's less
* efficient, has fewer features, and is more complicated.
*
* The message must be defined exactly as follows:
* message Foo {
* option message_set_wire_format = true;
* extensions 4 to max;
* }
* Note that the message cannot have any defined fields; MessageSets only
* have extensions.
*
* All extensions of your type must be singular messages; e.g. they cannot
* be int32s, enums, or repeated messages.
*
* Because this is an option, the above two restrictions are not enforced by
* the protocol compiler.
*/
messageSetWireFormat?: boolean;
/**
* Disables the generation of the standard "descriptor()" accessor, which can
* conflict with a field of the same name. This is meant to make migration
* from proto1 easier; new code should avoid fields named "descriptor".
*/
noStandardDescriptorAccessor?: boolean;
/**
* Is this message deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the message, or it will be completely ignored; in the very least,
* this is a formalization for deprecating messages.
*/
deprecated?: boolean;
/**
* Whether the message is an automatically generated map entry type for the
* maps field.
*
* For maps fields:
* map<KeyType, ValueType> map_field = 1;
* The parsed descriptor looks like:
* message MapFieldEntry {
* option map_entry = true;
* optional KeyType key = 1;
* optional ValueType value = 2;
* }
* repeated MapFieldEntry map_field = 1;
*
* Implementations may choose not to generate the map_entry=true message, but
* use a native map in the target language to hold the keys and values.
* The reflection APIs in such implementions still need to work as
* if the field is a repeated message field.
*
* NOTE: Do not set the option in .proto files. Always use the maps syntax
* instead. The option should only be implicitly set by the proto compiler
* parser.
*/
mapEntry?: boolean;
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.api.tools.message'?: MessageOptions;
}
export interface FieldOptions {
/**
* The ctype option instructs the C++ code generator to use a different
* representation of the field than it normally would. See the specific
* options below. This option is not yet implemented in the open source
* release -- sorry, we'll try to include it in a future version!
*/
ctype?: FieldOptions.CType;
/**
* The packed option can be enabled for repeated primitive fields to enable
* a more efficient representation on the wire. Rather than repeatedly
* writing the tag and type for each element, the entire array is encoded as
* a single length-delimited blob. In proto3, only explicit setting it to
* false will avoid using packed encoding.
*/
packed?: boolean;
/**
* The jstype option determines the JavaScript type used for values of the
* field. The option is permitted only for 64 bit integral and fixed types
* (int64, uint64, sint64, fixed64, sfixed64). By default these types are
* represented as JavaScript strings. This avoids loss of precision that can
* happen when a large value is converted to a floating point JavaScript
* numbers. Specifying JS_NUMBER for the jstype causes the generated
* JavaScript code to use the JavaScript "number" type instead of strings.
* This option is an enum to permit additional types to be added,
* e.g. goog.math.Integer.
*/
jstype?: FieldOptions.JSType;
/**
* Should this field be parsed lazily? Lazy applies only to message-type
* fields. It means that when the outer message is initially parsed, the
* inner message's contents will not be parsed but instead stored in encoded
* form. The inner message will actually be parsed when it is first accessed.
*
* This is only a hint. Implementations are free to choose whether to use
* eager or lazy parsing regardless of the value of this option. However,
* setting this option true suggests that the protocol author believes that
* using lazy parsing on this field is worth the additional bookkeeping
* overhead typically needed to implement it.
*
* This option does not affect the public interface of any generated code;
* all method signatures remain the same. Furthermore, thread-safety of the
* interface is not affected by this option; const methods remain safe to
* call from multiple threads concurrently, while non-const methods continue
* to require exclusive access.
*
*
* Note that implementations may choose not to check required fields within
* a lazy sub-message. That is, calling IsInitialized() on the outher message
* may return true even if the inner message has missing required fields.
* This is necessary because otherwise the inner message would have to be
* parsed in order to perform the check, defeating the purpose of lazy
* parsing. An implementation which chooses not to check required fields
* must be consistent about it. That is, for any particular sub-message, the
* implementation must either *always* check its required fields, or *never*
* check its required fields, regardless of whether or not the message has
* been parsed.
*/
lazy?: boolean;
/**
* Is this field deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for accessors, or it will be completely ignored; in the very least, this
* is a formalization for deprecating fields.
*/
deprecated?: boolean;
/**
* For Google-internal migration only. Do not use.
*/
weak?: boolean;
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.api.tools.field'?: FieldOptions;
'.yandex.cloud.required'?: boolean;
'.yandex.cloud.pattern'?: string;
'.yandex.cloud.value'?: string;
'.yandex.cloud.size'?: string;
'.yandex.cloud.length'?: string;
'.yandex.cloud.unique'?: boolean;
'.yandex.cloud.mapKey'?: MapKeySpec;
}
export namespace FieldOptions {
export enum CType {
/**
* Default mode.
*/
STRING = 0,
CORD = 1,
STRING_PIECE = 2,
}
export enum JSType {
/**
* Use the default type.
*/
JS_NORMAL = 0,
/**
* Use JavaScript strings.
*/
JS_STRING = 1,
/**
* Use JavaScript numbers.
*/
JS_NUMBER = 2,
}
}
export interface OneofOptions {
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.exactlyOne'?: boolean;
}
export interface EnumOptions {
/**
* Set this option to true to allow mapping different tag names to the same
* value.
*/
allowAlias?: boolean;
/**
* Is this enum deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum, or it will be completely ignored; in the very least, this
* is a formalization for deprecating enums.
*/
deprecated?: boolean;
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.api.tools.enumeration'?: EnumOptions;
}
export interface EnumValueOptions {
/**
* Is this enum value deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the enum value, or it will be completely ignored; in the very least,
* this is a formalization for deprecating enum values.
*/
deprecated?: boolean;
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.api.tools.value'?: EnumValueOptions;
}
export interface ServiceOptions {
/**
* Is this service deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the service, or it will be completely ignored; in the very least,
* this is a formalization for deprecating services.
*/
deprecated?: boolean;
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.api.tools.service'?: ServiceOptions;
}
export interface MethodOptions {
/**
* Is this method deprecated?
* Depending on the target platform, this can emit Deprecated annotations
* for the method, or it will be completely ignored; in the very least,
* this is a formalization for deprecating methods.
*/
deprecated?: boolean;
/**
* The parser stores options it doesn't recognize here. See above.
*/
uninterpretedOption?: UninterpretedOption[];
'.yandex.cloud.api.operation'?: Operation;
'.yandex.cloud.api.tools.method'?: MethodOptions;
'.google.api.http'?: HttpRule;
}
/**
* A message representing a option the parser does not recognize. This only
* appears in options protos created by the compiler::Parser class.
* DescriptorPool resolves these when building Descriptor objects. Therefore,
* options protos in descriptor objects (e.g. returned by Descriptor::options(),
* or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
* in them.
*/
export interface UninterpretedOption {
name?: UninterpretedOption.NamePart[];
/**
* The value of the uninterpreted option, in whatever type the tokenizer
* identified it as during parsing. Exactly one of these should be set.
*/
identifierValue?: string;
positiveIntValue?: Long;
negativeIntValue?: Long;
doubleValue?: number;
stringValue?: Buffer;
aggregateValue?: string;
}
export namespace UninterpretedOption {
/**
* The name of the uninterpreted option. Each string represents a segment in
* a dot-separated name. is_extension is true iff a segment represents an
* extension (denoted with parentheses in options specs in .proto files).
* E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
* "foo.(bar.baz).qux".
*/
export interface NamePart {
namePart?: string;
isExtension?: boolean;
}
}
/**
* Encapsulates information about the original source file from which a
* FileDescriptorProto was generated.
*/
export interface SourceCodeInfo {
/**
* A Location identifies a piece of source code in a .proto file which
* corresponds to a particular definition. This information is intended
* to be useful to IDEs, code indexers, documentation generators, and similar
* tools.
*
* For example, say we have a file like:
* message Foo {
* optional string foo = 1;
* }
* Let's look at just the field definition:
* optional string foo = 1;
* ^ ^^ ^^ ^ ^^^
* a bc de f ghi
* We have the following locations:
* span path represents
* [a,i) [ 4, 0, 2, 0 ] The whole field definition.
* [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
* [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
* [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
* [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
*
* Notes:
* - A location may refer to a repeated field itself (i.e. not to any
* particular index within it). This is used whenever a set of elements are
* logically enclosed in a single code segment. For example, an entire
* extend block (possibly containing multiple extension definitions) will
* have an outer location whose path refers to the "extensions" repeated
* field without an index.
* - Multiple locations may have the same path. This happens when a single
* logical declaration is spread out across multiple places. The most
* obvious example is the "extend" block again -- there may be multiple
* extend blocks in the same scope, each of which will have the same path.
* - A location's span is not always a subset of its parent's span. For
* example, the "extendee" of an extension declaration appears at the
* beginning of the "extend" block and is shared by all extensions within
* the block.
* - Just because a location's span is a subset of some other location's span
* does not mean that it is a descendent. For example, a "group" defines
* both a type and a field in a single declaration. Thus, the locations
* corresponding to the type and field and their components will overlap.
* - Code which tries to interpret locations should probably be designed to
* ignore those that it doesn't understand, as more types of locations could
* be recorded in the future.
*/
location?: SourceCodeInfo.Location[];
}
export namespace SourceCodeInfo {
export interface Location {
/**
* Identifies which part of the FileDescriptorProto was defined at this
* location.
*
* Each element is a field number or an index. They form a path from
* the root FileDescriptorProto to the place where the definition. For
* example, this path:
* [ 4, 3, 2, 7, 1 ]
* refers to:
* file.message_type(3) // 4, 3
* .field(7) // 2, 7
* .name() // 1
* This is because FileDescriptorProto.message_type has field number 4:
* repeated DescriptorProto message_type = 4;
* and DescriptorProto.field has field number 2:
* repeated FieldDescriptorProto field = 2;
* and FieldDescriptorProto.name has field number 1:
* optional string name = 1;
*
* Thus, the above path gives the location of a field name. If we removed
* the last element:
* [ 4, 3, 2, 7 ]
* this path refers to the whole field declaration (from the beginning
* of the label to the terminating semicolon).
*/
path?: Long[];
/**
* Always has exactly three or four elements: start line, start column,
* end line (optional, otherwise assumed same as start line), end column.
* These are packed into a single field for efficiency. Note that line
* and column numbers are zero-based -- typically you will want to add
* 1 to each before displaying to a user.
*/
span?: Long[];
/**
* If this SourceCodeInfo represents a complete declaration, these are any
* comments appearing before and after the declaration which appear to be
* attached to the declaration.
*
* A series of line comments appearing on consecutive lines, with no other
* tokens appearing on those lines, will be treated as a single comment.
*
* leading_detached_comments will keep paragraphs of comments that appear
* before (but not connected to) the current element. Each paragraph,
* separated by empty lines, will be one comment element in the repeated
* field.
*
* Only the comment content is provided; comment markers (e.g. //) are
* stripped out. For block comments, leading whitespace and an asterisk
* will be stripped from the beginning of each line other than the first.
* Newlines are included in the output.
*
* Examples:
*
* optional int32 foo = 1; // Comment attached to foo.
* // Comment attached to bar.
* optional int32 bar = 2;
*
* optional string baz = 3;
* // Comment attached to baz.
* // Another line attached to baz.
*
* // Comment attached to qux.
* //
* // Another line attached to qux.
* optional double qux = 4;
*
* // Detached comment for corge. This is not leading or trailing comments
* // to qux or corge because there are blank lines separating it from
* // both.
*
* // Detached comment for corge paragraph 2.
*
* optional string corge = 5;
*
* * to corge. Leading asterisks
*
*
*
* optional int32 grault = 6;
*
* // ignored detached comments.
*/
leadingComments?: string;
trailingComments?: string;
leadingDetachedComments?: string[];
}
}
/**
* Describes the relationship between generated code and its original source
* file. A GeneratedCodeInfo message is associated with only one generated
* source file, but may contain references to different source .proto files.
*/
export interface GeneratedCodeInfo {
/**
* An Annotation connects some span of text in generated code to an element
* of its generating .proto file.
*/
annotation?: GeneratedCodeInfo.Annotation[];
}
export namespace GeneratedCodeInfo {
export interface Annotation {
/**
* Identifies the element in the original source .proto file. This field
* is formatted the same as SourceCodeInfo.Location.path.
*/
path?: Long[];
/**
* Identifies the filesystem path to the original source .proto.
*/
sourceFile?: string;
/**
* Identifies the starting offset in bytes in the generated code
* that relates to the identified object.
*/
begin?: Long;
/**
* Identifies the ending offset in bytes in the generated code that
* relates to the identified offset. The end offset should be one past
* the last relevant byte (so the length of the text = end - begin).
*/
end?: Long;
}
}
export interface Empty {}
/**
* `SourceContext` represents information about the source of a
* protobuf element, like the file in which it is defined.
*/
export interface SourceContext {
/**
* The path-qualified name of the .proto file that contained the associated
* protobuf element. For example: `"google/protobuf/source_context.proto"`.
*/
fileName?: string;
}
export interface Struct {
fields?: { [s: string]: Value };
}
export interface Value {
nullValue?: NullValue;
numberValue?: number;
stringValue?: string;
boolValue?: boolean;
structValue?: Struct;
listValue?: ListValue;
}
export enum NullValue {
NULL_VALUE = 0,
}
export interface ListValue {
values?: Value[];
}
/**
* A protocol buffer message type.
*/
export interface Type {
/**
* The fully qualified message name.
*/
name?: string;
/**
* The list of fields.
*/
fields?: Field[];
/**
* The list of types appearing in `oneof` definitions in this type.
*/
oneofs?: string[];
/**
* The protocol buffer options.
*/
options?: Option[];
/**
* The source context.
*/
sourceContext?: SourceContext;
/**
* The source syntax.
*/
syntax?: Syntax;
}
/**
* A single field of a message type.
*/
export interface Field {
/**
* The field type.
*/
kind?: Field.Kind;
/**
* The field cardinality.
*/
cardinality?: Field.Cardinality;
/**
* The field number.
*/
number?: Long;
/**
* The field name.
*/
name?: string;
/**
* The field type URL, without the scheme, for message or enumeration
* types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
*/
typeUrl?: string;
/**
* The index of the field type in `Type.oneofs`, for message or enumeration
* types. The first type has index 1; zero means the type is not in the list.
*/
oneofIndex?: Long;
/**
* Whether to use alternative packed wire representation.
*/
packed?: boolean;
/**
* The protocol buffer options.
*/
options?: Option[];
/**
* The field JSON name.
*/
jsonName?: string;
/**
* The string value of the default value of this field. Proto2 syntax only.
*/
defaultValue?: string;
}
export namespace Field {
/**
* Basic field types.
*/
export enum Kind {
/**
* Field type unknown.
*/
TYPE_UNKNOWN = 0,
/**
* Field type double.
*/
TYPE_DOUBLE = 1,
/**
* Field type float.
*/
TYPE_FLOAT = 2,
/**
* Field type int64.
*/
TYPE_INT64 = 3,
/**
* Field type uint64.
*/
TYPE_UINT64 = 4,
/**
* Field type int32.
*/
TYPE_INT32 = 5,
/**
* Field type fixed64.
*/
TYPE_FIXED64 = 6,
/**
* Field type fixed32.
*/
TYPE_FIXED32 = 7,
/**
* Field type bool.
*/
TYPE_BOOL = 8,
/**
* Field type string.
*/
TYPE_STRING = 9,
/**
* Field type group. Proto2 syntax only, and deprecated.
*/
TYPE_GROUP = 10,
/**
* Field type message.
*/
TYPE_MESSAGE = 11,
/**
* Field type bytes.
*/
TYPE_BYTES = 12,
/**
* Field type uint32.
*/
TYPE_UINT32 = 13,
/**
* Field type enum.
*/
TYPE_ENUM = 14,
/**
* Field type sfixed32.
*/
TYPE_SFIXED32 = 15,
/**
* Field type sfixed64.
*/
TYPE_SFIXED64 = 16,
/**
* Field type sint32.
*/
TYPE_SINT32 = 17,
/**
* Field type sint64.
*/
TYPE_SINT64 = 18,
}
/**
* Whether a field is optional, required, or repeated.
*/
export enum Cardinality {
/**
* For fields with unknown cardinality.
*/
CARDINALITY_UNKNOWN = 0,
/**
* For optional fields.
*/
CARDINALITY_OPTIONAL = 1,
/**
* For required fields. Proto2 syntax only.
*/
CARDINALITY_REQUIRED = 2,
/**
* For repeated fields.
*/
CARDINALITY_REPEATED = 3,
}
}
/**
* Enum type definition.
*/
export interface Enum {
/**
* Enum type name.
*/
name?: string;
/**
* Enum value definitions.
*/
enumvalue?: EnumValue[];
/**
* Protocol buffer options.
*/
options?: Option[];
/**
* The source context.
*/
sourceContext?: SourceContext;
/**
* The source syntax.
*/
syntax?: Syntax;
}
/**
* Enum value definition.
*/
export interface EnumValue {
/**
* Enum value name.
*/
name?: string;
/**
* Enum value number.
*/
number?: Long;
/**
* Protocol buffer options.
*/
options?: Option[];
}
/**
* A protocol buffer option, which can be attached to a message, field,
* enumeration, etc.
*/
export interface Option {
/**
* The option's name. For example, `"java_package"`.
*/
name?: string;
/**
* The option's value. For example, `"com.google.protobuf"`.
*/
value?: Any;
}
/**
* The syntax in which a protocol buffer element is defined.
*/
export enum Syntax {
/**
* Syntax `proto2`.
*/
SYNTAX_PROTO2 = 0,
/**
* Syntax `proto3`.
*/
SYNTAX_PROTO3 = 1,
}