type ProjectIdentitySource = "git-remote" | "goat-marker" | "path";
/**
 * Stable project identity used to recognise the same checkout after it moves.
 */
export interface DashboardProjectIdentity {
    identity: string;
    identitySource: ProjectIdentitySource;
    currentPath: string;
    remoteUrlHash?: string | undefined;
    markerId?: string | undefined;
}
/**
 * Persistent dashboard project entry, including every known local path for the identity.
 */
interface DashboardProjectRecord extends DashboardProjectIdentity {
    paths: string[];
    title?: string | undefined;
}
/**
 * On-disk dashboard state schema, including legacy path lists and identity records.
 */
export interface DashboardStateData {
    paths: string[];
    favorites: string[];
    projectTitles: Record<string, string>;
    projects: Record<string, DashboardProjectRecord>;
}
export declare function resolveProjectIdentity(projectPath: string, options?: {
    allowMarkerWrite?: boolean;
}): DashboardProjectIdentity;
export declare function hydrateDashboardState(state: DashboardStateData, options: {
    allowMarkerWrite: boolean;
}): DashboardStateData;
/**
 * Read dashboard state from the new file first, then the legacy projects-only file.
 *
 * Swallows malformed or missing state files so the dashboard can recover to empty state.
 */
export declare function loadDashboardState(dashboardStateFile: string, legacyProjectsListFile: string): Promise<DashboardStateData>;
export {};
//# sourceMappingURL=dashboard-project-state.d.ts.map