import type { ExpressionMeta } from './models'; export type OptionValue = string | number; export interface ParameterTypes { string: string; boolean: boolean; number: number; option: OptionValue; options: OptionValue[]; column: ExpressionMeta; columns: ExpressionMeta[]; aggregate: ExpressionMeta; aggregates: ExpressionMeta[]; } export interface ControlMeta { label?: string; description?: string; placeholder?: string; required?: boolean; transferGroup?: string; visible?: boolean | ((options: { params: Record; }) => boolean); } interface TypedControlMeta { option: { optionLabels?: { [key: string | number]: string; }; }; options: { optionLabels?: { [key: string | number]: string; }; }; string: {}; boolean: {}; number: {}; column: {}; columns: {}; aggregate: {}; aggregates: {}; } interface Droppable { add: boolean; replace: boolean; } interface TypedExtensions { number: { min?: number; max?: number; }; option: { options: readonly OptionValue[]; }; options: { options: readonly OptionValue[]; allowDuplicates?: boolean; }; columns: { allowDuplicates?: boolean; droppable?: Droppable; }; string: {}; boolean: {}; column: { droppable?: Droppable; }; aggregate: { droppable?: Droppable; }; aggregates: { droppable?: Droppable; }; } export type TypedParameter = TypedExtensions[Type] & { type: Type; default?: ParameterTypes[Type]; control?: ControlMeta & TypedControlMeta[Type]; validate?: (value: ParameterTypes[Type] | undefined) => string | undefined; defined?: (options: { parametersValues: Record; }) => boolean; }; export type Parameter = TypedParameter<'string'> | TypedParameter<'boolean'> | TypedParameter<'number'> | TypedParameter<'option'> | TypedParameter<'options'> | TypedParameter<'column'> | TypedParameter<'columns'> | TypedParameter<'aggregate'> | TypedParameter<'aggregates'>; export type NoParams = Record; export type ParameterDefinitions = Record; export declare function getPluginOptionLabel(o: OptionValue, parameter: Parameter): string; export type DroppableParameter = (TypedParameter<'column'> | TypedParameter<'columns'> | TypedParameter<'aggregate'> | TypedParameter<'aggregates'>) & { droppable: Droppable; }; export declare function isParameterPossiblyDroppable(parameter: Parameter, draggedType: 'dimension' | 'measure' | 'compare'): parameter is DroppableParameter; export {}; //# sourceMappingURL=parameter.d.ts.map