import { BaseToolOptions, Tool, JSONToolOutput, BaseToolRunOptions, ToolEmitter, ToolInput } from './base.cjs';
import { z } from 'zod';
import { RunContext } from '../context.cjs';
import 'ajv';
import '../errors.cjs';
import '../internals/types.cjs';
import '../internals/helpers/guards.cjs';
import '../internals/serializable.cjs';
import 'promise-based-task';
import '../cache/base.cjs';
import '../internals/helpers/schema.cjs';
import 'zod-to-json-schema';
import '../emitter-BWtGHYn0.cjs';
import '../internals/helpers/promise.cjs';

/**
 * 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.
 */

declare const documentSchema: z.ZodObject<{
    text: z.ZodString;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    text: z.ZodString;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    text: z.ZodString;
}, z.ZodTypeAny, "passthrough">>;
type Document = z.infer<typeof documentSchema>;
interface ProviderInput {
    query: string;
    documents: Document[];
}
type Provider<TProviderOptions> = (input: ProviderInput, options: TProviderOptions | undefined, run: RunContext<SimilarityTool<TProviderOptions>>) => Promise<{
    score: number;
}[]>;
interface SimilarityToolOptions<TProviderOptions = unknown> extends BaseToolOptions {
    provider: Provider<TProviderOptions>;
    maxResults?: number;
}
interface SimilarityToolRunOptions<TProviderOptions = unknown> extends BaseToolRunOptions {
    provider?: TProviderOptions;
    maxResults?: number;
    minScore?: number;
}
interface SimilarityToolResult {
    document: Document;
    index: number;
    score: number;
}
declare class SimilarityToolOutput extends JSONToolOutput<SimilarityToolResult[]> {
}
declare class SimilarityTool<TProviderOptions> extends Tool<SimilarityToolOutput, SimilarityToolOptions<TProviderOptions>, SimilarityToolRunOptions<TProviderOptions>> {
    name: string;
    description: string;
    readonly emitter: ToolEmitter<ToolInput<this>, SimilarityToolOutput>;
    inputSchema(): z.ZodObject<{
        query: z.ZodString;
        documents: z.ZodArray<z.ZodObject<{
            text: z.ZodString;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            text: z.ZodString;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            text: z.ZodString;
        }, z.ZodTypeAny, "passthrough">>, "many">;
    }, "strip", z.ZodTypeAny, {
        query: string;
        documents: z.objectOutputType<{
            text: z.ZodString;
        }, z.ZodTypeAny, "passthrough">[];
    }, {
        query: string;
        documents: z.objectInputType<{
            text: z.ZodString;
        }, z.ZodTypeAny, "passthrough">[];
    }>;
    protected _run({ query, documents }: ToolInput<this>, options: Partial<SimilarityToolRunOptions<TProviderOptions>>, run: RunContext<this>): Promise<SimilarityToolOutput>;
}

export { SimilarityTool, type SimilarityToolOptions, SimilarityToolOutput, type SimilarityToolResult, type SimilarityToolRunOptions };
