import { type DateZoom } from '../types/api/paginatedQuery';
import { type LightdashProjectParameter } from '../types/lightdashProjectConfig';
import { type ParameterDefinitions, type ParametersValuesMap, type ParameterValue } from '../types/parameters';
/** Context from which reserved parameters resolve their values. */
export type ReservedParameterContext = {
    dateZoom: DateZoom | undefined;
};
/**
 * A reserved (system-owned) parameter: the user-parameter shape plus a `resolve` that
 * computes its value from the query context, so it rides the existing parameter pipeline.
 */
export type ReservedParameterDefinition = LightdashProjectParameter & {
    resolve: (context: ReservedParameterContext) => ParameterValue;
};
/** Registry of reserved parameters. Add an entry here to expose a new system value. */
export declare const RESERVED_PARAMETERS: Record<string, ReservedParameterDefinition>;
export declare const getReservedParameterNames: () => string[];
export declare const isReservedParameterName: (name: string) => boolean;
/**
 * Reserved parameter definitions in the shared definition shape (without resolvers), for
 * merging into the available-parameter map and rendering in the parameters UI.
 */
export declare const getReservedParameterDefinitions: () => ParameterDefinitions;
/**
 * Resolve every reserved parameter to its value for the given query context.
 */
export declare const resolveReservedParameterValues: (context: ReservedParameterContext) => ParametersValuesMap;
/** Reserved names shadowed by a same-named user parameter (used to surface the override). */
export declare const getShadowedReservedNames: (userParameterNames: string[]) => string[];
/** Append reserved names not already taken by a user parameter (deduped, user wins). */
export declare const mergeReservedNames: (userParameterNames: string[]) => string[];
/**
 * Merge reserved definitions under user definitions; a user definition of the same name
 * wins (shadows the reserved entry).
 */
export declare const mergeReservedDefinitions: (userDefinitions: ParameterDefinitions | undefined) => ParameterDefinitions;
/**
 * Merge resolved reserved values under user values; a user value of the same name wins
 * (shadows the reserved value).
 */
export declare const mergeReservedValues: (userValues: ParametersValuesMap | undefined, reservedValues: ParametersValuesMap) => ParametersValuesMap;
//# sourceMappingURL=reservedParameters.d.ts.map