import type { ProjectCheckoutLitePayload, ProjectPlacementPayload } from "@getpaseo/protocol/messages";
import type { PersistedWorkspaceRecord } from "./workspace-registry.js";
export type PersistedProjectKind = "git" | "non_git";
export type PersistedWorkspaceKind = "local_checkout" | "worktree" | "directory";
export interface DirectoryProjectMembership {
    cwd: string;
    checkout: ProjectCheckoutLitePayload;
    workspaceId: string;
    workspaceKind: PersistedWorkspaceKind;
    workspaceDisplayName: string;
    projectKey: string;
    projectName: string;
    projectRootPath: string;
    projectKind: PersistedProjectKind;
}
export interface 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;
    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 checkoutLiteFromGitSnapshot(cwd: string, git: {
    isGit: boolean;
    currentBranch: string | null;
    remoteUrl: string | null;
    repoRoot: string | null;
    isPaseoOwnedWorktree: boolean;
    mainRepoRoot: string | null;
}): ProjectCheckoutLitePayload;
export declare function detectStaleWorkspaces(input: DetectStaleWorkspacesInput): Promise<Set<string>>;
export declare function buildProjectPlacementForCwd(input: {
    cwd: string;
    checkout: ProjectCheckoutLitePayload;
}): ProjectPlacementPayload;
export declare function classifyDirectoryForProjectMembership(input: {
    cwd: string;
    checkout: ProjectCheckoutLitePayload;
}): DirectoryProjectMembership;
//# sourceMappingURL=workspace-registry-model.d.ts.map