import type { Explore } from '../types/explore';
import type { Metric } from '../types/field';
import type { MetricFilterRule } from '../types/filter';
import type { LightdashProjectConfig, ProjectDefaults } from '../types/lightdashProjectConfig';
import { TimeFrames } from '../types/timeFrames';
import type { ResolvedAdditionalTimeIntervals } from '../utils/timeFrames';
type SpotlightConfigArgs = {
    visibility?: LightdashProjectConfig['spotlight']['default_visibility'];
    categories?: string[];
    filterBy?: string[];
    segmentBy?: string[];
    defaultSegment?: string;
    defaultFilter?: MetricFilterRule;
    owner?: string;
};
/**
 * Get the spotlight configuration for a resource
 */
export declare const getSpotlightConfigurationForResource: ({ visibility, categories, filterBy, segmentBy, defaultSegment, defaultFilter, owner, }: SpotlightConfigArgs) => Pick<Explore, "spotlight"> | Pick<Metric, "spotlight">;
/**
 * Get the categories from the resource and validate them against the project config
 * @param resourceType - The type of the resource
 * @param resourceName - The name of the resource
 * @param spotlightConfig - The spotlight config
 * @param resourceCategories - The categories from the resource
 * @returns The categories from the resource
 */
export declare const getCategoriesFromResource: (resourceType: "metric" | "explore", resourceName: string, spotlightConfig: LightdashProjectConfig["spotlight"] | undefined, resourceCategories?: string[] | undefined) => string[];
/**
 * Validate `defaults.additional_time_intervals` once: keep standard grains
 * (uppercased) and defined custom-granularity keys; drop sub-day grains under
 * `date` and unknown names (each with a single console.warn).
 */
export declare const resolveAdditionalTimeIntervals: (additionalTimeIntervals: ProjectDefaults["additional_time_intervals"], customGranularities: LightdashProjectConfig["custom_granularities"]) => ResolvedAdditionalTimeIntervals;
/**
 * Validate `defaults.granularity_labels` once: keep entries whose key is a
 * standard granularity (keyed by uppercased TimeFrames, label verbatim); drop
 * unknown keys with a single console.warn.
 */
export declare const resolveGranularityLabels: (granularityLabels: ProjectDefaults["granularity_labels"]) => Partial<Record<TimeFrames, string>>;
export {};
//# sourceMappingURL=lightdashProjectConfig.d.ts.map