import { type CompiledMetric, type FieldId } from '../../types/field';
import { type PreAggregateReferenceLookup } from './referenceLookup';
export declare enum PreAggregateNumberMetricDependencyIneligibilityReason {
    CIRCULAR_DEPENDENCY = "circular_dependency",
    NESTED_AGGREGATE_METRIC_REFERENCE = "nested_aggregate_metric_reference",
    NO_METRIC_REFERENCES = "no_metric_references",
    UNSUPPORTED_LEAF_METRIC_TYPE = "unsupported_leaf_metric_type"
}
type PreAggregateNumberMetricDependencyBase = {
    directReferencedMetricFieldIds: FieldId[];
    transitiveReferencedMetricFieldIds: FieldId[];
    leafMetricFieldIds: FieldId[];
};
export type PreAggregateNumberMetricDependencies = ({
    isValid: true;
} & PreAggregateNumberMetricDependencyBase) | ({
    isValid: false;
    reason: PreAggregateNumberMetricDependencyIneligibilityReason;
    ineligibleMetricFieldId: FieldId;
} & PreAggregateNumberMetricDependencyBase);
export declare const analyzePreAggregateNumberMetricDependencies: ({ metric, tables, }: {
    metric: CompiledMetric;
    tables: PreAggregateReferenceLookup;
}) => PreAggregateNumberMetricDependencies;
export {};
//# sourceMappingURL=numberMetricDependencies.d.ts.map