import type { BaseToolExecutorPort } from "../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolExecutorPort.js";
import type { BaseToolDefinition, BaseToolHandler } from "../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js";
import { planNativeSearch as planNativeSearchCore, type NativeSearchExecutor, type NativeSearchOutput, type NativeSearchRequest } from "./core.js";
import { type NativeSearchDependencies, type NativeSearchPracticeProviderName, type NativeSearchProviderPractice } from "./dependencies.js";
export * from "./core.js";
export type NativeSearchBestPracticeRequest = NativeSearchRequest & {
    executorPort?: BaseToolExecutorPort;
    preferredProvider?: NativeSearchPracticeProviderName;
};
export type NativeSearchHandlerInput = Omit<NativeSearchBestPracticeRequest, "executorPort">;
export type NativeSearchPracticeSelection = {
    providerName: NativeSearchPracticeProviderName;
    practice: NativeSearchProviderPractice;
    provider?: NativeSearchExecutor;
};
export declare const nativeSearchProviderPractices: readonly [{
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "api-sdk";
        readonly label: "OpenAI Responses API web_search practice";
        readonly path: "https://developers.openai.com/api/docs/guides/tools-web-search";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "read-only";
    readonly notes: readonly ["OpenAI native web search is exposed through Responses tools with { type: \"web_search\" }.", "Praxis normalizes web_search_call actions and URL citation annotations into sources and citations while runtime owns the API call."];
    readonly createProvider: ({ provider, executor }: NativeSearchDependencies) => NativeSearchExecutor | undefined;
}, {
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "api-sdk";
        readonly label: "Anthropic Messages API web_search server tool practice";
        readonly path: "https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "read-only";
    readonly notes: readonly ["Anthropic native web search is carried by the Messages server tool, currently represented by web_search_20260209 or compatible versions.", "Praxis keeps the provider-native route explicit and lets runtime/Raxode own Anthropic client configuration and tool execution."];
    readonly createProvider: ({ provider, executor }: NativeSearchDependencies) => NativeSearchExecutor | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "api-sdk";
        readonly label: "Gemini API google_search grounding practice";
        readonly path: "https://ai.google.dev/gemini-api/docs/google-search";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "read-only";
    readonly notes: readonly ["Gemini native web search is exposed as Google Search grounding with structured groundingMetadata, sources, and citation supports.", "Praxis normalizes grounding chunks/supports into sources and citations while runtime owns the Gemini API call."];
    readonly createProvider: ({ provider, executor }: NativeSearchDependencies) => NativeSearchExecutor | undefined;
}];
export declare const nativeSearchBestPracticeDescriptor: {
    readonly toolId: "search.nativeSearch";
    readonly bestPractice: "storage-owned-provider-native-web-search-with-runtime-network-support";
    readonly sourcePriority: readonly ["cli", "agent-sdk", "api-sdk", "praxis-native"];
    readonly providerOrder: readonly ["openai", "anthropic", "deepmind"];
    readonly dependencies: ({
        dependencyId: string;
        kind: "runtime";
        required: true;
        description: string;
    } | {
        dependencyId: string;
        kind: "permission";
        required: true;
        description: string;
    } | {
        dependencyId: string;
        kind: "service";
        required: false;
        description: string;
    })[];
};
export declare function selectNativeSearchPractice(dependencies?: NativeSearchDependencies & {
    preferredProvider?: NativeSearchPracticeProviderName;
}): NativeSearchPracticeSelection;
export declare function executeNativeSearch(request?: NativeSearchBestPracticeRequest): ReturnType<typeof planNativeSearchCore>;
export declare const planNativeSearch: typeof executeNativeSearch;
export declare const nativeSearchBaseToolDefinition: BaseToolDefinition<NativeSearchHandlerInput, NativeSearchOutput>;
export declare const nativeSearchHandler: BaseToolHandler<NativeSearchHandlerInput, NativeSearchOutput>;
