import * as React from "react";
import * as PropTypes from "prop-types";
import { SDK } from "@gooddata/gooddata-js";
import { AFM, VisualizationInput } from "@gooddata/typings";
import { IAttributeElement } from "./model";
export interface IAttributeFilterProps {
    onApply?: (...params: any[]) => any;
    onApplyWithFilterDefinition?: (filter: VisualizationInput.IPositiveAttributeFilter | VisualizationInput.INegativeAttributeFilter) => void;
    sdk?: SDK;
    uri?: string;
    projectId?: string;
    identifier?: string;
    filter?: VisualizationInput.IPositiveAttributeFilter | VisualizationInput.INegativeAttributeFilter;
    locale?: string;
    fullscreenOnMobile?: boolean;
    title?: string;
    FilterLoading?: React.ComponentType<{}>;
    FilterError?: React.ComponentType<IFilterErrorProps>;
}
export interface IFilterErrorProps {
    error: string;
}
export declare function createOldFilterDefinition(id: string, selection: IAttributeElement[], isInverted: boolean, isUsingTextFilter?: boolean): {
    [x: string]: string | string[];
    id: string;
    type: string;
};
export declare function createAfmFilter(id: string, selection: IAttributeElement[], isInverted: boolean, isUsingTextFilter?: boolean): AFM.AttributeFilterItem;
/**
 * AttributeFilter
 * is a component that renders a dropdown populated with attribute values
 */
export declare class AttributeFilter extends React.PureComponent<IAttributeFilterProps> {
    static propTypes: {
        uri: PropTypes.Requireable<any>;
        identifier: PropTypes.Requireable<any>;
        filter: PropTypes.Requireable<any>;
        projectId: PropTypes.Requireable<any>;
        onApply: PropTypes.Requireable<any>;
        onApplyWithFilterDefinition: PropTypes.Requireable<any>;
        fullscreenOnMobile: PropTypes.Requireable<any>;
        FilterLoading: PropTypes.Requireable<any>;
        FilterError: PropTypes.Requireable<any>;
        locale: PropTypes.Requireable<any>;
        title: PropTypes.Requireable<any>;
    };
    static defaultProps: Partial<IAttributeFilterProps>;
    private sdk;
    constructor(props: IAttributeFilterProps);
    componentWillReceiveProps(nextProps: IAttributeFilterProps): void;
    render(): JSX.Element;
    onApply: (selection: IAttributeElement[], isInverted: boolean) => void;
    private isInverted;
    private getIdentifierOrUri;
    private getFilterBody;
    private getSelection;
    private renderContent;
}
