import * as React from "react";
export interface IFilterValue {
    value: string;
    disabled?: boolean;
}
export interface IFilterElementState {
    values: IFilterValue[];
    selectedValue?: string;
}
export interface IFilterChildProps extends IFilterElementState {
    onChange(value: string): void;
}
export declare type IFilterElementStrategy = "invalidAsDisabled" | "default" | "all";
export declare type MapElementStateToProps<S = {}> = (state: IFilterChildProps, ownProps: any) => S;
export interface FilterElementProps {
    property: string;
    displayStrategy?: IFilterElementStrategy;
    dependsOn?: string[];
}
export declare const useFilterElement: ({ property, displayStrategy, dependsOn, }: FilterElementProps) => {
    onChange: (newValue: string) => void;
    values: IFilterValue[];
    selectedValue?: string | undefined;
};
declare const _default: <S extends object = IFilterChildProps>(mapElementStateToProps?: MapElementStateToProps<S>) => <T extends Partial<S>>(component: React.ComponentType<T>) => (props: Pick<T & S, ({ [P in Extract<keyof S, string> | Extract<keyof T, string>]: P; } & { [P_1 in Extract<keyof S, string>]: never; } & {
    [x: string]: never;
})[Extract<keyof S, string> | Extract<keyof T, string>]> & FilterElementProps) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, string | any | (new (props: any) => React.Component<any, any, any>)> | null) | (new (props: any) => React.Component<any, any, any>)>;
export default _default;
