/**
 * 同步过滤器
 *
 * 把原来散落在三处（LibraryWatcher chokidar ignored、LibraryWatcher.shouldIgnore、
 * FsRouter scanDiskFiles）的硬编码忽略规则，统一成一份默认规则，并叠加用户在表单里
 * 配置的「黑名单 / 白名单」（gitignore 语义）。
 *
 * 语义（与 .gitignore 一致）：
 *   1. 先算默认排除 + 用户黑名单 → 命中即视为「排除」
 *   2. 再看白名单 → 命中则「强制包含」（覆盖第 1 步的排除）
 *   3. 没命中黑名单的文件 → 直接包含
 *
 * 黑名单里支持以 `!` 开头的「反向规则」：直接把该项挪到白名单，符合 gitignore 直觉。
 *
 * 模式语法（.gitignore 风格的子集）：
 *   - `*`      匹配单层任意字符（不含 `/`）
 *   - `**`     匹配多层任意字符（含 `/`）
 *   - `?`      匹配单个字符（不含 `/`）
 *   - `foo/`   目录前缀：匹配 foo 目录及其下所有内容
 *   - 普通字面量按原样匹配
 *   - 以 `#` 开头的行视为注释，空行忽略
 */
/** 默认排除规则（从原 3 处硬编码合并而来） */
export declare const DEFAULT_IGNORE_PATTERNS: readonly string[];
/** 库配置里 customFields 可能放同步过滤相关字段 */
export interface SyncFilterConfig {
    /** 用户黑名单（多行文本，每行一个 glob） */
    syncBlacklist?: string;
    /** 用户白名单（多行文本，每行一个 glob，强制包含） */
    syncWhitelist?: string;
}
export type ShouldSyncFn = (relPath: string) => boolean;
/**
 * 把 glob 模式编译成一条正则。支持 `*` / `**` / `?`，对其它特殊字符做字面转义。
 * `**` 匹配任意层级（含 `/`），`*` 与 `?` 不跨 `/`。
 */
export declare function globToRegExp(pattern: string): RegExp;
/**
 * 解析多行 textarea 文本：去掉空行与 `#` 注释，提取以 `!` 开头的反向规则。
 * @returns { include: 普通规则, reinclude: 以 ! 开头的反向规则（去掉 ! 后的正文） }
 */
export declare function parsePatternLines(raw: string | undefined | null): {
    include: string[];
    reinclude: string[];
};
/**
 * 构造一个同步判定函数。
 *
 * @param customFields 库配置里的同步过滤字段
 * @param extraIgnore  额外的黑名单规则（例如某些调用点临时需要追加排除）
 */
export declare function createSyncFilter(customFields?: SyncFilterConfig | undefined | null, extraIgnore?: string[]): ShouldSyncFn;
/** 单条 glob 匹配（暴露出来便于外部 / 测试使用） */
export declare function matchGlob(relPath: string, pattern: string): boolean;
/**
 * 返回用于 fast-glob / chokidar 的「黑名单 glob 数组」（默认 + 用户黑名单）。
 * 注意：fast-glob 的 ignore 只能表达「排除」，无法表达白名单的「强制包含」。
 * 因此调用方在拿到 glob 结果后，还需用 createSyncFilter() 返回的 shouldSync
 * 做一次白名单覆盖判定。
 */
export declare function getIgnoreGlobs(customFields?: SyncFilterConfig | undefined | null): string[];
//# sourceMappingURL=SyncFilter.d.ts.map