/**
 * @copyright Sister Software
 * @license AGPL-3.0
 * @author Teffen Ellis, et al.
 */
import { Alpha3bLanguageCode } from "mailwoman/core/resources/languages";
import { TextNormalizer } from "mailwoman/core/tokenization";
import { PathBuilder, PathBuilderLike } from "path-ts";
import { ResourceMapCache } from "../ResourceMapCache.js";
import { DisposableSet } from "../set.js";
/**
 * Index mapping a specific value to originating languages.
 *
 * If a value is present in this index, it means that the value is a valid value in at least one
 * language.
 */
export type WhosOnFirstLocaleIndex = Map<string, Set<string>>;
export type ReadonlyWhosOnFirstIndex = ReadonlyMap<string, ReadonlySet<string>>;
export interface WOFCacheOptions {
    dataDirectory: PathBuilderLike;
    internalDataDirectory: PathBuilderLike;
    patterns: string[];
    normalizer: TextNormalizer;
    blacklist?: Set<string>;
}
/**
 * Index mapping a specific **placename** to its originating languages.
 *
 * If a value is present in this index, it means that the value is a valid in at least one language.
 */
export declare class WOFPlacenameCache extends ResourceMapCache<string, DisposableSet<Alpha3bLanguageCode>> {
    normalizer: TextNormalizer;
    blacklist?: Set<string>;
    dataDirectory: PathBuilder;
    internalDataDirectory: PathBuilder;
    patterns: string[];
    displayName: string;
    constructor(options: WOFCacheOptions);
    /**
     * Add a collection of language codes to a placename.
     *
     * @param placename The placename to add.
     * @param languageCodes The language codes to add.
     */
    add(placename: string, ...languageCodes: Alpha3bLanguageCode[]): void;
    /**
     * Remove a placename from the index.
     *
     * @param placename The placename to remove.
     */
    remove(placename: string): void;
    ready(): Promise<this>;
    marshall(filePatterns: string[], dataDirectory: PathBuilder): Promise<void>;
    toJSON(): [string, Alpha3bLanguageCode[]][];
}
//# sourceMappingURL=loader.d.ts.map