export declare function assertUuid(str: string, which?: string): string;
/**
 * Generate a UUID v7 from a timestamp.
 *
 * @param timestamp - The timestamp in milliseconds
 * @returns A UUID v7 string
 */
export declare function uuid7FromTime(timestamp: number | string): string;
/**
 * Get the version of a UUID string.
 * @param uuidStr - The UUID string to check
 * @returns The version number (1-7) or null if invalid
 */
export declare function getUuidVersion(uuidStr: string): number | null;
/**
 * Warn if a UUID is not version 7.
 *
 * @param uuidStr - The UUID string to check
 * @param idType - The type of ID (e.g., "run_id", "trace_id") for the warning message
 */
export declare function warnIfNotUuidV7(uuidStr: string, _idType: string): void;
/**
 * Generate a deterministic UUID v7 derived from an original UUID and a key.
 *
 * A pure function of `originalId` and `key`: it reads no ambient state, so the
 * same pair always yields the same UUID, in any process, at any time. This is
 * used for creating replica ids that are reproducible across distributed
 * systems, including across SDK implementations.
 *
 * A UUID v7 original keeps its timestamp, so derived ids stay ordered by run
 * start time. Any other original has none to keep, and the field is
 * hash-derived: stable, but not chronological.
 *
 * @param originalId - The source UUID string (ideally UUID v7 to preserve timestamp)
 * @param key - A string key used for deterministic derivation (e.g., project name)
 * @returns A new UUID v7 string with preserved timestamp (if original is v7) and
 *          deterministic random bits
 *
 * @example
 * ```typescript
 * const original = uuidv7();
 * const replicaId = nonCryptographicUuid7Deterministic(original, "replica-project");
 * // Same inputs always produce same output
 * assert(nonCryptographicUuid7Deterministic(original, "replica-project") === replicaId);
 * ```
 */
export declare function nonCryptographicUuid7Deterministic(originalId: string, key: string): string;
