import * as React from "react";
import * as PropTypes from "prop-types";
import { ExtendedDateFilters } from "@gooddata/typings";
interface IStatePropsIntersection {
    excludeCurrentPeriod: boolean;
    selectedFilterOption: ExtendedDateFilters.DateFilterOption;
}
export interface IDateFilterOwnProps extends IStatePropsIntersection {
    filterOptions: ExtendedDateFilters.IDateFilterOptionsByType;
    availableGranularities: ExtendedDateFilters.DateFilterGranularity[];
    isEditMode?: boolean;
    customFilterName?: string;
    dateFilterMode: ExtendedDateFilters.DashboardDateFilterConfigMode;
    locale?: string;
}
export interface IDateFilterCallbackProps {
    onApply: (dateFilterOption: ExtendedDateFilters.DateFilterOption, excludeCurrentPeriod: boolean) => void;
    onCancel?: () => void;
    onOpen?: () => void;
    onClose?: () => void;
}
export interface IDateFilterProps extends IDateFilterOwnProps, IDateFilterCallbackProps {
}
interface IDateFilterState extends IStatePropsIntersection {
    initExcludeCurrentPeriod: boolean;
    initSelectedFilterOption: ExtendedDateFilters.DateFilterOption;
    isExcludeCurrentPeriodEnabled: boolean;
}
export declare class DateFilter extends React.PureComponent<IDateFilterProps, IDateFilterState> {
    static propTypes: {
        excludeCurrentPeriod: PropTypes.Validator<any>;
        selectedFilterOption: PropTypes.Validator<any>;
        filterOptions: PropTypes.Validator<any>;
        availableGranularities: PropTypes.Validator<any>;
        isEditMode: PropTypes.Requireable<any>;
        customFilterName: PropTypes.Requireable<any>;
        dateFilterMode: PropTypes.Validator<any>;
        locale: PropTypes.Requireable<any>;
        onApply: PropTypes.Validator<any>;
        onCancel: PropTypes.Requireable<any>;
        onOpen: PropTypes.Requireable<any>;
        onClose: PropTypes.Requireable<any>;
    };
    static defaultProps: Partial<IDateFilterProps>;
    static getDerivedStateFromProps(nextProps: IDateFilterProps, prevState: IDateFilterState): IDateFilterState;
    private static getStateFromProps;
    private static getStateFromSelectedOption;
    constructor(props: IDateFilterProps);
    render(): React.ReactNode;
    private handleApplyClick;
    private onChangesDiscarded;
    private onCancelClicked;
    private onDropdownOpenChanged;
    private handleExcludeCurrentPeriodChange;
    private handleSelectedFilterOptionChange;
}
export declare const testAPI: {
    normalizeSelectedFilterOption: (selectedFilterOption: ExtendedDateFilters.DateFilterOption) => ExtendedDateFilters.DateFilterOption;
};
export {};
