type ParameterValue = string | number | string[] | number[];
/**
 * Query-time field introspection for a single field.
 * Used internally to derive the ld.query.fields/filters arrays.
 */
export type FieldIntrospection = {
    inQuery: boolean;
    isFiltered: boolean;
};
/**
 * Nested table → field → introspection map.
 * e.g., { events: { event_id: { inQuery: true, isFiltered: false } } }
 */
export type FieldsContext = Record<string, Record<string, FieldIntrospection>>;
/**
 * Build a Liquid context from a parameter values map.
 * Maps parameter values into a nested `ld.parameters` structure
 * to match Lightdash's existing parameter syntax:
 *   {% if ld.parameters.grain == "day" %} ...
 *
 * For dotted parameter names like "model.grain", the value is also
 * accessible via just the short name ("grain").
 */
export declare const buildLiquidContext: (parameterValuesMap: Record<string, ParameterValue>, fieldsContext?: FieldsContext, escapeString?: (value: string) => string) => {
    ld: {
        parameters: Record<string, ParameterValue | Record<string, ParameterValue>>;
        query: {
            fields: string[];
            filters: string[];
        };
    };
    lightdash: {
        parameters: Record<string, ParameterValue | Record<string, ParameterValue>>;
        query: {
            fields: string[];
            filters: string[];
        };
    };
};
/**
 * Render Liquid template blocks in SQL using parameter values.
 *
 * This function evaluates Liquid if/elsif/else/endif blocks in dimension/metric
 * SQL at query time, when parameter values are known.
 *
 * @param sql - The compiled SQL that may contain Liquid template blocks
 * @param parameterValuesMap - Map of parameter names to their current values
 * @returns The SQL with Liquid blocks evaluated and resolved
 *
 * @example
 * ```ts
 * const sql = `{% if ld.parameters.grain == "day" %} DATE_TRUNC('day', "events".report_date)
 *   {% elsif ld.parameters.grain == "week" %} DATE_TRUNC('week', "events".report_date)
 *   {% else %} "events".report_date
 *   {% endif %}`;
 *
 * renderLiquidSql(sql, { grain: 'day' });
 * // => ' DATE_TRUNC(\'day\', "events".report_date)\n'
 * ```
 */
export declare const renderLiquidSql: (sql: string, parameterValuesMap: Record<string, ParameterValue>, fieldsContext?: FieldsContext, escapeString?: (value: string) => string) => string;
export {};
//# sourceMappingURL=liquidSql.d.ts.map