/**
 * AppTools.ts — 浏览器端 DOM 自动化工具（TypeScript 完整实现）
 *
 * 向 LLM 暴露四个工具：
 * - `read_app`：描述当前页面可见的可交互元素快照
 * - `click_element`：按 selector / ref 点击元素
 * - `type_in_app`：向输入框输入文本或触发按键
 * - `screenshot_app`：委托外部 screenshotHandler 截图
 *
 * 特性：
 * - data-ai-hint / data-ai-type 属性支持非交互元素
 * - addIframe 注册子 iframe，自动合并到 read_app 结果
 * - ignoreList / whiteList 过滤器（持久 + 单次调用两种粒度）
 * - 元素 ref 数字索引，支持过期 ref 回退（aria-label → 文本匹配）
 */
/** OpenAI Function Calling 工具定义 */
export interface ToolDefinition {
    type: 'function';
    function: {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
    };
}
/** AppTools 运行时配置（setConfig 参数） */
export interface AppToolsConfig {
    readHandler?: (filters: unknown, whiteList?: string[]) => Promise<unknown>;
    screenshotHandler?: () => Promise<unknown>;
    clickHandler?: (args: Record<string, unknown>) => Promise<unknown>;
    typeHandler?: (args: Record<string, unknown>) => Promise<unknown>;
    ignoreList?: string[];
    whiteList?: string[];
    [key: string]: unknown;
}
/**
 * AppTools — 浏览器端 DOM 自动化工具（供 CopilotTools 注册为 'app' 分类）。
 */
declare class AppTools {
    static readonly definitions: ToolDefinition[];
    private sdk;
    private _readHandler;
    private _screenshotHandler;
    private _clickHandler;
    private _typeHandler;
    private _refMap;
    private _refMetaMap;
    private _iframeRefMap;
    private _ignoreList;
    private _whiteList;
    private _iframes;
    private _pendingCalls;
    private _callIdCounter;
    private _instanceId;
    private _onMessage?;
    constructor(sdk: unknown);
    setReadHandler(handler: (filters: unknown, whiteList?: string[]) => Promise<unknown>): void;
    setScreenshotHandler(handler: () => Promise<unknown>): void;
    setClickHandler(handler: (args: Record<string, unknown>) => Promise<unknown>): void;
    setTypeHandler(handler: (args: Record<string, unknown>) => Promise<unknown>): void;
    /** 设置持久 ignore 列表（CSS selectors），匹配的元素及其后代从 read_app 排除。 */
    setIgnoreList(selectors: string[]): void;
    /** 设置持久 white 列表（CSS selectors），非空时只返回匹配元素或其后代。 */
    setWhiteList(selectors: string[]): void;
    /** 更新运行时配置（由 CopilotTools.setToolConfig 调用）。 */
    setConfig(config: AppToolsConfig): void;
    /**
     * 注册子 iframe 以参与 read_app / click_element / type_in_app 操作。
     * iframe 内需已加载 keepworkSDK。
     */
    addIframe(iframe: HTMLIFrameElement): void;
    /** 取消注册子 iframe。 */
    removeIframe(iframe: HTMLIFrameElement): void;
    /** 返回所有活跃 iframe（手动注册 + data-ai-hint 自动发现）。 */
    private _getActiveIframes;
    private _initMessageListener;
    private _handleRequest;
    /** 向子 iframe 的 AppTools 发送请求并等待响应。 */
    private _queryIframe;
    /** 清除 ref→element 映射（DOM 重大变化后调用）。 */
    clearRefs(): void;
    /**
     * 执行指定工具函数（CopilotTools 分发入口）。
     * @param name   - 工具名
     * @param args   - 工具参数
     * @param config - 运行时配置（当前未使用，预留扩展）
     */
    execute(name: string, args?: Record<string, unknown>, _config?: unknown): Promise<unknown>;
    private _defaultReadApp;
    private _passesFilter;
    private _resolveScope;
    private _isVisible;
    private _describeElement;
    private _getRole;
    private _getAiHintRole;
    private _isPressableElement;
    private _getLabel;
    private _getElementRefMeta;
    private _getAriaLabelText;
    private _getElementText;
    private _parseRefMetadataFromReadResult;
    private _getState;
    private _buildSelector;
    private _defaultClickElement;
    private _defaultTypeInApp;
    private _keyToCode;
    private _resolveElement;
    private _resolveStaleRefFallback;
    private _resolveSelector;
    private _getTargetHints;
    private _firstText;
    private _findByAriaLabel;
    private _findByText;
    private _truncate;
    /**
     * 发出 `dh:app-page-opened` postMessage 通知 DigitalHuman 页面切换。
     * DigitalHuman 会根据 pageRouters 配置切换 agent 并发送唤醒文本。
     * @param page - 页面名称（必须匹配 pageRouters 配置中的某个 key）
     */
    static postAppPageOpened(page: string): void;
}
export default AppTools;
//# sourceMappingURL=AppTools.d.ts.map