export type PreviewFreshnessStatus = 'fresh' | 'stale' | 'unknown' | 'not_configured';
export interface PreviewFreshness {
    status: PreviewFreshnessStatus;
    lastPreviewCommit: string | null;
    currentMainCommit: string | null;
    currentMainCommitSource: 'origin/main' | 'HEAD' | 'unknown';
    recordPath: string;
    lastDeployedAt?: string;
    lastTarget?: string;
    previewVersion?: string;
    targets: Record<'npm' | 'server' | 'web', {
        commit: string | null;
        deployedAt?: string;
        status: PreviewFreshnessStatus;
    }>;
    nextAction: string;
}
/**
 * Gate: does this repository actually configure the preview-deploy pipeline?
 *
 * The preview-freshness surface embeds this project's private release-pipeline
 * instructions (`npm run deploy:preview`, smoke preview, …). Those are only
 * meaningful in a repo that ships the pipeline. An external repo joined to a
 * mesh must not have that guidance leak into its coordinator prompt, so this
 * gate keeps the surface off unless a concrete pipeline artifact is present.
 */
export declare function isPreviewPipelineConfigured(repoRoot: string): boolean;
export declare function buildPreviewFreshness(repoRoot: string): PreviewFreshness | null;
