import { FrInput } from "../../library/FrInput.js"; import { FrType, UnwrapFrType } from "../../library/FrType.js"; import { TTypedLambda } from "../../types/TTypedLambda.js"; import { Value } from "../../value/index.js"; import { Reducer } from "../Reducer.js"; export declare class FnDefinition { inputs: FrInput[]; output: FrType; signature: TTypedLambda; run: (args: unknown[], reducer: Reducer) => unknown; isAssert: boolean; isDecorator: boolean; deprecated?: string; private constructor(); showInDocumentation(): boolean; toString(): string; tryCall(args: Value[], reducer: Reducer): Value | undefined; static make(maybeInputs: MaybeInputTypes, output: FrType, run: InferRunFromInputsAndOutput>, params?: { deprecated?: string; isDecorator?: boolean; }): FnDefinition; static makeAssert(maybeInputs: MaybeInputTypes, errorMsg: string): FnDefinition; } type AnyInputOrType = FrInput | FrType; type UnwrapInput> = T extends FrInput ? [ O ] extends [true] ? U | null : [O] extends [false] ? U : never : never; type InferRunFromInputsAndOutput> = (args: { [K in keyof Inputs]: UnwrapInputOrType; }, reducer: Reducer) => UnwrapFrType; type UnwrapInputOrType = T extends FrInput ? UnwrapInput : T extends FrType ? UnwrapFrType : never; export declare function makeDefinition(maybeInputs: Parameters>[0], output: Parameters>[1], run: Parameters>[2], params?: Parameters>[3]): FnDefinition; export {}; //# sourceMappingURL=FnDefinition.d.ts.map