import duckdb from '@duckdb/node-bindings'; import { DuckDBDataChunk } from './DuckDBDataChunk'; import { DuckDBTableFunctionBindInfo } from './DuckDBTableFunctionBindInfo'; import { DuckDBTableFunctionInfo } from './DuckDBTableFunctionInfo'; import { DuckDBTableFunctionInitInfo } from './DuckDBTableFunctionInitInfo'; import { DuckDBType } from './DuckDBType'; export type DuckDBTableBindFunction = (bindInfo: DuckDBTableFunctionBindInfo) => void; export type DuckDBTableInitFunction = (initInfo: DuckDBTableFunctionInitInfo) => void; /** * Produces one chunk of the scan per call. * * Set `outputDataChunk.rowCount` before writing, then write that many rows to * each column vector. A row count of zero reports that the scan is finished, so * a function that never sets zero never terminates. */ export type DuckDBTableMainFunction = (functionInfo: DuckDBTableFunctionInfo, outputDataChunk: DuckDBDataChunk) => void; export declare class DuckDBTableFunction { readonly table_function: duckdb.TableFunction; constructor(); static create({ name, bindFunction, initFunction, localInitFunction, mainFunction, parameterTypes, namedParameterTypes, supportsProjectionPushdown, extraInfo, }: { name: string; bindFunction: DuckDBTableBindFunction; initFunction: DuckDBTableInitFunction; localInitFunction?: DuckDBTableInitFunction; mainFunction: DuckDBTableMainFunction; parameterTypes?: readonly DuckDBType[]; namedParameterTypes?: Readonly>; supportsProjectionPushdown?: boolean; extraInfo?: object; }): DuckDBTableFunction; destroySync(): void; setName(name: string): void; setBindFunction(bindFunction: DuckDBTableBindFunction): void; setInitFunction(initFunction: DuckDBTableInitFunction): void; setLocalInitFunction(localInitFunction: DuckDBTableInitFunction): void; setMainFunction(mainFunction: DuckDBTableMainFunction): void; addParameter(parameterType: DuckDBType): void; addNamedParameter(name: string, parameterType: DuckDBType): void; setSupportsProjectionPushdown(pushdown: boolean): void; setExtraInfo(extraInfo: object): void; }