import type { LoadModuleResult } from '../types/interfaces';
/**
 * The AbstractZenFileLoader acts as a base class for ZenTS's loader classes (e.g. ControllerLoader).
 * It's main purpose is to supply an interface to easy load modules dynamiclly and parsing them to the
 * extending classes in a unified way. If you write a new loader, you should use this class to load the
 * Node.js modules.
 */
export declare abstract class AbstractZenFileLoader {
    /**
     * Load a given module and returns an unitialized version of the module. The exported class is guessed either
     * by using the default export (CommonJS) or by using the modules filename to determine the exported member.
     * This function will throw an error when no exported member could be found.
     *
     * @param filePath Absolute path to the module file
     */
    protected loadModule<T>(filePath: string): Promise<LoadModuleResult<T>>;
    /**
     * Returns all method names of a class.
     *
     * @param classObjProto The prototype of a class
     */
    protected getClassMethods(classObjProto: Record<string, unknown> | null): string[];
}
