/**
 * ConflictResolvedCoordinate — runtime-backed analysis coordinate metadata.
 *
 * @module domain/types/conflict/ConflictResolvedCoordinate
 */
import StrandCoordinateMetadata from './StrandCoordinateMetadata.ts';
/**
 * Input shape for the strand field — either an existing
 * StrandCoordinateMetadata instance or a matching carrier bag the
 * constructor normalizes through the class.
 */
type StrandInput = StrandCoordinateMetadata | {
    strandId: string;
    baseLamportCeiling: number | null;
    overlayHeadPatchSha: string | null;
    overlayPatchCount: number;
    overlayWritable: boolean;
    braid?: {
        readOverlayCount: number;
        braidedStrandIds: readonly string[];
    };
};
/**
 * A runtime-backed description of the analysis coordinate scope.
 *
 * Instances are frozen on construction. All nested objects are deep-frozen.
 */
export default class ConflictResolvedCoordinate {
    readonly analysisVersion: string;
    readonly coordinateKind: string;
    readonly frontier: Readonly<Record<string, string>>;
    readonly frontierDigest: string;
    readonly lamportCeiling: number | null;
    readonly scanBudgetApplied: Readonly<{
        maxPatches: number | null;
    }>;
    readonly truncationPolicy: string;
    readonly strand: StrandCoordinateMetadata | undefined;
    /**
     * Creates a frozen ConflictResolvedCoordinate.
     */
    constructor({ analysisVersion, coordinateKind, frontier, frontierDigest, lamportCeiling, scanBudgetApplied, truncationPolicy, strand }: {
        analysisVersion: string;
        coordinateKind: 'frontier' | 'strand';
        frontier: Record<string, string>;
        frontierDigest: string;
        lamportCeiling: number | null;
        scanBudgetApplied: {
            maxPatches: number | null;
        };
        truncationPolicy: string;
        strand?: StrandInput;
    });
}
export {};
