import { IGXA } from "@intelligentgraphics/igd.core";
import { Session } from "../Types";
/**
 * Result of catalog query
 */
export declare type CatalogQueryResultItem = IGXA.TAnyItem & {
    catalogId: string;
    uuid: string;
    path: string[];
};
/**
 * Defines options to get specific catalog manager
 */
export interface CatalogQuerySpecificManagerOptions {
    /**
     * Try to get catalog manager via article comId
     */
    comId?: string;
    /**
     * Try to get catalog manager via sourceId
     */
    sourceId?: string;
}
export declare type CatalogQueryContext = "ALL_CATALOGS" | {
    type: "comId";
    comId: string;
} | {
    type: "sourceId";
    sourceId: string;
};
/**
 * Neccessary and optional parameters to control catalog query function
 */
export interface CatalogQueryOptions {
    /**
     * Active session. Is data source
     */
    session: Session;
    /**
     *  Defines how deep the query will proceed
     */
    queryDepth: CatalogQueryDepth;
    /**
     * Defines if query should be performed over all or specific catalog managers
     */
    context: CatalogQueryContext;
    /**
     * Like where-clause in sql
     * @param item Current considered item in query
     */
    where: (item: IGXA.TAnyItem) => boolean;
}
/**
 * Defines how deep the query will proceed. ROOT limits query to only root items, INFINITE searches through all items
 */
export declare type CatalogQueryDepth = "ROOT" | "INFINITE";
/**
 * Tries to perform parametrized query to get desired catalog items
 */
export declare const queryCatalogs: ({ queryDepth, session, context, where, }: CatalogQueryOptions) => Promise<CatalogQueryResultItem[]>;
