import invariant from "tiny-invariant";
import type { Hex } from "viem";
import type { Config } from "../createConfig.js";

export type GetSkRootParameters = {
    nonce: bigint;
};

export type GetSkRootReturnType = Hex;

export function getSkRoot(
    config: Config,
    parameters: GetSkRootParameters = { nonce: BigInt(0) },
): GetSkRootReturnType {
    const { utils } = config;
    const { nonce } = parameters;
    const storedSeed = config.state.seed;
    invariant(storedSeed, "Seed must be defined when none exists in memory");
    return utils.derive_sk_root_from_seed(storedSeed, nonce);
}
