/**
 * AiScanService — `asd ais [Target]` 的核心逻辑
 *
 * 按文件粒度扫描 Target 源码，通过 AgentFactory.scanKnowledge 提取 Recipe，
 * 创建后自动发布（PENDING → ACTIVE），无需 Dashboard 人工审核。
 *
 * Agent(LLM) 直接分析代码 + 使用 AST 工具，输出 Recipe 结构化 JSON。
 * 本服务可脱离 MCP 独立在 CLI 运行。
 */
import Logger from '../infrastructure/logging/Logger.js';
export declare class AiScanService {
    agentFactory: {
        scanKnowledge: (opts: Record<string, unknown>) => Promise<Record<string, unknown>>;
    } | null;
    container: {
        get: (name: string) => Record<string, unknown>;
        singletons?: Record<string, unknown>;
    };
    logger: ReturnType<typeof Logger.getInstance>;
    projectRoot: string;
    /**
     * @param opts.container ServiceContainer 实例
     * @param opts.projectRoot 项目根目录
     */
    constructor({ container, projectRoot, }: {
        container: {
            get: (name: string) => Record<string, unknown>;
            singletons?: Record<string, unknown>;
        };
        projectRoot: string;
    });
    /**
     * 扫描指定 Target（或全部 Target）的源文件并提取 Recipe，创建后直接发布
     * @param targetName Target 名称；null 时扫描全部
     * @param opts { maxFiles, dryRun, concurrency }
     * @returns >}
     */
    scan(targetName: string | null, opts?: {
        maxFiles?: number;
        dryRun?: boolean;
    }): Promise<{
        published: number;
        files: number;
        errors: string[];
        skipped: number;
    }>;
    /** 收集 Target 源文件 */
    _collectFiles(targetName: string | null, maxFiles: number): Promise<{
        name: string;
        path: string;
        relativePath: string;
        targetName: string;
    }[]>;
    /** 递归扫描目录（fallback） */
    _walkDir(dir: string, files: Array<{
        name: string;
        path: string;
        relativePath: string;
        targetName: string;
    }>, maxFiles: number, targetName: string): void;
    /** 从文件名推断语言 */
    _inferLanguage(filename: string): string;
}
export default AiScanService;
