import { IJsonSchema, IRestEntity } from '@jacquesparis/objects-model';
import { ObjectNode } from './../../models/object-node.model';
import { ObjectType } from './../../models/object-type.model';
import { CurrentContext, NodeContext } from './../application.service';
import { ObjectNodeService } from './../object-node/object-node.service';
import { ObjectTypeService } from './../object-type.service';
import { EntityDefinitionInterface, EntityDefinitionService } from './entity-definition.service';
export declare const OBJECT_NODE_SCHEMA: IJsonSchema;
export interface OneOfTreeOption {
    namespaceName?: string;
    namespaceType?: string;
    ownerName?: string;
    ownerType?: string;
    treeType: string;
}
interface OneOfNodeOption {
    namespaceName?: string;
    namespaceType?: string;
    ownerName?: string;
    ownerType?: string;
    treeType?: string;
    treeName?: string;
    nodeType: string;
}
export declare class ObjectNodeDefinitionService implements EntityDefinitionInterface {
    protected objectTypeService: ObjectTypeService;
    protected objectNodeService: ObjectNodeService;
    protected entityDefinitionService: EntityDefinitionService;
    providerId: string;
    serviceId: string;
    constructor(objectTypeService: ObjectTypeService, objectNodeService: ObjectNodeService, entityDefinitionService: EntityDefinitionService);
    completeReturnedEntity(entity: IRestEntity, ctx: CurrentContext): Promise<void>;
    getObjectNodeDefinition(objectType: ObjectType, ctx: NodeContext, forCreation?: boolean): Promise<IJsonSchema>;
    completeProperties(properties: {
        [name: string]: any;
    }, ctx: NodeContext): Promise<void>;
    protected oneOfTree(oneOfTreeOptions: OneOfTreeOption[], ctx: NodeContext): Promise<{
        enum: string[];
        title: string;
    }[]>;
    getTreeIdFromTreeOption(oneOfTreeOption: OneOfTreeOption, owner: ObjectNode, namespace: ObjectNode, tree: ObjectNode): string;
    protected addTreeOption(oneOfTreeOption: OneOfTreeOption, owner: ObjectNode, namespace: ObjectNode, tree: ObjectNode, result: {
        enum: string[];
        title: string;
    }[], ctx: NodeContext): void;
    protected oneOfNode(oneOfNodeOptions: OneOfNodeOption[], ctx: NodeContext): Promise<{
        enum: string[];
        title: string;
    }[]>;
}
export {};
