/**
 * Mulberry32 PRNG and FNV-1a hash for deterministic buddy generation.
 * Bones are derived from hash(username + hostname + salt + rerollCount) on every session start.
 */
/** FNV-1a 32-bit hash of a string */
export declare function fnv1a(str: string): number;
/** Mulberry32 PRNG — fast, deterministic 32-bit */
export declare function mulberry32(seed: number): () => number;
/**
 * Create a PRNG seeded from user identity + salt + reroll count.
 * This ensures the same user gets the same buddy unless they reroll.
 */
export declare function createBuddySeed(username: string, hostname: string, salt: string, rerollCount: number): number;
/**
 * Create a PRNG from user identity. Returns a function that produces
 * floats in [0, 1).
 */
export declare function createBuddyRng(username: string, hostname: string, salt: string, rerollCount: number): () => number;
/** Roll an integer in [min, max] inclusive using the given RNG */
export declare function rollInt(rng: () => number, min: number, max: number): number;
/** Roll a float in [min, max) using the given RNG */
export declare function rollFloat(rng: () => number, min: number, max: number): number;
/**
 * Pick a weighted item from a map of item -> weight.
 * Returns the key whose cumulative weight contains the roll.
 */
export declare function rollWeighted<T extends string>(rng: () => number, weights: Record<T, number>): T;
//# sourceMappingURL=buddy-prng.d.ts.map