import { Tool, StringToolOutput, ToolEmitter, ToolInput } from './base.cjs';
import { z } from 'zod';
import { ConfigOptions, ImportObject, ImportOptions, evaluate } from 'mathjs';
import 'ajv';
import '../context.cjs';
import '../emitter-BWtGHYn0.cjs';
import '../internals/types.cjs';
import '../internals/helpers/guards.cjs';
import '../internals/serializable.cjs';
import '../internals/helpers/promise.cjs';
import '../errors.cjs';
import 'promise-based-task';
import '../cache/base.cjs';
import '../internals/helpers/schema.cjs';
import 'zod-to-json-schema';

/**
 * Copyright 2025 IBM Corp.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

interface CalculatorToolInput {
    config?: ConfigOptions;
    imports?: {
        entries: ImportObject | ImportObject[];
        options?: ImportOptions;
    };
}
/**
 * Waring: The CalculatorTool enbales the agent (and by proxy the user) to execute arbirtary
 * expressions via mathjs.
 *
 * Please consider the security and stability risks documented at
 * https://mathjs.org/docs/expressions/security.html before using this tool.
 */
declare class CalculatorTool extends Tool<StringToolOutput> {
    name: string;
    description: string;
    readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput>;
    inputSchema(): z.ZodObject<{
        expression: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        expression: string;
    }, {
        expression: string;
    }>;
    protected limitedEvaluate: typeof evaluate;
    constructor({ config, imports, ...options }?: CalculatorToolInput);
    protected _run({ expression }: ToolInput<this>): Promise<StringToolOutput>;
}

export { CalculatorTool, type CalculatorToolInput };
