import type { AbstractBaseCommand, CommandMetaData, LoadersContract } from '../types.ts'; /** * Fs loader exposes the API to load commands from a directory. All files * ending with ".js", ".cjs", ".mjs", ".ts" and ".mts" are considered * as commands * * @example * ```ts * const loader = new FsLoader('./commands') * const metadata = await loader.getMetaData() * const command = await loader.getCommand(metadata[0]) * ``` */ export declare class FsLoader implements LoadersContract { #private; /** * Create a new filesystem loader * * @param comandsDirectory - Path to the directory containing command files * @param filter - Optional filter function to exclude certain files */ constructor(comandsDirectory: string, filter?: (filePath: string) => boolean); /** * Returns the metadata of all commands in the directory * * @example * ```ts * const metadata = await loader.getMetaData() * metadata.forEach(cmd => console.log(cmd.commandName)) * ``` */ getMetaData(): Promise; /** * Returns the command class constructor for a given command. Null * is returned when unable to lookup the command * * @param metaData - The command metadata to find * * @example * ```ts * const command = await loader.getCommand(metadata) * if (command) { * const instance = new command(kernel, parsed, ui, prompt) * } * ``` */ getCommand(metaData: CommandMetaData): Promise; }