import { Nullable, NullableResultPromise } from "../base-types";
import { IEntityDefinition } from "../contracts/base";
import { ViewMode } from "../contracts/base/view-mode";
/**
 * Caches definition in memory.
 */
export declare class EntityDefinitionCache {
    private readonly _allCacheKey;
    private readonly _promiseKeyPrefix;
    private readonly _map;
    constructor();
    /**
     * Load the specified definition into the cache.
     * @param definition - The entity definition
     * @param includeConditionalMembers - Include conditional members
     * @param loadPermissions - Load permissions for the definition
     */
    load(definition: IEntityDefinition, includeConditionalMembers?: boolean, loadPermissions?: boolean): void;
    /**
     * Load the specified definition into the cache asynchronously.
     * @param key - The definition name or definition id
     * @param promise - A promise resolving to the definition
     * @param includeConditionalMembers - Include conditional members
     * @param loadPermissions - Load permissions for the definition
     */
    loadAsync(key: string | number, promise: NullableResultPromise<IEntityDefinition>, includeConditionalMembers?: boolean, loadPermissions?: boolean): Promise<void>;
    /**
     * Retrieve the definition with specified name or id from the cache.
     * @param key - The definition name or definition id
     * @param includeConditionalMembers - Include conditional members
     * @param loadPermissions - Load permissions for the definition
     * @returns The cached definition or null
     */
    get(key: string | number, includeConditionalMembers?: boolean, loadPermissions?: boolean): Nullable<IEntityDefinition>;
    /**
     * Retrieve the definition with specified name or id from the cache asynchronously.
     * @param key - The definition name or definition id
     * @param includeConditionalMembers - Include conditional members
     * @param loadPermissions - Load permissions for the definition
     * @returns A promise resolving to the cached definition or null
     */
    getAsync(key: string | number, includeConditionalMembers?: boolean, loadPermissions?: boolean): Nullable<NullableResultPromise<IEntityDefinition>>;
    /**
     * Loads all definitions into the cache.
     * @param definitions - An array of entity definitions
     * @param loadAllIndividually - Flag indicating whether to load the definitions individually or not
     * @param loadAsGroup - Key to be used to store the array of definitions, or false to not load the array
     * @param includeConditionalMembers - Include conditional members
     * @param loadPermissions - Load permissions for the definitions
     */
    loadAll(definitions: Array<IEntityDefinition>, loadAllIndividually?: boolean, loadAsGroup?: false | string, includeConditionalMembers?: boolean, loadPermissions?: boolean, viewMode?: ViewMode, excludeTaxonomyDefinitions?: boolean, excludeSystemOwnedDefinitions?: boolean, filter?: string, definitionsToLoadByName?: string, definitionsToLoadById?: string): void;
    /**
     * Retrieves an array of definitions that was cached with the specified group key.
     *
     * @remarks
     * Can not be used to retrieve a single cached definition. Use {@link EntityDefinitionCache.get} instead.
     *
     * @param group - The key with which the group of definitions was stored
     * @param includeConditionalMembers - Include conditional members
     * @param loadPermissions - Load permissions for the definitions
     */
    getAll(group?: string, includeConditionalMembers?: boolean, loadPermissions?: boolean, viewMode?: ViewMode, excludeTaxonomyDefinitions?: boolean, excludeSystemOwnedDefinitions?: boolean, filter?: string, definitionsToLoadByName?: string, definitionsToLoadById?: string): Nullable<Array<IEntityDefinition>>;
    /**
     * Invalidates/removes the definition with specified name or id from the cache.
     * @param key - The definition name or definition id
     * @param includeConditionalMembers - Include conditional members
     * @param loadPermissions - Load permissions for the definition
     */
    invalidate(key?: string | number, includeConditionalMembers?: boolean, loadPermissions?: boolean): void;
    private validateKey;
    private getCacheKey;
}
