import { Class } from 'ts-browser-helpers'; declare const jsPropTypes: { readonly string: "string"; readonly number: "number"; readonly boolean: "boolean"; readonly object: "object"; }; export type JSPropTypes = (typeof jsPropTypes[keyof typeof jsPropTypes]) | `"${string}"` | `${number}` | `${boolean}`; type KeyofPropType = string; type ClassName = string; interface PropTypeArray { arrayOf: TypedType; type: 'Array'; } interface PropTypeObject { recordOf: Map; type: 'Object'; } interface PropTypeUnion { oneOf: Set; type: 'Union'; } export type TypedType = JSPropTypes | ClassName | 'null' | 'Object' | PropTypeUnion | PropTypeArray | PropTypeObject | { type: ClassName; }; export interface TypedClass { key: ClassName; getId: (obj: any) => string; ctor: Class; getLabel?: (obj?: T) => string | any; getIcon?: (obj?: T) => string | any; setName?: (obj: T, name: string) => void; } export declare class TypeSystem { static Classes: Map>; static AddClass(def: TypedClass): void; static GetClass(type: TypedType): TypedClass | undefined; static GetClassType(ctor: Class): ClassName | undefined; static GetType(v: any, allowSerializable?: boolean): TypedType | false; static NonLiteral(type: TypedType): TypedType; static TypeToString(type: TypedType): string; /** * Returns true if `tar = src` is valid * @param src * @param tar * @constructor */ static CanAssign(src: TypedType, tar: TypedType): boolean; } export {}; //# sourceMappingURL=../../../src/plugins/extras/components/typeSystem.d.ts.map