export declare const STRAND_INTENT_ID_WIDTH = 4;
export declare const STRAND_TICK_ID_WIDTH = 4;
export declare const STRAND_COUNTERFACTUAL_REASON = "footprint_overlap";
export declare const STRAND_SCHEMA_VERSION = 1;
export declare const STRAND_COORDINATE_VERSION = "frontier-lamport/v1";
export declare const STRAND_OVERLAY_KIND = "patch-log";
/**
 * Lexicographic comparator for deterministic sort ordering.
 */
export declare function compareStrings(a: string, b: string): number;
/**
 * Zero-pad a numeric sequence to the specified width for lexicographic sorting.
 */
export declare function formatSequence(value: number, width: number): string;
/**
 * Construct a deterministic intent identifier from strand and sequence number.
 */
export declare function buildIntentId(strandId: string, sequence: number): string;
/**
 * Construct a deterministic tick identifier from strand and sequence number.
 */
export declare function buildTickId(strandId: string, sequence: number): string;
/**
 * Validate and trim an optional string field, returning null for absent values.
 */
export declare function normalizeOptionalString(value: string | null | undefined, field: string): string | null;
/**
 * Loose structural value accepted by normalizeStringArray.
 *
 * Represents the JSON-decoded leaves (or arrays of them) that may
 * appear on strand-descriptor fields, including nested arrays and
 * nested bags. Non-array top-level inputs yield an empty array;
 * inside an array, non-string entries are dropped.
 */
export type MaybeStringArrayLeaf = string | number | boolean | null | undefined | readonly MaybeStringArrayLeaf[] | {
    readonly [key: string]: MaybeStringArrayLeaf;
};
export type MaybeStringArray = readonly MaybeStringArrayLeaf[] | MaybeStringArrayLeaf;
/**
 * Coerce a raw value into a deduplicated, sorted array of non-empty
 * strings. Non-array inputs yield an empty array. Throws StrandError
 * when an array entry is present but not a string — preserving the
 * pre-0025B3 defensive boundary contract.
 */
export declare function normalizeStringArray(value: MaybeStringArray, field: string): string[];
/**
 * Find the highest Lamport timestamp across a collection of patches.
 */
export declare function maxPatchLamport(patches: Array<{
    patch: {
        lamport?: number;
    };
}>): number;
/**
 * Return true when a value is a non-empty string.
 */
export declare function isNonEmptyString(value: string | null | undefined): value is string;
