import type { BuildAssetKind } from "./build-cache.js";
export type AssetFreshness = "fresh" | "stale" | "unknown" | "referenced";
export interface BuildAssetMetadata {
    schemaVersion: "1";
    kind: BuildAssetKind;
    beatId: string;
    cue: string;
    provider: string;
    options?: Record<string, unknown>;
    cacheKey: string;
    canonicalPath: string;
    cachePath?: string;
    updatedAt: string;
}
export declare function assetMetadataPath(kind: BuildAssetKind, beatId: string): string;
export declare function readAssetMetadata(projectDir: string, kind: BuildAssetKind, beatId: string): BuildAssetMetadata | null;
export declare function assetFreshnessFromMetadata(opts: {
    projectDir: string;
    kind: BuildAssetKind;
    beatId: string;
    expectedCacheKey?: string;
    canonicalExists: boolean;
}): AssetFreshness | undefined;
export declare function isFreshCanonicalAsset(opts: {
    projectDir: string;
    kind: BuildAssetKind;
    beatId: string;
    cue: string;
    provider?: string;
    options?: Record<string, unknown>;
    cacheKey?: string;
}): boolean;
export declare function writeAssetMetadata(opts: {
    projectDir: string;
    kind: BuildAssetKind;
    beatId: string;
    cue: string;
    provider: string;
    options?: Record<string, unknown>;
    cacheKey: string;
    canonicalPath: string;
    cachePath?: string;
}): Promise<void>;
