{"version":3,"sources":["../../../src/helpers/constants.ts","../../../src/helpers/address.ts","../../../src/core-program-addresses.ts","../../../thru-ts-client-sdk/domain/programs/uploader/constants.ts"],"names":["a","b","c","d","triple","byte1","byte2"],"mappings":";;;AAAO,IAAM,mBAAA,GAAsB,kEAAA;AAEnC,IAAM,UAAU,IAAI,UAAA,CAAW,GAAG,CAAA,CAAE,KAAK,EAAE,CAAA;AAC3C,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,mBAAA,CAAoB,QAAQ,CAAA,EAAA,EAAK;AACjD,EAAA,OAAA,CAAQ,mBAAA,CAAoB,UAAA,CAAW,CAAC,CAAC,CAAA,GAAI,CAAA;AACjD;AACO,IAAM,cAAA,GAAiB,OAAA;;;AC0CvB,SAAS,cAAc,KAAA,EAA2B;AACvD,EAAA,IAAI,KAAA,CAAM,WAAW,EAAA,EAAI;AACvB,IAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,EAC1C;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,IAAI,CAAA,EAAG;AAC3B,IAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,EAChD;AAEA,EAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAW,EAAE,CAAA;AAChC,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,SAAA,GAAY,EAAA;AAChB,EAAA,IAAI,MAAA,GAAS,CAAA;AAEb,EAAA,OAAO,aAAa,CAAA,EAAG;AACrB,IAAA,MAAMA,EAAAA,GAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAK,CAAC,CAAA;AAChD,IAAA,MAAMC,KAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AACpD,IAAA,MAAMC,KAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AACpD,IAAA,MAAMC,KAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AACpD,IAAA,IAAIH,KAAI,CAAA,IAAKC,EAAAA,GAAI,KAAKC,EAAAA,GAAI,CAAA,IAAKC,KAAI,CAAA,EAAG;AACpC,MAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,IAC5C;AACA,IAAA,MAAMC,UAAUJ,EAAAA,IAAK,EAAA,GAAOC,EAAAA,IAAK,EAAA,GAAOC,MAAK,CAAA,GAAKC,EAAAA;AAClD,IAAA,MAAME,MAAAA,GAASD,WAAU,EAAA,GAAM,GAAA;AAC/B,IAAA,MAAME,MAAAA,GAASF,WAAU,CAAA,GAAK,GAAA;AAC9B,IAAA,MAAM,QAAQA,OAAAA,GAAS,GAAA;AACvB,IAAA,QAAA,IAAYC,MAAAA;AACZ,IAAA,QAAA,IAAYC,MAAAA;AACZ,IAAA,QAAA,IAAY,KAAA;AACZ,IAAA,MAAA,CAAO,QAAQ,CAAA,GAAID,MAAAA;AACnB,IAAA,MAAA,CAAO,QAAQ,CAAA,GAAIC,MAAAA;AACnB,IAAA,MAAA,CAAO,QAAQ,CAAA,GAAI,KAAA;AACnB,IAAA,KAAA,IAAS,CAAA;AACT,IAAA,SAAA,IAAa,CAAA;AAAA,EACf;AAEA,EAAA,MAAM,CAAA,GAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,IAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AACpD,EAAA,MAAM,IAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AACpD,EAAA,MAAM,IAAI,cAAA,CAAe,KAAA,CAAM,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AACpD,EAAA,IAAI,IAAI,CAAA,IAAK,CAAA,GAAI,KAAK,CAAA,GAAI,CAAA,IAAK,IAAI,CAAA,EAAG;AACpC,IAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,EAC5C;AACA,EAAA,MAAM,SAAU,CAAA,IAAK,EAAA,GAAO,CAAA,IAAK,EAAA,GAAO,KAAK,CAAA,GAAK,CAAA;AAClD,EAAA,MAAM,KAAA,GAAS,UAAU,EAAA,GAAM,GAAA;AAC/B,EAAA,MAAM,KAAA,GAAS,UAAU,CAAA,GAAK,GAAA;AAC9B,EAAA,MAAM,mBAAmB,MAAA,GAAS,GAAA;AAElC,EAAA,QAAA,IAAY,KAAA;AACZ,EAAA,QAAA,IAAY,KAAA;AACZ,EAAA,MAAA,CAAO,QAAQ,CAAA,GAAI,KAAA;AACnB,EAAA,MAAA,CAAO,QAAQ,CAAA,GAAI,KAAA;AAEnB,EAAA,QAAA,IAAY,GAAA;AACZ,EAAA,IAAI,aAAa,gBAAA,EAAkB;AACjC,IAAA,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAAA,EAC7C;AAEA,EAAA,OAAO,MAAA;AACT;;;ACvGO,IAAM,wBAAA,GAA2B;;;ACDjC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,uBAAA,GAA0B,cAAc,wBAAwB;AAEtE,IAAM,kBAAA,GAAqB;AAC3B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,wBAAA,GAA2B;AAGjC,IAAM,2BAAA,GAA8B;AACpC,IAAM,uBAAA,GAA0B;AAChC,IAAM,uBAAA,GAA0B","file":"constants.cjs","sourcesContent":["export const BASE64_URL_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\nconst tempMap = new Int16Array(256).fill(-1);\nfor (let i = 0; i < BASE64_URL_ALPHABET.length; i++) {\n    tempMap[BASE64_URL_ALPHABET.charCodeAt(i)] = i;\n}\nexport const BASE64_URL_MAP = tempMap\n\n","import { BASE64_URL_ALPHABET, BASE64_URL_MAP } from \"./constants\";\n\nexport function encodeAddress(bytes: Uint8Array): string {\n  if (bytes.length !== 32) {\n    throw new Error('Expected 32-byte address');\n  }\n\n  let checksum = 0;\n  let accumulator = 0;\n  let bitsCollected = 0;\n  const output: string[] = ['t', 'a'];\n\n  for (let i = 0; i < 30; i++) {\n    const byte = bytes[i];\n    checksum += byte;\n    accumulator = ((accumulator << 8) | byte) >>> 0;\n    bitsCollected += 8;\n    while (bitsCollected >= 6) {\n      const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n      output.push(BASE64_URL_ALPHABET[index]);\n      bitsCollected -= 6;\n      accumulator &= maskForBits(bitsCollected);\n    }\n  }\n\n  const secondLast = bytes[30];\n  checksum += secondLast;\n  accumulator = ((accumulator << 8) | secondLast) >>> 0;\n  bitsCollected += 8;\n\n  const last = bytes[31];\n  checksum += last;\n  accumulator = ((accumulator << 8) | last) >>> 0;\n  bitsCollected += 8;\n\n  accumulator = ((accumulator << 8) | (checksum & 0xff)) >>> 0;\n  bitsCollected += 8;\n\n  while (bitsCollected >= 6) {\n    const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n    output.push(BASE64_URL_ALPHABET[index]);\n    bitsCollected -= 6;\n    accumulator &= maskForBits(bitsCollected);\n  }\n\n  return output.join('');\n}\n\nexport function decodeAddress(value: string): Uint8Array {\n  if (value.length !== 46) {\n    throw new Error('Invalid address length');\n  }\n  if (!value.startsWith('ta')) {\n    throw new Error('Address must start with \"ta\"');\n  }\n\n  const output = new Uint8Array(32);\n  let checksum = 0;\n  let inIdx = 2;\n  let remaining = 40;\n  let outIdx = 0;\n\n  while (remaining >= 4) {\n    const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n    const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n    const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n    const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n    if (a < 0 || b < 0 || c < 0 || d < 0) {\n      throw new Error('Invalid address encoding');\n    }\n    const triple = (a << 18) | (b << 12) | (c << 6) | d;\n    const byte1 = (triple >> 16) & 0xff;\n    const byte2 = (triple >> 8) & 0xff;\n    const byte3 = triple & 0xff;\n    checksum += byte1;\n    checksum += byte2;\n    checksum += byte3;\n    output[outIdx++] = byte1;\n    output[outIdx++] = byte2;\n    output[outIdx++] = byte3;\n    inIdx += 4;\n    remaining -= 4;\n  }\n\n  const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n  const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n  const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n  const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n  if (a < 0 || b < 0 || c < 0 || d < 0) {\n    throw new Error('Invalid address encoding');\n  }\n  const triple = (a << 18) | (b << 12) | (c << 6) | d;\n  const byte1 = (triple >> 16) & 0xff;\n  const byte2 = (triple >> 8) & 0xff;\n  const incomingChecksum = triple & 0xff;\n\n  checksum += byte1;\n  checksum += byte2;\n  output[outIdx++] = byte1;\n  output[outIdx++] = byte2;\n\n  checksum &= 0xff;\n  if (checksum !== incomingChecksum) {\n    throw new Error('Address checksum mismatch');\n  }\n\n  return output;\n}\n\nfunction maskForBits(bits: number): number {\n  return bits === 0 ? 0 : (1 << bits) - 1;\n}\n","// Generated by programs/bootstrap/generate-addresses.ts; do not edit.\nexport const EOA_PROGRAM_ID = \"taEOAD2uLK1SLzPgtabFLUAx22yDlBs9DE9nZFTOESIGRr\";\nexport const ROOT_MANAGER_PROGRAM_ADDRESS = \"taAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB\";\nexport const MANAGER_PROGRAM_ADDRESS = \"taMGRmPoSTkUtF6UlmCIq58K8OYsnXshOMPdobxxHytqmu\";\nexport const UPLOADER_PROGRAM_ADDRESS = \"taUPLMH5QYOAT4ktwQeO7DXAEKtqBhYehalNGf5BJFQDYq\";\n// Test fixture only: upload explicitly before use; absent from genesis.\nexport const SYSTEM_TEST_PROGRAM_ADDRESS = \"tar71GzddPShylAkcr4uvCDLRtdovGCI64b54CYtqCWSVA\";\nexport const NOOP_PROGRAM_ADDRESS = \"taNOOPV4A7S3WTsirr149To2GoGZ9q8zllQaBrbekHfkJT\";\nexport const ABI_MANAGER_PROGRAM_ADDRESS = \"taABII8WXcPaPIt47cXjOBbyoBUGBDXznAMHorVMeok3mw\";\nexport const TOKEN_PROGRAM_ADDRESS = \"taTOKENKRgcl3vO0yVhftATDbXuhgWcfaaxv9xpEEdMdUE\";\nexport const MULTICALL_PROGRAM_ADDRESS = \"taMULTIrOL8WpIFr16C1ECsO60qAsuwmwJephZHDOTvSeP\";\nexport const COMPRESSION_PROGRAM_ADDRESS = \"taRB54_92jNbBdcmt2jus88F-xrOSne1GR9mmyOh4RidAK\";\nexport const PASSKEY_MANAGER_PROGRAM_ADDRESS = \"taPASSIvjIgz2kZ1CIIhvbT00XV9Ve5kZ2I9uDLanzIgbA\";\n","import { decodeAddress } from '@thru/sdk/helpers';\nimport { UPLOADER_PROGRAM_ADDRESS } from '../../../../src/core-program-addresses';\nexport { UPLOADER_PROGRAM_ADDRESS };\nexport const UPLOADER_PROGRAM_SEED = 'thru-program:1073768';\nexport const UPLOADER_PROGRAM_PUBKEY = decodeAddress(UPLOADER_PROGRAM_ADDRESS);\n\nexport const UPLOADER_META_SIZE = 65;\nexport const UPLOADER_STATE_OPEN = 0x01;\nexport const UPLOADER_STATE_FINALIZED = 0x02;\n\n/* Safe uploader write sizes matching the CLI policy under TN_TXN_MTU. */\nexport const UPLOADER_DEFAULT_CHUNK_SIZE = 30_720;\nexport const UPLOADER_MIN_CHUNK_SIZE = 1_024;\nexport const UPLOADER_MAX_CHUNK_SIZE = 31_000;\n"]}