import type { ProjectCheckoutLitePayload, ProjectPlacementPayload } from "../shared/messages.js";
import type { PersistedWorkspaceRecord } from "./workspace-registry.js";
export type PersistedProjectKind = "git" | "non_git";
export type PersistedWorkspaceKind = "local_checkout" | "worktree" | "directory";
export type DetectStaleWorkspacesInput = {
    activeWorkspaces: PersistedWorkspaceRecord[];
    checkDirectoryExists: (cwd: string) => Promise<boolean>;
};
export declare function normalizeWorkspaceId(cwd: string): string;
export declare function deriveWorkspaceId(cwd: string, checkout: ProjectCheckoutLitePayload): string;
export declare function deriveProjectGroupingKey(options: {
    cwd: string;
    remoteUrl: string | null;
    isSeaworkOwnedWorktree: boolean;
    mainRepoRoot: string | null;
}): string;
export declare function deriveProjectGroupingName(projectKey: string): string;
export declare function deriveWorkspaceDisplayName(input: {
    cwd: string;
    checkout: ProjectCheckoutLitePayload;
}): string;
export declare function deriveProjectRootPath(input: {
    cwd: string;
    checkout: ProjectCheckoutLitePayload;
}): string;
export declare function deriveProjectKind(checkout: ProjectCheckoutLitePayload): PersistedProjectKind;
export declare function deriveWorkspaceKind(checkout: ProjectCheckoutLitePayload): PersistedWorkspaceKind;
export declare function detectStaleWorkspaces(input: DetectStaleWorkspacesInput): Promise<Set<string>>;
export declare function buildProjectPlacementForCwd(input: {
    cwd: string;
    seaworkHome: string;
}): Promise<ProjectPlacementPayload>;
//# sourceMappingURL=workspace-registry-model.d.ts.map