import ts = require("./typesystem");
import { TypeInformation } from "./typesystem";
import { AbstractType } from "./typesystem";
export declare class FacetPrototype {
    private _construct;
    private _constructWithValue;
    constructor(_construct: () => TypeInformation, _constructWithValue: (x: any) => TypeInformation);
    isSimple(): boolean;
    newInstance(): ts.TypeInformation;
    createWithValue(v: any): ts.TypeInformation;
    isApplicable(t: ts.AbstractType): boolean;
    isInheritable(): boolean;
    isConstraint(): boolean;
    isMeta(): boolean;
    name(): string;
}
export declare class Registry {
    constraints: FacetPrototype[];
    meta: FacetPrototype[];
    known: {
        [name: string]: FacetPrototype;
    };
    constructor();
    allPrototypes(): FacetPrototype[];
    buildFacet(n: string, value: any): ts.TypeInformation;
    facetPrototypeWithName(n: string): FacetPrototype;
    applyableTo(t: AbstractType): FacetPrototype[];
    allMeta(): FacetPrototype[];
}
export declare function getInstance(): Registry;
