import type { Quad } from '@rdfjs/types'; import { type SqliteDatabase } from '../SqliteRuntime'; import type { QuintPattern } from '../quint/types'; import type { RdfCardinalityEstimate, RdfCardinalityDistributions, RdfIndexStats, RdfLiteralDatatypeDistribution, RdfIndexPutOptions, RdfIndexSpaceObject, RdfQuadJoinAggregateOptions, RdfQuadJoinCountOptions, RdfQuadJoinGroupAggregateOptions, RdfQuadJoinOptions, RdfQuadJoinPattern, RdfQuadJoinScanResult, RdfQuadTupleConstraintSource, RdfQuadIndexOptions, RdfQuadIndexScanResult, RdfQuadScanOptions, RdfPatternQuery, RdfSourceInput, RdfStoragePattern, RdfTermRewriteInput, RdfTermRewriteResult } from './types'; type PatternKey = 'graph' | 'subject' | 'predicate' | 'object'; export declare function assertRdfFactsSchemaCompatible(db: SqliteDatabase): void; export declare class RdfQuadIndex { private readonly options; private readonly sqliteRuntime; private db; private dictionary; private readonly cardinalityCache; constructor(options: RdfQuadIndexOptions); open(): void; close(): void; clear(): void; put(quad: Quad, options?: RdfIndexPutOptions): void; replaceSource(quads: Quad[], source: RdfSourceInput): void; deleteSource(source: string): number; moveSource(oldSource: string, next: RdfSourceInput): number; private deleteSourceInternal; multiPut(quads: Quad[], options?: RdfIndexPutOptions): void; private insertQuads; delete(pattern: QuintPattern): number; applyDelta(deletes: QuintPattern[], inserts: Quad[], options?: RdfIndexPutOptions): { deletedRows: number; insertedRows: number; }; rewriteTerms(input: RdfTermRewriteInput): RdfTermRewriteResult; private deleteInternal; dataVersion(): number; scan(pattern: RdfStoragePattern | RdfPatternQuery, options?: RdfQuadScanOptions): RdfQuadIndexScanResult; scanWithTupleConstraints(pattern: RdfStoragePattern, tupleSource: RdfQuadTupleConstraintSource, options?: RdfQuadScanOptions): RdfQuadIndexScanResult; joinPatterns(patterns: RdfQuadJoinPattern[], options?: RdfQuadJoinOptions): RdfQuadJoinScanResult; countJoinPatterns(patterns: RdfQuadJoinPattern[], options: RdfQuadJoinCountOptions): RdfQuadJoinScanResult; aggregateJoinPatterns(patterns: RdfQuadJoinPattern[], options: RdfQuadJoinAggregateOptions): RdfQuadJoinScanResult; private aggregateJoinPatternsInternal; groupCountJoinPatterns(patterns: RdfQuadJoinPattern[], options: RdfQuadJoinGroupAggregateOptions): RdfQuadJoinScanResult; groupAggregateJoinPatterns(patterns: RdfQuadJoinPattern[], options: RdfQuadJoinGroupAggregateOptions): RdfQuadJoinScanResult; private groupAggregateJoinPatternsInternal; private scanInternal; private compileJoinPatterns; private buildJoinOrderClause; private buildJoinAggregateColumn; private buildGroupCountHavingClause; private buildGroupAggregateHavingClause; private havingSqlOperator; private buildGroupCountOrderScope; private buildGroupAggregateOrderScope; private matchToJoinCondition; private joinRowsToBindings; count(pattern: RdfStoragePattern): number; estimateCardinality(pattern: RdfStoragePattern): RdfCardinalityEstimate; countDistinct(pattern: RdfStoragePattern, distinctKey: PatternKey): RdfCardinalityEstimate; countDistinctTuple(pattern: RdfStoragePattern, distinctKeys: PatternKey[]): RdfCardinalityEstimate; stats(): RdfIndexStats; cardinalityDistributions(limit?: number): RdfCardinalityDistributions; literalDatatypeDistribution(): RdfLiteralDatatypeDistribution[]; private graphCardinalityDistribution; private predicateCardinalityDistribution; private predicateObjectCardinalityDistribution; private subjectPredicateCardinalityDistribution; private cardinalityTerm; estimateSerializedTextBytes(): number; estimateDatabaseBytes(): number; collectSpaceObjects(): RdfIndexSpaceObject[]; private estimateSpaceObjectsFromSchema; private estimatePageSize; private prepareFactsSchema; /** * Backfills the `data_version` metadata for facts databases created before * the key became mandatory. Mirrors the legacy migration: `1` when quads * already exist, otherwise `0`. */ private backfillDataVersionMetadata; private createFreshFactsSchema; private hasExistingFactsSchema; private bumpDataVersion; private upsertSource; private updateSourceRow; private buildWhereClause; private addSourceScopeConditions; private matchToCondition; private termTypeConditionJoin; private languageConditionJoin; private datatypeConditionJoin; private termRangeCondition; private termOperatorLexicalValue; private termOperatorNumericValue; private termKindsForPatternKey; private termOperatorValueId; private addTextSearchCondition; private prefixSearchConditionJoin; private textSearchConditionJoin; private regexTextSearchConditionJoin; private populateRegexCandidateTable; private populateTermInCandidateTable; private scopedQuadColumn; private scopedSqlName; private buildTupleConstraintJoin; private populateTupleConstraintTable; private termIdForTupleConstraint; private populateCandidateTable; private chooseIndex; private exactTermPattern; private countExactTermPattern; private countExactDistinctTermPattern; private countExactDistinctTupleTermPattern; private countDistinctPattern; private countDistinctTuplePattern; private buildOrderClause; private paginationParamCount; private rowsToQuads; private requiredTerm; private metrics; private requireDb; private requireDictionary; } export {};