import { StateCreator } from 'zustand';
import { AnalysisBuilderStore } from '../analysisBuilderStore';
import { Filter, QueryMergeStrategy, CubeQuery, MultiQueryConfig } from '../../types';
import { AnalysisBuilderState } from '../../components/AnalysisBuilder/types';
/**
 * Query slice state
 */
export interface QuerySliceState {
    /** Array of query states (one per tab) */
    queryStates: AnalysisBuilderState[];
    /** Index of the currently active query tab */
    activeQueryIndex: number;
    /** Strategy for merging multi-query results */
    mergeStrategy: QueryMergeStrategy;
}
/**
 * Query slice actions
 */
export interface QuerySliceActions {
    setQueryStates: (states: AnalysisBuilderState[]) => void;
    updateQueryState: (index: number, updater: (state: AnalysisBuilderState) => AnalysisBuilderState) => void;
    setActiveQueryIndex: (index: number) => void;
    setMergeStrategy: (strategy: QueryMergeStrategy) => void;
    addQuery: () => void;
    removeQuery: (index: number) => void;
    addMetric: (field: string, label?: string) => void;
    removeMetric: (id: string) => void;
    toggleMetric: (fieldName: string) => void;
    reorderMetrics: (fromIndex: number, toIndex: number) => void;
    addBreakdown: (field: string, isTimeDimension: boolean, granularity?: string) => void;
    removeBreakdown: (id: string) => void;
    toggleBreakdown: (fieldName: string, isTimeDimension: boolean, granularity?: string) => void;
    setBreakdownGranularity: (id: string, granularity: string) => void;
    toggleBreakdownComparison: (id: string) => void;
    reorderBreakdowns: (fromIndex: number, toIndex: number) => void;
    setFilters: (filters: Filter[]) => void;
    dropFieldToFilter: (field: string) => void;
    setOrder: (fieldName: string, direction: 'asc' | 'desc' | null) => void;
    getCurrentState: () => AnalysisBuilderState;
    getMergeKeys: () => string[] | undefined;
    isMultiQueryMode: () => boolean;
    buildCurrentQuery: () => CubeQuery;
    buildAllQueries: () => CubeQuery[];
    buildMultiQueryConfig: () => MultiQueryConfig | null;
}
export type QuerySlice = QuerySliceState & QuerySliceActions;
export declare const createInitialQueryState: () => QuerySliceState;
/**
 * Create the query slice.
 * Uses StateCreator pattern for composability.
 */
export declare const createQuerySlice: StateCreator<AnalysisBuilderStore, [
], [
], QuerySlice>;
