123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739 |
- // DO NOT EDIT! This is a generated file. Edit the JSDoc in src/*.js instead and run 'npm run types'.
-
- export as namespace protobuf;
-
- /**
- * Provides common type definitions.
- * Can also be used to provide additional google types or your own custom types.
- * @param name Short name as in `google/protobuf/[name].proto` or full file name
- * @param json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition
- */
- export function common(name: string, json: { [k: string]: any }): void;
-
- export namespace common {
-
- /** Properties of a google.protobuf.Any message. */
- interface IAny {
- typeUrl?: string;
- bytes?: Uint8Array;
- }
-
- /** Properties of a google.protobuf.Duration message. */
- interface IDuration {
- seconds?: (number|Long);
- nanos?: number;
- }
-
- /** Properties of a google.protobuf.Timestamp message. */
- interface ITimestamp {
- seconds?: (number|Long);
- nanos?: number;
- }
-
- /** Properties of a google.protobuf.Empty message. */
- interface IEmpty {
- }
-
- /** Properties of a google.protobuf.Struct message. */
- interface IStruct {
- fields?: { [k: string]: IValue };
- }
-
- /** Properties of a google.protobuf.Value message. */
- interface IValue {
- kind?: string;
- nullValue?: 0;
- numberValue?: number;
- stringValue?: string;
- boolValue?: boolean;
- structValue?: IStruct;
- listValue?: IListValue;
- }
-
- /** Properties of a google.protobuf.ListValue message. */
- interface IListValue {
- values?: IValue[];
- }
-
- /** Properties of a google.protobuf.DoubleValue message. */
- interface IDoubleValue {
- value?: number;
- }
-
- /** Properties of a google.protobuf.FloatValue message. */
- interface IFloatValue {
- value?: number;
- }
-
- /** Properties of a google.protobuf.Int64Value message. */
- interface IInt64Value {
- value?: (number|Long);
- }
-
- /** Properties of a google.protobuf.UInt64Value message. */
- interface IUInt64Value {
- value?: (number|Long);
- }
-
- /** Properties of a google.protobuf.Int32Value message. */
- interface IInt32Value {
- value?: number;
- }
-
- /** Properties of a google.protobuf.UInt32Value message. */
- interface IUInt32Value {
- value?: number;
- }
-
- /** Properties of a google.protobuf.BoolValue message. */
- interface IBoolValue {
- value?: boolean;
- }
-
- /** Properties of a google.protobuf.StringValue message. */
- interface IStringValue {
- value?: string;
- }
-
- /** Properties of a google.protobuf.BytesValue message. */
- interface IBytesValue {
- value?: Uint8Array;
- }
-
- /**
- * Gets the root definition of the specified common proto file.
- *
- * Bundled definitions are:
- * - google/protobuf/any.proto
- * - google/protobuf/duration.proto
- * - google/protobuf/empty.proto
- * - google/protobuf/field_mask.proto
- * - google/protobuf/struct.proto
- * - google/protobuf/timestamp.proto
- * - google/protobuf/wrappers.proto
- *
- * @param file Proto file name
- * @returns Root definition or `null` if not defined
- */
- function get(file: string): (INamespace|null);
- }
-
- /** Runtime message from/to plain object converters. */
- export namespace converter {
-
- /**
- * Generates a plain object to runtime message converter specific to the specified message type.
- * @param mtype Message type
- * @returns Codegen instance
- */
- function fromObject(mtype: Type): Codegen;
-
- /**
- * Generates a runtime message to plain object converter specific to the specified message type.
- * @param mtype Message type
- * @returns Codegen instance
- */
- function toObject(mtype: Type): Codegen;
- }
-
- /**
- * Generates a decoder specific to the specified message type.
- * @param mtype Message type
- * @returns Codegen instance
- */
- export function decoder(mtype: Type): Codegen;
-
- /**
- * Generates an encoder specific to the specified message type.
- * @param mtype Message type
- * @returns Codegen instance
- */
- export function encoder(mtype: Type): Codegen;
-
- /** Reflected enum. */
- export class Enum extends ReflectionObject {
-
- /**
- * Constructs a new enum instance.
- * @param name Unique name within its namespace
- * @param [values] Enum values as an object, by name
- * @param [options] Declared options
- * @param [comment] The comment for this enum
- * @param [comments] The value comments for this enum
- */
- constructor(name: string, values?: { [k: string]: number }, options?: { [k: string]: any }, comment?: string, comments?: { [k: string]: string });
-
- /** Enum values by id. */
- public valuesById: { [k: number]: string };
-
- /** Enum values by name. */
- public values: { [k: string]: number };
-
- /** Enum comment text. */
- public comment: (string|null);
-
- /** Value comment texts, if any. */
- public comments: { [k: string]: string };
-
- /** Reserved ranges, if any. */
- public reserved: (number[]|string)[];
-
- /**
- * Constructs an enum from an enum descriptor.
- * @param name Enum name
- * @param json Enum descriptor
- * @returns Created enum
- * @throws {TypeError} If arguments are invalid
- */
- public static fromJSON(name: string, json: IEnum): Enum;
-
- /**
- * Converts this enum to an enum descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Enum descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): IEnum;
-
- /**
- * Adds a value to this enum.
- * @param name Value name
- * @param id Value id
- * @param [comment] Comment, if any
- * @returns `this`
- * @throws {TypeError} If arguments are invalid
- * @throws {Error} If there is already a value with this name or id
- */
- public add(name: string, id: number, comment?: string): Enum;
-
- /**
- * Removes a value from this enum
- * @param name Value name
- * @returns `this`
- * @throws {TypeError} If arguments are invalid
- * @throws {Error} If `name` is not a name of this enum
- */
- public remove(name: string): Enum;
-
- /**
- * Tests if the specified id is reserved.
- * @param id Id to test
- * @returns `true` if reserved, otherwise `false`
- */
- public isReservedId(id: number): boolean;
-
- /**
- * Tests if the specified name is reserved.
- * @param name Name to test
- * @returns `true` if reserved, otherwise `false`
- */
- public isReservedName(name: string): boolean;
- }
-
- /** Enum descriptor. */
- export interface IEnum {
-
- /** Enum values */
- values: { [k: string]: number };
-
- /** Enum options */
- options?: { [k: string]: any };
- }
-
- /** Reflected message field. */
- export class Field extends FieldBase {
-
- /**
- * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.
- * @param name Unique name within its namespace
- * @param id Unique id within its namespace
- * @param type Value type
- * @param [rule="optional"] Field rule
- * @param [extend] Extended type if different from parent
- * @param [options] Declared options
- */
- constructor(name: string, id: number, type: string, rule?: (string|{ [k: string]: any }), extend?: (string|{ [k: string]: any }), options?: { [k: string]: any });
-
- /**
- * Constructs a field from a field descriptor.
- * @param name Field name
- * @param json Field descriptor
- * @returns Created field
- * @throws {TypeError} If arguments are invalid
- */
- public static fromJSON(name: string, json: IField): Field;
-
- /** Determines whether this field is packed. Only relevant when repeated and working with proto2. */
- public readonly packed: boolean;
-
- /**
- * Field decorator (TypeScript).
- * @param fieldId Field id
- * @param fieldType Field type
- * @param [fieldRule="optional"] Field rule
- * @param [defaultValue] Default value
- * @returns Decorator function
- */
- public static d<T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]>(fieldId: number, fieldType: ("double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"string"|"bool"|"bytes"|object), fieldRule?: ("optional"|"required"|"repeated"), defaultValue?: T): FieldDecorator;
-
- /**
- * Field decorator (TypeScript).
- * @param fieldId Field id
- * @param fieldType Field type
- * @param [fieldRule="optional"] Field rule
- * @returns Decorator function
- */
- public static d<T extends Message<T>>(fieldId: number, fieldType: (Constructor<T>|string), fieldRule?: ("optional"|"required"|"repeated")): FieldDecorator;
- }
-
- /** Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions. */
- export class FieldBase extends ReflectionObject {
-
- /**
- * Not an actual constructor. Use {@link Field} instead.
- * @param name Unique name within its namespace
- * @param id Unique id within its namespace
- * @param type Value type
- * @param [rule="optional"] Field rule
- * @param [extend] Extended type if different from parent
- * @param [options] Declared options
- * @param [comment] Comment associated with this field
- */
- constructor(name: string, id: number, type: string, rule?: (string|{ [k: string]: any }), extend?: (string|{ [k: string]: any }), options?: { [k: string]: any }, comment?: string);
-
- /** Field rule, if any. */
- public rule?: string;
-
- /** Field type. */
- public type: string;
-
- /** Unique field id. */
- public id: number;
-
- /** Extended type if different from parent. */
- public extend?: string;
-
- /** Whether this field is required. */
- public required: boolean;
-
- /** Whether this field is optional. */
- public optional: boolean;
-
- /** Whether this field is repeated. */
- public repeated: boolean;
-
- /** Whether this field is a map or not. */
- public map: boolean;
-
- /** Message this field belongs to. */
- public message: (Type|null);
-
- /** OneOf this field belongs to, if any, */
- public partOf: (OneOf|null);
-
- /** The field type's default value. */
- public typeDefault: any;
-
- /** The field's default value on prototypes. */
- public defaultValue: any;
-
- /** Whether this field's value should be treated as a long. */
- public long: boolean;
-
- /** Whether this field's value is a buffer. */
- public bytes: boolean;
-
- /** Resolved type if not a basic type. */
- public resolvedType: (Type|Enum|null);
-
- /** Sister-field within the extended type if a declaring extension field. */
- public extensionField: (Field|null);
-
- /** Sister-field within the declaring namespace if an extended field. */
- public declaringField: (Field|null);
-
- /** Comment for this field. */
- public comment: (string|null);
-
- /**
- * Converts this field to a field descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Field descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): IField;
-
- /**
- * Resolves this field's type references.
- * @returns `this`
- * @throws {Error} If any reference cannot be resolved
- */
- public resolve(): Field;
- }
-
- /** Field descriptor. */
- export interface IField {
-
- /** Field rule */
- rule?: string;
-
- /** Field type */
- type: string;
-
- /** Field id */
- id: number;
-
- /** Field options */
- options?: { [k: string]: any };
- }
-
- /** Extension field descriptor. */
- export interface IExtensionField extends IField {
-
- /** Extended type */
- extend: string;
- }
-
- /**
- * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).
- * @param prototype Target prototype
- * @param fieldName Field name
- */
- type FieldDecorator = (prototype: object, fieldName: string) => void;
-
- /**
- * A node-style callback as used by {@link load} and {@link Root#load}.
- * @param error Error, if any, otherwise `null`
- * @param [root] Root, if there hasn't been an error
- */
- type LoadCallback = (error: (Error|null), root?: Root) => void;
-
- /**
- * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.
- * @param filename One or multiple files to load
- * @param root Root namespace, defaults to create a new one if omitted.
- * @param callback Callback function
- * @see {@link Root#load}
- */
- export function load(filename: (string|string[]), root: Root, callback: LoadCallback): void;
-
- /**
- * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.
- * @param filename One or multiple files to load
- * @param callback Callback function
- * @see {@link Root#load}
- */
- export function load(filename: (string|string[]), callback: LoadCallback): void;
-
- /**
- * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.
- * @param filename One or multiple files to load
- * @param [root] Root namespace, defaults to create a new one if omitted.
- * @returns Promise
- * @see {@link Root#load}
- */
- export function load(filename: (string|string[]), root?: Root): Promise<Root>;
-
- /**
- * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).
- * @param filename One or multiple files to load
- * @param [root] Root namespace, defaults to create a new one if omitted.
- * @returns Root namespace
- * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid
- * @see {@link Root#loadSync}
- */
- export function loadSync(filename: (string|string[]), root?: Root): Root;
-
- /** Build type, one of `"full"`, `"light"` or `"minimal"`. */
- export const build: string;
-
- /** Reconfigures the library according to the environment. */
- export function configure(): void;
-
- /** Reflected map field. */
- export class MapField extends FieldBase {
-
- /**
- * Constructs a new map field instance.
- * @param name Unique name within its namespace
- * @param id Unique id within its namespace
- * @param keyType Key type
- * @param type Value type
- * @param [options] Declared options
- * @param [comment] Comment associated with this field
- */
- constructor(name: string, id: number, keyType: string, type: string, options?: { [k: string]: any }, comment?: string);
-
- /** Key type. */
- public keyType: string;
-
- /** Resolved key type if not a basic type. */
- public resolvedKeyType: (ReflectionObject|null);
-
- /**
- * Constructs a map field from a map field descriptor.
- * @param name Field name
- * @param json Map field descriptor
- * @returns Created map field
- * @throws {TypeError} If arguments are invalid
- */
- public static fromJSON(name: string, json: IMapField): MapField;
-
- /**
- * Converts this map field to a map field descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Map field descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): IMapField;
-
- /**
- * Map field decorator (TypeScript).
- * @param fieldId Field id
- * @param fieldKeyType Field key type
- * @param fieldValueType Field value type
- * @returns Decorator function
- */
- public static d<T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }>(fieldId: number, fieldKeyType: ("int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"), fieldValueType: ("double"|"float"|"int32"|"uint32"|"sint32"|"fixed32"|"sfixed32"|"int64"|"uint64"|"sint64"|"fixed64"|"sfixed64"|"bool"|"string"|"bytes"|object|Constructor<{}>)): FieldDecorator;
- }
-
- /** Map field descriptor. */
- export interface IMapField extends IField {
-
- /** Key type */
- keyType: string;
- }
-
- /** Extension map field descriptor. */
- export interface IExtensionMapField extends IMapField {
-
- /** Extended type */
- extend: string;
- }
-
- /** Abstract runtime message. */
- export class Message<T extends object = object> {
-
- /**
- * Constructs a new message instance.
- * @param [properties] Properties to set
- */
- constructor(properties?: Properties<T>);
-
- /** Reference to the reflected type. */
- public static readonly $type: Type;
-
- /** Reference to the reflected type. */
- public readonly $type: Type;
-
- /**
- * Creates a new message of this type using the specified properties.
- * @param [properties] Properties to set
- * @returns Message instance
- */
- public static create<T extends Message<T>>(this: Constructor<T>, properties?: { [k: string]: any }): Message<T>;
-
- /**
- * Encodes a message of this type.
- * @param message Message to encode
- * @param [writer] Writer to use
- * @returns Writer
- */
- public static encode<T extends Message<T>>(this: Constructor<T>, message: (T|{ [k: string]: any }), writer?: Writer): Writer;
-
- /**
- * Encodes a message of this type preceeded by its length as a varint.
- * @param message Message to encode
- * @param [writer] Writer to use
- * @returns Writer
- */
- public static encodeDelimited<T extends Message<T>>(this: Constructor<T>, message: (T|{ [k: string]: any }), writer?: Writer): Writer;
-
- /**
- * Decodes a message of this type.
- * @param reader Reader or buffer to decode
- * @returns Decoded message
- */
- public static decode<T extends Message<T>>(this: Constructor<T>, reader: (Reader|Uint8Array)): T;
-
- /**
- * Decodes a message of this type preceeded by its length as a varint.
- * @param reader Reader or buffer to decode
- * @returns Decoded message
- */
- public static decodeDelimited<T extends Message<T>>(this: Constructor<T>, reader: (Reader|Uint8Array)): T;
-
- /**
- * Verifies a message of this type.
- * @param message Plain object to verify
- * @returns `null` if valid, otherwise the reason why it is not
- */
- public static verify(message: { [k: string]: any }): (string|null);
-
- /**
- * Creates a new message of this type from a plain object. Also converts values to their respective internal types.
- * @param object Plain object
- * @returns Message instance
- */
- public static fromObject<T extends Message<T>>(this: Constructor<T>, object: { [k: string]: any }): T;
-
- /**
- * Creates a plain object from a message of this type. Also converts values to other types if specified.
- * @param message Message instance
- * @param [options] Conversion options
- * @returns Plain object
- */
- public static toObject<T extends Message<T>>(this: Constructor<T>, message: T, options?: IConversionOptions): { [k: string]: any };
-
- /**
- * Converts this message to JSON.
- * @returns JSON object
- */
- public toJSON(): { [k: string]: any };
- }
-
- /** Reflected service method. */
- export class Method extends ReflectionObject {
-
- /**
- * Constructs a new service method instance.
- * @param name Method name
- * @param type Method type, usually `"rpc"`
- * @param requestType Request message type
- * @param responseType Response message type
- * @param [requestStream] Whether the request is streamed
- * @param [responseStream] Whether the response is streamed
- * @param [options] Declared options
- * @param [comment] The comment for this method
- * @param [parsedOptions] Declared options, properly parsed into an object
- */
- constructor(name: string, type: (string|undefined), requestType: string, responseType: string, requestStream?: (boolean|{ [k: string]: any }), responseStream?: (boolean|{ [k: string]: any }), options?: { [k: string]: any }, comment?: string, parsedOptions?: { [k: string]: any });
-
- /** Method type. */
- public type: string;
-
- /** Request type. */
- public requestType: string;
-
- /** Whether requests are streamed or not. */
- public requestStream?: boolean;
-
- /** Response type. */
- public responseType: string;
-
- /** Whether responses are streamed or not. */
- public responseStream?: boolean;
-
- /** Resolved request type. */
- public resolvedRequestType: (Type|null);
-
- /** Resolved response type. */
- public resolvedResponseType: (Type|null);
-
- /** Comment for this method */
- public comment: (string|null);
-
- /** Options properly parsed into an object */
- public parsedOptions: any;
-
- /**
- * Constructs a method from a method descriptor.
- * @param name Method name
- * @param json Method descriptor
- * @returns Created method
- * @throws {TypeError} If arguments are invalid
- */
- public static fromJSON(name: string, json: IMethod): Method;
-
- /**
- * Converts this method to a method descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Method descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): IMethod;
- }
-
- /** Method descriptor. */
- export interface IMethod {
-
- /** Method type */
- type?: string;
-
- /** Request type */
- requestType: string;
-
- /** Response type */
- responseType: string;
-
- /** Whether requests are streamed */
- requestStream?: boolean;
-
- /** Whether responses are streamed */
- responseStream?: boolean;
-
- /** Method options */
- options?: { [k: string]: any };
-
- /** Method comments */
- comment: string;
-
- /** Method options properly parsed into an object */
- parsedOptions?: { [k: string]: any };
- }
-
- /** Reflected namespace. */
- export class Namespace extends NamespaceBase {
-
- /**
- * Constructs a new namespace instance.
- * @param name Namespace name
- * @param [options] Declared options
- */
- constructor(name: string, options?: { [k: string]: any });
-
- /**
- * Constructs a namespace from JSON.
- * @param name Namespace name
- * @param json JSON object
- * @returns Created namespace
- * @throws {TypeError} If arguments are invalid
- */
- public static fromJSON(name: string, json: { [k: string]: any }): Namespace;
-
- /**
- * Converts an array of reflection objects to JSON.
- * @param array Object array
- * @param [toJSONOptions] JSON conversion options
- * @returns JSON object or `undefined` when array is empty
- */
- public static arrayToJSON(array: ReflectionObject[], toJSONOptions?: IToJSONOptions): ({ [k: string]: any }|undefined);
-
- /**
- * Tests if the specified id is reserved.
- * @param reserved Array of reserved ranges and names
- * @param id Id to test
- * @returns `true` if reserved, otherwise `false`
- */
- public static isReservedId(reserved: ((number[]|string)[]|undefined), id: number): boolean;
-
- /**
- * Tests if the specified name is reserved.
- * @param reserved Array of reserved ranges and names
- * @param name Name to test
- * @returns `true` if reserved, otherwise `false`
- */
- public static isReservedName(reserved: ((number[]|string)[]|undefined), name: string): boolean;
- }
-
- /** Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions. */
- export abstract class NamespaceBase extends ReflectionObject {
-
- /** Nested objects by name. */
- public nested?: { [k: string]: ReflectionObject };
-
- /** Nested objects of this namespace as an array for iteration. */
- public readonly nestedArray: ReflectionObject[];
-
- /**
- * Converts this namespace to a namespace descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Namespace descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): INamespace;
-
- /**
- * Adds nested objects to this namespace from nested object descriptors.
- * @param nestedJson Any nested object descriptors
- * @returns `this`
- */
- public addJSON(nestedJson: { [k: string]: AnyNestedObject }): Namespace;
-
- /**
- * Gets the nested object of the specified name.
- * @param name Nested object name
- * @returns The reflection object or `null` if it doesn't exist
- */
- public get(name: string): (ReflectionObject|null);
-
- /**
- * Gets the values of the nested {@link Enum|enum} of the specified name.
- * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.
- * @param name Nested enum name
- * @returns Enum values
- * @throws {Error} If there is no such enum
- */
- public getEnum(name: string): { [k: string]: number };
-
- /**
- * Adds a nested object to this namespace.
- * @param object Nested object to add
- * @returns `this`
- * @throws {TypeError} If arguments are invalid
- * @throws {Error} If there is already a nested object with this name
- */
- public add(object: ReflectionObject): Namespace;
-
- /**
- * Removes a nested object from this namespace.
- * @param object Nested object to remove
- * @returns `this`
- * @throws {TypeError} If arguments are invalid
- * @throws {Error} If `object` is not a member of this namespace
- */
- public remove(object: ReflectionObject): Namespace;
-
- /**
- * Defines additial namespaces within this one if not yet existing.
- * @param path Path to create
- * @param [json] Nested types to create from JSON
- * @returns Pointer to the last namespace created or `this` if path is empty
- */
- public define(path: (string|string[]), json?: any): Namespace;
-
- /**
- * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.
- * @returns `this`
- */
- public resolveAll(): Namespace;
-
- /**
- * Recursively looks up the reflection object matching the specified path in the scope of this namespace.
- * @param path Path to look up
- * @param filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.
- * @param [parentAlreadyChecked=false] If known, whether the parent has already been checked
- * @returns Looked up object or `null` if none could be found
- */
- public lookup(path: (string|string[]), filterTypes: (any|any[]), parentAlreadyChecked?: boolean): (ReflectionObject|null);
-
- /**
- * Looks up the reflection object at the specified path, relative to this namespace.
- * @param path Path to look up
- * @param [parentAlreadyChecked=false] Whether the parent has already been checked
- * @returns Looked up object or `null` if none could be found
- */
- public lookup(path: (string|string[]), parentAlreadyChecked?: boolean): (ReflectionObject|null);
-
- /**
- * Looks up the {@link Type|type} at the specified path, relative to this namespace.
- * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.
- * @param path Path to look up
- * @returns Looked up type
- * @throws {Error} If `path` does not point to a type
- */
- public lookupType(path: (string|string[])): Type;
-
- /**
- * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.
- * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.
- * @param path Path to look up
- * @returns Looked up enum
- * @throws {Error} If `path` does not point to an enum
- */
- public lookupEnum(path: (string|string[])): Enum;
-
- /**
- * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.
- * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.
- * @param path Path to look up
- * @returns Looked up type or enum
- * @throws {Error} If `path` does not point to a type or enum
- */
- public lookupTypeOrEnum(path: (string|string[])): Type;
-
- /**
- * Looks up the {@link Service|service} at the specified path, relative to this namespace.
- * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.
- * @param path Path to look up
- * @returns Looked up service
- * @throws {Error} If `path` does not point to a service
- */
- public lookupService(path: (string|string[])): Service;
- }
-
- /** Namespace descriptor. */
- export interface INamespace {
-
- /** Namespace options */
- options?: { [k: string]: any };
-
- /** Nested object descriptors */
- nested?: { [k: string]: AnyNestedObject };
- }
-
- /** Any extension field descriptor. */
- type AnyExtensionField = (IExtensionField|IExtensionMapField);
-
- /** Any nested object descriptor. */
- type AnyNestedObject = (IEnum|IType|IService|AnyExtensionField|INamespace);
-
- /** Base class of all reflection objects. */
- export abstract class ReflectionObject {
-
- /** Options. */
- public options?: { [k: string]: any };
-
- /** Parsed Options. */
- public parsedOptions?: { [k: string]: any[] };
-
- /** Unique name within its namespace. */
- public name: string;
-
- /** Parent namespace. */
- public parent: (Namespace|null);
-
- /** Whether already resolved or not. */
- public resolved: boolean;
-
- /** Comment text, if any. */
- public comment: (string|null);
-
- /** Defining file name. */
- public filename: (string|null);
-
- /** Reference to the root namespace. */
- public readonly root: Root;
-
- /** Full name including leading dot. */
- public readonly fullName: string;
-
- /**
- * Converts this reflection object to its descriptor representation.
- * @returns Descriptor
- */
- public toJSON(): { [k: string]: any };
-
- /**
- * Called when this object is added to a parent.
- * @param parent Parent added to
- */
- public onAdd(parent: ReflectionObject): void;
-
- /**
- * Called when this object is removed from a parent.
- * @param parent Parent removed from
- */
- public onRemove(parent: ReflectionObject): void;
-
- /**
- * Resolves this objects type references.
- * @returns `this`
- */
- public resolve(): ReflectionObject;
-
- /**
- * Gets an option value.
- * @param name Option name
- * @returns Option value or `undefined` if not set
- */
- public getOption(name: string): any;
-
- /**
- * Sets an option.
- * @param name Option name
- * @param value Option value
- * @param [ifNotSet] Sets the option only if it isn't currently set
- * @returns `this`
- */
- public setOption(name: string, value: any, ifNotSet?: boolean): ReflectionObject;
-
- /**
- * Sets a parsed option.
- * @param name parsed Option name
- * @param value Option value
- * @param propName dot '.' delimited full path of property within the option to set. if undefined\empty, will add a new option with that value
- * @returns `this`
- */
- public setParsedOption(name: string, value: any, propName: string): ReflectionObject;
-
- /**
- * Sets multiple options.
- * @param options Options to set
- * @param [ifNotSet] Sets an option only if it isn't currently set
- * @returns `this`
- */
- public setOptions(options: { [k: string]: any }, ifNotSet?: boolean): ReflectionObject;
-
- /**
- * Converts this instance to its string representation.
- * @returns Class name[, space, full name]
- */
- public toString(): string;
- }
-
- /** Reflected oneof. */
- export class OneOf extends ReflectionObject {
-
- /**
- * Constructs a new oneof instance.
- * @param name Oneof name
- * @param [fieldNames] Field names
- * @param [options] Declared options
- * @param [comment] Comment associated with this field
- */
- constructor(name: string, fieldNames?: (string[]|{ [k: string]: any }), options?: { [k: string]: any }, comment?: string);
-
- /** Field names that belong to this oneof. */
- public oneof: string[];
-
- /** Fields that belong to this oneof as an array for iteration. */
- public readonly fieldsArray: Field[];
-
- /** Comment for this field. */
- public comment: (string|null);
-
- /**
- * Constructs a oneof from a oneof descriptor.
- * @param name Oneof name
- * @param json Oneof descriptor
- * @returns Created oneof
- * @throws {TypeError} If arguments are invalid
- */
- public static fromJSON(name: string, json: IOneOf): OneOf;
-
- /**
- * Converts this oneof to a oneof descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Oneof descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): IOneOf;
-
- /**
- * Adds a field to this oneof and removes it from its current parent, if any.
- * @param field Field to add
- * @returns `this`
- */
- public add(field: Field): OneOf;
-
- /**
- * Removes a field from this oneof and puts it back to the oneof's parent.
- * @param field Field to remove
- * @returns `this`
- */
- public remove(field: Field): OneOf;
-
- /**
- * OneOf decorator (TypeScript).
- * @param fieldNames Field names
- * @returns Decorator function
- */
- public static d<T extends string>(...fieldNames: string[]): OneOfDecorator;
- }
-
- /** Oneof descriptor. */
- export interface IOneOf {
-
- /** Oneof field names */
- oneof: string[];
-
- /** Oneof options */
- options?: { [k: string]: any };
- }
-
- /**
- * Decorator function as returned by {@link OneOf.d} (TypeScript).
- * @param prototype Target prototype
- * @param oneofName OneOf name
- */
- type OneOfDecorator = (prototype: object, oneofName: string) => void;
-
- /**
- * Parses the given .proto source and returns an object with the parsed contents.
- * @param source Source contents
- * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted.
- * @returns Parser result
- */
- export function parse(source: string, options?: IParseOptions): IParserResult;
-
- /** Result object returned from {@link parse}. */
- export interface IParserResult {
-
- /** Package name, if declared */
- package: (string|undefined);
-
- /** Imports, if any */
- imports: (string[]|undefined);
-
- /** Weak imports, if any */
- weakImports: (string[]|undefined);
-
- /** Syntax, if specified (either `"proto2"` or `"proto3"`) */
- syntax: (string|undefined);
-
- /** Populated root instance */
- root: Root;
- }
-
- /** Options modifying the behavior of {@link parse}. */
- export interface IParseOptions {
-
- /** Keeps field casing instead of converting to camel case */
- keepCase?: boolean;
-
- /** Recognize double-slash comments in addition to doc-block comments. */
- alternateCommentMode?: boolean;
-
- /** Use trailing comment when both leading comment and trailing comment exist. */
- preferTrailingComment?: boolean;
- }
-
- /** Options modifying the behavior of JSON serialization. */
- export interface IToJSONOptions {
-
- /** Serializes comments. */
- keepComments?: boolean;
- }
-
- /**
- * Parses the given .proto source and returns an object with the parsed contents.
- * @param source Source contents
- * @param root Root to populate
- * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted.
- * @returns Parser result
- */
- export function parse(source: string, root: Root, options?: IParseOptions): IParserResult;
-
- /** Wire format reader using `Uint8Array` if available, otherwise `Array`. */
- export class Reader {
-
- /**
- * Constructs a new reader instance using the specified buffer.
- * @param buffer Buffer to read from
- */
- constructor(buffer: Uint8Array);
-
- /** Read buffer. */
- public buf: Uint8Array;
-
- /** Read buffer position. */
- public pos: number;
-
- /** Read buffer length. */
- public len: number;
-
- /**
- * Creates a new reader using the specified buffer.
- * @param buffer Buffer to read from
- * @returns A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}
- * @throws {Error} If `buffer` is not a valid buffer
- */
- public static create(buffer: (Uint8Array|Buffer)): (Reader|BufferReader);
-
- /**
- * Reads a varint as an unsigned 32 bit value.
- * @returns Value read
- */
- public uint32(): number;
-
- /**
- * Reads a varint as a signed 32 bit value.
- * @returns Value read
- */
- public int32(): number;
-
- /**
- * Reads a zig-zag encoded varint as a signed 32 bit value.
- * @returns Value read
- */
- public sint32(): number;
-
- /**
- * Reads a varint as a signed 64 bit value.
- * @returns Value read
- */
- public int64(): Long;
-
- /**
- * Reads a varint as an unsigned 64 bit value.
- * @returns Value read
- */
- public uint64(): Long;
-
- /**
- * Reads a zig-zag encoded varint as a signed 64 bit value.
- * @returns Value read
- */
- public sint64(): Long;
-
- /**
- * Reads a varint as a boolean.
- * @returns Value read
- */
- public bool(): boolean;
-
- /**
- * Reads fixed 32 bits as an unsigned 32 bit integer.
- * @returns Value read
- */
- public fixed32(): number;
-
- /**
- * Reads fixed 32 bits as a signed 32 bit integer.
- * @returns Value read
- */
- public sfixed32(): number;
-
- /**
- * Reads fixed 64 bits.
- * @returns Value read
- */
- public fixed64(): Long;
-
- /**
- * Reads zig-zag encoded fixed 64 bits.
- * @returns Value read
- */
- public sfixed64(): Long;
-
- /**
- * Reads a float (32 bit) as a number.
- * @returns Value read
- */
- public float(): number;
-
- /**
- * Reads a double (64 bit float) as a number.
- * @returns Value read
- */
- public double(): number;
-
- /**
- * Reads a sequence of bytes preceeded by its length as a varint.
- * @returns Value read
- */
- public bytes(): Uint8Array;
-
- /**
- * Reads a string preceeded by its byte length as a varint.
- * @returns Value read
- */
- public string(): string;
-
- /**
- * Skips the specified number of bytes if specified, otherwise skips a varint.
- * @param [length] Length if known, otherwise a varint is assumed
- * @returns `this`
- */
- public skip(length?: number): Reader;
-
- /**
- * Skips the next element of the specified wire type.
- * @param wireType Wire type received
- * @returns `this`
- */
- public skipType(wireType: number): Reader;
- }
-
- /** Wire format reader using node buffers. */
- export class BufferReader extends Reader {
-
- /**
- * Constructs a new buffer reader instance.
- * @param buffer Buffer to read from
- */
- constructor(buffer: Buffer);
-
- /**
- * Reads a sequence of bytes preceeded by its length as a varint.
- * @returns Value read
- */
- public bytes(): Buffer;
- }
-
- /** Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together. */
- export class Root extends NamespaceBase {
-
- /**
- * Constructs a new root namespace instance.
- * @param [options] Top level options
- */
- constructor(options?: { [k: string]: any });
-
- /** Deferred extension fields. */
- public deferred: Field[];
-
- /** Resolved file names of loaded files. */
- public files: string[];
-
- /**
- * Loads a namespace descriptor into a root namespace.
- * @param json Nameespace descriptor
- * @param [root] Root namespace, defaults to create a new one if omitted
- * @returns Root namespace
- */
- public static fromJSON(json: INamespace, root?: Root): Root;
-
- /**
- * Resolves the path of an imported file, relative to the importing origin.
- * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.
- * @param origin The file name of the importing file
- * @param target The file name being imported
- * @returns Resolved path to `target` or `null` to skip the file
- */
- public resolvePath(origin: string, target: string): (string|null);
-
- /**
- * Fetch content from file path or url
- * This method exists so you can override it with your own logic.
- * @param path File path or url
- * @param callback Callback function
- */
- public fetch(path: string, callback: FetchCallback): void;
-
- /**
- * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.
- * @param filename Names of one or multiple files to load
- * @param options Parse options
- * @param callback Callback function
- */
- public load(filename: (string|string[]), options: IParseOptions, callback: LoadCallback): void;
-
- /**
- * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.
- * @param filename Names of one or multiple files to load
- * @param callback Callback function
- */
- public load(filename: (string|string[]), callback: LoadCallback): void;
-
- /**
- * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.
- * @param filename Names of one or multiple files to load
- * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted.
- * @returns Promise
- */
- public load(filename: (string|string[]), options?: IParseOptions): Promise<Root>;
-
- /**
- * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).
- * @param filename Names of one or multiple files to load
- * @param [options] Parse options. Defaults to {@link parse.defaults} when omitted.
- * @returns Root namespace
- * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid
- */
- public loadSync(filename: (string|string[]), options?: IParseOptions): Root;
- }
-
- /**
- * Named roots.
- * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).
- * Can also be used manually to make roots available accross modules.
- */
- export let roots: { [k: string]: Root };
-
- /** Streaming RPC helpers. */
- export namespace rpc {
-
- /**
- * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.
- *
- * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.
- * @param error Error, if any
- * @param [response] Response message
- */
- type ServiceMethodCallback<TRes extends Message<TRes>> = (error: (Error|null), response?: TRes) => void;
-
- /**
- * A service method part of a {@link rpc.Service} as created by {@link Service.create}.
- * @param request Request message or plain object
- * @param [callback] Node-style callback called with the error, if any, and the response message
- * @returns Promise if `callback` has been omitted, otherwise `undefined`
- */
- type ServiceMethod<TReq extends Message<TReq>, TRes extends Message<TRes>> = (request: (TReq|Properties<TReq>), callback?: rpc.ServiceMethodCallback<TRes>) => Promise<Message<TRes>>;
-
- /** An RPC service as returned by {@link Service#create}. */
- class Service extends util.EventEmitter {
-
- /**
- * Constructs a new RPC service instance.
- * @param rpcImpl RPC implementation
- * @param [requestDelimited=false] Whether requests are length-delimited
- * @param [responseDelimited=false] Whether responses are length-delimited
- */
- constructor(rpcImpl: RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);
-
- /** RPC implementation. Becomes `null` once the service is ended. */
- public rpcImpl: (RPCImpl|null);
-
- /** Whether requests are length-delimited. */
- public requestDelimited: boolean;
-
- /** Whether responses are length-delimited. */
- public responseDelimited: boolean;
-
- /**
- * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.
- * @param method Reflected or static method
- * @param requestCtor Request constructor
- * @param responseCtor Response constructor
- * @param request Request message or plain object
- * @param callback Service callback
- */
- public rpcCall<TReq extends Message<TReq>, TRes extends Message<TRes>>(method: (Method|rpc.ServiceMethod<TReq, TRes>), requestCtor: Constructor<TReq>, responseCtor: Constructor<TRes>, request: (TReq|Properties<TReq>), callback: rpc.ServiceMethodCallback<TRes>): void;
-
- /**
- * Ends this service and emits the `end` event.
- * @param [endedByRPC=false] Whether the service has been ended by the RPC implementation.
- * @returns `this`
- */
- public end(endedByRPC?: boolean): rpc.Service;
- }
- }
-
- /**
- * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.
- * @param method Reflected or static method being called
- * @param requestData Request data
- * @param callback Callback function
- */
- type RPCImpl = (method: (Method|rpc.ServiceMethod<Message<{}>, Message<{}>>), requestData: Uint8Array, callback: RPCImplCallback) => void;
-
- /**
- * Node-style callback as used by {@link RPCImpl}.
- * @param error Error, if any, otherwise `null`
- * @param [response] Response data or `null` to signal end of stream, if there hasn't been an error
- */
- type RPCImplCallback = (error: (Error|null), response?: (Uint8Array|null)) => void;
-
- /** Reflected service. */
- export class Service extends NamespaceBase {
-
- /**
- * Constructs a new service instance.
- * @param name Service name
- * @param [options] Service options
- * @throws {TypeError} If arguments are invalid
- */
- constructor(name: string, options?: { [k: string]: any });
-
- /** Service methods. */
- public methods: { [k: string]: Method };
-
- /**
- * Constructs a service from a service descriptor.
- * @param name Service name
- * @param json Service descriptor
- * @returns Created service
- * @throws {TypeError} If arguments are invalid
- */
- public static fromJSON(name: string, json: IService): Service;
-
- /**
- * Converts this service to a service descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Service descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): IService;
-
- /** Methods of this service as an array for iteration. */
- public readonly methodsArray: Method[];
-
- /**
- * Creates a runtime service using the specified rpc implementation.
- * @param rpcImpl RPC implementation
- * @param [requestDelimited=false] Whether requests are length-delimited
- * @param [responseDelimited=false] Whether responses are length-delimited
- * @returns RPC service. Useful where requests and/or responses are streamed.
- */
- public create(rpcImpl: RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): rpc.Service;
- }
-
- /** Service descriptor. */
- export interface IService extends INamespace {
-
- /** Method descriptors */
- methods: { [k: string]: IMethod };
- }
-
- /**
- * Gets the next token and advances.
- * @returns Next token or `null` on eof
- */
- type TokenizerHandleNext = () => (string|null);
-
- /**
- * Peeks for the next token.
- * @returns Next token or `null` on eof
- */
- type TokenizerHandlePeek = () => (string|null);
-
- /**
- * Pushes a token back to the stack.
- * @param token Token
- */
- type TokenizerHandlePush = (token: string) => void;
-
- /**
- * Skips the next token.
- * @param expected Expected token
- * @param [optional=false] If optional
- * @returns Whether the token matched
- * @throws {Error} If the token didn't match and is not optional
- */
- type TokenizerHandleSkip = (expected: string, optional?: boolean) => boolean;
-
- /**
- * Gets the comment on the previous line or, alternatively, the line comment on the specified line.
- * @param [line] Line number
- * @returns Comment text or `null` if none
- */
- type TokenizerHandleCmnt = (line?: number) => (string|null);
-
- /** Handle object returned from {@link tokenize}. */
- export interface ITokenizerHandle {
-
- /** Gets the next token and advances (`null` on eof) */
- next: TokenizerHandleNext;
-
- /** Peeks for the next token (`null` on eof) */
- peek: TokenizerHandlePeek;
-
- /** Pushes a token back to the stack */
- push: TokenizerHandlePush;
-
- /** Skips a token, returns its presence and advances or, if non-optional and not present, throws */
- skip: TokenizerHandleSkip;
-
- /** Gets the comment on the previous line or the line comment on the specified line, if any */
- cmnt: TokenizerHandleCmnt;
-
- /** Current line number */
- line: number;
- }
-
- /**
- * Tokenizes the given .proto source and returns an object with useful utility functions.
- * @param source Source contents
- * @param alternateCommentMode Whether we should activate alternate comment parsing mode.
- * @returns Tokenizer handle
- */
- export function tokenize(source: string, alternateCommentMode: boolean): ITokenizerHandle;
-
- export namespace tokenize {
-
- /**
- * Unescapes a string.
- * @param str String to unescape
- * @returns Unescaped string
- */
- function unescape(str: string): string;
- }
-
- /** Reflected message type. */
- export class Type extends NamespaceBase {
-
- /**
- * Constructs a new reflected message type instance.
- * @param name Message name
- * @param [options] Declared options
- */
- constructor(name: string, options?: { [k: string]: any });
-
- /** Message fields. */
- public fields: { [k: string]: Field };
-
- /** Oneofs declared within this namespace, if any. */
- public oneofs: { [k: string]: OneOf };
-
- /** Extension ranges, if any. */
- public extensions: number[][];
-
- /** Reserved ranges, if any. */
- public reserved: (number[]|string)[];
-
- /** Message fields by id. */
- public readonly fieldsById: { [k: number]: Field };
-
- /** Fields of this message as an array for iteration. */
- public readonly fieldsArray: Field[];
-
- /** Oneofs of this message as an array for iteration. */
- public readonly oneofsArray: OneOf[];
-
- /**
- * The registered constructor, if any registered, otherwise a generic constructor.
- * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.
- */
- public ctor: Constructor<{}>;
-
- /**
- * Generates a constructor function for the specified type.
- * @param mtype Message type
- * @returns Codegen instance
- */
- public static generateConstructor(mtype: Type): Codegen;
-
- /**
- * Creates a message type from a message type descriptor.
- * @param name Message name
- * @param json Message type descriptor
- * @returns Created message type
- */
- public static fromJSON(name: string, json: IType): Type;
-
- /**
- * Converts this message type to a message type descriptor.
- * @param [toJSONOptions] JSON conversion options
- * @returns Message type descriptor
- */
- public toJSON(toJSONOptions?: IToJSONOptions): IType;
-
- /**
- * Adds a nested object to this type.
- * @param object Nested object to add
- * @returns `this`
- * @throws {TypeError} If arguments are invalid
- * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id
- */
- public add(object: ReflectionObject): Type;
-
- /**
- * Removes a nested object from this type.
- * @param object Nested object to remove
- * @returns `this`
- * @throws {TypeError} If arguments are invalid
- * @throws {Error} If `object` is not a member of this type
- */
- public remove(object: ReflectionObject): Type;
-
- /**
- * Tests if the specified id is reserved.
- * @param id Id to test
- * @returns `true` if reserved, otherwise `false`
- */
- public isReservedId(id: number): boolean;
-
- /**
- * Tests if the specified name is reserved.
- * @param name Name to test
- * @returns `true` if reserved, otherwise `false`
- */
- public isReservedName(name: string): boolean;
-
- /**
- * Creates a new message of this type using the specified properties.
- * @param [properties] Properties to set
- * @returns Message instance
- */
- public create(properties?: { [k: string]: any }): Message<{}>;
-
- /**
- * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.
- * @returns `this`
- */
- public setup(): Type;
-
- /**
- * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.
- * @param message Message instance or plain object
- * @param [writer] Writer to encode to
- * @returns writer
- */
- public encode(message: (Message<{}>|{ [k: string]: any }), writer?: Writer): Writer;
-
- /**
- * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.
- * @param message Message instance or plain object
- * @param [writer] Writer to encode to
- * @returns writer
- */
- public encodeDelimited(message: (Message<{}>|{ [k: string]: any }), writer?: Writer): Writer;
-
- /**
- * Decodes a message of this type.
- * @param reader Reader or buffer to decode from
- * @param [length] Length of the message, if known beforehand
- * @returns Decoded message
- * @throws {Error} If the payload is not a reader or valid buffer
- * @throws {util.ProtocolError<{}>} If required fields are missing
- */
- public decode(reader: (Reader|Uint8Array), length?: number): Message<{}>;
-
- /**
- * Decodes a message of this type preceeded by its byte length as a varint.
- * @param reader Reader or buffer to decode from
- * @returns Decoded message
- * @throws {Error} If the payload is not a reader or valid buffer
- * @throws {util.ProtocolError} If required fields are missing
- */
- public decodeDelimited(reader: (Reader|Uint8Array)): Message<{}>;
-
- /**
- * Verifies that field values are valid and that required fields are present.
- * @param message Plain object to verify
- * @returns `null` if valid, otherwise the reason why it is not
- */
- public verify(message: { [k: string]: any }): (null|string);
-
- /**
- * Creates a new message of this type from a plain object. Also converts values to their respective internal types.
- * @param object Plain object to convert
- * @returns Message instance
- */
- public fromObject(object: { [k: string]: any }): Message<{}>;
-
- /**
- * Creates a plain object from a message of this type. Also converts values to other types if specified.
- * @param message Message instance
- * @param [options] Conversion options
- * @returns Plain object
- */
- public toObject(message: Message<{}>, options?: IConversionOptions): { [k: string]: any };
-
- /**
- * Type decorator (TypeScript).
- * @param [typeName] Type name, defaults to the constructor's name
- * @returns Decorator function
- */
- public static d<T extends Message<T>>(typeName?: string): TypeDecorator<T>;
- }
-
- /** Message type descriptor. */
- export interface IType extends INamespace {
-
- /** Oneof descriptors */
- oneofs?: { [k: string]: IOneOf };
-
- /** Field descriptors */
- fields: { [k: string]: IField };
-
- /** Extension ranges */
- extensions?: number[][];
-
- /** Reserved ranges */
- reserved?: number[][];
-
- /** Whether a legacy group or not */
- group?: boolean;
- }
-
- /** Conversion options as used by {@link Type#toObject} and {@link Message.toObject}. */
- export interface IConversionOptions {
-
- /**
- * Long conversion type.
- * Valid values are `String` and `Number` (the global types).
- * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.
- */
- longs?: Function;
-
- /**
- * Enum value conversion type.
- * Only valid value is `String` (the global type).
- * Defaults to copy the present value, which is the numeric id.
- */
- enums?: Function;
-
- /**
- * Bytes value conversion type.
- * Valid values are `Array` and (a base64 encoded) `String` (the global types).
- * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.
- */
- bytes?: Function;
-
- /** Also sets default values on the resulting object */
- defaults?: boolean;
-
- /** Sets empty arrays for missing repeated fields even if `defaults=false` */
- arrays?: boolean;
-
- /** Sets empty objects for missing map fields even if `defaults=false` */
- objects?: boolean;
-
- /** Includes virtual oneof properties set to the present field's name, if any */
- oneofs?: boolean;
-
- /** Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings */
- json?: boolean;
- }
-
- /**
- * Decorator function as returned by {@link Type.d} (TypeScript).
- * @param target Target constructor
- */
- type TypeDecorator<T extends Message<T>> = (target: Constructor<T>) => void;
-
- /** Common type constants. */
- export namespace types {
-
- /** Basic type wire types. */
- const basic: {
- "double": number,
- "float": number,
- "int32": number,
- "uint32": number,
- "sint32": number,
- "fixed32": number,
- "sfixed32": number,
- "int64": number,
- "uint64": number,
- "sint64": number,
- "fixed64": number,
- "sfixed64": number,
- "bool": number,
- "string": number,
- "bytes": number
- };
-
- /** Basic type defaults. */
- const defaults: {
- "double": number,
- "float": number,
- "int32": number,
- "uint32": number,
- "sint32": number,
- "fixed32": number,
- "sfixed32": number,
- "int64": number,
- "uint64": number,
- "sint64": number,
- "fixed64": number,
- "sfixed64": number,
- "bool": boolean,
- "string": string,
- "bytes": number[],
- "message": null
- };
-
- /** Basic long type wire types. */
- const long: {
- "int64": number,
- "uint64": number,
- "sint64": number,
- "fixed64": number,
- "sfixed64": number
- };
-
- /** Allowed types for map keys with their associated wire type. */
- const mapKey: {
- "int32": number,
- "uint32": number,
- "sint32": number,
- "fixed32": number,
- "sfixed32": number,
- "int64": number,
- "uint64": number,
- "sint64": number,
- "fixed64": number,
- "sfixed64": number,
- "bool": number,
- "string": number
- };
-
- /** Allowed types for packed repeated fields with their associated wire type. */
- const packed: {
- "double": number,
- "float": number,
- "int32": number,
- "uint32": number,
- "sint32": number,
- "fixed32": number,
- "sfixed32": number,
- "int64": number,
- "uint64": number,
- "sint64": number,
- "fixed64": number,
- "sfixed64": number,
- "bool": number
- };
- }
-
- /** Constructor type. */
- export interface Constructor<T> extends Function {
- new(...params: any[]): T; prototype: T;
- }
-
- /** Properties type. */
- type Properties<T> = { [P in keyof T]?: T[P] };
-
- /**
- * Any compatible Buffer instance.
- * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.
- */
- export interface Buffer extends Uint8Array {
- }
-
- /**
- * Any compatible Long instance.
- * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.
- */
- export interface Long {
-
- /** Low bits */
- low: number;
-
- /** High bits */
- high: number;
-
- /** Whether unsigned or not */
- unsigned: boolean;
- }
-
- /**
- * A OneOf getter as returned by {@link util.oneOfGetter}.
- * @returns Set field name, if any
- */
- type OneOfGetter = () => (string|undefined);
-
- /**
- * A OneOf setter as returned by {@link util.oneOfSetter}.
- * @param value Field name
- */
- type OneOfSetter = (value: (string|undefined)) => void;
-
- /** Various utility functions. */
- export namespace util {
-
- /** Helper class for working with the low and high bits of a 64 bit value. */
- class LongBits {
-
- /**
- * Constructs new long bits.
- * @param lo Low 32 bits, unsigned
- * @param hi High 32 bits, unsigned
- */
- constructor(lo: number, hi: number);
-
- /** Low bits. */
- public lo: number;
-
- /** High bits. */
- public hi: number;
-
- /** Zero bits. */
- public static zero: util.LongBits;
-
- /** Zero hash. */
- public static zeroHash: string;
-
- /**
- * Constructs new long bits from the specified number.
- * @param value Value
- * @returns Instance
- */
- public static fromNumber(value: number): util.LongBits;
-
- /**
- * Constructs new long bits from a number, long or string.
- * @param value Value
- * @returns Instance
- */
- public static from(value: (Long|number|string)): util.LongBits;
-
- /**
- * Converts this long bits to a possibly unsafe JavaScript number.
- * @param [unsigned=false] Whether unsigned or not
- * @returns Possibly unsafe number
- */
- public toNumber(unsigned?: boolean): number;
-
- /**
- * Converts this long bits to a long.
- * @param [unsigned=false] Whether unsigned or not
- * @returns Long
- */
- public toLong(unsigned?: boolean): Long;
-
- /**
- * Constructs new long bits from the specified 8 characters long hash.
- * @param hash Hash
- * @returns Bits
- */
- public static fromHash(hash: string): util.LongBits;
-
- /**
- * Converts this long bits to a 8 characters long hash.
- * @returns Hash
- */
- public toHash(): string;
-
- /**
- * Zig-zag encodes this long bits.
- * @returns `this`
- */
- public zzEncode(): util.LongBits;
-
- /**
- * Zig-zag decodes this long bits.
- * @returns `this`
- */
- public zzDecode(): util.LongBits;
-
- /**
- * Calculates the length of this longbits when encoded as a varint.
- * @returns Length
- */
- public length(): number;
- }
-
- /** Whether running within node or not. */
- let isNode: boolean;
-
- /** Global object reference. */
- let global: object;
-
- /** An immuable empty array. */
- const emptyArray: any[];
-
- /** An immutable empty object. */
- const emptyObject: object;
-
- /**
- * Tests if the specified value is an integer.
- * @param value Value to test
- * @returns `true` if the value is an integer
- */
- function isInteger(value: any): boolean;
-
- /**
- * Tests if the specified value is a string.
- * @param value Value to test
- * @returns `true` if the value is a string
- */
- function isString(value: any): boolean;
-
- /**
- * Tests if the specified value is a non-null object.
- * @param value Value to test
- * @returns `true` if the value is a non-null object
- */
- function isObject(value: any): boolean;
-
- /**
- * Checks if a property on a message is considered to be present.
- * This is an alias of {@link util.isSet}.
- * @param obj Plain object or message instance
- * @param prop Property name
- * @returns `true` if considered to be present, otherwise `false`
- */
- function isset(obj: object, prop: string): boolean;
-
- /**
- * Checks if a property on a message is considered to be present.
- * @param obj Plain object or message instance
- * @param prop Property name
- * @returns `true` if considered to be present, otherwise `false`
- */
- function isSet(obj: object, prop: string): boolean;
-
- /** Node's Buffer class if available. */
- let Buffer: Constructor<Buffer>;
-
- /**
- * Creates a new buffer of whatever type supported by the environment.
- * @param [sizeOrArray=0] Buffer size or number array
- * @returns Buffer
- */
- function newBuffer(sizeOrArray?: (number|number[])): (Uint8Array|Buffer);
-
- /** Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`. */
- let Array: Constructor<Uint8Array>;
-
- /** Long.js's Long class if available. */
- let Long: Constructor<Long>;
-
- /** Regular expression used to verify 2 bit (`bool`) map keys. */
- const key2Re: RegExp;
-
- /** Regular expression used to verify 32 bit (`int32` etc.) map keys. */
- const key32Re: RegExp;
-
- /** Regular expression used to verify 64 bit (`int64` etc.) map keys. */
- const key64Re: RegExp;
-
- /**
- * Converts a number or long to an 8 characters long hash string.
- * @param value Value to convert
- * @returns Hash
- */
- function longToHash(value: (Long|number)): string;
-
- /**
- * Converts an 8 characters long hash string to a long or number.
- * @param hash Hash
- * @param [unsigned=false] Whether unsigned or not
- * @returns Original value
- */
- function longFromHash(hash: string, unsigned?: boolean): (Long|number);
-
- /**
- * Merges the properties of the source object into the destination object.
- * @param dst Destination object
- * @param src Source object
- * @param [ifNotSet=false] Merges only if the key is not already set
- * @returns Destination object
- */
- function merge(dst: { [k: string]: any }, src: { [k: string]: any }, ifNotSet?: boolean): { [k: string]: any };
-
- /**
- * Converts the first character of a string to lower case.
- * @param str String to convert
- * @returns Converted string
- */
- function lcFirst(str: string): string;
-
- /**
- * Creates a custom error constructor.
- * @param name Error name
- * @returns Custom error constructor
- */
- function newError(name: string): Constructor<Error>;
-
- /** Error subclass indicating a protocol specifc error. */
- class ProtocolError<T extends Message<T>> extends Error {
-
- /**
- * Constructs a new protocol error.
- * @param message Error message
- * @param [properties] Additional properties
- */
- constructor(message: string, properties?: { [k: string]: any });
-
- /** So far decoded message instance. */
- public instance: Message<T>;
- }
-
- /**
- * Builds a getter for a oneof's present field name.
- * @param fieldNames Field names
- * @returns Unbound getter
- */
- function oneOfGetter(fieldNames: string[]): OneOfGetter;
-
- /**
- * Builds a setter for a oneof's present field name.
- * @param fieldNames Field names
- * @returns Unbound setter
- */
- function oneOfSetter(fieldNames: string[]): OneOfSetter;
-
- /**
- * Default conversion options used for {@link Message#toJSON} implementations.
- *
- * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:
- *
- * - Longs become strings
- * - Enums become string keys
- * - Bytes become base64 encoded strings
- * - (Sub-)Messages become plain objects
- * - Maps become plain objects with all string keys
- * - Repeated fields become arrays
- * - NaN and Infinity for float and double fields become strings
- *
- * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json
- */
- let toJSONOptions: IConversionOptions;
-
- /** Node's fs module if available. */
- let fs: { [k: string]: any };
-
- /**
- * Converts an object's values to an array.
- * @param object Object to convert
- * @returns Converted array
- */
- function toArray(object: { [k: string]: any }): any[];
-
- /**
- * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.
- * @param array Array to convert
- * @returns Converted object
- */
- function toObject(array: any[]): { [k: string]: any };
-
- /**
- * Tests whether the specified name is a reserved word in JS.
- * @param name Name to test
- * @returns `true` if reserved, otherwise `false`
- */
- function isReserved(name: string): boolean;
-
- /**
- * Returns a safe property accessor for the specified property name.
- * @param prop Property name
- * @returns Safe accessor
- */
- function safeProp(prop: string): string;
-
- /**
- * Converts the first character of a string to upper case.
- * @param str String to convert
- * @returns Converted string
- */
- function ucFirst(str: string): string;
-
- /**
- * Converts a string to camel case.
- * @param str String to convert
- * @returns Converted string
- */
- function camelCase(str: string): string;
-
- /**
- * Compares reflected fields by id.
- * @param a First field
- * @param b Second field
- * @returns Comparison value
- */
- function compareFieldsById(a: Field, b: Field): number;
-
- /**
- * Decorator helper for types (TypeScript).
- * @param ctor Constructor function
- * @param [typeName] Type name, defaults to the constructor's name
- * @returns Reflected type
- */
- function decorateType<T extends Message<T>>(ctor: Constructor<T>, typeName?: string): Type;
-
- /**
- * Decorator helper for enums (TypeScript).
- * @param object Enum object
- * @returns Reflected enum
- */
- function decorateEnum(object: object): Enum;
-
- /**
- * Sets the value of a property by property path. If a value already exists, it is turned to an array
- * @param dst Destination object
- * @param path dot '.' delimited path of the property to set
- * @param value the value to set
- * @returns Destination object
- */
- function setProperty(dst: { [k: string]: any }, path: string, value: object): { [k: string]: any };
-
- /** Decorator root (TypeScript). */
- let decorateRoot: Root;
-
- /**
- * Returns a promise from a node-style callback function.
- * @param fn Function to call
- * @param ctx Function context
- * @param params Function arguments
- * @returns Promisified function
- */
- function asPromise(fn: asPromiseCallback, ctx: any, ...params: any[]): Promise<any>;
-
- /** A minimal base64 implementation for number arrays. */
- namespace base64 {
-
- /**
- * Calculates the byte length of a base64 encoded string.
- * @param string Base64 encoded string
- * @returns Byte length
- */
- function length(string: string): number;
-
- /**
- * Encodes a buffer to a base64 encoded string.
- * @param buffer Source buffer
- * @param start Source start
- * @param end Source end
- * @returns Base64 encoded string
- */
- function encode(buffer: Uint8Array, start: number, end: number): string;
-
- /**
- * Decodes a base64 encoded string to a buffer.
- * @param string Source string
- * @param buffer Destination buffer
- * @param offset Destination offset
- * @returns Number of bytes written
- * @throws {Error} If encoding is invalid
- */
- function decode(string: string, buffer: Uint8Array, offset: number): number;
-
- /**
- * Tests if the specified string appears to be base64 encoded.
- * @param string String to test
- * @returns `true` if probably base64 encoded, otherwise false
- */
- function test(string: string): boolean;
- }
-
- /**
- * Begins generating a function.
- * @param functionParams Function parameter names
- * @param [functionName] Function name if not anonymous
- * @returns Appender that appends code to the function's body
- */
- function codegen(functionParams: string[], functionName?: string): Codegen;
-
- namespace codegen {
-
- /** When set to `true`, codegen will log generated code to console. Useful for debugging. */
- let verbose: boolean;
- }
-
- /**
- * Begins generating a function.
- * @param [functionName] Function name if not anonymous
- * @returns Appender that appends code to the function's body
- */
- function codegen(functionName?: string): Codegen;
-
- /** A minimal event emitter. */
- class EventEmitter {
-
- /** Constructs a new event emitter instance. */
- constructor();
-
- /**
- * Registers an event listener.
- * @param evt Event name
- * @param fn Listener
- * @param [ctx] Listener context
- * @returns `this`
- */
- public on(evt: string, fn: EventEmitterListener, ctx?: any): this;
-
- /**
- * Removes an event listener or any matching listeners if arguments are omitted.
- * @param [evt] Event name. Removes all listeners if omitted.
- * @param [fn] Listener to remove. Removes all listeners of `evt` if omitted.
- * @returns `this`
- */
- public off(evt?: string, fn?: EventEmitterListener): this;
-
- /**
- * Emits an event by calling its listeners with the specified arguments.
- * @param evt Event name
- * @param args Arguments
- * @returns `this`
- */
- public emit(evt: string, ...args: any[]): this;
- }
-
- /** Reads / writes floats / doubles from / to buffers. */
- namespace float {
-
- /**
- * Writes a 32 bit float to a buffer using little endian byte order.
- * @param val Value to write
- * @param buf Target buffer
- * @param pos Target buffer offset
- */
- function writeFloatLE(val: number, buf: Uint8Array, pos: number): void;
-
- /**
- * Writes a 32 bit float to a buffer using big endian byte order.
- * @param val Value to write
- * @param buf Target buffer
- * @param pos Target buffer offset
- */
- function writeFloatBE(val: number, buf: Uint8Array, pos: number): void;
-
- /**
- * Reads a 32 bit float from a buffer using little endian byte order.
- * @param buf Source buffer
- * @param pos Source buffer offset
- * @returns Value read
- */
- function readFloatLE(buf: Uint8Array, pos: number): number;
-
- /**
- * Reads a 32 bit float from a buffer using big endian byte order.
- * @param buf Source buffer
- * @param pos Source buffer offset
- * @returns Value read
- */
- function readFloatBE(buf: Uint8Array, pos: number): number;
-
- /**
- * Writes a 64 bit double to a buffer using little endian byte order.
- * @param val Value to write
- * @param buf Target buffer
- * @param pos Target buffer offset
- */
- function writeDoubleLE(val: number, buf: Uint8Array, pos: number): void;
-
- /**
- * Writes a 64 bit double to a buffer using big endian byte order.
- * @param val Value to write
- * @param buf Target buffer
- * @param pos Target buffer offset
- */
- function writeDoubleBE(val: number, buf: Uint8Array, pos: number): void;
-
- /**
- * Reads a 64 bit double from a buffer using little endian byte order.
- * @param buf Source buffer
- * @param pos Source buffer offset
- * @returns Value read
- */
- function readDoubleLE(buf: Uint8Array, pos: number): number;
-
- /**
- * Reads a 64 bit double from a buffer using big endian byte order.
- * @param buf Source buffer
- * @param pos Source buffer offset
- * @returns Value read
- */
- function readDoubleBE(buf: Uint8Array, pos: number): number;
- }
-
- /**
- * Fetches the contents of a file.
- * @param filename File path or url
- * @param options Fetch options
- * @param callback Callback function
- */
- function fetch(filename: string, options: IFetchOptions, callback: FetchCallback): void;
-
- /**
- * Fetches the contents of a file.
- * @param path File path or url
- * @param callback Callback function
- */
- function fetch(path: string, callback: FetchCallback): void;
-
- /**
- * Fetches the contents of a file.
- * @param path File path or url
- * @param [options] Fetch options
- * @returns Promise
- */
- function fetch(path: string, options?: IFetchOptions): Promise<(string|Uint8Array)>;
-
- /**
- * Requires a module only if available.
- * @param moduleName Module to require
- * @returns Required module if available and not empty, otherwise `null`
- */
- function inquire(moduleName: string): object;
-
- /** A minimal path module to resolve Unix, Windows and URL paths alike. */
- namespace path {
-
- /**
- * Tests if the specified path is absolute.
- * @param path Path to test
- * @returns `true` if path is absolute
- */
- function isAbsolute(path: string): boolean;
-
- /**
- * Normalizes the specified path.
- * @param path Path to normalize
- * @returns Normalized path
- */
- function normalize(path: string): string;
-
- /**
- * Resolves the specified include path against the specified origin path.
- * @param originPath Path to the origin file
- * @param includePath Include path relative to origin path
- * @param [alreadyNormalized=false] `true` if both paths are already known to be normalized
- * @returns Path to the include file
- */
- function resolve(originPath: string, includePath: string, alreadyNormalized?: boolean): string;
- }
-
- /**
- * A general purpose buffer pool.
- * @param alloc Allocator
- * @param slice Slicer
- * @param [size=8192] Slab size
- * @returns Pooled allocator
- */
- function pool(alloc: PoolAllocator, slice: PoolSlicer, size?: number): PoolAllocator;
-
- /** A minimal UTF8 implementation for number arrays. */
- namespace utf8 {
-
- /**
- * Calculates the UTF8 byte length of a string.
- * @param string String
- * @returns Byte length
- */
- function length(string: string): number;
-
- /**
- * Reads UTF8 bytes as a string.
- * @param buffer Source buffer
- * @param start Source start
- * @param end Source end
- * @returns String read
- */
- function read(buffer: Uint8Array, start: number, end: number): string;
-
- /**
- * Writes a string as UTF8 bytes.
- * @param string Source string
- * @param buffer Destination buffer
- * @param offset Destination offset
- * @returns Bytes written
- */
- function write(string: string, buffer: Uint8Array, offset: number): number;
- }
- }
-
- /**
- * Generates a verifier specific to the specified message type.
- * @param mtype Message type
- * @returns Codegen instance
- */
- export function verifier(mtype: Type): Codegen;
-
- /** Wrappers for common types. */
- export const wrappers: { [k: string]: IWrapper };
-
- /**
- * From object converter part of an {@link IWrapper}.
- * @param object Plain object
- * @returns Message instance
- */
- type WrapperFromObjectConverter = (this: Type, object: { [k: string]: any }) => Message<{}>;
-
- /**
- * To object converter part of an {@link IWrapper}.
- * @param message Message instance
- * @param [options] Conversion options
- * @returns Plain object
- */
- type WrapperToObjectConverter = (this: Type, message: Message<{}>, options?: IConversionOptions) => { [k: string]: any };
-
- /** Common type wrapper part of {@link wrappers}. */
- export interface IWrapper {
-
- /** From object converter */
- fromObject?: WrapperFromObjectConverter;
-
- /** To object converter */
- toObject?: WrapperToObjectConverter;
- }
-
- /** Wire format writer using `Uint8Array` if available, otherwise `Array`. */
- export class Writer {
-
- /** Constructs a new writer instance. */
- constructor();
-
- /** Current length. */
- public len: number;
-
- /** Operations head. */
- public head: object;
-
- /** Operations tail */
- public tail: object;
-
- /** Linked forked states. */
- public states: (object|null);
-
- /**
- * Creates a new writer.
- * @returns A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}
- */
- public static create(): (BufferWriter|Writer);
-
- /**
- * Allocates a buffer of the specified size.
- * @param size Buffer size
- * @returns Buffer
- */
- public static alloc(size: number): Uint8Array;
-
- /**
- * Writes an unsigned 32 bit value as a varint.
- * @param value Value to write
- * @returns `this`
- */
- public uint32(value: number): Writer;
-
- /**
- * Writes a signed 32 bit value as a varint.
- * @param value Value to write
- * @returns `this`
- */
- public int32(value: number): Writer;
-
- /**
- * Writes a 32 bit value as a varint, zig-zag encoded.
- * @param value Value to write
- * @returns `this`
- */
- public sint32(value: number): Writer;
-
- /**
- * Writes an unsigned 64 bit value as a varint.
- * @param value Value to write
- * @returns `this`
- * @throws {TypeError} If `value` is a string and no long library is present.
- */
- public uint64(value: (Long|number|string)): Writer;
-
- /**
- * Writes a signed 64 bit value as a varint.
- * @param value Value to write
- * @returns `this`
- * @throws {TypeError} If `value` is a string and no long library is present.
- */
- public int64(value: (Long|number|string)): Writer;
-
- /**
- * Writes a signed 64 bit value as a varint, zig-zag encoded.
- * @param value Value to write
- * @returns `this`
- * @throws {TypeError} If `value` is a string and no long library is present.
- */
- public sint64(value: (Long|number|string)): Writer;
-
- /**
- * Writes a boolish value as a varint.
- * @param value Value to write
- * @returns `this`
- */
- public bool(value: boolean): Writer;
-
- /**
- * Writes an unsigned 32 bit value as fixed 32 bits.
- * @param value Value to write
- * @returns `this`
- */
- public fixed32(value: number): Writer;
-
- /**
- * Writes a signed 32 bit value as fixed 32 bits.
- * @param value Value to write
- * @returns `this`
- */
- public sfixed32(value: number): Writer;
-
- /**
- * Writes an unsigned 64 bit value as fixed 64 bits.
- * @param value Value to write
- * @returns `this`
- * @throws {TypeError} If `value` is a string and no long library is present.
- */
- public fixed64(value: (Long|number|string)): Writer;
-
- /**
- * Writes a signed 64 bit value as fixed 64 bits.
- * @param value Value to write
- * @returns `this`
- * @throws {TypeError} If `value` is a string and no long library is present.
- */
- public sfixed64(value: (Long|number|string)): Writer;
-
- /**
- * Writes a float (32 bit).
- * @param value Value to write
- * @returns `this`
- */
- public float(value: number): Writer;
-
- /**
- * Writes a double (64 bit float).
- * @param value Value to write
- * @returns `this`
- */
- public double(value: number): Writer;
-
- /**
- * Writes a sequence of bytes.
- * @param value Buffer or base64 encoded string to write
- * @returns `this`
- */
- public bytes(value: (Uint8Array|string)): Writer;
-
- /**
- * Writes a string.
- * @param value Value to write
- * @returns `this`
- */
- public string(value: string): Writer;
-
- /**
- * Forks this writer's state by pushing it to a stack.
- * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.
- * @returns `this`
- */
- public fork(): Writer;
-
- /**
- * Resets this instance to the last state.
- * @returns `this`
- */
- public reset(): Writer;
-
- /**
- * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.
- * @returns `this`
- */
- public ldelim(): Writer;
-
- /**
- * Finishes the write operation.
- * @returns Finished buffer
- */
- public finish(): Uint8Array;
- }
-
- /** Wire format writer using node buffers. */
- export class BufferWriter extends Writer {
-
- /** Constructs a new buffer writer instance. */
- constructor();
-
- /**
- * Allocates a buffer of the specified size.
- * @param size Buffer size
- * @returns Buffer
- */
- public static alloc(size: number): Buffer;
-
- /**
- * Finishes the write operation.
- * @returns Finished buffer
- */
- public finish(): Buffer;
- }
-
- /**
- * Callback as used by {@link util.asPromise}.
- * @param error Error, if any
- * @param params Additional arguments
- */
- type asPromiseCallback = (error: (Error|null), ...params: any[]) => void;
-
- /**
- * Appends code to the function's body or finishes generation.
- * @param [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any
- * @param [formatParams] Format parameters
- * @returns Itself or the generated function if finished
- * @throws {Error} If format parameter counts do not match
- */
- type Codegen = (formatStringOrScope?: (string|{ [k: string]: any }), ...formatParams: any[]) => (Codegen|Function);
-
- /**
- * Event listener as used by {@link util.EventEmitter}.
- * @param args Arguments
- */
- type EventEmitterListener = (...args: any[]) => void;
-
- /**
- * Node-style callback as used by {@link util.fetch}.
- * @param error Error, if any, otherwise `null`
- * @param [contents] File contents, if there hasn't been an error
- */
- type FetchCallback = (error: Error, contents?: string) => void;
-
- /** Options as used by {@link util.fetch}. */
- export interface IFetchOptions {
-
- /** Whether expecting a binary response */
- binary?: boolean;
-
- /** If `true`, forces the use of XMLHttpRequest */
- xhr?: boolean;
- }
-
- /**
- * An allocator as used by {@link util.pool}.
- * @param size Buffer size
- * @returns Buffer
- */
- type PoolAllocator = (size: number) => Uint8Array;
-
- /**
- * A slicer as used by {@link util.pool}.
- * @param start Start offset
- * @param end End offset
- * @returns Buffer slice
- */
- type PoolSlicer = (this: Uint8Array, start: number, end: number) => Uint8Array;
|