import type { BlockParameterDefinition } from '../blocks/parameters.js'; export type DqlArtifactKind = 'certified_block' | 'semantic_block' | 'sql_block'; export type DqlArtifactPersistence = 'transient' | 'saved'; export type DqlArtifactTrustState = 'certified' | 'governed' | 'review_required'; export interface DqlArtifactFilter { dimension: string; operator: string; values: string[]; } export interface DqlArtifactOrderBy { name: string; direction: 'asc' | 'desc'; } export interface DqlArtifactTimeDimension { name: string; granularity: string; } /** * Redacted proof that an Ask result was produced by this executable artifact. * Fingerprints deliberately contain no SQL text, parameter values, or rows. */ export interface DqlArtifactExecutionReceipt { sourceFingerprint: string; compiledSqlFingerprint: string; parameterFingerprint: string; resultFingerprint: string; } export interface DqlExecutableArtifactV1 { version: 1; kind: DqlArtifactKind; /** Fingerprints only: this binding must not become a second persisted source or SQL payload. */ dqlFingerprint: string; sourceFingerprint: string; compiledSqlFingerprint: string; normalizedSqlFingerprint: string; parameterFingerprint: string; provenanceFingerprint: string; targetFingerprint: string; snapshotFingerprint: string; planFingerprint: string; semanticAdapter: string; previewPolicy: { mode: 'read_only_bounded' | 'compiler_governed'; rowLimit?: number; }; trustState: DqlArtifactTrustState; receipt: DqlArtifactExecutionReceipt; } export interface DqlArtifactReference { kind: DqlArtifactKind; source: string; name?: string; sourcePath?: string; metrics?: string[]; dimensions?: string[]; filters?: DqlArtifactFilter[]; timeDimension?: DqlArtifactTimeDimension; orderBy?: DqlArtifactOrderBy[]; limit?: number; /** Typed runtime contract carried with transient, draft, and certified artifacts. */ parameters?: BlockParameterDefinition[]; /** Values used for the current execution. Changing them must not require another AI search. */ parameterValues?: Record; /** Transient answers become saved drafts without regenerating their DQL source. */ persistence?: DqlArtifactPersistence; /** Trust is independent from executability and persistence. */ trustState?: DqlArtifactTrustState; /** Optional compiled evidence. The DQL source remains the primary artifact. */ compiledSql?: string; /** Exact execution contract used for the displayed result. */ executionReceipt?: DqlArtifactExecutionReceipt; /** Immutable preparation/execution binding shared by Ask and Notebook consumers. */ executableArtifact?: DqlExecutableArtifactV1; /** * Result columns that may safely be promoted to a runtime filter input. * * Computed server-side from the executed SQL, because deciding this needs a * real dialect parse: only plain source columns qualify, never aggregate * outputs. Present on generated `sql_block` answers; semantic blocks derive * their own candidates from `dimensions`. */ filterableColumns?: Array<{ column: string; predicateTarget: string; }>; } export declare function normalizeDqlArtifactReference(value: unknown): DqlArtifactReference | undefined; export declare function normalizeDqlExecutableArtifactV1(value: unknown): DqlExecutableArtifactV1 | undefined; export declare function normalizeDqlArtifactKind(value: unknown): DqlArtifactKind | undefined; //# sourceMappingURL=dql-artifact.d.ts.map