{"version":3,"sources":["../src/auth/passkey/passkey.manager.ts","../src/core/bls/bls.manager.ts","../src/client.ts","../src/core/crypto/crypto.util.ts","../src/core/erc4337/utils.ts","../src/core/erc4337/userop.builder.ts","../src/core/tier/types.ts","../src/core/tier/tier-router.ts"],"names":["axios","startRegistration","startAuthentication","ethers","bls","crypto"],"mappings":"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","file":"index.cjs","sourcesContent":["import axios, { AxiosInstance } from \"axios\";\nimport { startRegistration, startAuthentication } from \"@simplewebauthn/browser\";\nimport {\n  PasskeyRegistrationParams,\n  PasskeyAuthenticationParams,\n  PasskeyInfo,\n  BeginRegistrationResponse,\n  BeginAuthenticationResponse,\n  TransactionVerificationParams,\n  BeginTransactionVerificationResponse,\n} from \"./types\";\n\nexport class PasskeyManager {\n  private api: AxiosInstance;\n\n  constructor(baseURL: string, tokenProvider?: () => string | null) {\n    this.api = axios.create({\n      baseURL,\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n    });\n\n    // Add auth interceptor\n    if (tokenProvider) {\n      this.api.interceptors.request.use(config => {\n        const token = tokenProvider();\n        if (token) {\n          config.headers.Authorization = `Bearer ${token}`;\n        }\n        return config;\n      });\n    }\n  }\n\n  /**\n   * Complete Passkey Registration Flow\n   */\n  async register(\n    params: PasskeyRegistrationParams\n  ): Promise<{ user: any; token: string; passkey: PasskeyInfo }> {\n    // 1. Begin Registration (Get options from backend)\n    const beginResponse = await this.api.post<BeginRegistrationResponse>(\n      \"/auth/passkey/register/begin\",\n      params\n    );\n\n    // 2. Client-side WebAuthn (Browser UI)\n    // @ts-expect-error - simplewebauthn types mismatch sometimes\n    const credential = await startRegistration(beginResponse.data);\n\n    // 3. Complete Registration (Verify with backend)\n    const completeResponse = await this.api.post(\"/auth/passkey/register/complete\", {\n      email: params.email,\n      username: params.username,\n      password: params.password,\n      credential,\n    });\n\n    return completeResponse.data;\n  }\n\n  /**\n   * Complete Passkey Login/Authentication Flow\n   */\n  async authenticate(params?: PasskeyAuthenticationParams): Promise<{ user: any; token: string }> {\n    // 1. Begin Authentication\n    const beginResponse = await this.api.post<BeginAuthenticationResponse>(\n      \"/auth/passkey/login/begin\",\n      params\n    );\n\n    // 2. Client-side WebAuthn\n    const credential = await startAuthentication(beginResponse.data as any);\n\n    // 3. Complete Authentication\n    const completeResponse = await this.api.post(\"/auth/passkey/login/complete\", { credential });\n\n    return completeResponse.data;\n  }\n\n  /**\n   * Verify a transaction (Sign UserOpHash) with Passkey\n   * Returns the verification credential needed for the transaction\n   */\n  async verifyTransaction(params: TransactionVerificationParams): Promise<any> {\n    // 1. Begin Verification (Get challenge based on tx params)\n    const beginResponse = await this.api.post<BeginTransactionVerificationResponse>(\n      \"/auth/transaction/verify/begin\",\n      { transaction: params }\n    );\n\n    const { userOpHash, ...authOptions } = beginResponse.data;\n\n    // 2. Client-side WebAuthn (Sign the challenge)\n    const credential = await startAuthentication(authOptions as any);\n\n    // NOTE: We don't complete the verification here immediately.\n    // The credential is sent along with the transaction to be verified during execution.\n    // But for some flows, we might want to verify it pre-execution:\n\n    // Optional: Verify on backend immediately (if API supports it)\n    // await this.api.post(\"/auth/transaction/verify/complete\", { credential });\n\n    return {\n      credential,\n      userOpHash, // Return pre-calculated hash to ensure consistency\n    };\n  }\n\n  /**\n   * Add a new device (Passkey) to existing account\n   */\n  async addDevice(params: { email: string; password?: string }): Promise<PasskeyInfo> {\n    // 1. Begin Device Add\n    const beginResponse = await this.api.post<BeginRegistrationResponse>(\n      \"/auth/device/passkey/begin\",\n      params\n    );\n\n    // 2. WebAuthn\n    // @ts-expect-error - simplewebauthn types mismatch sometimes\n    const credential = await startRegistration(beginResponse.data);\n\n    // 3. Complete\n    const completeResponse = await this.api.post(\"/auth/device/passkey/complete\", {\n      email: params.email,\n      password: params.password,\n      credential,\n    });\n\n    return completeResponse.data.passkey;\n  }\n}\n","import axios from \"axios\";\nimport { ethers } from \"ethers\";\nimport { bls12_381 as bls } from \"@noble/curves/bls12-381.js\";\nimport {\n  BLSConfig,\n  BLSNode,\n  BLSSignatureData,\n  CumulativeT2SignatureData,\n  CumulativeT3SignatureData,\n} from \"./types\";\n\nexport class BLSManager {\n  private config: BLSConfig;\n\n  constructor(config: BLSConfig) {\n    this.config = config;\n  }\n\n  /**\n   * Discover available BLS nodes from seed nodes (Gossip network)\n   */\n  async getAvailableNodes(): Promise<BLSNode[]> {\n    const { seedNodes, discoveryTimeout = 5000 } = this.config;\n\n    for (const seedEndpoint of seedNodes) {\n      try {\n        // Try to get peers from gossip endpoint\n        const response = await axios.get(`${seedEndpoint}/gossip/peers`, {\n          timeout: discoveryTimeout,\n        });\n\n        const peers = response.data.peers || [];\n\n        // Filter active nodes with proper structure\n        const activeNodes: BLSNode[] = peers\n          .filter((p: any) => p.status === \"active\" && p.apiEndpoint && p.publicKey)\n          .map((p: any, index: number) => ({\n            index: index + 1, // 1-based index likely expected by contract if using bitmap\n            nodeId: p.nodeId,\n            nodeName: p.nodeName,\n            apiEndpoint: p.apiEndpoint,\n            status: \"active\",\n            publicKey: p.publicKey,\n          }));\n\n        if (activeNodes.length > 0) {\n          return activeNodes;\n        }\n      } catch {\n        // Try next seed node\n        continue;\n      }\n    }\n\n    return [];\n  }\n\n  /**\n   * Helper to pack the full signature for ERC-4337 UserOp\n   * Format: [nodeIdsLength][nodeIds...][blsSignature][messagePoint][aaSignature][messagePointSignature]\n   */\n  packSignature(data: BLSSignatureData): string {\n    if (!data.nodeIds || !data.aaSignature || !data.messagePointSignature) {\n      throw new Error(\"Missing required signature components\");\n    }\n\n    const nodeIdsLength = ethers.solidityPacked([\"uint256\"], [data.nodeIds.length]);\n    const nodeIdsBytes = ethers.solidityPacked(\n      Array(data.nodeIds.length).fill(\"bytes32\"),\n      data.nodeIds\n    );\n\n    return ethers.solidityPacked(\n      [\"bytes\", \"bytes\", \"bytes\", \"bytes\", \"bytes\", \"bytes\"],\n      [\n        nodeIdsLength,\n        nodeIdsBytes,\n        data.signature,\n        data.messagePoint,\n        data.aaSignature,\n        data.messagePointSignature,\n      ]\n    );\n  }\n\n  /**\n   * Calculate the MessagePoint G2 point for a given message (UserOpHash)\n   */\n  async generateMessagePoint(message: string | Uint8Array): Promise<string> {\n    const messageBytes = typeof message === \"string\" ? ethers.getBytes(message) : message;\n    const DST = \"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_\";\n\n    const messagePointBLS = await bls.G2.hashToCurve(messageBytes, { DST });\n    const messageG2EIP = this.encodeG2Point(messagePointBLS);\n\n    return \"0x\" + Buffer.from(messageG2EIP).toString(\"hex\");\n  }\n\n  /**\n   * Encode G2 Point to bytes for EIP-2537 format\n   */\n  private encodeG2Point(point: any): Uint8Array {\n    const result = new Uint8Array(256);\n    const affine = point.toAffine();\n\n    const x0Bytes = this.hexToBytes(affine.x.c0.toString(16).padStart(96, \"0\"));\n    const x1Bytes = this.hexToBytes(affine.x.c1.toString(16).padStart(96, \"0\"));\n    const y0Bytes = this.hexToBytes(affine.y.c0.toString(16).padStart(96, \"0\"));\n    const y1Bytes = this.hexToBytes(affine.y.c1.toString(16).padStart(96, \"0\"));\n\n    result.set(x0Bytes, 16);\n    result.set(x1Bytes, 80);\n    result.set(y0Bytes, 144);\n    result.set(y1Bytes, 208);\n    return result;\n  }\n\n  private hexToBytes(hex: string): Uint8Array {\n    if (hex.startsWith(\"0x\")) hex = hex.slice(2);\n    const bytes = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < hex.length; i += 2) {\n      bytes[i / 2] = parseInt(hex.substr(i, 2), 16);\n    }\n    return bytes;\n  }\n\n  /**\n   * Pack cumulative Tier 2 signature (algId 0x04): P256 + BLS.\n   *\n   * Format:\n   *   [algId=0x04 (1)] [P256 r (32)] [P256 s (32)]\n   *   [nodeIdsLength (32)] [nodeIds (N×32)]\n   *   [blsAggregateSig (256)] [messagePoint (256)]\n   *   [messagePointECDSA (65)]\n   */\n  packCumulativeT2Signature(data: CumulativeT2SignatureData): string {\n    const nodeIdsLength = ethers.solidityPacked([\"uint256\"], [data.nodeIds.length]);\n    const nodeIdsBytes = ethers.solidityPacked(\n      Array(data.nodeIds.length).fill(\"bytes32\"),\n      data.nodeIds\n    );\n\n    return ethers.solidityPacked(\n      [\"bytes1\", \"bytes\", \"bytes\", \"bytes\", \"bytes\", \"bytes\", \"bytes\"],\n      [\n        \"0x04\",\n        data.p256Signature,\n        nodeIdsLength,\n        nodeIdsBytes,\n        data.blsSignature,\n        data.messagePoint,\n        data.messagePointSignature,\n      ]\n    );\n  }\n\n  /**\n   * Pack cumulative Tier 3 signature (algId 0x05): P256 + BLS + Guardian.\n   *\n   * Format:\n   *   [algId=0x05 (1)] [P256 r (32)] [P256 s (32)]\n   *   [nodeIdsLength (32)] [nodeIds (N×32)]\n   *   [blsAggregateSig (256)] [messagePoint (256)]\n   *   [messagePointECDSA (65)] [guardianECDSA (65)]\n   */\n  packCumulativeT3Signature(data: CumulativeT3SignatureData): string {\n    const nodeIdsLength = ethers.solidityPacked([\"uint256\"], [data.nodeIds.length]);\n    const nodeIdsBytes = ethers.solidityPacked(\n      Array(data.nodeIds.length).fill(\"bytes32\"),\n      data.nodeIds\n    );\n\n    return ethers.solidityPacked(\n      [\"bytes1\", \"bytes\", \"bytes\", \"bytes\", \"bytes\", \"bytes\", \"bytes\", \"bytes\"],\n      [\n        \"0x05\",\n        data.p256Signature,\n        nodeIdsLength,\n        nodeIdsBytes,\n        data.blsSignature,\n        data.messagePoint,\n        data.messagePointSignature,\n        data.guardianSignature,\n      ]\n    );\n  }\n\n  /**\n   * Request signature from a single node\n   */\n  async requestNodeSignature(\n    node: BLSNode,\n    message: string\n  ): Promise<{ signature: string; publicKey: string }> {\n    const response = await axios.post(`${node.apiEndpoint}/signature/sign`, {\n      message,\n    });\n\n    const signatureEIP = response.data.signature;\n    // Prefer compact if available, logic copied from legacy service\n    const signature = response.data.signatureCompact || signatureEIP;\n\n    return {\n      signature: signature.startsWith(\"0x\") ? signature : `0x${signature}`,\n      publicKey: response.data.publicKey,\n    };\n  }\n\n  /**\n   * Request aggregation from a node\n   */\n  async aggregateSignatures(node: BLSNode, signatures: string[]): Promise<string> {\n    const response = await axios.post(`${node.apiEndpoint}/signature/aggregate`, {\n      signatures,\n    });\n\n    const sig = response.data.signature;\n    return sig.startsWith(\"0x\") ? sig : `0x${sig}`;\n  }\n}\n","import { PasskeyManager } from \"./auth/passkey/passkey.manager\";\nimport { BLSManager } from \"./core/bls/bls.manager\";\nimport { BLSConfig } from \"./core/bls/types\";\n\nexport interface YAAAConfig {\n  /** Backend API URL (e.g., https://api.yetanotheraa.com) */\n  apiURL: string;\n  /** Function to get the current auth token (JWT) */\n  tokenProvider?: () => string | null;\n  /** BLS Configuration */\n  bls: BLSConfig;\n}\n\nexport class YAAAClient {\n  readonly passkey: PasskeyManager;\n  readonly bls: BLSManager;\n\n  constructor(private config: YAAAConfig) {\n    // Initialize modules\n    this.passkey = new PasskeyManager(config.apiURL, config.tokenProvider);\n    this.bls = new BLSManager(config.bls);\n  }\n}\n","import * as crypto from \"crypto\";\n\nexport class CryptoUtil {\n  private static readonly ALGORITHM = \"aes-256-gcm\";\n  private static readonly KEY_LENGTH = 32;\n  private static readonly IV_LENGTH = 16;\n  private static readonly TAG_LENGTH = 16;\n\n  static encrypt(text: string, secretKey: string): string {\n    try {\n      const key = crypto.scryptSync(secretKey, \"salt\", CryptoUtil.KEY_LENGTH);\n      const iv = crypto.randomBytes(CryptoUtil.IV_LENGTH);\n\n      const cipher = crypto.createCipheriv(CryptoUtil.ALGORITHM, key as unknown as crypto.CipherKey, new Uint8Array(iv));\n\n      let encrypted = cipher.update(text, \"utf8\", \"hex\");\n      encrypted += cipher.final(\"hex\");\n\n      const authTag = cipher.getAuthTag();\n\n      // Combine iv + authTag + encrypted data\n      return iv.toString(\"hex\") + \":\" + authTag.toString(\"hex\") + \":\" + encrypted;\n    } catch (error: any) {\n      throw new Error(\"Encryption failed: \" + error.message);\n    }\n  }\n\n  static decrypt(encryptedData: string, secretKey: string): string {\n    try {\n      const key = crypto.scryptSync(secretKey, \"salt\", CryptoUtil.KEY_LENGTH);\n      const parts = encryptedData.split(\":\");\n\n      if (parts.length !== 3) {\n        throw new Error(\"Invalid encrypted data format\");\n      }\n\n      const iv = Buffer.from(parts[0], \"hex\");\n      const authTag = Buffer.from(parts[1], \"hex\");\n      const encrypted = parts[2];\n\n      const decipher = crypto.createDecipheriv(CryptoUtil.ALGORITHM, key as unknown as crypto.CipherKey, new Uint8Array(iv));\n      decipher.setAuthTag(authTag as unknown as NodeJS.ArrayBufferView);\n\n      let decrypted = decipher.update(encrypted, \"hex\", \"utf8\");\n      decrypted += decipher.final(\"utf8\");\n\n      return decrypted;\n    } catch (error: any) {\n      throw new Error(\"Decryption failed: \" + error.message);\n    }\n  }\n\n  static generateSecretKey(): string {\n    return crypto.randomBytes(32).toString(\"hex\");\n  }\n}\n","import type { PackedUserOperation } from \"../types\";\n\nexport class ERC4337Utils {\n  static packAccountGasLimits(\n    verificationGasLimit: bigint | string,\n    callGasLimit: bigint | string\n  ): string {\n    const vgl = BigInt(verificationGasLimit);\n    const cgl = BigInt(callGasLimit);\n    const packed = (vgl << 128n) | cgl;\n    return \"0x\" + packed.toString(16).padStart(64, \"0\");\n  }\n\n  static unpackAccountGasLimits(accountGasLimits: string): {\n    verificationGasLimit: bigint;\n    callGasLimit: bigint;\n  } {\n    const packed = BigInt(accountGasLimits);\n    return {\n      verificationGasLimit: packed >> 128n,\n      callGasLimit: packed & ((1n << 128n) - 1n),\n    };\n  }\n\n  static packGasFees(maxPriorityFeePerGas: bigint | string, maxFeePerGas: bigint | string): string {\n    const priority = BigInt(maxPriorityFeePerGas);\n    const max = BigInt(maxFeePerGas);\n    const packed = (priority << 128n) | max;\n    return \"0x\" + packed.toString(16).padStart(64, \"0\");\n  }\n\n  static unpackGasFees(gasFees: string): {\n    maxPriorityFeePerGas: bigint;\n    maxFeePerGas: bigint;\n  } {\n    const packed = BigInt(gasFees);\n    return {\n      maxPriorityFeePerGas: packed >> 128n,\n      maxFeePerGas: packed & ((1n << 128n) - 1n),\n    };\n  }\n\n  static packUserOperation(userOp: any): PackedUserOperation {\n    return {\n      sender: userOp.sender,\n      nonce: userOp.nonce,\n      initCode: userOp.initCode || \"0x\",\n      callData: userOp.callData,\n      accountGasLimits: ERC4337Utils.packAccountGasLimits(\n        userOp.verificationGasLimit,\n        userOp.callGasLimit\n      ),\n      preVerificationGas: userOp.preVerificationGas,\n      gasFees: ERC4337Utils.packGasFees(userOp.maxPriorityFeePerGas, userOp.maxFeePerGas),\n      paymasterAndData: userOp.paymasterAndData || \"0x\",\n      signature: userOp.signature || \"0x\",\n    };\n  }\n\n  static unpackUserOperation(packedOp: PackedUserOperation): any {\n    const gasLimits = ERC4337Utils.unpackAccountGasLimits(packedOp.accountGasLimits);\n    const gasFees = ERC4337Utils.unpackGasFees(packedOp.gasFees);\n\n    return {\n      sender: packedOp.sender,\n      nonce: packedOp.nonce,\n      initCode: packedOp.initCode,\n      callData: packedOp.callData,\n      callGasLimit: \"0x\" + gasLimits.callGasLimit.toString(16),\n      verificationGasLimit: \"0x\" + gasLimits.verificationGasLimit.toString(16),\n      preVerificationGas: packedOp.preVerificationGas,\n      maxFeePerGas: \"0x\" + gasFees.maxFeePerGas.toString(16),\n      maxPriorityFeePerGas: \"0x\" + gasFees.maxPriorityFeePerGas.toString(16),\n      paymasterAndData: packedOp.paymasterAndData,\n      signature: packedOp.signature,\n    };\n  }\n}\n","import { ethers } from \"ethers\";\nimport type { PackedUserOperation, UserOperation } from \"../types\";\n\nexport class UserOpBuilder {\n  // Basic defaults\n  private static DEFAULT_VERIFICATION_GAS_LIMIT = 100000n;\n  private static DEFAULT_PRE_VERIFICATION_GAS = 21000n;\n  private static DEFAULT_MAX_FEE_PER_GAS = 1000000000n; // 1 gwei\n  private static DEFAULT_MAX_PRIORITY_FEE_PER_GAS = 1000000000n; // 1 gwei\n\n  constructor() {}\n\n  /**\n   * Build specific parts of a UserOperation\n   * Note: Full construction often requires chain interaction (nonce, gas price),\n   * which typically happens in the application layer or via a Provider wrapper.\n   * This builder focuses on formatting and structure.\n   */\n  async buildUserOp(params: {\n    sender: string;\n    callData: string;\n    nonce?: bigint;\n    initCode?: string;\n    callGasLimit?: bigint;\n    verificationGasLimit?: bigint;\n    preVerificationGas?: bigint;\n    maxFeePerGas?: bigint;\n    maxPriorityFeePerGas?: bigint;\n    paymasterAndData?: string;\n    signature?: string;\n  }): Promise<UserOperation> {\n    return {\n      sender: params.sender,\n      nonce: params.nonce || 0n,\n      initCode: params.initCode || \"0x\",\n      callData: params.callData,\n      callGasLimit: params.callGasLimit || 0n, // Should be estimated\n      verificationGasLimit:\n        params.verificationGasLimit || UserOpBuilder.DEFAULT_VERIFICATION_GAS_LIMIT,\n      preVerificationGas: params.preVerificationGas || UserOpBuilder.DEFAULT_PRE_VERIFICATION_GAS,\n      maxFeePerGas: params.maxFeePerGas || UserOpBuilder.DEFAULT_MAX_FEE_PER_GAS,\n      maxPriorityFeePerGas:\n        params.maxPriorityFeePerGas || UserOpBuilder.DEFAULT_MAX_PRIORITY_FEE_PER_GAS,\n      paymasterAndData: params.paymasterAndData || \"0x\",\n      signature: params.signature || \"0x\",\n    };\n  }\n\n  /**\n   * Hash the UserOperation for signing (ERC-4337 v0.7)\n   */\n  getUserOpHash(userOp: PackedUserOperation, entryPoint: string, chainId: number): string {\n    const encoded = ethers.AbiCoder.defaultAbiCoder().encode(\n      [\"address\", \"uint256\", \"bytes32\", \"bytes32\", \"bytes32\", \"uint256\", \"bytes32\", \"bytes32\"],\n      [\n        userOp.sender,\n        userOp.nonce,\n        ethers.keccak256(userOp.initCode),\n        ethers.keccak256(userOp.callData),\n        userOp.accountGasLimits,\n        userOp.preVerificationGas,\n        userOp.gasFees,\n        ethers.keccak256(userOp.paymasterAndData),\n      ]\n    );\n\n    return ethers.keccak256(\n      ethers.AbiCoder.defaultAbiCoder().encode(\n        [\"bytes32\", \"address\", \"uint256\"],\n        [ethers.keccak256(encoded), entryPoint, chainId]\n      )\n    );\n  }\n\n  // Legacy v0.6 hashing support could be added here if needed\n}\n","// ─── Algorithm IDs (matches AAStarAirAccountBase constants) ─────\n\nexport const ALG_BLS = 0x01;\nexport const ALG_ECDSA = 0x02;\nexport const ALG_P256 = 0x03;\nexport const ALG_CUMULATIVE_T2 = 0x04; // P256 + BLS\nexport const ALG_CUMULATIVE_T3 = 0x05; // P256 + BLS + Guardian ECDSA\n\nexport type AlgId =\n  | typeof ALG_BLS\n  | typeof ALG_ECDSA\n  | typeof ALG_P256\n  | typeof ALG_CUMULATIVE_T2\n  | typeof ALG_CUMULATIVE_T3;\n\n// ─── Tier Levels ───────────────────────────────────────────────\n\nexport type TierLevel = 1 | 2 | 3;\n\nexport interface TierConfig {\n  /** Max value for Tier 1 (single ECDSA/Passkey). 0 = no enforcement. */\n  tier1Limit: bigint;\n  /** Max value for Tier 2 (P256 + BLS). 0 = no enforcement. */\n  tier2Limit: bigint;\n}\n\n// ─── Guard Status ──────────────────────────────────────────────\n\nexport interface GuardStatus {\n  hasGuard: boolean;\n  guardAddress: string;\n  dailyLimit: bigint;\n  dailyRemaining: bigint;\n}\n\n// ─── Pre-check result ──────────────────────────────────────────\n\nexport interface PreCheckResult {\n  ok: boolean;\n  errors: string[];\n  tier: TierLevel;\n  algId: AlgId;\n}\n","import {\n  TierLevel,\n  TierConfig,\n  AlgId,\n  ALG_ECDSA,\n  ALG_CUMULATIVE_T2,\n  ALG_CUMULATIVE_T3,\n} from \"./types\";\n\n/**\n * Determine the required tier for a given transaction value.\n *\n * - Tier 1: value <= tier1Limit — single ECDSA or P256 passkey\n * - Tier 2: tier1Limit < value <= tier2Limit — P256 + BLS aggregate\n * - Tier 3: value > tier2Limit — P256 + BLS + Guardian ECDSA\n *\n * If both limits are 0 (no enforcement), always returns Tier 1.\n */\nexport function resolveTier(value: bigint, config: TierConfig): TierLevel {\n  if (config.tier1Limit === 0n && config.tier2Limit === 0n) return 1;\n  if (config.tier1Limit > 0n && value <= config.tier1Limit) return 1;\n  if (config.tier2Limit > 0n && value <= config.tier2Limit) return 2;\n  return 3;\n}\n\n/**\n * Get the algorithm ID to use for a given tier.\n *\n * - Tier 1: ALG_ECDSA (0x02) — raw 65-byte ECDSA, no prefix needed\n * - Tier 2: ALG_CUMULATIVE_T2 (0x04) — P256 + BLS\n * - Tier 3: ALG_CUMULATIVE_T3 (0x05) — P256 + BLS + Guardian\n */\nexport function algIdForTier(tier: TierLevel): AlgId {\n  switch (tier) {\n    case 1:\n      return ALG_ECDSA;\n    case 2:\n      return ALG_CUMULATIVE_T2;\n    case 3:\n      return ALG_CUMULATIVE_T3;\n  }\n}\n"]}