import { BucketFacet } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchResultInterface";
import { FacetMemberInterface } from "./FacetStore/FacetMemberInterface";
import { AttributeTextQueryParameters } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchQueryInterface";
import { Service } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums";
import { ChartDisplayConfigInterface, ChartObjectInterface } from "@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface";
import { RcsbSearchAttributeType } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchMetadata";
export type SearchFilter = {
    attribute: RcsbSearchAttributeType;
    value: AttributeTextQueryParameters['value'];
    operator: AttributeTextQueryParameters["operator"];
    service: Service.Text | Service.TextChem;
};
export interface RcsbChartInterface<T = any> extends Omit<FacetMemberInterface, "id" | "facet"> {
    data: ChartObjectInterface<T>[];
    filters?: SearchFilter[];
}
export declare class FacetTools {
    static getResultDrilldowns(facetMembers: FacetMemberInterface[], searchResultFacets: Array<BucketFacet>): Array<RcsbChartInterface>;
    static subtractDrilldowns(partial: Array<RcsbChartInterface>, full: Array<RcsbChartInterface>): Array<RcsbChartInterface>;
    static getFacetFromName(facetMembers: FacetMemberInterface[], name: string): FacetMemberInterface | undefined;
    static addChartDisplayConfig(chart: RcsbChartInterface, chartDisplayConfig: Partial<ChartDisplayConfigInterface>): {
        chartConfig: {
            chartDisplayConfig: Partial<ChartDisplayConfigInterface>;
            mostPopulatedGroups?: number;
            domainMinValue?: number;
            domainMaxValue?: number;
            domainEmptyBins?: boolean;
            histogramBinIncrement?: number;
            tickIncrement?: {
                origin: number;
                increment: number;
            };
            tickFormat?: {
                domAxis?: (x: string | number) => string;
                imgAxis?: (x: string | number) => string;
            };
            axisLabel?: string;
            barClickCallback?: import("@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface").BarClickCallbackType;
            sort?: (b: import("@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface").ChartDataColumnInterface, a: import("@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface").ChartDataColumnInterface) => number;
            tooltipText?: (a: import("@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface").ChartDataValueInterface) => string | string[] | undefined;
        };
        data: ChartObjectInterface<any>[];
        filters?: SearchFilter[];
        title?: string | undefined;
        attribute: RcsbSearchAttributeType;
        attributeName: string;
        chartType: import("@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface").ChartType;
        facetConfig?: import("./FacetStore/FacetMemberInterface").FacetConfigInterface | undefined;
        contentType: "date" | "number" | "string";
    };
    private static includeMissingFacets;
    private static getFacetChartTypeFromAttribute;
    private static getFacetFiltersFromName;
}
