import * as Core from "@intelligentgraphics/ig.gfx.core";
import { Package } from "./MultiArticle";
export declare type MultiArticleConfiguration = Record<string, string>;
/** An interface for the different filter modes. */
export interface FilterMode {
    /**
     * Get all properties available for the current configuration.
     * @param configuration
     */
    getProperties(configuration: MultiArticleConfiguration): Array<string>;
    /**
     * Get all available property values for the property under the current configuration
     * @param property
     * @param configuration
     */
    getPropertyValues(property: string, configuration: MultiArticleConfiguration): Array<string>;
    /**
     * The root with which the filter is started.
     */
    root: string;
}
/** Class for filtering in the multi articles package  */
export declare class MultiArticleFilter {
    /** The multi articles */
    private multiArticles;
    /** The current configuration */
    private configuration;
    /** An array of all (concrete) article names. */
    private allArticles;
    /** An array of all (concrete) article names. */
    private availableArticles;
    /** The current filter mode. */
    private mode?;
    /**
     * The constructor.
     * @param multiArticles
     */
    constructor(multiArticles: Package);
    /**
     * Start the filter with the given mode. Reset configurations.
     * @param mode
     */
    startMode(mode: FilterMode): void;
    /**
     * Set the property to the given name in the current configuration
     * @param name
     * @param value
     */
    setProperty(name: string, value: string): void;
    /**
     * Use the filter mode to obtain all properties available for the current configuration.
     * @returns {Array<string>}
     */
    getProperties(): Array<string>;
    /**
     * Use the filter mode to get the viable values for a given property.
     * @param property
     * @returns {Array<string>}
     */
    getValues(property: string): Array<string>;
    /**
     * Get the current value of a property.
     * @param property
     * @returns {any}
     */
    getCurrentValue(property: string): string;
    getPropertyInformation(type: string, property: string): Core.IGXM.IDefinitionInformation | undefined;
    /**
     * Get all concrete articles that fit the current configuration
     * @returns {string[]}
     */
    getViableArticles(): Array<string>;
    private concreteIdsFromMultiArticleId;
    /**
     * Reset the internal configuration, preserving the mode
     */
    reset(): void;
    setRoot(newRoot: string, reset?: boolean): void;
    private getMode;
}
