import { LinkKind, Step } from '../types.js'; import { FS } from './fs.js'; export interface EnsureSourceSpec { sourceAbs: string; kind: LinkKind; } export interface EnsureLinkSpec { sourceAbs: string; targetAbs: string; kind: LinkKind; atomic: boolean; } export interface UnlinkSpec { targetAbs: string; } export interface CopySpec { fromAbs: string; toAbs: string; kind: LinkKind; atomic: boolean; } export declare function tmpPathForTarget(targetAbs: string): string; export declare function backupPathForTarget(targetAbs: string): string; export declare function detectKind(p: string): Promise; export declare function detectKindWithFS(fs: FS, p: string): Promise; export declare function isSymlinkTo(targetAbs: string, sourceAbs: string): Promise; export declare function isSymlinkToWithFS(fs: FS, targetAbs: string, sourceAbs: string): Promise; export declare function planEnsureSource(spec: EnsureSourceSpec): Promise; export declare function planEnsureSourceWithFS(fs: FS, spec: EnsureSourceSpec): Promise; export declare function planEnsureLink(spec: EnsureLinkSpec): Promise<{ steps: Step[]; reason: 'noop' | 'create' | 'replace_symlink' | 'conflict'; }>; export declare function planEnsureLinkWithFS(fs: FS, spec: EnsureLinkSpec): Promise<{ steps: Step[]; reason: 'noop' | 'create' | 'replace_symlink' | 'conflict'; }>; export declare function planUnlink(spec: UnlinkSpec): Promise; export declare function planUnlinkWithFS(fs: FS, spec: UnlinkSpec): Promise; export declare function planCopy(spec: CopySpec): Promise;