import type { LinkChildrenSource, PrefixSource } from './types.ts'; /** * The name-plane questions a runtime asks about the workspace. * * What a runtime holds instead of a flat prefix listing: the questions * routing and listing ever ask (what mounts exist, which one owns a * path, which names in a directory are links), answered by whoever * owns the tables so a consumer never re-implements the longest-prefix * rule or reaches for a link table it cannot import. Answers use the * table's own prefix spelling; a surface with a spelling convention of * its own (`RuntimeVFS`) re-spells on its side of the seam. */ export interface MountResolver { /** The live mount prefixes, in the table's own spelling. */ prefixes(): string[]; /** The prefix owning `path` by longest match, or null. */ ownerOf(path: string): string | null; /** * The names of the symlinks in the directory `directory` names. * * Per directory, not per path, because a listing is where the answer * is needed and one table read serves every entry in it; asked per * entry it would be a readlink apiece for a fact the name plane can * hand over whole. Answers for the directory the path *names*, * resolving a link the way the listing itself is resolved, so a * listing through an alias is marked from the directory it actually * read. */ linkChildren(directory: string): Set; } /** * A MountResolver over a live prefix listing. * * The one concrete resolver: the workspace wraps whatever view it * wants a consumer to have (a sandbox-filtered list for the runtimes) * and the matching rule stays `ownerPrefix`'s. Reads its sources per * call, so mounts and links added or removed after construction are * always picked up. * * The link source is optional and answers nothing when absent, which * is right for a resolver built outside a workspace: there is no node * table, so no name can be a link. */ export declare class PrefixResolver implements MountResolver { private readonly source; private readonly links; constructor(source: PrefixSource, links?: LinkChildrenSource | null); prefixes(): string[]; ownerOf(path: string): string | null; linkChildren(directory: string): Set; } //# sourceMappingURL=resolver.d.ts.map