import type { CompiledMetric, FieldId } from '../../types/field';
import { type PreAggregateDerivedDimensionIneligibilityReason } from './dimensionEligibility';
import { type PreAggregateReferenceLookup } from './referenceLookup';
export declare enum PreAggregateDerivedMetricIneligibilityReason {
    CIRCULAR_DEPENDENCY = "circular_dependency",
    COMPILATION_ERROR = "compilation_error",
    DIMENSION_DEPENDENCY_INELIGIBLE = "dimension_dependency_ineligible",
    FILTER_DIMENSION_INELIGIBLE = "filter_dimension_ineligible",
    METRIC_DEPENDENCY_INELIGIBLE = "metric_dependency_ineligible",
    MISSING_DEPENDENCY = "missing_dependency",
    PARAMETER_REFERENCES = "parameter_references",
    USER_ATTRIBUTES = "user_attributes"
}
type PreAggregateDerivedMetricEligibilityBase = {
    referencedDimensionFieldIds: FieldId[];
    referencedMetricFieldIds: FieldId[];
};
export type PreAggregateDerivedMetricEligibility = ({
    isEligible: true;
} & PreAggregateDerivedMetricEligibilityBase) | ({
    isEligible: false;
    ineligibleMetricFieldId: FieldId;
    ineligibleDimensionFieldId?: FieldId;
    ineligibleDimensionReason?: PreAggregateDerivedDimensionIneligibilityReason;
    reason: PreAggregateDerivedMetricIneligibilityReason;
} & PreAggregateDerivedMetricEligibilityBase);
export declare const analyzePreAggregateDerivedMetricEligibility: ({ metric, tables, }: {
    metric: CompiledMetric;
    tables: PreAggregateReferenceLookup;
}) => PreAggregateDerivedMetricEligibility;
export {};
//# sourceMappingURL=metricEligibility.d.ts.map