import { ClearOptions, CollectionNameFromModels, CollectionQuery, Models, Roles, Schema, PossibleDataViolation, QueryResultCardinality } from '@triplit/db'; import { DBChanges, Triple, KVStore, EntitySyncStore, EntityWriteOptions } from './types.js'; import { HybridLogicalClock, Timestamp } from './hybrid-clock.js'; import { IVM, IVMOptions } from './ivm.js'; import { DBTransaction } from './db-transaction.js'; import { Logger } from '@triplit/types/logger'; import { DBSession } from './session.js'; type SubscriptionResultsCallback = (results: any[]) => void; type FetchOptions = { skipRules?: boolean; }; type OnCommitCallback = (changes: DBChanges) => Promise; export interface DBOptions { kv?: KVStore; clientId?: string; entityStore?: E; schema?: DBSchema; ivm?: IVM; variables?: Record; logger?: Logger; ivmOptions?: IVMOptions; } export type DBSchema = { collections: M; roles?: Roles; }; export declare class DB { entityStore: E; clock: HybridLogicalClock; session: DBSession | undefined; globalVars: Record; logger: Logger; subscribedQueries: Map; lastResult?: any[]; }>; readonly clientId: string; ivm: IVM; schema: DBSchema | undefined; onCommitListeners: Set; readonly kv: KVStore; private typeConverters?; constructor(options?: DBOptions); static getSchemaFromStorage(kv: KVStore): Promise; getSchema(): DBSchema | undefined; subscribe(query: CollectionQuery, onResults: (results: any[]) => void | Promise, onError?: ErrorCallback, options?: FetchOptions): () => void; subscribeWithPagination(query: CollectionQuery, onResults: (results: any[]) => void | Promise): () => void; subscribeWithExpand(query: CollectionQuery, onResults: (results: any[], info: { hasMore: boolean; }) => void | Promise): () => void; subscribeChanges(query: CollectionQuery, onResults: (results: DBChanges) => void | Promise, options?: { queryState?: { timestamp: Timestamp; entityIds: Record; }; }): () => void; fetch(query: CollectionQuery, options?: FetchOptions): Promise; rawFetch(query: CollectionQuery): Promise; applyTypeConversions(result: any[] | any, query: CollectionQuery, cardinality: QueryResultCardinality): any; fetchTriples(query: CollectionQuery, options?: FetchOptions): Promise; fetchOne(query: CollectionQuery, options?: FetchOptions): Promise; fetchById(collectionName: string, id: string, options?: FetchOptions): Promise; insert(collectionName: string, data: any, options?: EntityWriteOptions): Promise; insertTriples(triples: Triple[], options?: { triggerReactivity: boolean; }): Promise; update(collectionName: string, id: string, data: any, options?: EntityWriteOptions): Promise<{ output: void | undefined; isCanceled: boolean; }>; delete(collectionName: string, id: string, options?: EntityWriteOptions): Promise<{ output: void | undefined; isCanceled: boolean; }>; onCommit(callback: OnCommitCallback): () => void; updateQueryViews(): Promise; broadcastToQuerySubscribers(): void; transact(callback: (tx: DBTransaction) => Promise, options?: EntityWriteOptions): Promise<{ output: Output | undefined; isCanceled: boolean; }>; applyChanges(changes: DBChanges, options: EntityWriteOptions): Promise; applyChangesWithTimestamp(changes: DBChanges, timestamp: Timestamp, options: EntityWriteOptions): Promise; getCollectionStats(): Promise>; overrideSchema(newSchema: DBSchema, { failOnBackwardsIncompatibleChange }?: { failOnBackwardsIncompatibleChange?: boolean | undefined; }): Promise<{ successful: boolean; issues: PossibleDataViolation[]; }>; setMetadata(key: string[], value: any): Promise; getMetadata(key: string[]): Promise; updateSchema(schema: DBSchema): Promise; /** * WARNING: (I think) using `this` in the constructor will not pick up the proxy information created here * Example: new IVM(this) // db.session will be undefined */ withSessionVars(variables: Record): DB; onSchemaChange(callback: (schema: Schema) => void): void; query>(collectionName: CN, params?: Omit, 'collectionName'>): import("@triplit/db").QueryBuilder>; clear(options?: ClearOptions): Promise; updateGlobalVariables(vars: Record): void; get systemVars(): { $global: Record; $session: Record; }; getClientId(): Promise; private validateEntityChange; private checkWritePermission; } export declare function changesToTriples(changes: DBChanges, timestamp: Timestamp): Triple[]; export declare function createDB(options: DBOptions): Promise>; export {};