import { IGXA } from "@intelligentgraphics/igd.core";
import { ICatalogManager } from "../Types";
import { CatalogCache } from "./Cache";
import { getItemId } from "./Util";
export interface ICatalogManagerSettings {
}
export declare abstract class CatalogManager implements ICatalogManager {
    private baseSettings;
    protected cache: CatalogCache;
    protected _image?: string;
    protected _title?: string;
    /**
     * Asynchronous catalog manager creation method.
     *
     * Replaces onInitalizedCallback of Settings
     *
     * @static
     * @param {object} settings
     * @returns {Promise<CatalogManager>}
     * @memberof CatalogManager
     */
    static Create(settings: object): Promise<CatalogManager>;
    isArticleLike: (input: any) => input is IGXA.IArticleItem;
    isFolderLike: (input: any) => input is IGXA.IFolderItem;
    getItemId: typeof getItemId;
    constructor(baseSettings?: ICatalogManagerSettings);
    /**
     * Search for item with supplied id
     *
     * @param {string} id
     * @returns
     * @memberof CatalogManager
     */
    getItem(id: string): Promise<IGXA.TAnyItem>;
    /**
     * Retrieves the folder item.
     * @param folderID internal ID of the folder.
     * @returns the folder item as Promise
     */
    getFolder(folderID: string): Promise<IGXA.IFolderItem | IGXA.IMultiArticleItem | undefined>;
    getArticle(articleId: string): Promise<IGXA.IArticleItem | undefined>;
    getSet(setID: string): Promise<IGXA.ISetItem | undefined>;
    /**
     * Retrieves the content of a folder.
     * @param folderID ID of the folder. undefined should retrieve the root folder.
     * @returns {Promise<IGXA.TAnyItem[]>}
     * @memberof ICatalogManager
     */
    getFolderContent(folderID: string | undefined): Promise<IGXA.TAnyItem[]>;
    /**
     * Searches an article and reports the first folder the article is found in.
     *
     * Resolves with folderID if found. Rejects if none is found
     *
     * @param {string} baseArticleID ID of article that should be searched.
     * @returns {Promise<string>}
     * @memberof ICatalogManager
     */
    getFolderOfArticle(baseArticleID: string): Promise<string | undefined>;
    /**
     * Retrieves folder path to Item.
     * Doesn't include item id in array, unless it is a folderId.
     *
     * Returns undefined if no path is found
     * @param {string} id Article id
     * @returns {Promise<string[]>} Path to item
     * @memberof ICatalogManager
     */
    getItemPath(id: string): Promise<string[] | undefined>;
    /**
     * Retrieves the parent folder item.
     * @param folderID internal ID of the folder.
     * @returns the parent folder item as Promise
     */
    getParentFolder(folderId: string | undefined): Promise<IGXA.IFolderItem | IGXA.IMultiArticleItem | undefined>;
    /**
     * Searches the catalog.
     *
     * @param {string} searchTerm  text that should be searched.
     * @returns {Promise<IGXA.TAnyItem[]>}
     * @memberof ICatalogManager
     */
    searchCatalog(searchTerm: string): Promise<IGXA.TAnyItem[]>;
    abstract getClassName(): string;
    /**
     *  Retrieves the catalog title.
     *
     * @returns {Promise<string>}
     * @memberof CatalogManager
     */
    getTitle(): Promise<string | undefined>;
    /**
     * Retrieves the catalog image.
     *
     * @returns {Promise<string>}
     * @memberof CatalogManager
     */
    getImage(): Promise<string | undefined>;
    /**
     * Retrieves the addables of an item.
     *
     * @param {string} baseArticleID number of the base article for which addables should be searched.
     * @returns {Promise<IGXA.IArticleItem[]>}
     * @memberof CatalogManager
     */
    getAddables(baseArticleID: string): Promise<IGXA.IArticleItem[]>;
    protected detectUnitializedFolder(folder: IGXA.IFolderItem): boolean;
}
export { CatalogCache };
