{"version":3,"sources":["../src/asp/eip712.ts","../src/asp/signature.ts"],"names":[],"mappings":";;;AAOO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX;AAEO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,UAAA,EAAY;AAAA,IACV,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAU;AAAA,IACnC,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,SAAA;AAAU;AAEzC;AAGO,IAAM,6BAAA,GAAgC;;;ACL7C,IAAM,KAAA,uBAAY,GAAA,EAA6B;AAG/C,IAAM,qBAAA,GAAwB,GAAA;AAKvB,SAAS,yBAAyB,OAAA,EAAkB;AACzD,EAAA,MAAM,YAAY,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,KAAQ,GAAI,CAAA;AAC9C,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,iBAAA;AAAA,IACR,KAAA,EAAO,gBAAA;AAAA,IACP,WAAA,EAAa,YAAA;AAAA,IACb,OAAA,EAAS;AAAA,MACP,OAAA;AAAA,MACA,SAAA,EAAW,OAAO,SAAS;AAAA,KAC7B;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,mBAAmB,OAAA,EAA0C;AAC3E,EAAA,MAAM,GAAA,GAAM,QAAQ,WAAA,EAAY;AAChC,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC5B,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,MAAM,GAAA,GAAM,KAAK,KAAA,CAAM,IAAA,CAAK,KAAI,GAAI,GAAI,IAAI,MAAA,CAAO,SAAA;AACnD,EAAA,IAAI,OAAO,qBAAA,EAAuB;AAChC,IAAA,KAAA,CAAM,OAAO,GAAG,CAAA;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,cAAA,CACd,OAAA,EACA,GAAA,EACA,SAAA,EACM;AACN,EAAA,KAAA,CAAM,IAAI,OAAA,CAAQ,WAAA,IAAe,EAAE,GAAA,EAAK,WAAW,CAAA;AACrD;AAKO,SAAS,qBAAA,CACd,GAAA,EACA,GAAA,EACA,SAAA,EACQ;AACR,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,QAAA,CAAS,GAAG,IAAI,GAAA,GAAM,GAAA;AACtC,EAAA,OAAO,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,IAAA,EAAO,GAAG,cAAc,SAAS,CAAA,CAAA;AACtD","file":"chunk-KH5SBQCC.cjs","sourcesContent":["/**\n * EIP-712 domain and types for authenticated ASP API requests.\n *\n * Used by both server (verifyTypedData) and client (signTypedData).\n * No chainId — ASP may serve multiple chains.\n */\n\nexport const ASP_EIP712_DOMAIN = {\n  name: 'UPC-ASP',\n  version: '1',\n} as const\n\nexport const ASP_EIP712_TYPES = {\n  ASPRequest: [\n    { name: 'address', type: 'address' },\n    { name: 'timestamp', type: 'uint256' },\n  ],\n} as const\n\n/** Signature validity window in seconds */\nexport const ASP_SIGNATURE_MAX_AGE_SECONDS = 300\n","/**\n * ASP Signature Helpers\n *\n * Non-React utilities for EIP-712 signature management.\n * Used by both React hooks (useASPProof) and non-React clients.\n */\n\nimport type { Address } from 'viem'\nimport { ASP_EIP712_DOMAIN, ASP_EIP712_TYPES } from './eip712.js'\n\ninterface CachedSignature {\n  sig: `0x${string}`\n  timestamp: number\n}\n\nconst cache = new Map<string, CachedSignature>()\n\n/** Cache TTL: 4 minutes (1-minute margin before server's 5-minute window) */\nconst CACHE_MAX_AGE_SECONDS = 240\n\n/**\n * Build the EIP-712 typed data message for signing.\n */\nexport function buildASPSignatureMessage(address: Address) {\n  const timestamp = Math.floor(Date.now() / 1000)\n  return {\n    domain: ASP_EIP712_DOMAIN,\n    types: ASP_EIP712_TYPES,\n    primaryType: 'ASPRequest' as const,\n    message: {\n      address,\n      timestamp: BigInt(timestamp),\n    },\n    timestamp,\n  }\n}\n\n/**\n * Get a cached signature if still valid, or null.\n */\nexport function getCachedSignature(address: Address): CachedSignature | null {\n  const key = address.toLowerCase()\n  const cached = cache.get(key)\n  if (!cached) return null\n\n  const age = Math.floor(Date.now() / 1000) - cached.timestamp\n  if (age >= CACHE_MAX_AGE_SECONDS) {\n    cache.delete(key)\n    return null\n  }\n  return cached\n}\n\n/**\n * Cache a freshly signed signature.\n */\nexport function cacheSignature(\n  address: Address,\n  sig: `0x${string}`,\n  timestamp: number,\n): void {\n  cache.set(address.toLowerCase(), { sig, timestamp })\n}\n\n/**\n * Append signature query params to a URL.\n */\nexport function appendSignatureParams(\n  url: string,\n  sig: `0x${string}`,\n  timestamp: number,\n): string {\n  const sep = url.includes('?') ? '&' : '?'\n  return `${url}${sep}sig=${sig}&timestamp=${timestamp}`\n}\n"]}