/**
 * Symbolic `referenced_by:` resolver.
 *
 * SCHEMA.md `referenced_by:` entries use `<kind>:<name>` symbols
 * (`skill:get-sops`, `service:sop.service`) rather than absolute filesystem
 * paths, so SCHEMA.md stays portable across users, machines, and runtimes
 * (Sonnet vs DeepSeek install roots differ, $HOME differs, Pro vs OSS install
 * roots differ).
 *
 * This resolver maps a symbol to the absolute path on the current machine.
 *
 * Per v2.1 spec §2 (Symbolic referenced_by registry):
 *   `skill:<name>`   → config/skills/{agent/core, orchestrator}/<name>/execute.sh
 *   `service:<name>` → backend/src/services/<dir>/<name>.service.ts
 *
 * @module services/wiki/referenced-by.resolver
 */
import { ReferencedBySymbol, ResolvedReference } from './wiki.types.js';
/**
 * Resolves SCHEMA.md `referenced_by:` symbols to absolute filesystem paths.
 *
 * @example
 *   const resolver = new ReferencedByResolver('/path/to/crewly');
 *   const resolved = await resolver.resolve('skill:get-sops');
 *   // resolved.absolutePath === '/path/to/crewly/config/skills/agent/core/get-sops/execute.sh'
 */
export declare class ReferencedByResolver {
    private readonly crewlyRoot;
    private readonly cache;
    /**
     * @param crewlyRoot - Absolute path to the Crewly project root (contains
     *   `config/` and `backend/`). Must be absolute — relative paths are
     *   rejected so the resolver behaves deterministically regardless of cwd.
     */
    constructor(crewlyRoot: string);
    /**
     * Resolve a symbol to an absolute path.
     *
     * @param symbol - A `skill:<name>` or `service:<name>` reference.
     * @returns The resolved reference. `exists: false` if no candidate file
     *   was found on disk — callers should treat this as a lint warning.
     * @throws If the symbol has an unknown kind prefix.
     */
    resolve(symbol: ReferencedBySymbol): Promise<ResolvedReference>;
    /**
     * Resolve many symbols in one pass.
     */
    resolveAll(symbols: ReferencedBySymbol[]): Promise<ResolvedReference[]>;
    /**
     * Clear the in-memory cache. Useful in tests, or after a vault change
     * has moved a referenced file.
     */
    clearCache(): void;
    private parseSymbol;
    /**
     * Locate a file matching `<name>/<fileSuffix>` (skill) or `<name><fileSuffix>`
     * (service) inside a search directory. Returns absolute path or null.
     *
     * For skills: the name IS a directory name → look for `<dir>/<name>/execute.sh`.
     * For services: the name is a basename → recurse for `<name>.service.ts`.
     */
    private findInDir;
    /**
     * The path we'd expect a missing symbol to live at — used so lint can
     * tell the user where to create the file.
     */
    private fallbackCanonicalPath;
}
//# sourceMappingURL=referenced-by.resolver.d.ts.map