import type { PortableTool } from "../portable-tool.js";
export declare const CONFIG_TOOL_NAME: "config";
export type ConfigAction = "get" | "set" | "list" | "reset";
export interface ConfigToolParams {
    /** Config action */
    action: ConfigAction;
    /** Setting key path (e.g. "model", "language", "theme") */
    key?: string;
    /** Value to set (for 'set' action) */
    value?: string | boolean | number;
}
export declare const CONFIG_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly action: {
            readonly type: "string";
            readonly enum: readonly ["get", "set", "list", "reset"];
            readonly description: string;
        };
        readonly key: {
            readonly type: "string";
            readonly description: string;
        };
        readonly value: {
            readonly description: "Value to set. Type must match the tunable (numeric strings are coerced). Required for 'set'.";
        };
    };
    readonly required: readonly ["action"];
};
export interface ConfigSetting {
    key: string;
    value: unknown;
    type: "string" | "boolean" | "number" | "enum";
    description: string;
    options?: string[];
    readOnly?: boolean;
}
export interface ConfigResult {
    success: boolean;
    setting?: ConfigSetting;
    settings?: ConfigSetting[];
    previousValue?: unknown;
    error?: string;
}
/**
 * Host-provided config backend.
 * Manages persistent agent settings with safety guardrails.
 */
export interface ConfigToolDeps {
    /** Get a single config value */
    getConfig(key: string): Promise<ConfigResult>;
    /** Set a config value (respects readonly/whitelist) */
    setConfig(key: string, value: unknown): Promise<ConfigResult>;
    /** List all available config settings */
    listConfig(): Promise<ConfigResult>;
    /** Reset a setting to default */
    resetConfig(key: string): Promise<ConfigResult>;
    /** Check if a key is supported/valid */
    isValidKey?(key: string): boolean;
}
export declare function createConfigTool(deps: ConfigToolDeps): PortableTool<ConfigToolParams>;
