export interface LoaderConfig {
    subdirectory: string;
    excludedFiles: string[];
    extensions: string[];
}
export declare abstract class BaseLoader<T> {
    protected readonly directory: string;
    protected readonly config: LoaderConfig;
    constructor(config: LoaderConfig, basePath?: string);
    private resolveDirectory;
    hasItems(): Promise<boolean>;
    protected abstract validateItem(item: any): item is T;
    protected abstract createInstance(ItemClass: any): T;
    protected abstract getItemName(item: T): string;
    loadItems(): Promise<T[]>;
}
