import { FieldTypes, Fields } from "./common.js"; export declare abstract class FieldSet { static type: number; static typeName: string; static fieldTypes: FieldTypes; readonly type: number; readonly typeName: string; readonly fieldTypes: FieldTypes; protected fields: Fields; constructor(); private get _static(); setFields(obj: Fields): void; setFieldsFromArray(names: string[], array: any[]): void; getField(name: string): any; getFields(names: string[]): any[]; toObject(): Fields; throwTypeError(msg: string): never; } export interface ConcreteFieldSet { type: number; fieldTypes: FieldTypes; new (): T; } export declare class FieldSetFactory { private registry; private requiredFields; constructor(requiredFields?: string[]); add(cls: ConcreteFieldSet): void; has(type?: any): boolean; lookup(type?: any): ConcreteFieldSet; fromObject(fields: Fields): T; }