import { captureVercel, type VercelCaptureFailure } from "#setup/primitives/index.js";
import { readProjectLink, type VercelProjectReference } from "#setup/project-resolution.js";
declare const verifiedVercelTargetBrand: unique symbol;
export interface ResolvedVercelDeployment {
    readonly provider: "vercel";
    readonly ownerId: string;
    readonly projectId: string;
    readonly projectName: string;
    readonly environment: string;
}
/** Proof that Vercel resolved one exact HTTPS origin under an authenticated scope. */
export interface VerifiedVercelTarget {
    readonly [verifiedVercelTargetBrand]: true;
    readonly origin: `https://${string}`;
    readonly deployment: ResolvedVercelDeployment;
}
export type VercelDeploymentResolutionFailure = {
    readonly cause: "vercel";
    readonly failure: VercelCaptureFailure;
} | {
    readonly cause: "invalid-json" | "invalid-shape";
    readonly message: string;
};
export type VercelDeploymentResolution = {
    readonly kind: "resolved";
    readonly target: VerifiedVercelTarget;
} | {
    readonly kind: "not-found";
} | {
    readonly kind: "unscoped";
} | {
    readonly kind: "project-mismatch";
    readonly expectedProjectId: string;
    readonly actualProjectId: string;
} | {
    readonly kind: "cancelled";
} | {
    readonly kind: "failed";
    readonly failure: VercelDeploymentResolutionFailure;
};
export interface VercelDeploymentResolutionDeps {
    readonly captureVercel: typeof captureVercel;
    readonly readProjectLink: typeof readProjectLink;
}
/** Resolves a Vercel deployment URL to its project and target environment. */
export declare function resolveVercelDeployment(input: {
    readonly workspaceRoot: string;
    readonly host: string;
    readonly source?: Pick<VercelProjectReference, "orgId" | "projectId">;
    readonly signal?: AbortSignal;
    readonly deps?: Partial<VercelDeploymentResolutionDeps>;
}): Promise<VercelDeploymentResolution>;
export {};
