import * as React from "react";
import * as MultiArticle from "@intelligentgraphics/ig.gfx.multiarticle";
declare class Filter extends React.PureComponent<IFilterProps, IFilterState> {
    static contextType: React.Context<MultiArticle.Package | undefined>;
    static getDerivedStateFromProps(nextProps: IFilterProps, nextState: IFilterState): {
        configuration: Record<string, string>;
    } | null;
    context: MultiArticle.Package | undefined;
    state: IFilterState;
    private filter;
    private filterMode;
    render(): JSX.Element | null;
    componentDidMount(): void;
    componentDidUpdate(prevProps: IFilterProps, prevState: IFilterState): void;
    private buildInitialState;
    private buildFilterContext;
    private getViableArticles;
    private getValues;
    private getCurrentValue;
    private hasProperty;
    private getAllProperties;
    private getAllValues;
    private reset;
    private setValue;
    private getPackage;
}
export default Filter;
export declare type FilterMode = "All" | "Cascade";
export interface IFilterProps {
    children(props: {
        properties: string[];
    }): React.ReactElement | null;
    package?: MultiArticle.Package;
    root: string;
    configuration?: Record<string, string>;
    initialConfiguration?: Record<string, string>;
    filterMode: FilterMode | (new (data: MultiArticle.Package, root: string) => MultiArticle.FilterMode);
    filter?: MultiArticle.MultiArticleFilter;
    updateConfiguration?(key: string, value: string | number): void;
    onViableArticlesChange?(articles: string[]): void;
}
export interface IFilterState {
    configuration: Record<string, any>;
    availableProperties: string[];
    ready: boolean;
}
