import { z } from 'zod';
import type { Ollama } from 'ollama';
type OllamaWithWebSearch = Ollama;
/**
 * Configuration options for the web search tool
 */
export interface WebSearchToolOptions {
    /**
     * Timeout for search requests in milliseconds
     * @default 30000
     */
    timeout?: number;
    /**
     * Ollama client instance to use for web search
     * If not provided, will need to be injected at runtime
     */
    client?: OllamaWithWebSearch;
}
/**
 * Input schema for web search requests
 */
export declare const webSearchInputSchema: z.ZodObject<{
    query: z.ZodString;
    maxResults: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export declare const webSearchInputJsonSchema: {
    readonly type: 'object';
    readonly properties: {
        readonly query: {
            readonly type: 'string';
            readonly minLength: 1;
            readonly maxLength: 500;
            readonly description: 'The search query to find relevant information on the web';
        };
        readonly maxResults: {
            readonly type: 'integer';
            readonly minimum: 1;
            readonly maximum: 20;
            readonly description: 'Maximum number of search results to return (1-20)';
        };
    };
    readonly required: readonly ['query'];
    readonly additionalProperties: false;
};
/**
 * Output schema for web search results
 */
export type WebSearchOutput = {
    results: Array<{
        title: string;
        url: string;
        snippet: string;
        publishedDate?: string;
    }>;
    searchQuery: string;
    totalResults: number;
};
export declare function webSearch(options?: WebSearchToolOptions): ({
    title?: string;
    providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
    metadata?: import("@ai-sdk/provider").JSONObject;
    inputSchema: import("ai").FlexibleSchema<{
        query: string;
        maxResults?: number | undefined;
    }>;
    contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
    needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
        query: string;
        maxResults?: number | undefined;
    }, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
    onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputDelta?: ((options: {
        inputTextDelta: string;
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputAvailable?: ((options: {
        input: {
            query: string;
            maxResults?: number | undefined;
        };
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    toModelOutput?: ((options: {
        toolCallId: string;
        input: {
            query: string;
            maxResults?: number | undefined;
        };
        output: NoInfer<WebSearchOutput>;
    }) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
    outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
    description?: string | ((options: {
        context: NoInfer<import("@ai-sdk/provider-utils").Context>;
        experimental_sandbox?: import("ai").Experimental_SandboxSession;
    }) => string) | undefined;
    strict?: boolean;
    inputExamples?: {
        input: NoInfer<{
            query: string;
            maxResults?: number | undefined;
        }>;
    }[] | undefined;
    id?: never;
    isProviderExecuted?: never;
    args?: never;
    supportsDeferredResults?: never;
} & {
    type?: undefined | 'function';
} & {
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
}) | ({
    title?: string;
    providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
    metadata?: import("@ai-sdk/provider").JSONObject;
    inputSchema: import("ai").FlexibleSchema<{
        query: string;
        maxResults?: number | undefined;
    }>;
    contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
    needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
        query: string;
        maxResults?: number | undefined;
    }, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
    onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputDelta?: ((options: {
        inputTextDelta: string;
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputAvailable?: ((options: {
        input: {
            query: string;
            maxResults?: number | undefined;
        };
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    toModelOutput?: ((options: {
        toolCallId: string;
        input: {
            query: string;
            maxResults?: number | undefined;
        };
        output: NoInfer<WebSearchOutput>;
    }) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
    outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
    description?: string | ((options: {
        context: NoInfer<import("@ai-sdk/provider-utils").Context>;
        experimental_sandbox?: import("ai").Experimental_SandboxSession;
    }) => string) | undefined;
    strict?: boolean;
    inputExamples?: {
        input: NoInfer<{
            query: string;
            maxResults?: number | undefined;
        }>;
    }[] | undefined;
    id?: never;
    isProviderExecuted?: never;
    args?: never;
    supportsDeferredResults?: never;
} & {
    type: 'dynamic';
} & {
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
}) | ({
    title?: string;
    providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
    metadata?: import("@ai-sdk/provider").JSONObject;
    inputSchema: import("ai").FlexibleSchema<{
        query: string;
        maxResults?: number | undefined;
    }>;
    contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
    needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
        query: string;
        maxResults?: number | undefined;
    }, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
    onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputDelta?: ((options: {
        inputTextDelta: string;
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputAvailable?: ((options: {
        input: {
            query: string;
            maxResults?: number | undefined;
        };
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    toModelOutput?: ((options: {
        toolCallId: string;
        input: {
            query: string;
            maxResults?: number | undefined;
        };
        output: NoInfer<WebSearchOutput>;
    }) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
    outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
    type: 'provider';
    id: `${string}.${string}`;
    args: Record<string, unknown>;
    description?: never;
    strict?: never;
    inputExamples?: never;
} & {
    isProviderExecuted: false;
    supportsDeferredResults?: never;
} & {
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
}) | ({
    title?: string;
    providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
    metadata?: import("@ai-sdk/provider").JSONObject;
    inputSchema: import("ai").FlexibleSchema<{
        query: string;
        maxResults?: number | undefined;
    }>;
    contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
    needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
        query: string;
        maxResults?: number | undefined;
    }, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
    onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputDelta?: ((options: {
        inputTextDelta: string;
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    onInputAvailable?: ((options: {
        input: {
            query: string;
            maxResults?: number | undefined;
        };
    } & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
    toModelOutput?: ((options: {
        toolCallId: string;
        input: {
            query: string;
            maxResults?: number | undefined;
        };
        output: NoInfer<WebSearchOutput>;
    }) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
    outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
    type: 'provider';
    id: `${string}.${string}`;
    args: Record<string, unknown>;
    description?: never;
    strict?: never;
    inputExamples?: never;
} & {
    isProviderExecuted: true;
    supportsDeferredResults?: boolean;
} & {
    execute: import("ai").ToolExecuteFunction<{
        query: string;
        maxResults?: number | undefined;
    }, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
});
export {};
//# sourceMappingURL=web-search.d.ts.map