import { Logger } from '@anglr/common';
import { Dictionary } from '@jscrpt/common';
import { DynamicModuleProvider, DynamicItemLoaderValidatorFn } from './dynamicItemLoader.interface';
import { DynamicItemSource } from '../../interfaces';
import { DynamicModuleDataExtractor } from '../dynamicModuleDataExtractor/dynamicModuleDataExtractor.service';
/**
 * Service used for loading dynamic items
 */
export declare class DynamicItemLoader<TDynamicItemDef = any> {
    protected providers: DynamicModuleProvider[];
    protected extractors: DynamicModuleDataExtractor<TDynamicItemDef>[];
    protected validatorFn: DynamicItemLoaderValidatorFn<TDynamicItemDef>;
    protected logger?: Logger | undefined;
    protected noCache?: boolean | undefined;
    /**
     * Cached dynamic items definition
     */
    protected cachedDynamicItems: Dictionary<TDynamicItemDef | null>;
    constructor(providers: DynamicModuleProvider[], extractors: DynamicModuleDataExtractor<TDynamicItemDef>[], validatorFn: DynamicItemLoaderValidatorFn<TDynamicItemDef>, logger?: Logger | undefined, noCache?: boolean | undefined);
    /**
     * Loads dynamic item, or null if not found
     * @param source - Definition of source for dynamic item
     */
    loadItem(source: DynamicItemSource): Promise<TDynamicItemDef | null>;
}
//# sourceMappingURL=dynamicItemLoader.service.d.ts.map