import { Package } from "./MultiArticle";
import { FilterMode, MultiArticleConfiguration } from "./MultiArticleFilter";
/**
 * A class implementing the cascade mode for multi article traversal.
 * A cascade starts with a MA and lists all its properties and available values.
 * After setting a value, properties of the descendants which fit the config are also shown.
 */
export default class CascadeMode implements FilterMode {
    /** An array of all root descendants */
    private rootDescendants;
    /** The multi articles package */
    private multiArticles;
    /** The configuration of the root MA */
    private rootConfiguration;
    private _root;
    /** The properties of the root MA */
    private rootProperties;
    root: string;
    /**
     * The constructor
     * @param multiArticles
     * @param root
     */
    constructor(multiArticles: Package, root: string);
    /**
     * Get all properties for the configuration
     * @param configuration
     * @returns {any}
     */
    getProperties(configuration: MultiArticleConfiguration): string[];
    /**
     * Get all property values. For this, look for articles that match the configuration.
     * The article is allowed to differ in its own properties.
     * @param property
     * @param configuration
     * @returns possible property values
     */
    getPropertyValues(property: string, configuration: MultiArticleConfiguration): string[];
}
