import duckdb from '@duckdb/node-bindings';
import { DuckDBDataChunk } from './DuckDBDataChunk';
import { DuckDBFunctionInfo } from './DuckDBFunctionInfo';
import { DuckDBType } from './DuckDBType';
import { DuckDBVector } from './DuckDBVector';
import { DuckDBBindInfo } from './DuckDBBindInfo';
export type DuckDBScalarBindFunction = (bindInfo: DuckDBBindInfo) => void;
export type DuckDBScalarMainFunction = (functionInfo: DuckDBFunctionInfo, inputDataChunk: DuckDBDataChunk, outputVector: DuckDBVector) => void;
export declare class DuckDBScalarFunction {
    readonly scalar_function: duckdb.ScalarFunction;
    constructor();
    static create({ name, bindFunction, mainFunction, returnType, parameterTypes, varArgsType, specialHandling, volatile, extraInfo, }: {
        name: string;
        bindFunction?: DuckDBScalarBindFunction;
        mainFunction: DuckDBScalarMainFunction;
        returnType: DuckDBType;
        parameterTypes?: readonly DuckDBType[];
        varArgsType?: DuckDBType;
        specialHandling?: boolean;
        volatile?: boolean;
        extraInfo?: object;
    }): DuckDBScalarFunction;
    destroySync(): void;
    setName(name: string): void;
    setBindFunction(bindFunction: DuckDBScalarBindFunction): void;
    setMainFunction(mainFunction: DuckDBScalarMainFunction): void;
    setReturnType(returnType: DuckDBType): void;
    addParameter(parameterType: DuckDBType): void;
    setVarArgs(varArgsType: DuckDBType): void;
    setSpecialHandling(): void;
    setVolatile(): void;
    setExtraInfo(extraInfo: object): void;
}
