import * as R from "./R";
import { RecordNode, ROM, RecordMap, RT, RTP, rtp, createRecord, emptyROM } from "./R";
import { RecordUtils } from "./R/RecordFactory";
import { ElementUtils } from "./recordFactories/ElementFactory";
import { ProjectUtils } from "./recordFactories/ProjectFactory";
import * as RF from "./recordFactories";
import { en, sn, vn, rn, pn, fn, CogObjectType } from "./definitions";
/**
 * Use r.record(json) for all RecordNode type objects, except the below ones
 * For project, scene, rule and element only there are overridden factories
 */
declare const r: {
    record: <T extends R.RT>(json: R.RecordNode<T>) => R.RecordFactory<T>;
    project: (json: RecordNode<RT.project>) => RF.ProjectFactory;
    scene: (json: RecordNode<RT.scene>) => RF.SceneFactory;
    element: (json: RecordNode<RT.element>) => RF.ElementFactory;
};
declare const rUtils: {
    ElementUtils: typeof ElementUtils;
    ProjectUtils: typeof ProjectUtils;
    RecordUtils: typeof RecordUtils;
};
declare const getFactory: (rJson: RecordNode<RT>) => R.RecordFactory<RT>;
export { R, r, RF, rUtils, RecordNode, ROM, RecordMap, RT, RTP, rtp, createRecord, emptyROM, getFactory, en, sn, vn, rn, pn, fn, CogObjectType };
