import { FuncArg } from "../FuncArg.js";
import { FunctionExpr } from "../FunctionExpr.js";
import { ExprEvalResult } from "../../ExprEvalResult.js";
import { ExpressionValue } from "../../../value/ExpressionValue.js";
import { ExprType } from "../../../type/ExprType.js";
type UnpackConstructor<T> = T extends new (boolean: any, string: any) => FuncArg<infer U> ? U : never;
export declare class FuncArgUnion<T> extends FuncArg<T> {
    private readonly options;
    constructor(...options: FuncArg<T>[]);
    static of<T extends new (boolean: any, string: any) => FuncArg<any>>(required: boolean, name: string, constructors: T[]): FuncArgUnion<UnpackConstructor<T>>;
    transformValue(callingExpr: FunctionExpr, invocationValue: ExprEvalResult<ExpressionValue>): ExprEvalResult<ExpressionValue>;
    getType(): ExprType;
}
export {};
