import { type BlockDeclNode, type BlockParamType, type ExpressionNode } from '../ast/index.js'; export type BlockParameterPolicy = 'dynamic' | 'static' | 'business' | 'derived' | 'optional' | 'ambiguous_review_required'; export type BlockParameterBinding = { kind: 'sql_value'; } | { kind: 'semantic_filter'; field: string; operator: 'equals' | 'in' | 'gte' | 'lte'; } | { kind: 'limit'; }; export interface BlockParameterDefinition { name: string; type: BlockParamType; required: boolean; default?: unknown; policy: BlockParameterPolicy; binding?: BlockParameterBinding; } export interface ResolvedBlockParameter { name: string; value: unknown; source: 'explicit' | 'default'; } export interface BlockParameterResolution { values: Record; resolved: ResolvedBlockParameter[]; unresolved: string[]; errors: string[]; } export interface SemanticRuntimeParameterBindings { filters: Array<{ dimension: string; operator: string; values: string[]; }>; limit?: number; } /** * Converts the compact AST parameter shape into a durable runtime contract. * Legacy parameters continue to work: their type is inferred from the default * and their policy comes from the existing parameterPolicy section. */ export declare function blockParameterDefinitions(block: BlockDeclNode): BlockParameterDefinition[]; /** Resolve UI/API overrides without permitting SQL fragments or structural changes. */ export declare function resolveBlockParameterValues(definitions: BlockParameterDefinition[], overrides?: Record): BlockParameterResolution; /** * Lowers a semantic block's typed runtime values into the semantic-layer query * contract. Keeping this in core gives Notebook, Ask, Apps, CLI, and MCP the * same filter/limit behavior instead of maintaining surface-specific rules. */ export declare function blockSemanticRuntimeBindings(block: BlockDeclNode, values?: Record): SemanticRuntimeParameterBindings; export declare function evaluateBlockParameterExpression(node: ExpressionNode): unknown; export declare function inferBlockParameterType(value: unknown): BlockParamType; //# sourceMappingURL=parameters.d.ts.map