import type { Query as QueryBuilder } from '@uwdata/mosaic-sql'; // This file has a .ts instead of .d.ts to ensure that it is included in the built types. // It should not be used as anything other than a .d.ts file import type { DescribeResultRow } from '../types/duckdb-wellknown.d.ts'; import type { ChainableSharedPromise, Query, QueryValue } from './query/Query.js'; export type EventHandler< Events extends Record = {}, Event extends keyof Events = keyof Events > = (value: Events[Event], event: Event) => void; export type EventEmitter = {}> = { addEventListener(event: Event, handler: EventHandler): void; removeEventListener( event: Event, handler: EventHandler ): void; on(event: Event, handler: EventHandler): void; off(event: Event, handler: EventHandler): void; }; export type EventMap> = { [Event in keyof Events]: Set>; }; export type QueryResultRow = Record; export type MaybePromise = Promise | T; export type Runner = ( query: string, query_name: string ) => MaybePromise; export type Subscriber = (value: T) => unknown; export type QueryOpts = { initialData?: RowType[]; /** * @deprecated Use Query.reactive instead */ initialDataDirty?: boolean; knownColumns?: DescribeResultRow[]; initialError?: Error; id?: string; disableCache?: boolean; autoScore?: boolean; /** * When true, this prevents the query from ever fetching or presenting data. **/ noResolve?: boolean; }; export type QueryReactivityOpts = { loadGracePeriod?: number; callback: (v: QueryValue) => void; execFn: Runner; }; export interface CreateQuery { ( query: QueryBuilder | string, executeQuery: Runner, opts: QueryOpts, _?: never ): QueryValue; /** * @deprecated id has been moved to the options argument */ ( query: QueryBuilder | string, executeQuery: Runner, id?: string, opts?: Omit, 'id'> ): QueryValue; } export type LengthResultRow = { rowCount: number }; export type MaybeAliasedCol = string | { col: string; as: string }; export type QueryDebugPayload = { raw: Query; proxied: QueryValue; };