import coreApi = require("../parser/wrapped-ast/parserCoreApi");
import core = require("../parser/wrapped-ast/parserCore");
import def = require("raml-definition-system");
import hl = require("../parser/highLevelAST");
import typeSystem = def.rt;
import nominals = typeSystem.nominalTypes;
export declare function dump(node: coreApi.BasicNode | coreApi.AttributeNode, serializeMeta?: boolean): any;
export declare class JsonSerializer {
    private options;
    constructor(options?: SerializeOptions);
    private nodeTransformers;
    private nodePropertyTransformers;
    private ignore;
    private missingProperties;
    printMissingProperties(): string;
    dump(node: any): any;
    dumpInternal(node: any, rootNodeDetails?: boolean, isRoot?: boolean, nodeProperty?: hl.IProperty): any;
    private canBeFragment(node);
    private dumpErrors(errors);
    private dumpErrorBasic(x);
    private stringLooksLikeXML(contents);
    private stringLooksLikeJSON(contents);
    private dumpProperties(props, node);
    serializeScalarsAnnotations(obj: any, node: coreApi.BasicNode | coreApi.AttributeNode, props: {
        [key: string]: nominals.IProperty;
    }): void;
    serializeMeta(obj: any, node: coreApi.BasicNode | coreApi.AttributeNode): void;
    serializeTypeInstance(inst: core.TypeInstanceImpl): any;
    serializeTypeInstanceProperty(prop: core.TypeInstancePropertyImpl): any;
    isDefined(node: any, name: any): boolean;
}
export interface SerializeOptions {
    /**
     * For root nodes additional details can be included into output. If the option is set to `true`,
     * node content is returned as value of the **specification** root property. Other root properties are:
     *
     * * **ramlVersion** version of RAML used by the specification represented by the node
     * * **type** type of the node: Api, Overlay, Extension, Library, or any other RAML type in fragments case
     * * **errors** errors of the specification represented by the node
     * @default false
     */
    rootNodeDetails?: boolean;
    /**
     * Whether to serialize metadata
     * @default true
     */
    serializeMetadata?: boolean;
    dumpXMLRepresentationOfExamples?: boolean;
    dumpSchemaContents?: boolean;
    /**
     * Whether to serialize source maps
     */
    sourceMap?: boolean;
}
export declare function isEmpty(nc: nominals.ITypeDefinition): boolean;
