/* 0.26.0-alpha2 */import type { IComputeEngine, FunctionDefinition, BoxedFunctionDefinition, RuntimeScope } from '../public';
import type { BoxedExpression, CollectionHandlers, CompiledExpression, EvaluateOptions, Sign } from './public';
import { Type } from '../../common/type/types';
import { OneOf } from '../../common/one-of';
export declare class _BoxedFunctionDefinition implements BoxedFunctionDefinition {
    engine: IComputeEngine;
    scope: RuntimeScope;
    name: string;
    description?: string | string[];
    wikidata?: string;
    threadable: boolean;
    associative: boolean;
    commutative: boolean;
    commutativeOrder: ((a: BoxedExpression, b: BoxedExpression) => number) | undefined;
    idempotent: boolean;
    involution: boolean;
    pure: boolean;
    complexity: number;
    hold: boolean;
    signature: Type;
    inferredSignature: boolean;
    type?: (ops: ReadonlyArray<BoxedExpression>, options: {
        engine: IComputeEngine;
    }) => Type | undefined;
    sgn?: (ops: ReadonlyArray<BoxedExpression>, options: {
        engine: IComputeEngine;
    }) => Sign | undefined;
    eq?: (a: BoxedExpression, b: BoxedExpression) => boolean | undefined;
    neq?: (a: BoxedExpression, b: BoxedExpression) => boolean | undefined;
    even?: (ops: ReadonlyArray<BoxedExpression>, options: {
        engine: IComputeEngine;
    }) => boolean | undefined;
    canonical?: (ops: ReadonlyArray<BoxedExpression>, options: {
        engine: IComputeEngine;
    }) => BoxedExpression | null;
    evaluate?: (ops: ReadonlyArray<BoxedExpression>, options: EvaluateOptions & {
        engine: IComputeEngine;
    }) => BoxedExpression | undefined;
    evalDimension?: (ops: ReadonlyArray<BoxedExpression>, options: {
        engine: IComputeEngine;
    }) => BoxedExpression;
    compile?: (expr: BoxedExpression) => CompiledExpression;
    collection?: Partial<CollectionHandlers>;
    constructor(ce: IComputeEngine, name: string, def: FunctionDefinition);
    reset(): void;
}
export declare function makeFunctionDefinition(engine: IComputeEngine, name: string, def: OneOf<[FunctionDefinition | BoxedFunctionDefinition]>): BoxedFunctionDefinition;
