import { MultiQueryValidationResult } from '../utils/multiQueryValidation.js'; import { ColorPalette } from '../utils/colorPalettes.js'; import { MultiQueryConfig, ChartType, ChartAxisConfig, ChartDisplayConfig } from '../types.js'; import { MetricItem, BreakdownItem } from '../components/AnalysisBuilder/types.js'; import { ChartAvailabilityMap } from '../shared/chartDefaults.js'; import { MetaField } from '../shared/types.js'; export interface UseAnalysisStateOptions { /** External color palette (overrides local) */ externalColorPalette?: string[] | ColorPalette; } export declare function useAnalysisState(options?: UseAnalysisStateOptions): { storeApi: import('zustand').StoreApi; queryState: import('../components/AnalysisBuilder/types.js').AnalysisBuilderState; queryStates: import('../components/AnalysisBuilder/types.js').AnalysisBuilderState[]; activeQueryIndex: number; mergeStrategy: import('../types.js').QueryMergeStrategy; isMultiQueryMode: boolean; mergeKeys: string[] | undefined; currentQuery: import('../types.js').CubeQuery; allQueries: import('../types.js').CubeQuery[]; multiQueryConfig: MultiQueryConfig | null; multiQueryValidation: MultiQueryValidationResult | null; /** Raw query/multi validity (independent of mode) */ isValidQuery: boolean | undefined; /** Mode-aware validity (funnel/flow/retention/query) */ effectiveIsValidQuery: boolean; combinedMetrics: MetricItem[]; combinedBreakdowns: BreakdownItem[]; effectiveBreakdowns: BreakdownItem[]; analysisType: import('../types.js').AnalysisType; funnelBindingKey: import('../types.js').FunnelBindingKey | null; isFunnelModeEnabled: boolean; funnelCube: string | null; funnelSteps: import('../types.js').FunnelStepState[]; activeFunnelStepIndex: number; funnelTimeDimension: string | null; funnelChartType: ChartType; funnelChartConfig: ChartAxisConfig; funnelDisplayConfig: ChartDisplayConfig; serverFunnelQuery: import('../types.js').ServerFunnelQuery | null; flowCube: string | null; flowBindingKey: import('../types.js').FunnelBindingKey | null; flowTimeDimension: string | null; eventDimension: string | null; startingStep: import('../types.js').FlowStartingStep; stepsBefore: number; stepsAfter: number; joinStrategy: "auto" | "lateral" | "window"; flowDisplayConfig: ChartDisplayConfig; serverFlowQuery: import('../types.js').ServerFlowQuery | null; retentionCube: string | null; retentionBindingKey: import('../types.js').FunnelBindingKey | null; retentionTimeDimension: string | null; retentionDateRange: import('../types/retention.js').DateRange; retentionCohortFilters: import('../types.js').Filter[]; retentionActivityFilters: import('../types.js').Filter[]; retentionBreakdowns: import('../types/retention.js').RetentionBreakdownItem[]; retentionViewGranularity: import('../types/retention.js').RetentionGranularity; retentionPeriods: number; retentionType: import('../types/retention.js').RetentionType; retentionDisplayConfig: ChartDisplayConfig | undefined; serverRetentionQuery: import('../types/retention.js').ServerRetentionQuery | null; retentionValidation: { isValid: boolean; errors: string[]; warnings: string[]; } | null; chartType: ChartType; chartConfig: ChartAxisConfig; displayConfig: ChartDisplayConfig; colorPalette: ColorPalette; localPaletteName: string; chartAvailability: ChartAvailabilityMap; userManuallySelectedChart: boolean; activeTab: import('../components/AnalysisBuilder/types.js').QueryPanelTab; activeView: "table" | "chart"; displayLimit: number; showFieldModal: boolean; fieldModalMode: import('../index.js').FieldModalMode; activeTableIndex: number; adapterValidation: import('../adapters/modeAdapter.js').ValidationResult; getQueryConfig: () => import('../types.js').CubeQuery | import('../types.js').ServerFunnelQuery | { queries: import('../types.js').CubeQuery[]; mergeStrategy: import('../types.js').QueryMergeStrategy; mergeKeys: string[] | undefined; queryLabels: string[]; funnelBindingKey: import('../types.js').FunnelBindingKey | null; stepTimeToConvert: (string | null)[]; }; getChartConfig: () => { chartType: ChartType; chartConfig: ChartAxisConfig; displayConfig: ChartDisplayConfig; }; getAnalysisType: () => import('../types.js').AnalysisType; actions: { setActiveQueryIndex: (index: number) => void; setMergeStrategy: (strategy: import('../types.js').QueryMergeStrategy) => void; addQuery: () => void; removeQuery: (index: number) => void; openMetricsModal: () => void; addMetric: (field: string, label?: string) => void; removeMetric: (id: string) => void; toggleMetric: (fieldName: string) => void; reorderMetrics: (fromIndex: number, toIndex: number) => void; openBreakdownsModal: () => 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: import('../types.js').Filter[]) => void; dropFieldToFilter: (field: string) => void; setOrder: (fieldName: string, direction: "asc" | "desc" | null) => void; setLimit: (limit: number | undefined) => void; setFunnelBindingKey: (bindingKey: import('../types.js').FunnelBindingKey | null) => void; setAnalysisType: (type: import('../types.js').AnalysisType) => void; setFunnelCube: (cube: string | null) => void; addFunnelStep: () => void; removeFunnelStep: (index: number) => void; updateFunnelStep: (index: number, updates: Partial) => void; setActiveFunnelStepIndex: (index: number) => void; reorderFunnelSteps: (fromIndex: number, toIndex: number) => void; setFunnelTimeDimension: (dimension: string | null) => void; setFunnelDisplayConfig: (config: ChartDisplayConfig) => void; setFlowCube: (cube: string | null) => void; setFlowBindingKey: (key: import('../types.js').FunnelBindingKey | null) => void; setFlowTimeDimension: (dim: string | null) => void; setEventDimension: (dim: string | null) => void; setStartingStepName: (name: string) => void; setStartingStepFilters: (filters: import('../types.js').Filter[]) => void; setStepsBefore: (count: number) => void; setStepsAfter: (count: number) => void; setJoinStrategy: (strategy: "auto" | "lateral" | "window") => void; setFlowDisplayConfig: (config: ChartDisplayConfig) => void; setRetentionCube: (cube: string | null) => void; setRetentionBindingKey: (key: import('../types.js').FunnelBindingKey | null) => void; setRetentionTimeDimension: (dim: string | null) => void; setRetentionDateRange: (range: import('../types/retention.js').DateRange) => void; setRetentionCohortFilters: (filters: import('../types.js').Filter[]) => void; setRetentionActivityFilters: (filters: import('../types.js').Filter[]) => void; setRetentionBreakdowns: (breakdowns: import('../types/retention.js').RetentionBreakdownItem[]) => void; addRetentionBreakdown: (breakdown: import('../types/retention.js').RetentionBreakdownItem) => void; removeRetentionBreakdown: (field: string) => void; setRetentionViewGranularity: (granularity: import('../types/retention.js').RetentionGranularity) => void; setRetentionPeriods: (periods: number) => void; setRetentionType: (type: import('../types/retention.js').RetentionType) => void; setRetentionDisplayConfig: (config: ChartDisplayConfig) => void; setChartType: (type: ChartType) => void; setChartConfig: (config: ChartAxisConfig) => void; setDisplayConfig: (config: ChartDisplayConfig) => void; setLocalPaletteName: (name: string) => void; setUserManuallySelectedChart: (value: boolean) => void; setActiveTab: (tab: import('../components/AnalysisBuilder/types.js').QueryPanelTab) => void; setActiveView: (view: "table" | "chart") => void; setDisplayLimit: (limit: number) => void; closeFieldModal: () => void; setActiveTableIndex: import('react').Dispatch>; clearQuery: () => void; clearCurrentMode: () => void; handleFieldSelected: (field: MetaField, fieldType: "measure" | "dimension" | "timeDimension", _cubeName: string, keepOpen?: boolean) => void; }; }; export type UseAnalysisStateResult = ReturnType;