import { DirectoryStep, FileWriteConfig, HtmlLinks, HtmlMeta, OutputFunc } from "ssg-api";
import { HtmlRR0Context } from "RR0Context.js";
import { Book } from "./Book.js";
/**
 * Scan directories for book information, then populates a template with collected data.
 */
export declare class BookDirectoryStep extends DirectoryStep {
    protected outputFunc: OutputFunc;
    protected bookMeta: Map<string, HtmlMeta>;
    protected bookLinks: Map<string, HtmlLinks>;
    constructor(rootDirs: string[], templateFileName: string, outputFunc: OutputFunc, config: FileWriteConfig, name: string, bookMeta: Map<string, HtmlMeta>, bookLinks: Map<string, HtmlLinks>);
    static create(outputFunc: OutputFunc, config: FileWriteConfig, bookMeta: Map<string, HtmlMeta>, bookLinks: Map<string, HtmlLinks>): Promise<BookDirectoryStep>;
    protected processDirs(context: HtmlRR0Context, dirNames: string[]): Promise<void>;
    protected scan(context: HtmlRR0Context, dirNames: string[]): Book[];
    /**
     * Convert an array of Case[] to an <ul> HTML unordered list.
     *
     * @param books
     */
    protected toList(books: Book[]): string;
    /**
     * Convert a Case object to an HTML list item.
     *
     * @param dirBook
     */
    protected toListItem(dirBook: Book): string;
    protected tocAll(context: HtmlRR0Context, books: Book[]): Promise<void>;
    protected toc(context: HtmlRR0Context, book: Book): Promise<void>;
}
