export type NativeSearchProvider = "openai" | "anthropic" | "deepmind";
export type NativeSearchPermission = "network:search" | "search:native";
export type NativeSearchFreshness = "any" | "day" | "week" | "month" | "year";
export type NativeSearchContextSize = "low" | "medium" | "high";
export type NativeSearchCitationMode = "required" | "preferred" | "off";
export type NativeSearchErrorBoundary = "input" | "scope" | "permission" | "contract" | "resource" | "governance" | "provider";
export type NativeSearchGate = {
    accepted?: boolean;
    allowed?: boolean;
    reason?: string;
};
export type NativeSearchUserLocation = {
    city?: string;
    region?: string;
    country?: string;
    timezone?: string;
};
export type NativeSearchContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: NativeSearchGate;
    allowedProviders?: readonly NativeSearchProvider[];
    grantedPermissions?: readonly NativeSearchPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type NativeSearchTarget = {
    provider: NativeSearchProvider;
    query: string;
    model?: string;
    maxResults?: number;
    recencyDays?: number;
    freshness?: NativeSearchFreshness;
    allowedDomains?: readonly string[];
    searchContextSize?: NativeSearchContextSize;
    userLocation?: NativeSearchUserLocation;
    citations?: NativeSearchCitationMode;
};
export type NativeSearchSource = {
    title?: string;
    url: string;
    snippet?: string;
    kind?: "search_result" | "citation" | "provider_native";
    raw?: unknown;
};
export type NativeSearchCitation = {
    url: string;
    title?: string;
    snippet?: string;
    providerReference?: string;
    raw?: unknown;
};
export type NativeSearchExecution = {
    answer?: string;
    sources: readonly NativeSearchSource[];
    citations?: readonly NativeSearchCitation[];
    providerMetadata?: Readonly<Record<string, unknown>>;
    raw?: unknown;
};
export type NativeSearchExecutor = (request: {
    provider: NativeSearchProvider;
    query: string;
    model?: string;
    maxResults?: number;
    recencyDays?: number;
    freshness?: NativeSearchFreshness;
    allowedDomains?: readonly string[];
    searchContextSize?: NativeSearchContextSize;
    userLocation?: NativeSearchUserLocation;
    citations?: NativeSearchCitationMode;
    context?: NativeSearchContext;
}) => NativeSearchExecution | Promise<NativeSearchExecution>;
export type NativeSearchRequest = {
    target?: Partial<NativeSearchTarget>;
    context?: NativeSearchContext;
    executor?: NativeSearchExecutor;
    provider?: NativeSearchExecutor;
    metadata?: Readonly<Record<string, unknown>>;
};
export type NativeSearchErrorCode = "INVALID_REQUEST" | "INVALID_CONTEXT" | "MISSING_PROVIDER" | "INVALID_PROVIDER" | "PROVIDER_NOT_ALLOWED" | "MISSING_QUERY" | "INVALID_QUERY" | "INVALID_MODEL" | "INVALID_MAX_RESULTS" | "INVALID_RECENCY" | "INVALID_FRESHNESS" | "INVALID_ALLOWED_DOMAIN" | "INVALID_SEARCH_CONTEXT_SIZE" | "INVALID_USER_LOCATION" | "INVALID_CITATIONS" | "PERMISSION_DENIED" | "GOVERNANCE_REJECTED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED" | "PROVIDER_RESULT_INVALID";
export type NativeSearchError = {
    code: NativeSearchErrorCode;
    message: string;
    boundary: NativeSearchErrorBoundary;
    publicSafe: true;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type NativeSearchAuditEvent = {
    type: string;
    toolId: "search.nativeSearch";
    invocationId: string;
    dryRun: boolean;
    provider?: NativeSearchProvider;
    metadata: Readonly<Record<string, unknown>>;
};
export type NativeSearchOutput = {
    kind: "agentCore.basicTool.search.nativeSearch";
    target: NativeSearchTarget;
    requestPreview: NativeSearchTarget;
    dispatch: "dry-run" | "provider-native";
    dryRun: boolean;
    executionBlocked: boolean;
    permissionsRequired: readonly NativeSearchPermission[];
    unsafeSideEffects: false;
    resultEnvelope: {
        query: string;
        answer?: string;
        sources: readonly NativeSearchSource[];
        citations: readonly NativeSearchCitation[];
        providerMetadata?: Readonly<Record<string, unknown>>;
        raw?: unknown;
    };
};
export type NativeSearchResult = {
    ok: true;
    toolId: "search.nativeSearch";
    output: NativeSearchOutput;
    audit: readonly NativeSearchAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "search.nativeSearch";
    error: NativeSearchError;
    audit: readonly NativeSearchAuditEvent[];
    events: readonly string[];
};
export declare const nativeSearchDescriptor: {
    readonly toolId: "search.nativeSearch";
    readonly capability: "provider-native-web-search";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.searchBase";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly permissionsRequired: readonly ["network:search", "search:native"];
    readonly unsafeSideEffects: false;
};
export declare function planNativeSearch(request?: NativeSearchRequest): Promise<NativeSearchResult>;
export declare const executeNativeSearch: typeof planNativeSearch;
