{"version":3,"sources":["../../../src/helpers/webcrypto.ts","../../../thru-ts-client-sdk/domain/programs/helpers/bytes.ts"],"names":[],"mappings":";;;AAAO,SAAS,YAAA,GAAuB;AACrC,EAAA,MAAM,SAAA,GAAY,OAAO,UAAA,KAAe,WAAA,GAAe,WAAmC,MAAA,GAAS,MAAA;AAEnG,EAAA,IAAI,SAAA,IAAa,OAAO,SAAA,CAAU,eAAA,KAAoB,UAAA,EAAY;AAChE,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAI,MAAM,+EAA+E,CAAA;AACjG;;;ACNO,SAAS,UAAA,CAAW,GAAe,CAAA,EAAwB;AAChE,EAAA,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,MAAA,EAAQ,OAAO,KAAA;AAElC,EAAA,IAAI,SAAA,GAAY,CAAA;AAChB,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAE,MAAA,EAAQ,SAAS,CAAA,EAAG;AAChD,IAAA,SAAA,IAAa,CAAA,CAAE,KAAK,CAAA,GAAI,CAAA,CAAE,KAAK,CAAA;AAAA,EACjC;AAEA,EAAA,OAAO,SAAA,KAAc,CAAA;AACvB;AAEO,SAAS,YAAA,CAAa,GAAe,CAAA,EAAuB;AACjE,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,MAAA,EAAQ,EAAE,MAAM,CAAA;AACvC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAC5B,IAAA,IAAI,CAAA,CAAE,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA;AAAA,EACtC;AACA,EAAA,OAAO,CAAA,CAAE,SAAS,CAAA,CAAE,MAAA;AACtB;AAEO,SAAS,eAAe,QAAA,EAAsC;AACnE,EAAA,MAAM,SAAuB,EAAC;AAC9B,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,CAAC,OAAO,IAAA,CAAK,CAAC,cAAc,UAAA,CAAW,SAAA,EAAW,OAAO,CAAC,CAAA,EAAG;AAC/D,MAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,IACrB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,WAAW,KAAA,EAA2B;AACpD,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,MAAA,IAAU,IAAA,CAAK,SAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACrE,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,SAAA,CAAU,OAAmB,MAAA,EAAwB;AACnE,EAAA,OAAO,IAAI,QAAA;AAAA,IACT,KAAA,CAAM,MAAA;AAAA,IACN,KAAA,CAAM,UAAA;AAAA,IACN,KAAA,CAAM;AAAA,GACR,CAAE,SAAA,CAAU,MAAA,EAAQ,IAAI,CAAA;AAC1B;AAEA,eAAsB,OAAO,KAAA,EAAwC;AACnE,EAAA,MAAM,SAAS,YAAA,EAAa;AAC5B,EAAA,MAAM,WAAA,GAAc,IAAI,UAAA,CAAW,KAAK,CAAA;AACxC,EAAA,OAAO,IAAI,WAAW,MAAM,MAAA,CAAO,OAAO,MAAA,CAAO,SAAA,EAAW,WAAW,CAAC,CAAA;AAC1E","file":"bytes.cjs","sourcesContent":["export function getWebCrypto(): Crypto {\n  const cryptoObj = typeof globalThis !== 'undefined' ? (globalThis as { crypto?: Crypto }).crypto : undefined;\n\n  if (cryptoObj && typeof cryptoObj.getRandomValues === 'function') {\n    return cryptoObj;\n  }\n\n  throw new Error('Web Crypto API is unavailable. Provide a polyfill exposing globalThis.crypto.');\n}\n","import { getWebCrypto } from \"@thru/sdk/helpers\";\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n  if (a.length !== b.length) return false;\n\n  let different = 0;\n  for (let index = 0; index < a.length; index += 1) {\n    different |= a[index] ^ b[index];\n  }\n\n  return different === 0;\n}\n\nexport function compareBytes(a: Uint8Array, b: Uint8Array): number {\n  const len = Math.min(a.length, b.length);\n  for (let i = 0; i < len; i++) {\n    if (a[i] !== b[i]) return a[i] - b[i];\n  }\n  return a.length - b.length;\n}\n\nexport function uniqueAccounts(accounts: Uint8Array[]): Uint8Array[] {\n  const unique: Uint8Array[] = [];\n  for (const account of accounts) {\n    if (!unique.some((candidate) => bytesEqual(candidate, account))) {\n      unique.push(account);\n    }\n  }\n  return unique;\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n  let output = \"\";\n  for (const byte of bytes) output += byte.toString(16).padStart(2, \"0\");\n  return output;\n}\n\nexport function readU32le(bytes: Uint8Array, offset: number): number {\n  return new DataView(\n    bytes.buffer,\n    bytes.byteOffset,\n    bytes.byteLength,\n  ).getUint32(offset, true);\n}\n\nexport async function sha256(bytes: Uint8Array): Promise<Uint8Array> {\n  const crypto = getWebCrypto();\n  const digestInput = new Uint8Array(bytes);\n  return new Uint8Array(await crypto.subtle.digest(\"SHA-256\", digestInput));\n}\n"]}