import { Subscription } from "rxjs";
import { ChartMapType } from "../RcsbGroupChart/GroupChartLayout";
import { SearchQuery } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchQueryInterface";
import { GroupProvenanceId } from "@rcsb/rcsb-api-tools/lib/RcsbDw/Types/DwEnums";
import { ChartObjectInterface } from "@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface";
import { ReturnType } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums";
import { SearchQueryType } from "@rcsb/rcsb-search-tools/lib/SearchQueryTools/SearchQueryInterfaces";
export interface SearchQueryContextManagerSubjectInterface {
    attributeName: string;
    chartMap: ChartMapType;
    searchQuery?: SearchQuery;
    groupId: string;
    groupProvenanceId: GroupProvenanceId;
}
interface DataSubjectInterface {
    attributeName: string;
    chartMap: Map<string, ChartObjectInterface[][]>;
}
export declare class SearchQueryContextManager {
    private static readonly searchQueryObservable;
    private static readonly dataObservable;
    private static readonly attributeList;
    private static readonly currentSearchQuery;
    private static readonly groupProvenanceId;
    private static readonly groupId;
    static setConfig(config: {
        searchQuery?: SearchQuery;
        groupProvenanceId?: GroupProvenanceId;
        groupId?: string;
    }): void;
    static updateSearchQuery(attributeName: string, query: SearchQueryType, returnType: ReturnType): Promise<SearchQuery>;
    static replaceSearchQuery(attributeName: string, searchQuery?: SearchQuery): Promise<void>;
    static subscribe(f: (x: SearchQueryContextManagerSubjectInterface) => void, attr?: string): Subscription;
    static dataSubscription(f: (x: DataSubjectInterface) => void, attr?: string): Subscription;
    private static next;
    static getAttributeList(): string[];
}
export {};
