///
import { IProtobufType } from './IProtobufType';
import * as p from 'protobufjs';
import { IProtobufTypeCtor } from './IProtobufTypeCtor';
import { TProtobufField } from './TProtobufField';
import { IProtobufEnum } from './IProtobufEnum';
import { IProtobufEnumCtor } from './IProtobufEnumCtor';
import { TRecursivePartial } from './TRecursivePartial';
export declare abstract class ProtobufType implements IProtobufType, TRecursivePartial> {
get underlyingType(): p.Type;
protected readonly root: p.Type;
protected readonly resolvedTypes: Map | IProtobufEnum>;
/**
*
*/
constructor();
/**
* @param {IProtobufTypeCtor} ctor
* @return {IProtobufType | IProtobufEnum}
* @protected
*/
protected resolveType(ctor: IProtobufTypeCtor | IProtobufEnumCtor): IProtobufType | IProtobufEnum;
/**
* @return {TProtobufField[]}
* @protected
*/
protected abstract fields(): TProtobufField[];
/**
* @param {TRecursivePartial} message
* @return {Uint8Array}
*/
encode(message: TRecursivePartial): Uint8Array;
/**
* @param {Buffer | Uint8Array} bytes
* @return {TRecursivePartial}
*/
decode(bytes: Buffer | Uint8Array): TRecursivePartial;
}