/** Link and production-deployment status for a Vercel project directory. */
export type DeploymentState = "unlinked" | "linked" | "deployed";
/** Vercel project data resolved from local link metadata and the API. */
export interface DeploymentInfo {
    state: DeploymentState;
    projectId?: string;
    orgId?: string;
    productionUrl?: string;
}
/**
 * Reads local Vercel link metadata and checks whether the linked project has a production alias.
 */
export declare function detectDeployment(projectPath: string): Promise<DeploymentInfo>;
export type ProjectResolution = {
    kind: "unresolved";
} | {
    kind: "linked";
    projectId: string;
} | {
    kind: "deployed";
    projectId: string;
    productionUrl: string;
};
export declare function projectResolutionFromDeployment(deployment: DeploymentInfo): ProjectResolution;
/**
 * Side-effect-free fact gathering after a link: reads `.vercel/project.json`
 * to resolve the project. The on-disk link is the single source of truth.
 */
export declare function detectProjectResolution(projectRoot: string): Promise<ProjectResolution>;
export declare function mergeProjectResolution(current: ProjectResolution, next: ProjectResolution): ProjectResolution;
export declare function projectResolutionFromDeployResult(project: ProjectResolution, deploy: {
    deployed: boolean;
    productionUrl?: string;
}): ProjectResolution;
export declare function isProjectResolved(project: ProjectResolution): boolean;
export declare function projectProductionUrlFromResolution(project: ProjectResolution): string | undefined;
