export type VariableType = 'custom' | 'query' | 'textbox' | 'dynamic' | 'datasource' | 'constant';
export interface VariableConfig {
    id: string;
    name: string;
    label: string;
    type: VariableType;
    hide: boolean;
    refresh: 'never' | 'onLoad' | 'onTimeChange';
    multi: boolean;
    includeAll: boolean;
    defaultValue?: string;
    customValues?: string;
    query?: string;
    description?: string;
    showOnDashboard?: 'label-and-value' | 'value' | 'nothing';
    dsType?: string;
    instanceFilterRegex?: string;
    targetDsUid?: string;
    queryType?: string;
    extractRegex?: string;
    sortMode?: 'disabled' | 'alphabetical' | 'numeric';
    customOptions?: Array<{
        text: string;
        value: string;
    }>;
    allValue?: string;
    allowCustomValue?: boolean;
    allowClear?: boolean;
    inputWidth?: number;
    constantValue?: string;
    constantValueType?: 'string' | 'number';
    hideFromVariableList?: boolean;
}
export interface VariableOption {
    value: string;
    label: string;
}
export interface VariableState {
    config: VariableConfig;
    options: VariableOption[];
    current: string | string[];
    loading: boolean;
    error: string | null;
}
export interface ResolvedVariables {
    [name: string]: string | string[] | number;
}
export type VariableFormat = 'single' | 'csv' | 'sql' | 'pipe';
