import { State } from '../shared/State';
import { AmConfigEntityInterface, type IdObjectSkeletonInterface, type NoIdObjectSkeletonInterface, type PagedResult, type QueryResult } from './ApiTypes';
export interface NodeRefSkeletonInterface {
    connections: Record<string, string>;
    displayName: string;
    nodeType: string;
    x: number;
    y: number;
}
export interface StaticNodeRefSkeletonInterface {
    x: number;
    y: number;
}
export interface InnerNodeRefSkeletonInterface {
    _id: string;
    displayName: string;
    nodeType: string;
}
export type NodeSkeleton = AmConfigEntityInterface & {
    nodes?: InnerNodeRefSkeletonInterface[];
    tree?: string;
    identityResource?: string;
    script?: string;
    emailTemplateName?: string;
    filteredProviders?: string[];
    useScript?: boolean;
    useFilterScript?: boolean;
};
export type NodeTypeSkeleton = IdObjectSkeletonInterface & {
    name: string;
    collection: boolean;
    tags: string[];
    metadata: {
        tags: string[];
        [k: string]: string | number | boolean | string[];
    };
    help: string;
};
/**
 * Get all node types
 * @returns {Promise<QueryResult<NodeTypeSkeleton>>} a promise that resolves to an array of node type objects
 */
export declare function getNodeTypes({ state, }: {
    state: State;
}): Promise<QueryResult<NodeTypeSkeleton>>;
/**
 * Get all nodes
 * @returns {Promise} a promise that resolves to an object containing an array of node objects
 */
export declare function getNodes({ state, }: {
    state: State;
}): Promise<QueryResult<NodeSkeleton>>;
/**
 * Get all nodes by type
 * @param {string} nodeType node type
 * @returns {Promise<PagedResult<NodeSkeleton>>} a promise that resolves to an object containing an array of node objects of the requested type
 */
export declare function getNodesByType({ nodeType, state, }: {
    nodeType: string;
    state: State;
}): Promise<PagedResult<NodeSkeleton>>;
/**
 * Get node by uuid and type
 * @param {string} nodeId node uuid
 * @param {string} nodeType node type
 * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object
 */
export declare function getNode({ nodeId, nodeType, state, }: {
    nodeId: string;
    nodeType: string;
    state: State;
}): Promise<NodeSkeleton>;
/**
 * Create node by type
 * @param {string} nodeType node type
 * @param {object} nodeData node object
 * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object
 */
export declare function createNode({ nodeType, nodeData, state, }: {
    nodeType: string;
    nodeData: NodeSkeleton;
    state: State;
}): Promise<NodeSkeleton>;
/**
 * Put node by uuid and type
 * @param {string} nodeId node uuid
 * @param {string} nodeType node type
 * @param {object} nodeData node object
 * @returns {Promise} a promise that resolves to an object containing a node object
 */
export declare function putNode({ nodeId, nodeType, nodeData, state, }: {
    nodeId: string;
    nodeType: string;
    nodeData: NodeSkeleton | NoIdObjectSkeletonInterface;
    state: State;
}): Promise<any>;
/**
 * Delete node by uuid and type
 * @param {String} nodeId node uuid
 * @param {String} nodeType node type
 * @returns {Promise} a promise that resolves to an object containing a node object
 */
export declare function deleteNode({ nodeId, nodeType, state, }: {
    nodeId: string;
    nodeType: string;
    state: State;
}): Promise<any>;
//# sourceMappingURL=NodeApi.d.ts.map