import type { ConnectionName, IntegrationSlug, Owner, ToolAddress, ToolName } from "./ids";
/** Default-policy hints a plugin attaches to a tool — enforced by the executor
 *  before the handler runs. */
export interface ToolAnnotations {
    readonly requiresApproval?: boolean;
    readonly approvalDescription?: string;
    readonly mayElicit?: boolean;
}
/** A tool as produced by a plugin — the definition, no address yet (the SDK
 *  stamps that from the owning connection). */
export interface ToolDef {
    readonly name: ToolName;
    readonly description?: string;
    readonly inputSchema?: unknown;
    readonly outputSchema?: unknown;
    readonly annotations?: ToolAnnotations;
}
/** A persisted, addressable tool as returned by `tools.list`. */
export interface Tool {
    readonly address: ToolAddress;
    readonly owner: Owner;
    readonly integration: IntegrationSlug;
    readonly connection: ConnectionName;
    readonly name: ToolName;
    /** The plugin that owns the connection's integration. */
    readonly pluginId: string;
    readonly description: string;
    readonly inputSchema?: unknown;
    readonly outputSchema?: unknown;
    readonly annotations?: ToolAnnotations;
    /** True for plugin-contributed static tools (for example Executor's own
     *  configuration tools). Static tools have no backing connection even though
     *  they carry owner/connection metadata for UI grouping. */
    readonly static?: boolean;
}
/** Narrow `tools.list` to a subset; omit for the whole catalog. */
export interface ToolListFilter {
    readonly integration?: IntegrationSlug;
    readonly owner?: Owner;
    readonly connection?: ConnectionName;
    /** Case-insensitive substring match against `name` OR `description`. */
    readonly query?: string;
    /** Resolve plugin-derived annotations. Defaults to true. */
    readonly includeAnnotations?: boolean;
    /** Include tools whose effective `tool_policy` is `block`. Defaults to `false`
     *  so agent-facing surfaces silently omit blocked tools. */
    readonly includeBlocked?: boolean;
}
//# sourceMappingURL=tool.d.ts.map