@explorins/pers-sdk-react-native 1.3.2 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +276 -123
  2. package/dist/hooks/index.d.ts +8 -0
  3. package/dist/hooks/index.d.ts.map +1 -1
  4. package/dist/hooks/index.js +7 -0
  5. package/dist/hooks/useAnalytics.d.ts +96 -0
  6. package/dist/hooks/useAnalytics.d.ts.map +1 -0
  7. package/dist/hooks/useAnalytics.js +73 -0
  8. package/dist/hooks/useAuth.d.ts +52 -7
  9. package/dist/hooks/useAuth.d.ts.map +1 -1
  10. package/dist/hooks/useAuth.js +250 -3
  11. package/dist/hooks/useBusiness.d.ts +45 -3
  12. package/dist/hooks/useBusiness.d.ts.map +1 -1
  13. package/dist/hooks/useBusiness.js +182 -28
  14. package/dist/hooks/useCampaigns.d.ts +11 -4
  15. package/dist/hooks/useCampaigns.d.ts.map +1 -1
  16. package/dist/hooks/useCampaigns.js +101 -39
  17. package/dist/hooks/useDonations.d.ts +33 -0
  18. package/dist/hooks/useDonations.d.ts.map +1 -0
  19. package/dist/hooks/useDonations.js +62 -0
  20. package/dist/hooks/useFiles.d.ts +50 -0
  21. package/dist/hooks/useFiles.d.ts.map +1 -0
  22. package/dist/hooks/useFiles.js +140 -0
  23. package/dist/hooks/usePurchases.d.ts +9 -0
  24. package/dist/hooks/usePurchases.d.ts.map +1 -0
  25. package/dist/hooks/usePurchases.js +56 -0
  26. package/dist/hooks/useRedemptions.d.ts +10 -5
  27. package/dist/hooks/useRedemptions.d.ts.map +1 -1
  28. package/dist/hooks/useRedemptions.js +94 -66
  29. package/dist/hooks/useTenants.d.ts +10 -0
  30. package/dist/hooks/useTenants.d.ts.map +1 -0
  31. package/dist/hooks/useTenants.js +68 -0
  32. package/dist/hooks/useTokens.d.ts +36 -2
  33. package/dist/hooks/useTokens.d.ts.map +1 -1
  34. package/dist/hooks/useTokens.js +180 -19
  35. package/dist/hooks/useTransactions.d.ts +45 -3
  36. package/dist/hooks/useTransactions.d.ts.map +1 -1
  37. package/dist/hooks/useTransactions.js +152 -31
  38. package/dist/hooks/useUserStatus.d.ts +9 -0
  39. package/dist/hooks/useUserStatus.d.ts.map +1 -0
  40. package/dist/hooks/useUserStatus.js +57 -0
  41. package/dist/hooks/useUsers.d.ts +17 -0
  42. package/dist/hooks/useUsers.d.ts.map +1 -0
  43. package/dist/hooks/useUsers.js +120 -0
  44. package/dist/hooks/useWeb3.d.ts +69 -6
  45. package/dist/hooks/useWeb3.d.ts.map +1 -1
  46. package/dist/hooks/useWeb3.js +177 -17
  47. package/dist/index.d.ts +6 -4
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +12199 -796
  50. package/dist/index.js.map +1 -1
  51. package/dist/polyfills/index.d.ts +1 -1
  52. package/dist/polyfills/index.d.ts.map +1 -1
  53. package/dist/polyfills/index.js +155 -9
  54. package/dist/polyfills/web3-polyfills.d.ts +7 -0
  55. package/dist/polyfills/web3-polyfills.d.ts.map +1 -0
  56. package/dist/polyfills/web3-polyfills.js +85 -0
  57. package/dist/providers/PersSDKProvider.d.ts +28 -18
  58. package/dist/providers/PersSDKProvider.d.ts.map +1 -1
  59. package/dist/providers/PersSDKProvider.js +63 -129
  60. package/dist/providers/react-native-auth-provider.d.ts +19 -64
  61. package/dist/providers/react-native-auth-provider.d.ts.map +1 -1
  62. package/dist/providers/react-native-auth-provider.js +57 -175
  63. package/package.json +171 -157
  64. package/src/hooks/index.ts +11 -1
  65. package/src/hooks/useAnalytics.ts +150 -0
  66. package/src/hooks/useAuth.ts +286 -27
  67. package/src/hooks/useBusiness.ts +193 -30
  68. package/src/hooks/useCampaigns.ts +121 -43
  69. package/src/hooks/useDonations.ts +68 -0
  70. package/src/hooks/useFiles.ts +160 -0
  71. package/src/hooks/usePurchases.ts +69 -0
  72. package/src/hooks/useRedemptions.ts +109 -68
  73. package/src/hooks/useTenants.ts +77 -0
  74. package/src/hooks/useTokens.ts +189 -21
  75. package/src/hooks/useTransactions.ts +170 -34
  76. package/src/hooks/useUserStatus.ts +65 -0
  77. package/src/hooks/useUsers.ts +133 -0
  78. package/src/hooks/useWeb3.ts +201 -21
  79. package/src/index.ts +21 -17
  80. package/src/polyfills/index.ts +163 -10
  81. package/src/polyfills/web3-polyfills.ts +98 -0
  82. package/src/providers/PersSDKProvider.tsx +114 -178
  83. package/src/providers/react-native-auth-provider.ts +65 -208
  84. package/dist/index.esm.js +0 -1057
  85. package/dist/index.esm.js.map +0 -1
  86. package/dist/polyfills/index.simple.d.ts +0 -2
  87. package/dist/polyfills/index.simple.d.ts.map +0 -1
  88. package/dist/polyfills/index.simple.js +0 -17
  89. package/src/polyfills/index.simple.ts +0 -22
  90. package/src/types/external-modules.d.ts +0 -13
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/transaction-role.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/transaction-type.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/transaction-status.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/transaction-trigger-process-type.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/api-key-type.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/admin-type.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/web3-contract-type.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/campaignConditionType.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/campaignTriggerType.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/owner-type.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/storageType.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/storageDataType.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/web3-master-wallet-type.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/signing-account-provider.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/signing-account-status.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/crypto.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/wallet.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/sort-order.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/purchase/purchase-status.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/purchase/purchase-currency.enum.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/enum/redemption/redemption-redeem-status.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/types/testnet-prefix.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/types/unique-user-identifier-keys.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/types/native-token.type.js","../node_modules/@explorins/pers-shared/dist/esm/shared-lib/types/analytics.type.js","../node_modules/@explorins/web3-ts/dist/esm/types/TransactionFormats.js","../node_modules/@explorins/pers-sdk/dist/user.js","../node_modules/@explorins/pers-sdk/dist/user-status.js","../node_modules/@explorins/pers-sdk/dist/chunks/token-sdk-BW4kkJb3.js","../node_modules/@explorins/pers-sdk/dist/business.js","../node_modules/@explorins/pers-sdk/dist/campaign.js","../node_modules/@explorins/pers-sdk/dist/redemption.js","../node_modules/@explorins/pers-sdk/dist/transaction.js","../node_modules/@explorins/pers-sdk/dist/payment.js","../node_modules/@explorins/pers-sdk/dist/tenant.js","../node_modules/@explorins/pers-sdk/dist/analytics.js","../node_modules/@explorins/pers-sdk/dist/donation.js","../node_modules/jwt-decode/build/esm/index.js","../node_modules/@explorins/web3-ts/dist/esm/functions/contract.ethers.functions.js","../node_modules/@explorins/web3-ts/dist/esm/PERS-contracts/functions/PERS_METHOD_BUILDER.ethers.functions.js","../node_modules/@explorins/web3-ts/dist/esm/PERS-contracts/contractMetaData.js","../node_modules/@explorins/web3-ts/dist/esm/helpers/encoders.js","../node_modules/@explorins/web3-ts/dist/esm/PERS-contracts/functions/readContract.PERS.ethers.functions.js","../node_modules/@explorins/web3-ts/dist/esm/utils/validation-utilities.js","../node_modules/@explorins/web3-ts/dist/esm/utils/contract-utilities.js","../node_modules/@explorins/pers-sdk/dist/chunks/index-CM21r58m.js","../node_modules/@explorins/pers-sdk/dist/chunks/index-CJ9Jfa4A.js","../node_modules/@explorins/pers-sdk/dist/chunks/pers-sdk-Z6MKeFBX.js"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","export var TransactionRole;\n(function (TransactionRole) {\n TransactionRole[\"SENDER\"] = \"SENDER\";\n TransactionRole[\"RECIPIENT\"] = \"RECIPIENT\";\n})(TransactionRole || (TransactionRole = {}));\n//# sourceMappingURL=transaction-role.enum.js.map","export var Web3TransactionType;\n(function (Web3TransactionType) {\n Web3TransactionType[\"MINT\"] = \"MINT\";\n Web3TransactionType[\"TRANSFER\"] = \"TRANSFER\";\n Web3TransactionType[\"BURN\"] = \"BURN\";\n // CLAIM = 'CLAIM',\n})(Web3TransactionType || (Web3TransactionType = {}));\n//# sourceMappingURL=transaction-type.enum.js.map","export var TransactionStatus;\n(function (TransactionStatus) {\n TransactionStatus[\"CREATED\"] = \"created\";\n // while is processing transaction\n TransactionStatus[\"PROCESSING\"] = \"processing\";\n // when transaction is pending to be signed\n TransactionStatus[\"PENDING_SIGNATURE\"] = \"pending_signature\";\n // after transaction has been broadcasted\n TransactionStatus[\"BROADCASTED\"] = \"broadcasted\";\n // after transaction has succeeded\n TransactionStatus[\"SUCCEEDED\"] = \"succeeded\";\n // after transaction has failed\n TransactionStatus[\"FAILED\"] = \"failed\";\n})(TransactionStatus || (TransactionStatus = {}));\n//# sourceMappingURL=transaction-status.enum.js.map","export var TransactionTriggerProcessType;\n(function (TransactionTriggerProcessType) {\n TransactionTriggerProcessType[\"PURCHASE\"] = \"PURCHASE\";\n TransactionTriggerProcessType[\"SPEND\"] = \"SPEND\";\n TransactionTriggerProcessType[\"TRANSFER\"] = \"TRANSFER\";\n TransactionTriggerProcessType[\"EARN\"] = \"EARN\";\n TransactionTriggerProcessType[\"CAMPAIGN_USER_CLAIM\"] = \"CAMPAIGN_USER_CLAIM\";\n TransactionTriggerProcessType[\"CAMPAIGN_SYSTEM_CLAIM\"] = \"CAMPAIGN_SYSTEM_CLAIM\";\n TransactionTriggerProcessType[\"CAMPAIGN_BUSINESS_CLAIM\"] = \"CAMPAIGN_BUSINESS_CLAIM\";\n TransactionTriggerProcessType[\"REDEMPTION_SPEND\"] = \"REDEMPTION_SPEND\";\n TransactionTriggerProcessType[\"REDEMPTION_RECEIVE\"] = \"REDEMPTION_RECEIVE\";\n TransactionTriggerProcessType[\"MIGRATION\"] = \"MIGRATION\";\n TransactionTriggerProcessType[\"ADMIN_TRIGGERED\"] = \"ADMIN_TRIGGERED\";\n})(TransactionTriggerProcessType || (TransactionTriggerProcessType = {}));\n//# sourceMappingURL=transaction-trigger-process-type.enum.js.map","export var ApiKeyType;\n(function (ApiKeyType) {\n ApiKeyType[\"TENANT_SYSTEM_API_SECRET\"] = \"TENANT_SYSTEM_API_SECRET\";\n ApiKeyType[\"TENANT_SYSTEM_JWT\"] = \"TENANT_SYSTEM_JWT\";\n ApiKeyType[\"ADMIN_JWT_ACCESS_TOKEN\"] = \"ADMIN_JWT_ACCESS_TOKEN\";\n ApiKeyType[\"ADMIN_JWT_REFRESH_TOKEN\"] = \"ADMIN_JWT_REFRESH_TOKEN\";\n ApiKeyType[\"USER_JWT_ACCESS_TOKEN\"] = \"USER_JWT_ACCESS_TOKEN\";\n ApiKeyType[\"USER_JWT_REFRESH_TOKEN\"] = \"USER_JWT_REFRESH_TOKEN\";\n ApiKeyType[\"BLOCKCHAIN_WRITER_JWT\"] = \"BLOCKCHAIN_WRITER_JWT\";\n ApiKeyType[\"BLOCKCHAIN_READER_JWT\"] = \"BLOCKCHAIN_READER_JWT\";\n // TODO: this needs to be removed. However, there is still dependency\n ApiKeyType[\"TENANT_LEGACY_ADMIN\"] = \"TENANT_ADMIN_JWT\";\n})(ApiKeyType || (ApiKeyType = {}));\n//# sourceMappingURL=api-key-type.enum.js.map","export var AdminType;\n(function (AdminType) {\n AdminType[\"SUPER_ADMIN\"] = \"SUPER_ADMIN\";\n AdminType[\"TENANT_ADMIN\"] = \"TENANT_ADMIN\";\n})(AdminType || (AdminType = {}));\n//# sourceMappingURL=admin-type.enum.js.map","export var Web3ContractTypes;\n(function (Web3ContractTypes) {\n // Legacy Smart Wallet Infrastructure\n Web3ContractTypes[\"SMART_WALLET_FACTORY\"] = \"SMART_WALLET_FACTORY\";\n Web3ContractTypes[\"SMART_WALLET_IMPLEMENTATION\"] = \"SMART_WALLET_IMPLEMENTATION\";\n Web3ContractTypes[\"SMART_WALLET_PROXY\"] = \"SMART_WALLET_PROXY\";\n // Counterfactual Wallet Infrastructure\n Web3ContractTypes[\"COUNTERFACTUAL_WALLET_FACTORY\"] = \"COUNTERFACTUAL_WALLET_FACTORY\";\n Web3ContractTypes[\"COUNTERFACTUAL_WALLET_IMPLEMENTATION\"] = \"COUNTERFACTUAL_WALLET_IMPLEMENTATION\";\n Web3ContractTypes[\"COUNTERFACTUAL_WALLET_PROXY\"] = \"COUNTERFACTUAL_WALLET_PROXY\";\n // Token Contracts\n Web3ContractTypes[\"TOKEN_CONTRACT\"] = \"TOKEN_CONTRACT\";\n})(Web3ContractTypes || (Web3ContractTypes = {}));\n//# sourceMappingURL=web3-contract-type.enum.js.map","export var CampaignConditionType;\n(function (CampaignConditionType) {\n CampaignConditionType[\"EQUALS\"] = \"EQUALS\";\n CampaignConditionType[\"NOT_EQUALS\"] = \"NOT_EQUALS\";\n CampaignConditionType[\"GREATER_THAN\"] = \"GREATER_THAN\";\n CampaignConditionType[\"LESS_THAN\"] = \"LESS_THAN\";\n CampaignConditionType[\"CONTAINS\"] = \"CONTAINS\";\n CampaignConditionType[\"IS_PART_OF\"] = \"IS_PART_OF\";\n})(CampaignConditionType || (CampaignConditionType = {}));\n//# sourceMappingURL=campaignConditionType.enum.js.map","export var CampaignTriggerType;\n(function (CampaignTriggerType) {\n CampaignTriggerType[\"CLAIM_BY_USER\"] = \"CLAIM_BY_USER\";\n CampaignTriggerType[\"CLAIM_BY_SYSTEM\"] = \"CLAIM_BY_SYSTEM\";\n CampaignTriggerType[\"CLAIM_BY_BUSINESS\"] = \"CLAIM_BY_BUSINESS\";\n})(CampaignTriggerType || (CampaignTriggerType = {}));\n//# sourceMappingURL=campaignTriggerType.enum.js.map","/**\n * Entity ownership types - defines what types of entities can own resources\n *\n * Used across multiple domains (wallets, signing accounts, etc.) to provide\n * consistent polymorphic ownership without foreign key constraints.\n */\nexport var AccountOwnerType;\n(function (AccountOwnerType) {\n AccountOwnerType[\"USER\"] = \"user\";\n AccountOwnerType[\"BUSINESS\"] = \"business\";\n AccountOwnerType[\"TENANT\"] = \"tenant\";\n AccountOwnerType[\"SYSTEM\"] = \"system\";\n AccountOwnerType[\"EXTERNAL\"] = \"external\"; // External non-system actors (e.g. third-party addresses)\n})(AccountOwnerType || (AccountOwnerType = {}));\n//# sourceMappingURL=owner-type.enum.js.map","export var StorageType;\n(function (StorageType) {\n StorageType[\"IPFS\"] = \"IPFS\";\n StorageType[\"WEB3_STORAGE\"] = \"WEB3_STORAGE\";\n})(StorageType || (StorageType = {}));\n//# sourceMappingURL=storageType.enum.js.map","export var StorageDataType;\n(function (StorageDataType) {\n StorageDataType[\"FILE_FROM_URL\"] = \"FILE_FROM_URL\";\n StorageDataType[\"OBJECT\"] = \"OBJECT\";\n StorageDataType[\"DIRECTORY\"] = \"DIRECTORY\";\n StorageDataType[\"FILE_BUFFER\"] = \"FILE_BUFFER\";\n})(StorageDataType || (StorageDataType = {}));\n//# sourceMappingURL=storageDataType.enum.js.map","export var Web3MasterWalletTypes;\n(function (Web3MasterWalletTypes) {\n Web3MasterWalletTypes[\"PROXY_FACTORY_OWNER\"] = \"PROXY_FACTORY_OWNER\";\n Web3MasterWalletTypes[\"RELAYER\"] = \"RELAYER\";\n Web3MasterWalletTypes[\"TOKEN_OWNER\"] = \"TOKEN_OWNER\";\n})(Web3MasterWalletTypes || (Web3MasterWalletTypes = {}));\n//# sourceMappingURL=web3-master-wallet-type.enum.js.map","/**\n * Signing Account Provider enum - defines the different wallet providers supported\n * for external signing accounts that can sign transactions.\n *\n * This enum is shared across domains to maintain consistency in provider identification.\n */\nexport var SigningAccountProvider;\n(function (SigningAccountProvider) {\n /* METAMASK = 'metamask',\n WALLETCONNECT = 'walletconnect',\n COINBASE_WALLET = 'coinbase_wallet', */\n SigningAccountProvider[\"DFNS\"] = \"DFNS\";\n // CUSTODIAL = 'custodial'\n SigningAccountProvider[\"PERS_INTERNAL\"] = \"PERS_INTERNAL\"; // Internal PERS managed signing accounts\n})(SigningAccountProvider || (SigningAccountProvider = {}));\n//# sourceMappingURL=signing-account-provider.enum.js.map","/**\n * Signing Account Status enum - defines the lifecycle states of signing accounts.\n *\n * This enum is shared across domains to maintain consistency in status management.\n */\nexport var SigningAccountStatus;\n(function (SigningAccountStatus) {\n /** Account is ready for use with all required information */\n SigningAccountStatus[\"ACTIVE\"] = \"active\";\n /** Account is temporarily disabled but can be reactivated */\n SigningAccountStatus[\"INACTIVE\"] = \"inactive\";\n /** Account is permanently disabled and cannot be used */\n SigningAccountStatus[\"REVOKED\"] = \"revoked\";\n})(SigningAccountStatus || (SigningAccountStatus = {}));\n//# sourceMappingURL=signing-account-status.enum.js.map","/**\n * Supported cryptographic schemes for signing accounts\n */\nexport var CryptographicScheme;\n(function (CryptographicScheme) {\n CryptographicScheme[\"ECDSA\"] = \"ECDSA\";\n // Future schemes can be added here\n // RSA = 'RSA',\n // EdDSA = 'EdDSA'\n})(CryptographicScheme || (CryptographicScheme = {}));\n/**\n * Supported elliptic curves for ECDSA\n */\nexport var EllipticCurve;\n(function (EllipticCurve) {\n EllipticCurve[\"SECP256K1\"] = \"secp256k1\";\n // Future curves can be added here\n // SECP256R1 = 'secp256r1',\n // SECP384R1 = 'secp384r1'\n})(EllipticCurve || (EllipticCurve = {}));\n/**\n * Network types for blockchain signing\n */\nexport var NetworkType;\n(function (NetworkType) {\n NetworkType[\"KEY_ECDSA\"] = \"KeyECDSA\";\n // Future network types can be added here\n // ETHEREUM = 'Ethereum',\n // POLYGON = 'Polygon'\n})(NetworkType || (NetworkType = {}));\n//# sourceMappingURL=crypto.enum.js.map","export var WalletManagementType;\n(function (WalletManagementType) {\n WalletManagementType[\"CUSTODIAL\"] = \"custodial\";\n WalletManagementType[\"NON_CUSTODIAL\"] = \"non-custodial\"; // Client-side signing\n})(WalletManagementType || (WalletManagementType = {}));\nexport var WalletStatus;\n(function (WalletStatus) {\n WalletStatus[\"PENDING\"] = \"pending\";\n WalletStatus[\"ACTIVE\"] = \"active\";\n WalletStatus[\"SUSPENDED\"] = \"suspended\";\n WalletStatus[\"ARCHIVED\"] = \"archived\";\n})(WalletStatus || (WalletStatus = {}));\n//# sourceMappingURL=wallet.enum.js.map","export var SortOrder;\n(function (SortOrder) {\n SortOrder[\"ASC\"] = \"ASC\";\n SortOrder[\"DESC\"] = \"DESC\";\n})(SortOrder || (SortOrder = {}));\n//# sourceMappingURL=sort-order.enum.js.map","export var PurchaseStatus;\n(function (PurchaseStatus) {\n // after creation of payment and before payment is done by user\n PurchaseStatus[\"PENDING\"] = \"pending\";\n // while payment is done by user and is processing transaction\n PurchaseStatus[\"PROCESSING\"] = \"processing\";\n // after payment was done by user and transaction has succeeded\n PurchaseStatus[\"SUCCEEDED\"] = \"succeeded\";\n // after payment was done by user and transaction has failed\n PurchaseStatus[\"FAILED\"] = \"failed\";\n // after payment was canceld by user\n PurchaseStatus[\"CANCELED\"] = \"canceled\";\n})(PurchaseStatus || (PurchaseStatus = {}));\n//# sourceMappingURL=purchase-status.enum.js.map","export var PurchaseCurrency;\n(function (PurchaseCurrency) {\n PurchaseCurrency[\"EUR\"] = \"eur\";\n})(PurchaseCurrency || (PurchaseCurrency = {}));\n//# sourceMappingURL=purchase-currency.enum.js.map","export var RedemptionRedeemStatus;\n(function (RedemptionRedeemStatus) {\n RedemptionRedeemStatus[\"PENDING\"] = \"PENDING\";\n RedemptionRedeemStatus[\"PROCESSING\"] = \"PROCESSING\";\n RedemptionRedeemStatus[\"COMPLETED\"] = \"COMPLETED\";\n RedemptionRedeemStatus[\"FAILED\"] = \"FAILED\"; // Processing failed\n})(RedemptionRedeemStatus || (RedemptionRedeemStatus = {}));\n//# sourceMappingURL=redemption-redeem-status.js.map","export const apiPublicKeyTestPrefix = 'pk_test_';\nexport const testnetPrefix = 'testnet-';\nexport const testnetShortPrefix = 'tn-';\n//# sourceMappingURL=testnet-prefix.js.map","// Define the keys as a constant array\nconst uniqueUserIdentifierKeysArray = [\n 'id',\n 'email',\n 'instagramAccountId',\n 'externalId', // This is a special key that can be used to search all fields\n];\n// Export the array\nexport const uniqueUserIdentifierKeys = [...uniqueUserIdentifierKeysArray];\n// Define identifier type configurations\nconst identifierTypes = {\n id: {\n key: 'id',\n detect: () => false, // ID is not auto-detected from wildcards\n process: (value) => value\n },\n email: {\n key: 'email',\n detect: (value) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value),\n process: (value) => value\n },\n instagramAccountId: {\n key: 'instagramAccountId',\n detect: (value) => /^@/.test(value) || value.toLowerCase().includes('instagram'),\n process: (value) => value.replace(/^@/, '') // Remove @ if present for consistency\n },\n externalId: {\n key: 'externalId',\n detect: () => true, // Default fallback\n process: (value) => value\n }\n};\n/**\n * Register a new identifier type configuration\n * @param key The identifier key\n * @param config The identifier configuration (without the key)\n */\nexport const registerIdentifierType = (key, config) => {\n if (!uniqueUserIdentifierKeysArray.includes(key)) {\n console.warn(`Warning: Registering identifier type '${key}' that is not in uniqueUserIdentifierKeys`);\n }\n identifierTypes[key] = {\n key,\n ...config\n };\n};\n/**\n * Detects the type of identifier from a wildcard input\n * @param wildcardValue The value to analyze\n * @returns Object containing the type and processed value\n */\nexport const detectIdentifierType = (wildcardValue) => {\n if (wildcardValue === null || wildcardValue === undefined) {\n return { type: 'externalId', value: '' };\n }\n const value = String(wildcardValue);\n // Try each identifier type in priority order\n for (const type of ['email', 'instagramAccountId', 'externalId']) {\n const config = identifierTypes[type];\n if (config.detect(value)) {\n return { type, value: config.process(value) };\n }\n }\n // Default fallback should never be reached due to externalId's detect always returning true\n return { type: 'externalId', value };\n};\n/**\n * Checks if an object is a properly formed UserIdentifierObject\n * @param obj Object to check\n * @returns Boolean indicating if the object is a UserIdentifierObject\n */\nexport const isUserIdentifierObject = (obj) => {\n return obj &&\n obj.type === 'identifierObject' &&\n uniqueUserIdentifierKeys.every(key => key in obj);\n};\n/**\n * Creates a UserIdentifierObject with all required fields, setting missing values to null\n * @param params Partial parameters for the identifier object\n * @returns A properly formed UserIdentifierObject\n */\nexport const createUserIdentifierObject = (params) => {\n // Extract the wildcard or use empty string\n const wildcard = params.wildcard || '';\n // Create base object with all identifier fields set to null\n const identifierObject = {\n type: 'identifierObject',\n id: null,\n email: null,\n instagramAccountId: null,\n externalId: null,\n wildcard\n };\n // Override nulls with any provided values\n uniqueUserIdentifierKeys.forEach(key => {\n if (params[key]) {\n identifierObject[key] = params[key];\n }\n });\n // If wildcard is provided but no specific fields, auto-detect the field type\n if (wildcard && !params.id && !params.email && !params.instagramAccountId && !params.externalId) {\n const detected = detectIdentifierType(wildcard);\n identifierObject[detected.type] = detected.value;\n }\n return identifierObject;\n};\n//# sourceMappingURL=unique-user-identifier-keys.js.map","// Use this pattern:\nexport const NativeTokenTypes = {\n ERC20: 'ERC20', // default; should be used for fungible tokens eg. credit tokens; There should be only one active ERC20 token per programme\n ERC1155: 'ERC1155',\n ERC721: 'ERC721'\n};\n//# sourceMappingURL=native-token.type.js.map","/* // ✅ EXPRESSION ALIASES: Results from CASE WHEN expressions and other computed fields\n& { [key: string]: string | number | Date | undefined }; */\nexport const ANALYTICS_METRIC_TYPES = ['count', 'sum', 'avg', 'min', 'max'];\nexport const ANALYTICS_GROUP_BY_TYPES = ['month', 'week', 'day', 'year', 'quarter'];\n//# sourceMappingURL=analytics.type.js.map","/**\n * Transaction format constants for PERS loyalty platform\n * Using const assertions for zero runtime overhead in Lambda environment\n * Following PERS DDD principles with clear domain separation\n */\nexport const TRANSACTION_FORMATS = {\n LEGACY: 'legacy',\n EIP_2930: 'EIP-2930',\n EIP_1559: 'EIP-1559',\n EIP_712: 'EIP-712'\n};\n/**\n * Human-readable descriptions for API documentation\n * Maps format values to clear descriptions\n */\nexport const TRANSACTION_FORMAT_DESCRIPTIONS = {\n [TRANSACTION_FORMATS.LEGACY]: 'Legacy Ethereum transaction (Type 0) with gasPrice',\n [TRANSACTION_FORMATS.EIP_2930]: 'EIP-2930 Access List transaction (Type 1) with gasPrice and accessList',\n [TRANSACTION_FORMATS.EIP_1559]: 'EIP-1559 Fee Market transaction (Type 2) with maxFeePerGas and maxPriorityFeePerGas',\n [TRANSACTION_FORMATS.EIP_712]: 'EIP-712 structured data for smart wallet meta-transactions'\n};\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic User API Client\n *\n * Handles user operations using the PERS backend RESTful API.\n * Updated to use new /users endpoints with enhanced security and consistency.\n * Maintains framework UserApiService method compatibility.\n */\nclass UserApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/users';\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get all users public profiles with optional filtering\n * ✅ UPDATED: Uses new RESTful /users/public endpoint\n */\n async getAllUsersPublicProfiles(filter = null) {\n let url = `${this.basePath}/public`;\n if (filter) {\n // ✅ MAINTAINED: Same parameter pattern for compatibility\n const params = new URLSearchParams();\n params.set('filterKey', filter.key);\n params.set('filterValue', filter.value);\n url += `?${params.toString()}`;\n }\n return this.apiClient.get(url);\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Get current authenticated user\n * ✅ UPDATED: Uses new RESTful /users/me endpoint\n */\n async getRemoteUser() {\n return this.apiClient.get(`${this.basePath}/me`);\n }\n /**\n * AUTH: Update current authenticated user\n * ✅ UPDATED: Uses new RESTful /users/me endpoint\n */\n async updateRemoteUser(updateRequest) {\n return this.apiClient.put(`${this.basePath}/me`, updateRequest);\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Get all remote users with query parameters\n * ✅ UPDATED: Uses new RESTful /users endpoint with role-based access\n * Note: Admin users get full data, non-admin users get public profiles only\n */\n async getAllRemoteUsers() {\n // ✅ MAINTAINED: Same merge=soft parameter for compatibility\n const url = `${this.basePath}?merge=soft`;\n return this.apiClient.get(url);\n }\n /**\n * ADMIN: Update user as admin\n * ✅ UPDATED: Uses new RESTful /users/{id} endpoint\n */\n async updateUserAsAdmin(id, userData) {\n return this.apiClient.put(`${this.basePath}/${id}`, userData);\n }\n /**\n * ADMIN: Toggle user active status\n * ✅ UPDATED: Uses new consistent /users/{id}/status endpoint\n * Enhanced: Follows RESTful status management pattern across all domains\n */\n async toggleUserActiveStatusByUser(user) {\n return this.apiClient.put(`${this.basePath}/${user.id}/status`, {});\n }\n /**\n * ADMIN: Get user by unique identifier\n * ✅ UPDATED: Uses new RESTful /users/{id} endpoint\n */\n async getUserByUniqueIdentifier(id) {\n return this.apiClient.get(`${this.basePath}/${id}`);\n }\n}\n\n/**\n * Platform-Agnostic User Service\n *\n * Contains user business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n * Matches framework UserApiService capabilities exactly.\n */\nclass UserService {\n constructor(userApi) {\n this.userApi = userApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get all users public profiles with optional filtering\n * ✅ FIXED: Uses framework-compatible inline filter type\n */\n async getAllUsersPublicProfiles(filter = null) {\n return this.userApi.getAllUsersPublicProfiles(filter);\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Get current authenticated user\n */\n async getRemoteUser() {\n return this.userApi.getRemoteUser();\n }\n /**\n * AUTH: Update current authenticated user\n */\n async updateRemoteUser(updateRequest) {\n return this.userApi.updateRemoteUser(updateRequest);\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Get all remote users\n * ✅ FIXED: Matches API method signature (no parameters needed)\n */\n async getAllRemoteUsers() {\n return this.userApi.getAllRemoteUsers();\n }\n /**\n * ADMIN: Update user as admin\n */\n async updateUserAsAdmin(id, userData) {\n return this.userApi.updateUserAsAdmin(id, userData);\n }\n async getUserByUniqueIdentifier(id) {\n return this.userApi.getUserByUniqueIdentifier(id);\n }\n /**\n * ADMIN: Toggle user active status by user object\n * ✅ FIXED: Matches API method signature exactly\n */\n async toggleUserActiveStatusByUser(user) {\n return this.userApi.toggleUserActiveStatusByUser(user);\n }\n}\n\n/**\n * @explorins/pers-sdk-user\n *\n * Platform-agnostic User Domain SDK for PERS ecosystem\n * Handles user management, profiles, and authentication operations\n */\n// API Layer\n/**\n * Create a complete User SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns User SDK with flattened structure for better DX\n */\nfunction createUserSDK(apiClient) {\n const userApi = new UserApi(apiClient);\n const userService = new UserService(userApi);\n return {\n // Direct access to service methods (primary interface)\n // Public methods - matches framework exactly\n getAllUsersPublicProfiles: (filter = null) => userService.getAllUsersPublicProfiles(filter),\n // Auth methods - matches framework exactly\n getRemoteUser: () => userService.getRemoteUser(),\n updateRemoteUser: (updateRequest) => userService.updateRemoteUser(updateRequest),\n // Admin methods - matches framework exactly\n getAllRemoteUsers: () => userService.getAllRemoteUsers(),\n updateUserAsAdmin: (id, userData) => userService.updateUserAsAdmin(id, userData),\n toggleUserActiveStatusByUser: (user) => userService.toggleUserActiveStatusByUser(user),\n getUserByUniqueIdentifier: (id) => userService.getUserByUniqueIdentifier(id),\n // Advanced access for edge cases\n api: userApi,\n service: userService\n };\n}\n\nexport { UserApi, UserService, createUserSDK };\n//# sourceMappingURL=user.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic User Status API Client\n *\n * Handles user status operations using the PERS backend.\n * Matches framework UserStatusApiService methods exactly.\n *\n * ✅ UPDATED: All endpoints updated to new RESTful /users patterns\n *\n * Error handling patterns follow framework implementation:\n * - getRemoteEarnedUserStatus() uses silent fallback (empty array)\n * - Other operations throw errors for proper error handling\n */\nclass UserStatusApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/users';\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get remote user status types\n * ✅ UPDATED: /user/status-type → /users/status-types\n */\n async getRemoteUserStatusTypes() {\n try {\n return await this.apiClient.get(`${this.basePath}/status-types`);\n }\n catch (error) {\n console.error('Error getting user status types', error);\n throw error;\n }\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Get earned user status for authenticated user\n * ✅ UPDATED: /user/auth/status → /users/me/status\n * ✅ FIXED: Returns UserStatusTypeDTO[] to match framework exactly\n * Note: Uses silent fallback pattern from framework - returns empty array on error\n */\n async getRemoteEarnedUserStatus() {\n try {\n return await this.apiClient.get(`${this.basePath}/me/status`);\n }\n catch (error) {\n console.error('Error getting user status', error);\n // ✅ FIXED: Silent fallback pattern from framework implementation\n return [];\n }\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Create user status type\n * ✅ UPDATED: /user/admin/status-type → /users/status-types\n */\n async createUserStatusType(userStatusType) {\n try {\n return await this.apiClient.post(`${this.basePath}/status-types`, userStatusType);\n }\n catch (error) {\n console.error('Error creating user status type', error);\n throw error;\n }\n }\n}\n\n/**\n * Platform-Agnostic User Status Service\n *\n * Contains user status business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n * Matches framework UserStatusApiService capabilities exactly.\n */\nclass UserStatusService {\n constructor(userStatusApi) {\n this.userStatusApi = userStatusApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get remote user status types\n */\n async getRemoteUserStatusTypes() {\n return this.userStatusApi.getRemoteUserStatusTypes();\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Get earned user status for authenticated user\n */\n async getRemoteEarnedUserStatus() {\n return this.userStatusApi.getRemoteEarnedUserStatus();\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Create user status type\n */\n async createUserStatusType(userStatusType) {\n return this.userStatusApi.createUserStatusType(userStatusType);\n }\n}\n\n/**\n * @explorins/pers-sdk-user-status\n *\n * Platform-agnostic User Status Domain SDK for PERS ecosystem\n * Handles user status management and type operations\n */\n// API Layer\n/**\n * Create a complete User Status SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns User Status SDK with flattened structure for better DX\n */\nfunction createUserStatusSDK(apiClient) {\n const userStatusApi = new UserStatusApi(apiClient);\n const userStatusService = new UserStatusService(userStatusApi);\n return {\n // Direct access to service methods (primary interface)\n // ✅ FRAMEWORK ALIGNED: Only methods actually used by framework\n // Public methods\n getRemoteUserStatusTypes: () => userStatusService.getRemoteUserStatusTypes(),\n // Auth methods\n getRemoteEarnedUserStatus: () => userStatusService.getRemoteEarnedUserStatus(),\n // Admin methods\n createUserStatusType: (userStatusType) => userStatusService.createUserStatusType(userStatusType),\n // Advanced access for edge cases\n api: userStatusApi,\n service: userStatusService\n };\n}\n\nexport { UserStatusApi, UserStatusService, createUserStatusSDK };\n//# sourceMappingURL=user-status.js.map\n","class TokenApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/tokens';\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get all remote tokens\n * ENHANCED: Added admin filtering capability\n */\n async getRemoteTokens(includeInactive = false) {\n const url = includeInactive ? `${this.basePath}?active=false` : `${this.basePath}`;\n return this.apiClient.get(url);\n }\n /**\n * PUBLIC: Get all remote token types\n */\n async getRemoteTokenTypes() {\n return this.apiClient.get(`${this.basePath}/types`);\n }\n /**\n * PUBLIC: Get active point token (was credit token)\n */\n async getRemoteActiveCreditToken() {\n return this.apiClient.get(`${this.basePath}/points`);\n }\n /**\n * PUBLIC: Get reward tokens\n * ENHANCED: Added admin filtering capability\n */\n async getRemoteRewardTokens(includeInactive = false) {\n const url = includeInactive ? `${this.basePath}/rewards?active=false` : `${this.basePath}/rewards`;\n return this.apiClient.get(url);\n }\n /**\n * PUBLIC: Get stamp tokens (was status tokens)\n * ENHANCED: Added admin filtering capability\n */\n async getRemoteStatusTokens(includeInactive = false) {\n const url = includeInactive ? `${this.basePath}/stamps?active=false` : `${this.basePath}/stamps`;\n return this.apiClient.get(url);\n }\n /**\n * PUBLIC: Get token by contract address\n */\n async getTokenByContractAddress(contractAddress, contractTokenId) {\n let url = `${this.basePath}/address/${contractAddress}`;\n if (contractTokenId) {\n url += `?contractTokenId=${contractTokenId}`;\n }\n return this.apiClient.get(url);\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Create new token\n */\n async createToken(tokenData) {\n return this.apiClient.post(`${this.basePath}`, tokenData);\n }\n /**\n * ADMIN: Update token\n */\n async updateToken(tokenId, tokenData) {\n return this.apiClient.put(`${this.basePath}/${tokenId}`, tokenData);\n }\n /**\n * ADMIN: Toggle token active status\n * FIXED: Now calls correct endpoint\n */\n async toggleTokenActive(tokenId) {\n return this.apiClient.put(`${this.basePath}/${tokenId}/status`, {});\n }\n /**\n * ADMIN: Set mainnet contract address\n */\n async setMainnetContract(tokenId, contractAddress, chainId) {\n return this.apiClient.put(`${this.basePath}/${tokenId}/mainnet`, {\n contractAddress,\n chainId\n });\n }\n /**\n * ADMIN: Create token metadata\n */\n async createTokenMetadata(tokenId, tokenData) {\n return this.apiClient.post(`${this.basePath}/${tokenId}/metadata`, tokenData);\n }\n /**\n * ADMIN: Toggle token metadata status (separate from token status)\n */\n async toggleTokenMetadataStatus(metadataId) {\n return this.apiClient.put(`${this.basePath}/metadata/${metadataId}/status`, {});\n }\n /**\n * ADMIN: Create token type\n */\n async createTokenType(tokenType) {\n return this.apiClient.post(`${this.basePath}/types`, tokenType);\n }\n}\n\n/**\n * Platform-Agnostic Token Service\n *\n * Contains token business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n * Matches framework TokenApiService capabilities exactly.\n */\nclass TokenService {\n constructor(tokenApi) {\n this.tokenApi = tokenApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get all remote tokens\n */\n async getRemoteTokens() {\n return this.tokenApi.getRemoteTokens();\n }\n /**\n * PUBLIC: Get all remote token types\n */\n async getRemoteTokenTypes() {\n return this.tokenApi.getRemoteTokenTypes();\n }\n /**\n * PUBLIC: Get active credit token\n */\n async getRemoteActiveCreditToken() {\n return this.tokenApi.getRemoteActiveCreditToken();\n }\n /**\n * PUBLIC: Get reward tokens\n */\n async getRemoteRewardTokens() {\n return this.tokenApi.getRemoteRewardTokens();\n }\n /**\n * PUBLIC: Get status tokens\n */\n async getRemoteStatusTokens() {\n return this.tokenApi.getRemoteStatusTokens();\n }\n /**\n * PUBLIC: Get token by contract address\n * ✅ FIXED: Matches framework parameter types exactly\n */\n async getTokenByContractAddress(contractAddress, contractTokenId) {\n return this.tokenApi.getTokenByContractAddress(contractAddress, contractTokenId);\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Create token metadata\n */\n async createTokenMetadata(tokenId, tokenData) {\n return this.tokenApi.createTokenMetadata(tokenId, tokenData);\n }\n /**\n * ADMIN: Toggle token active status\n */\n async toggleTokenActive(tokenId) {\n return this.tokenApi.toggleTokenActive(tokenId);\n }\n /**\n * ADMIN: Create new token\n */\n async createToken(tokenData) {\n return this.tokenApi.createToken(tokenData);\n }\n /**\n * ADMIN: Update token\n */\n async updateToken(tokenId, tokenData) {\n return this.tokenApi.updateToken(tokenId, tokenData);\n }\n /**\n * ADMIN: Set mainnet contract address\n */\n async setMainnetContract(tokenId, contractAddress, chainId) {\n return this.tokenApi.setMainnetContract(tokenId, contractAddress, chainId);\n }\n /**\n * ADMIN: Toggle token metadata status\n */\n async toggleTokenMetadataStatus(metadataId) {\n return this.tokenApi.toggleTokenMetadataStatus(metadataId);\n }\n /**\n * ADMIN: Create token type\n */\n async createTokenType(tokenType) {\n return this.tokenApi.createTokenType(tokenType);\n }\n}\n\n/**\n * Token SDK - Class-based Promise SDK for Token Operations\n *\n * Modern, performant SDK with direct method access and excellent TypeScript support.\n * Optimized for bundle size, performance, and developer experience.\n *\n * Usage:\n * const tokenSDK = new TokenSDK(apiClient);\n * const tokens = await tokenSDK.getTokens();\n * const creditToken = await tokenSDK.getActiveCreditToken();\n */\nclass TokenSDK {\n constructor(apiClient) {\n this.tokenApi = new TokenApi(apiClient);\n this.tokenService = new TokenService(this.tokenApi);\n }\n // ==========================================\n // CONVENIENCE METHODS - Direct Promise API\n // ==========================================\n // Simplified method names for better developer experience\n /**\n * Get all tokens\n * @returns Promise with all available tokens\n */\n async getTokens() {\n return this.tokenService.getRemoteTokens();\n }\n /**\n * Get all token types\n * @returns Promise with all available token types\n */\n async getTokenTypes() {\n return this.tokenService.getRemoteTokenTypes();\n }\n /**\n * Get the active credit token\n * @returns Promise with the current active credit token\n */\n async getActiveCreditToken() {\n return this.tokenService.getRemoteActiveCreditToken();\n }\n /**\n * Get all reward tokens\n * @returns Promise with all reward tokens\n */\n async getRewardTokens() {\n return this.tokenService.getRemoteRewardTokens();\n }\n /**\n * Get all status tokens\n * @returns Promise with all status tokens\n */\n async getStatusTokens() {\n return this.tokenService.getRemoteStatusTokens();\n }\n /**\n * Get token by contract address\n * @param contractAddress - The contract address to search for\n * @param contractTokenId - Optional contract token ID\n * @returns Promise with the matching token\n */\n async getTokenByContract(contractAddress, contractTokenId = null) {\n return this.tokenService.getTokenByContractAddress(contractAddress, contractTokenId);\n }\n // ==========================================\n // ADMIN METHODS - Token Management\n // ==========================================\n /**\n * Create token metadata\n * @param tokenId - The token ID\n * @param tokenData - The token storage data\n * @returns Promise with the updated token\n */\n async createTokenMetadata(tokenId, tokenData) {\n return this.tokenService.createTokenMetadata(tokenId, tokenData);\n }\n /**\n * Toggle token active status\n * @param tokenId - The token ID to toggle\n * @returns Promise with the updated token\n */\n async toggleTokenActive(tokenId) {\n return this.tokenService.toggleTokenActive(tokenId);\n }\n /**\n * Create a new token\n * @param tokenData - The token creation data\n * @returns Promise with the created token\n */\n async createToken(tokenData) {\n return this.tokenService.createToken(tokenData);\n }\n /**\n * Update an existing token\n * @param tokenId - The token ID to update\n * @param tokenData - The token update data\n * @returns Promise with the updated token\n */\n async updateToken(tokenId, tokenData) {\n return this.tokenService.updateToken(tokenId, tokenData);\n }\n /**\n * Set mainnet contract address for a token\n * @param tokenId - The token ID\n * @param contractAddress - The contract address\n * @param chainId - The blockchain chain ID\n * @returns Promise with the updated token\n */\n async setMainnetContract(tokenId, contractAddress, chainId) {\n return this.tokenService.setMainnetContract(tokenId, contractAddress, chainId);\n }\n /**\n * Toggle token metadata status\n * @param metadataId - The metadata ID to toggle\n * @returns Promise with the updated metadata\n */\n async toggleTokenMetadataStatus(metadataId) {\n return this.tokenService.toggleTokenMetadataStatus(metadataId);\n }\n /**\n * Create a new token type\n * @param tokenType - The token type data\n * @returns Promise with the created token type\n */\n async createTokenType(tokenType) {\n return this.tokenService.createTokenType(tokenType);\n }\n // ==========================================\n // ADVANCED ACCESS - For Complex Operations\n // ==========================================\n /**\n * Get direct access to the token service for advanced operations\n * @returns The underlying TokenService instance\n */\n getTokenService() {\n return this.tokenService;\n }\n /**\n * Get direct access to the token API for low-level operations\n * @returns The underlying TokenApi instance\n */\n getTokenApi() {\n return this.tokenApi;\n }\n // ==========================================\n // FRAMEWORK COMPATIBILITY METHODS\n // ==========================================\n // These maintain compatibility with existing framework method names\n /**\n * @deprecated Use getTokens() instead\n * Framework compatibility method\n */\n async getRemoteTokens() {\n return this.getTokens();\n }\n /**\n * @deprecated Use getTokenTypes() instead\n * Framework compatibility method\n */\n async getRemoteTokenTypes() {\n return this.getTokenTypes();\n }\n /**\n * @deprecated Use getActiveCreditToken() instead\n * Framework compatibility method\n */\n async getRemoteActiveCreditToken() {\n return this.getActiveCreditToken();\n }\n /**\n * @deprecated Use getRewardTokens() instead\n * Framework compatibility method\n */\n async getRemoteRewardTokens() {\n return this.getRewardTokens();\n }\n /**\n * @deprecated Use getStatusTokens() instead\n * Framework compatibility method\n */\n async getRemoteStatusTokens() {\n return this.getStatusTokens();\n }\n /**\n * @deprecated Use getTokenByContract() instead\n * Framework compatibility method\n */\n async getTokenByContractAddress(contractAddress, contractTokenId) {\n return this.getTokenByContract(contractAddress, contractTokenId);\n }\n}\n\nexport { TokenSDK as T, TokenApi as a, TokenService as b };\n//# sourceMappingURL=token-sdk-BW4kkJb3.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Business API Client\n *\n * Updated to match the actual RESTful endpoints:\n * - /businesses for business operations\n * - /business-types for business type operations (separate controller)\n */\nclass BusinessApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/businesses';\n this.businessTypesPath = '/businesses/types';\n }\n // ==========================================\n // 🌐 BUSINESS TYPES MANAGEMENT\n // ==========================================\n /**\n * Get all business types (project key required)\n *\n * Endpoint: GET /business-types\n * Auth: @ApiSecurity('projectKey')\n */\n async getBusinessTypes() {\n return this.apiClient.get(this.businessTypesPath);\n }\n /**\n * ADMIN: Create business type\n *\n * Endpoint: POST /business-types\n * Auth: @TenantAdmin()\n */\n async createBusinessType(dto) {\n return this.apiClient.post(this.businessTypesPath, dto);\n }\n /**\n * ADMIN: Update business type\n *\n * Endpoint: PUT /business-types\n * Auth: @TenantAdmin()\n */\n async updateBusinessType(dto) {\n return this.apiClient.put(this.businessTypesPath, dto);\n }\n /**\n * ADMIN: Delete business type\n *\n * Endpoint: DELETE /business-types/{id}\n * Auth: @TenantAdmin()\n */\n async deleteBusinessType(id) {\n return this.apiClient.delete(`${this.businessTypesPath}/${id}`);\n }\n // ==========================================\n // 🏢 BUSINESS MANAGEMENT\n // ==========================================\n /**\n * Get current business info (business authentication required)\n *\n * Endpoint: GET /businesses/me\n * Auth: @Business()\n */\n async getCurrentBusiness() {\n return this.apiClient.get(`${this.basePath}/me`);\n }\n /**\n * Get all businesses with role-based filtering\n *\n * Endpoint: GET /businesses?active={boolean}&sanitize={mode}\n * Auth: @ApiSecurity('projectKey') (enhanced with role-based filtering)\n * Note:\n * - Project API Key users: Active businesses only (automatically filtered)\n * - Admin JWT users: Full access with all query parameters\n */\n async getBusinesses(options) {\n const params = new URLSearchParams();\n if (options?.active !== undefined) {\n params.append('active', String(options.active));\n }\n if (options?.sanitize) {\n params.append('sanitize', options.sanitize);\n }\n const queryString = params.toString();\n const url = queryString ? `${this.basePath}?${queryString}` : this.basePath;\n return this.apiClient.get(url);\n }\n /**\n * Get all active businesses (convenience method)\n *\n * Endpoint: GET /businesses\n * Auth: @ApiSecurity('projectKey')\n */\n async getActiveBusinesses() {\n return this.apiClient.get(this.basePath);\n }\n /**\n * Get business by ID\n *\n * Endpoint: GET /businesses/{id}\n * Auth: @ApiSecurity('projectKey')\n */\n async getBusinessById(businessId) {\n return this.apiClient.get(`${this.basePath}/${businessId}`);\n }\n /**\n * Get business by account address\n *\n * Endpoint: GET /businesses/account/{accountAddress}\n * Auth: @ApiSecurity('projectKey')\n */\n async getBusinessByAccount(accountAddress) {\n return this.apiClient.get(`${this.basePath}/account/${accountAddress}`);\n }\n // ==========================================\n // 🔧 ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Create business\n *\n * Endpoint: POST /businesses\n * Auth: @TenantAdmin()\n * Returns: BusinessApiKeyDTO | BusinessTokenBalancesDTO\n */\n async createBusiness(dto) {\n return this.apiClient.post(this.basePath, dto);\n }\n /**\n * ADMIN: Create business by display name (convenience method)\n */\n async createBusinessByDisplayName(displayName) {\n const dto = {\n displayName,\n // Add other required fields based on BusinessCreateRequestDTO structure\n };\n return this.createBusiness(dto);\n }\n /**\n * ADMIN: Create businesses from URL\n *\n * Endpoint: POST /businesses/bulk/url\n * Auth: @TenantAdmin()\n */\n async createBusinessesFromUrl(url) {\n return this.apiClient.post(`${this.basePath}/bulk/url`, { url });\n }\n /**\n * ADMIN: Update business\n *\n * Endpoint: PUT /businesses/{id}\n * Auth: @TenantAdmin()\n */\n async updateBusiness(id, businessData) {\n return this.apiClient.put(`${this.basePath}/${id}`, businessData);\n }\n /**\n * ADMIN: Toggle business active status\n *\n * Endpoint: PUT /businesses/{id}/status\n * Auth: @TenantAdmin()\n */\n async toggleBusinessActive(id, dto) {\n return this.apiClient.put(`${this.basePath}/${id}/status`, dto);\n }\n}\n\n/**\n * Platform-Agnostic Business Service\n *\n * Contains business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n *\n * Focuses only on actual backend capabilities.\n */\nclass BusinessService {\n constructor(businessApi) {\n this.businessApi = businessApi;\n }\n /**\n * Get all active businesses\n */\n async getActiveBusinesses() {\n return this.businessApi.getActiveBusinesses();\n }\n /**\n * Get all business types\n */\n async getBusinessTypes() {\n return this.businessApi.getBusinessTypes();\n }\n /**\n * Get business by ID\n */\n async getBusinessById(businessId) {\n return this.businessApi.getBusinessById(businessId);\n }\n /**\n * Get business by account address\n */\n async getBusinessByAccount(accountAddress) {\n return this.businessApi.getBusinessByAccount(accountAddress);\n }\n /**\n * Get businesses by type (client-side filtering)\n */\n async getBusinessesByType(typeId) {\n const businesses = await this.getActiveBusinesses();\n return businesses.filter(business => business.businessType && business.businessType.id === parseInt(typeId));\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Get all businesses (active and inactive)\n */\n async getBusinesses() {\n return this.businessApi.getBusinesses();\n }\n /**\n * ADMIN: Create business by display name\n */\n async createBusinessByDisplayName(displayName) {\n return this.businessApi.createBusinessByDisplayName(displayName);\n }\n /**\n * ADMIN: Update business\n */\n async updateBusiness(id, businessData) {\n return this.businessApi.updateBusiness(id, businessData);\n }\n /**\n * ADMIN: Toggle business active status\n */\n async toggleBusinessActive(id, dto) {\n return this.businessApi.toggleBusinessActive(id, dto);\n }\n}\n\n/**\n * @explorins/pers-sdk-business\n *\n * Platform-agnostic Business Domain SDK for PERS ecosystem\n * Focuses on non-admin business operations\n */\n// API Layer\n/**\n * Create a complete Business SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Business SDK with flattened structure for better DX\n */\nfunction createBusinessSDK(apiClient) {\n const businessApi = new BusinessApi(apiClient);\n const businessService = new BusinessService(businessApi);\n return {\n // Direct access to service methods (primary interface)\n getActiveBusinesses: () => businessService.getActiveBusinesses(),\n getBusinessTypes: () => businessService.getBusinessTypes(),\n getBusinessById: (businessId) => businessService.getBusinessById(businessId),\n getBusinessByAccount: (accountAddress) => businessService.getBusinessByAccount(accountAddress),\n getBusinessesByType: (typeId) => businessService.getBusinessesByType(typeId),\n // Admin methods\n getBusinesses: () => businessService.getBusinesses(),\n createBusinessByDisplayName: (displayName) => businessService.createBusinessByDisplayName(displayName),\n updateBusiness: (id, businessData) => businessService.updateBusiness(id, businessData),\n toggleBusinessActive: (id, dto) => businessService.toggleBusinessActive(id, dto),\n // Advanced access for edge cases\n api: businessApi,\n service: businessService\n };\n}\n\nexport { BusinessApi, BusinessService, createBusinessSDK };\n//# sourceMappingURL=business.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Campaign API Client (NEW - RESTful Design)\n *\n * Updated to use the new microservice-ready campaign controllers:\n * - CampaignsController: Core campaign operations\n * - CampaignTagsController: Tag management\n * - CampaignTokensController: Token unit operations\n * - CampaignTriggersController: Trigger system\n * - CampaignEngagementsController: Business relationships\n * - CampaignClaimsController: Claims processing\n *\n * Uses @explorins/pers-shared DTOs for consistency with backend.\n * All endpoints updated to new RESTful patterns without role revelation.\n */\nclass CampaignApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n }\n // ==========================================\n // CORE CAMPAIGN OPERATIONS (/campaigns)\n // ==========================================\n /**\n * PUBLIC: Get all active campaigns\n * NEW: /campaigns (intelligent access detection)\n */\n async getActiveCampaigns() {\n return this.apiClient.get('/campaigns');\n }\n /**\n * ADMIN: Get campaigns with filtering options\n * NEW: /campaigns with query parameters (admin access detected automatically)\n */\n async getCampaigns(options) {\n let url = '/campaigns';\n const params = [];\n if (options) {\n if (options.active !== undefined)\n params.push(`active=${options.active}`);\n if (options.tag)\n params.push(`tag=${encodeURIComponent(options.tag)}`);\n if (options.limit)\n params.push(`limit=${options.limit}`);\n if (options.offset)\n params.push(`offset=${options.offset}`);\n if (options.sort)\n params.push(`sort=${options.sort}`);\n if (options.order)\n params.push(`order=${options.order}`);\n }\n if (params.length > 0) {\n url += `?${params.join('&')}`;\n }\n return this.apiClient.get(url);\n }\n /**\n * PUBLIC: Get campaign by ID\n * NEW: /campaigns/{id}\n */\n async getCampaignById(id) {\n return this.apiClient.get(`/campaigns/${id}`);\n }\n /**\n * ADMIN: Create campaign\n * NEW: POST /campaigns\n */\n async createCampaign(campaign) {\n return this.apiClient.post('/campaigns', campaign);\n }\n /**\n * ADMIN: Update campaign\n * NEW: PUT /campaigns/{id}\n */\n async updateCampaign(campaignId, campaign) {\n return this.apiClient.put(`/campaigns/${campaignId}`, campaign);\n }\n /**\n * ADMIN: Toggle campaign active status\n * NEW: PUT /campaigns/{id}/status\n */\n async toggleCampaignActive(campaignId) {\n return this.apiClient.put(`/campaigns/${campaignId}/status`, {});\n }\n /**\n * ADMIN: Toggle campaign testnet environment\n * NEW: PUT /campaigns/{id}/environment\n */\n async toggleCampaignTestnet(campaignId) {\n return this.apiClient.put(`/campaigns/${campaignId}/environment`, {});\n }\n /**\n * ADMIN: Delete campaign\n * NEW: DELETE /campaigns/{id}\n */\n async deleteCampaign(campaignId) {\n return this.apiClient.delete(`/campaigns/${campaignId}`);\n }\n // ==========================================\n // TAG MANAGEMENT (/campaign-tags)\n // ==========================================\n /**\n * ADMIN: Get all unique campaign tags\n * NEW: GET /campaign-tags\n */\n async getAllUniqueTags() {\n return this.apiClient.get('/campaigns/tags');\n }\n /**\n * ADMIN: Update campaign tags (replace all)\n * NEW: PUT /campaign-tags/{id}\n */\n async updateCampaignTags(campaignId, tags) {\n return this.apiClient.put(`/campaigns/${campaignId}/tags`, { tags });\n }\n /**\n * ADMIN: Add tags to campaign\n * NEW: POST /campaign-tags/{id}\n */\n async addTagsToCampaign(campaignId, tags) {\n return this.apiClient.post(`/campaigns/${campaignId}/tags`, { tags });\n }\n /**\n * ADMIN: Remove tag from campaign\n * NEW: DELETE /campaign-tags/{id}/{tag}\n */\n async removeTagFromCampaign(campaignId, tag) {\n return this.apiClient.delete(`/campaigns/${campaignId}/tags/${encodeURIComponent(tag)}`);\n }\n // ==========================================\n // TOKEN MANAGEMENT (/campaign-tokens)\n // ==========================================\n /**\n * ADMIN: Create campaign token unit\n * NEW: POST /campaign-tokens/{id}\n */\n async createCampaignTokenUnit(campaignId, campaignTokenUnit) {\n return this.apiClient.post(`/campaigns/${campaignId}/tokens`, campaignTokenUnit);\n }\n /**\n * ADMIN: Update campaign token unit\n * NEW: PUT /campaign-tokens/{id}/{tokenUnitId}\n */\n async updateCampaignTokenUnit(campaignId, tokenUnitId, campaignTokenUnit) {\n return this.apiClient.put(`/campaigns/${campaignId}/tokens/${tokenUnitId}`, campaignTokenUnit);\n }\n /**\n * ADMIN: Delete campaign token unit\n * NEW: DELETE /campaign-tokens/{id}/{tokenUnitId}\n */\n async deleteCampaignTokenUnit(campaignId, campaignTokenUnitId) {\n return this.apiClient.delete(`/campaigns/${campaignId}/tokens/${campaignTokenUnitId}`);\n }\n // ==========================================\n // TRIGGER SYSTEM (/campaign-triggers)\n // ==========================================\n /**\n * PUBLIC: Get campaign triggers catalog\n * NEW: GET /campaign-triggers\n */\n async getCampaignTriggers() {\n return this.apiClient.get(`/campaigns/all/triggers`);\n }\n /**\n * ADMIN: Create campaign trigger\n * NEW: POST /campaign-triggers\n */\n async createCampaignTrigger(trigger) {\n return this.apiClient.post(`/campaigns/all/triggers`, trigger);\n }\n /**\n * ADMIN: Update campaign trigger\n * NEW: PUT /campaign-triggers/{id}\n */\n async updateCampaignTrigger(triggerId, trigger) {\n return this.apiClient.put(`/campaigns/all/triggers/${triggerId}`, trigger);\n }\n /**\n * ADMIN: Delete campaign trigger\n * NEW: DELETE /campaign-triggers/{id}\n */\n async deleteCampaignTrigger(triggerId) {\n return this.apiClient.delete(`/campaigns/all/triggers/${triggerId}`);\n }\n /**\n * ADMIN: Set campaign trigger\n * NEW: PUT /campaign-triggers/campaigns/{id}/trigger/{triggerId}\n */\n async setCampaignTrigger(campaignId, triggerId) {\n return this.apiClient.put(`/campaigns/${campaignId}/triggers/${triggerId}`, {});\n }\n /**\n * ADMIN: Create trigger condition\n * NEW: POST /campaign-triggers/conditions\n */\n async createTriggerCondition(condition) {\n return this.apiClient.post('/campaigns/all/conditions', condition);\n }\n /**\n * ADMIN: Update trigger condition\n * NEW: PUT /campaign-triggers/conditions/{id}\n */\n async updateTriggerCondition(conditionId, condition) {\n return this.apiClient.put(`/campaigns/all/conditions/${conditionId}`, condition);\n }\n /**\n * ADMIN: Add/Remove condition to trigger\n * NEW: PUT /campaign-triggers/{triggerId}/condition/{conditionId}\n */\n async addOrRemoveConditionToTrigger(triggerId, conditionId) {\n return this.apiClient.put(`/campaigns/all/triggers/${triggerId}/condition/${conditionId}`, {});\n }\n // ==========================================\n // BUSINESS ENGAGEMENTS (/campaign-engagements)\n // ==========================================\n /**\n * ADMIN: Add business engagement to campaign\n * NEW: POST /campaign-engagements/{id}\n */\n async addBusinessEngagementToCampaign(campaignId, campaignBusinessEngagement) {\n return this.apiClient.post(`/campaigns/${campaignId}/engagements`, campaignBusinessEngagement);\n }\n /**\n * ADMIN: Update campaign business engagement\n * NEW: PUT /campaign-engagements/{id}/{businessEngagementId}\n */\n async updateCampaignBusinessEngagement(campaignId, businessEngagementId, campaignBusinessEngagement) {\n return this.apiClient.put(`/campaigns/${campaignId}/engagements/${businessEngagementId}`, campaignBusinessEngagement);\n }\n /**\n * ADMIN: Delete campaign business engagement\n * NEW: DELETE /campaign-engagements/{id}/{businessEngagementId}\n */\n async deleteCampaignBusinessEngagement(campaignId, businessEngagementId) {\n return this.apiClient.delete(`/campaigns/${campaignId}/engagements/${businessEngagementId}`);\n }\n // ==========================================\n // CLAIMS PROCESSING (/campaign-claims)\n // ==========================================\n /**\n * USER: Claim campaign reward\n */\n async claimCampaign(request) {\n return this.apiClient.post('/campaigns/claims', request);\n }\n /**\n * Unified claims retrieval method - handles all contexts\n * USER: Automatically shows own claims (/campaigns/claims/me)\n * ADMIN/BUSINESS: Shows all accessible claims with optional filters\n */\n async getClaims(filters) {\n // User context - use /me endpoint\n if (filters?.userContext) {\n const queryString = filters.campaignId ? `?campaignId=${encodeURIComponent(filters.campaignId)}` : '';\n return this.apiClient.get(`/campaigns/claims/me${queryString}`);\n }\n // Admin/Business context - use main endpoint with filters\n const validParams = Object.entries(filters || {})\n .filter(([key, value]) => key !== 'userContext' && value !== undefined)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n const queryString = validParams ? `?${validParams}` : '';\n return this.apiClient.get(`/campaigns/claims${queryString}`);\n }\n // ==========================================\n // CONVENIENCE METHODS (Backwards Compatibility)\n // ==========================================\n /** @deprecated Use getClaims({ userContext: true }) instead */\n async getClaimsForLoggedUser() {\n return this.getClaims({ userContext: true });\n }\n /** @deprecated Use getClaims() instead */\n async getCampaignClaims() {\n return this.getClaims();\n }\n /** @deprecated Use getClaims({ campaignId }) instead */\n async getCampaignClaimsByCampaignId(campaignId) {\n return this.getClaims({ campaignId });\n }\n /** @deprecated Use getClaims({ userId }) instead */\n async getCampaignClaimsByUserId(userId) {\n return this.getClaims({ userId });\n }\n /** @deprecated Use getClaims({ businessId }) instead */\n async getCampaignClaimsByBusinessId(businessId) {\n return this.getClaims({ businessId });\n }\n}\n\n/**\n * Platform-Agnostic Campaign Service\n *\n * Contains campaign business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n *\n * Focuses only on actual backend capabilities.\n */\nclass CampaignService {\n constructor(campaignApi) {\n this.campaignApi = campaignApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get all active campaigns\n */\n async getActiveCampaigns() {\n return this.campaignApi.getActiveCampaigns();\n }\n /**\n * PUBLIC: Get campaign by ID\n */\n async getCampaignById(id) {\n return this.campaignApi.getCampaignById(id);\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Claim campaign\n */\n async claimCampaign(request) {\n return this.campaignApi.claimCampaign(request);\n }\n /**\n * AUTH: Get claims for logged user\n */\n async getClaimsForLoggedUser() {\n return this.campaignApi.getClaimsForLoggedUser();\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Get campaigns with optional active filter\n */\n async getCampaigns(active) {\n return this.campaignApi.getCampaigns(active !== undefined ? { active } : undefined);\n }\n /**\n * ADMIN: Get campaign triggers\n */\n async getCampaignTriggers() {\n return this.campaignApi.getCampaignTriggers();\n }\n /**\n * ADMIN: Toggle campaign active status\n */\n async toggleCampaignActive(campaignId) {\n return this.campaignApi.toggleCampaignActive(campaignId);\n }\n /**\n * ADMIN: Toggle campaign testnet environment\n */\n async toggleCampaignTestnet(campaignId) {\n return this.campaignApi.toggleCampaignTestnet(campaignId);\n }\n /**\n * ADMIN: Create campaign\n */\n async createCampaign(campaign) {\n return this.campaignApi.createCampaign(campaign);\n }\n /**\n * ADMIN: Set campaign trigger\n */\n async setCampaignTrigger(campaignId, triggerId) {\n return this.campaignApi.setCampaignTrigger(campaignId, triggerId);\n }\n /**\n * ADMIN: Update campaign\n */\n async updateCampaign(campaignId, campaign) {\n return this.campaignApi.updateCampaign(campaignId, campaign);\n }\n /**\n * ADMIN: Create campaign token unit\n */\n async createCampaignTokenUnit(campaignId, campaignTokenUnit) {\n return this.campaignApi.createCampaignTokenUnit(campaignId, campaignTokenUnit);\n }\n /**\n * ADMIN: Delete campaign token unit\n */\n async deleteCampaignTokenUnit(campaignId, campaignTokenUnitId) {\n return this.campaignApi.deleteCampaignTokenUnit(campaignId, campaignTokenUnitId);\n }\n /**\n * ADMIN: Add business engagement to campaign\n */\n async addBusinessEngagementToCampaign(campaignId, campaignBusinessEngagement) {\n return this.campaignApi.addBusinessEngagementToCampaign(campaignId, campaignBusinessEngagement);\n }\n /**\n * ADMIN: Update campaign business engagement\n */\n async updateCampaignBusinessEngagement(campaignId, businessEngagementId, campaignBusinessEngagement) {\n return this.campaignApi.updateCampaignBusinessEngagement(campaignId, businessEngagementId, campaignBusinessEngagement);\n }\n async deleteCampaignBusinessEngagement(campaignId, businessEngagementId) {\n return this.campaignApi.deleteCampaignBusinessEngagement(campaignId, businessEngagementId);\n }\n /**\n * ADMIN: Get all campaign claims\n */\n async getCampaignClaims() {\n return this.campaignApi.getCampaignClaims();\n }\n /**\n * ADMIN: Get campaign claims by user ID\n */\n async getCampaignClaimsByUserId(userId) {\n return this.campaignApi.getCampaignClaimsByUserId(userId);\n }\n /**\n * ADMIN: Get campaign claims by business ID\n */\n async getCampaignClaimsByBusinessId(businessId) {\n return this.campaignApi.getCampaignClaimsByBusinessId(businessId);\n }\n}\n\n/**\n * @explorins/pers-sdk-campaign\n *\n * Platform-agnostic Campaign Domain SDK for PERS ecosystem\n * Handles campaign operations across different authorization levels\n */\n// API Layer\n/**\n * Create a complete Campaign SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Campaign SDK with flattened structure for better DX\n */\nfunction createCampaignSDK(apiClient) {\n const campaignApi = new CampaignApi(apiClient);\n const campaignService = new CampaignService(campaignApi);\n return {\n // Direct access to service methods (primary interface)\n // Public methods\n getActiveCampaigns: () => campaignService.getActiveCampaigns(),\n getCampaignById: (id) => campaignService.getCampaignById(id),\n // Auth methods\n claimCampaign: (request) => campaignService.claimCampaign(request),\n getClaimsForLoggedUser: () => campaignService.getClaimsForLoggedUser(),\n // Admin methods\n getCampaigns: (active) => campaignService.getCampaigns(active),\n getCampaignTriggers: () => campaignService.getCampaignTriggers(),\n toggleCampaignActive: (campaignId) => campaignService.toggleCampaignActive(campaignId),\n toggleCampaignTestnet: (campaignId) => campaignService.toggleCampaignTestnet(campaignId),\n createCampaign: (campaign) => campaignService.createCampaign(campaign),\n setCampaignTrigger: (campaignId, triggerId) => campaignService.setCampaignTrigger(campaignId, triggerId),\n updateCampaign: (campaignId, campaign) => campaignService.updateCampaign(campaignId, campaign),\n createCampaignTokenUnit: (campaignId, campaignTokenUnit) => campaignService.createCampaignTokenUnit(campaignId, campaignTokenUnit),\n deleteCampaignTokenUnit: (campaignId, campaignTokenUnitId) => campaignService.deleteCampaignTokenUnit(campaignId, campaignTokenUnitId),\n addBusinessEngagementToCampaign: (campaignId, campaignBusinessEngagement) => campaignService.addBusinessEngagementToCampaign(campaignId, campaignBusinessEngagement),\n updateCampaignBusinessEngagement: (campaignId, businessEngagementId, campaignBusinessEngagement) => campaignService.updateCampaignBusinessEngagement(campaignId, businessEngagementId, campaignBusinessEngagement),\n deleteCampaignBusinessEngagement: (campaignId, businessEngagementId) => campaignService.deleteCampaignBusinessEngagement(campaignId, businessEngagementId),\n getCampaignClaims: () => campaignService.getCampaignClaims(),\n getCampaignClaimsByUserId: (userId) => campaignService.getCampaignClaimsByUserId(userId),\n getCampaignClaimsByBusinessId: (businessId) => campaignService.getCampaignClaimsByBusinessId(businessId),\n // Advanced access for edge cases\n api: campaignApi,\n service: campaignService\n };\n}\n\nexport { CampaignApi, CampaignService, createCampaignSDK };\n//# sourceMappingURL=campaign.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Redemption API Client (UPDATED - RESTful Design)\n *\n * Updated to work with the new RESTful controller structure:\n * - /redemptions (main redemption management)\n * - /redemption-types (redemption type management)\n * - /redemption-tokens (token unit management)\n * - /redemption-redeems (redemption execution and history)\n *\n * Handles redemption operations using the PERS backend with intelligent access detection.\n * Uses @explorins/pers-shared DTOs for consistency with backend.\n */\nclass RedemptionApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/redemptions';\n this.typesPath = '/redemptions/types';\n }\n // ==========================================\n // PUBLIC OPERATIONS (Project Key)\n // ==========================================\n /**\n * UNIFIED: Get redemptions with intelligent access control\n *\n * Intelligent endpoint that adapts based on authentication:\n * - Public users: Get active redemptions only\n * - Admin users: Get all redemptions with optional filtering\n *\n * @param options.active - Filter by active status (undefined = all for admins/active for public)\n * @param options.adminAccess - Force admin access (requires admin auth)\n */\n async getRedemptions(options) {\n let url = `${this.basePath}`;\n if (options?.active !== undefined) {\n url += `?active=${options.active}`;\n }\n return this.apiClient.get(url);\n }\n /**\n * PUBLIC: Get redemption types\n *\n * Updated: /redemption/type → /redemption-types\n */\n async getRedemptionTypes() {\n return this.apiClient.get(this.typesPath);\n }\n /**\n * PUBLIC: Get redemption by ID\n *\n * Updated: /redemption/:id → /redemptions/:id\n */\n async getRedemptionById(id) {\n return this.apiClient.get(`${this.basePath}/${id}`);\n }\n /**\n * PUBLIC: Get available supply for redemption\n *\n * Updated: /redemption/:id/available-supply → /redemptions/:id/supply\n */\n async getRedemptionAvailableSupply(id) {\n const result = await this.apiClient.get(`${this.basePath}/${id}/supply`);\n return result.available;\n }\n // ==========================================\n // REDEMPTION EXECUTION (UNIFIED ENDPOINT)\n // ==========================================\n /**\n * Execute redemption (unified endpoint)\n *\n * NEW: POST /redemption-redeems - Role-based processing\n * - USER: Direct user redemption processing\n * - ADMIN: Can process redemptions for any account type\n * - BUSINESS: Process redemptions for customers\n */\n async redeemRedemption(redemptionId) {\n const body = {\n redemptionId: redemptionId,\n };\n return this.apiClient.post(this.basePath + '/redeems', body);\n }\n // ==========================================\n // REDEMPTION REDEEMS QUERIES (NEW ENDPOINTS)\n // ==========================================\n /**\n * UNIFIED: Get redemption redeems with filtering and intelligent access\n *\n * Role-based access with unified filtering:\n * - Users: See only their own redeems (userId/businessId filters ignored)\n * - Admins: Can filter by userId, businessId, or redemptionId\n *\n * @param filters.redemptionId - Filter by specific redemption\n * @param filters.userId - Admin only: Filter by user ID\n * @param filters.businessId - Admin only: Filter by business ID\n * @param filters.myRedeems - Force user's own redeems (uses /me endpoint)\n */\n async getRedemptionRedeems(filters) {\n let url = `${this.basePath}/redeems`;\n // Use convenience endpoint for user's own redeems\n if (filters?.myRedeems) {\n url = `${this.basePath}/redeems/me`;\n if (filters.redemptionId) {\n url += `?redemptionId=${filters.redemptionId}`;\n }\n return this.apiClient.get(url);\n }\n // Use admin endpoint with filtering\n const params = new URLSearchParams();\n if (filters?.redemptionId)\n params.append('redemptionId', filters.redemptionId);\n if (filters?.userId)\n params.append('userId', filters.userId);\n if (filters?.businessId)\n params.append('businessId', filters.businessId);\n const queryString = params.toString();\n if (queryString) {\n url += `?${queryString}`;\n }\n return this.apiClient.get(url);\n }\n /**\n * UNIFIED: Get specific redemption redeem by ID\n */\n async getRedemptionRedeemById(id) {\n return this.apiClient.get(`${this.basePath}/redeems/${id}`);\n }\n // ==========================================\n // USER OPERATIONS (JWT + Project Key)\n // ==========================================\n /**\n * UNIFIED: Get user redemption history\n *\n * Uses convenience endpoint /redemption-redeems/me with optional filtering\n * @param redemptionId - Optional filter by specific redemption\n */\n async getUserRedeems(redemptionId) {\n return this.getRedemptionRedeems({ myRedeems: true, redemptionId });\n }\n // ==========================================\n // ADMIN OPERATIONS (Tenant Admin JWT)\n // ==========================================\n /**\n * ADMIN: Get redemptions with filtering (using intelligent endpoint)\n *\n * Updated: /redemption/admin → /redemptions (intelligent access detection)\n * The unified endpoint will detect admin privileges and allow filtering\n */\n async getRedemptionsAsAdmin(active) {\n return this.getRedemptions({ active, adminAccess: true });\n }\n /**\n * ADMIN: Create redemption\n *\n * Updated: /redemption/admin → /redemptions\n */\n async createRedemption(redemption) {\n return this.apiClient.post(`${this.basePath}`, redemption);\n }\n /**\n * ADMIN: Update redemption\n *\n * Updated: /redemption/admin/:id → /redemptions/:id\n */\n async updateRedemption(id, redemptionCreateRequest) {\n return this.apiClient.put(`${this.basePath}/${id}`, redemptionCreateRequest);\n }\n /**\n * UNIFIED: Toggle redemption active status\n *\n * Updated: /redemption/admin/:id/toggle-active → /redemptions/:id/status\n * Following standard /status pattern used across domains\n */\n async toggleRedemptionActive(redemptionId) {\n return this.apiClient.put(`${this.basePath}/${redemptionId}/status`, {});\n }\n /**\n * ADMIN: Delete redemption\n *\n * Updated: /redemption/admin/:id → /redemptions/:id\n */\n async deleteRedemption(id) {\n return this.apiClient.delete(`${this.basePath}/${id}`);\n }\n /**\n * ADMIN: Create redemption type\n *\n * Updated: /redemption/admin/type → /redemption-types\n */\n async createRedemptionType(redemptionType) {\n return this.apiClient.post(this.typesPath, redemptionType);\n }\n // ==========================================\n // TOKEN UNIT MANAGEMENT (Admin)\n // ==========================================\n /**\n * ADMIN: Create redemption token unit\n *\n * Updated: /redemption/admin/:id/token-units → /redemption-tokens/:id/\n */\n async createRedemptionTokenUnit(redemptionId, redemptionTokenUnit) {\n return this.apiClient.post(`${this.basePath}/${redemptionId}/tokens`, redemptionTokenUnit);\n }\n /**\n * ADMIN: Update redemption token unit\n *\n * Updated: /redemption/admin/:id/token-units/:tokenUnitId → /redemption-tokens/:id/:tokenUnitId\n */\n async updateRedemptionTokenUnit(redemptionId, tokenUnitId, redemptionTokenUnit) {\n return this.apiClient.put(`${this.basePath}/${redemptionId}/tokens/${tokenUnitId}`, redemptionTokenUnit);\n }\n /**\n * ADMIN: Delete redemption token unit\n *\n * Updated: /redemption/admin/:id/token-units/:tokenUnitId → /redemption-tokens/:id/:tokenUnitId\n */\n async deleteRedemptionTokenUnit(redemptionId, redemptionTokenUnitId) {\n return this.apiClient.delete(`${this.basePath}/${redemptionId}/tokens/${redemptionTokenUnitId}`);\n }\n // ==========================================\n // CONVENIENCE METHODS (Legacy Support)\n // ==========================================\n /**\n * Convenience: Get active redemptions (public access)\n */\n async getActiveRedemptions() {\n return this.getRedemptions({ active: true });\n }\n}\n\n/**\n * Platform-Agnostic Redemption Service\n *\n * Contains redemption business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n *\n * Focuses only on actual backend capabilities.\n */\nclass RedemptionService {\n constructor(redemptionApi) {\n this.redemptionApi = redemptionApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * UNIFIED: Get redemptions with intelligent access control\n * @param options.active - Filter by active status\n * @param options.adminAccess - Force admin access\n */\n async getRedemptions(options) {\n return this.redemptionApi.getRedemptions(options);\n }\n /**\n * Convenience: Get active redemptions (public)\n */\n async getActiveRedemptions() {\n return this.redemptionApi.getActiveRedemptions();\n }\n /**\n * PUBLIC: Get redemption types\n */\n async getRedemptionTypes() {\n return this.redemptionApi.getRedemptionTypes();\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Redeem a redemption\n */\n async redeemRedemption(redemptionId) {\n return this.redemptionApi.redeemRedemption(redemptionId);\n }\n /**\n * UNIFIED: Get redemption redeems with filtering\n */\n async getRedemptionRedeems(filters) {\n return this.redemptionApi.getRedemptionRedeems(filters);\n }\n /**\n * Convenience: Get user redemptions\n */\n async getUserRedeems() {\n return this.redemptionApi.getUserRedeems();\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * Convenience: Get redemptions as admin\n */\n async getRedemptionsAsAdmin(active) {\n return this.redemptionApi.getRedemptionsAsAdmin(active);\n }\n /**\n * ADMIN: Create redemption\n */\n async createRedemption(redemption) {\n return this.redemptionApi.createRedemption(redemption);\n }\n /**\n * ADMIN: Update redemption\n */\n async updateRedemption(id, redemptionCreateRequest) {\n return this.redemptionApi.updateRedemption(id, redemptionCreateRequest); // ✅ CORRECTED: Fixed parameter\n }\n /**\n * ADMIN: Toggle redemption active status\n */\n async toggleRedemptionActive(redemptionId) {\n return this.redemptionApi.toggleRedemptionActive(redemptionId);\n }\n /**\n * ADMIN: Create redemption token unit\n */\n async createRedemptionTokenUnit(redemptionId, redemptionTokenUnit) {\n return this.redemptionApi.createRedemptionTokenUnit(redemptionId, redemptionTokenUnit);\n }\n /**\n * ADMIN: Delete redemption token unit\n */\n async deleteRedemptionTokenUnit(redemptionId, redemptionTokenUnitId) {\n return this.redemptionApi.deleteRedemptionTokenUnit(redemptionId, redemptionTokenUnitId);\n }\n}\n\n/**\n * @explorins/pers-sdk-redemption\n *\n * Platform-agnostic Redemption Domain SDK for PERS ecosystem\n * Handles redemption operations across different authorization levels\n */\n// API Layer\n/**\n * Create a complete Redemption SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Redemption SDK with flattened structure for better DX\n */\nfunction createRedemptionSDK(apiClient) {\n const redemptionApi = new RedemptionApi(apiClient);\n const redemptionService = new RedemptionService(redemptionApi);\n return {\n // Direct access to service methods (primary interface)\n // Public methods\n getActiveRedemptions: () => redemptionService.getActiveRedemptions(),\n getRedemptionTypes: () => redemptionService.getRedemptionTypes(),\n // Auth methods\n redeemRedemption: (redemptionId) => redemptionService.redeemRedemption(redemptionId),\n getUserRedeems: () => redemptionService.getUserRedeems(),\n // Admin methods\n getRedemptionsAsAdmin: (active) => redemptionService.getRedemptionsAsAdmin(active),\n createRedemption: (redemption) => redemptionService.createRedemption(redemption),\n updateRedemption: (id, redemptionCreateRequest) => redemptionService.updateRedemption(id, redemptionCreateRequest),\n toggleRedemptionActive: (redemptionId) => redemptionService.toggleRedemptionActive(redemptionId),\n createRedemptionTokenUnit: (redemptionId, redemptionTokenUnit) => redemptionService.createRedemptionTokenUnit(redemptionId, redemptionTokenUnit),\n deleteRedemptionTokenUnit: (redemptionId, redemptionTokenUnitId) => redemptionService.deleteRedemptionTokenUnit(redemptionId, redemptionTokenUnitId),\n // Advanced access for edge cases\n api: redemptionApi,\n service: redemptionService\n };\n}\n\nexport { RedemptionApi, RedemptionService, createRedemptionSDK };\n//# sourceMappingURL=redemption.js.map\n","import { TransactionRole } from '@explorins/pers-shared';\nexport { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Transaction API Client (UPDATED FOR NEW RESTful ENDPOINTS)\n *\n * Handles transaction operations using the PERS backend.\n * Uses @explorins/pers-shared DTOs for consistency with backend.\n *\n * MIGRATION NOTES:\n * - All endpoints changed from /transaction to /transactions\n * - Role-based paths removed (no more /auth, /admin, /business in URLs)\n * - New RESTful resource-based structure\n * - Added new client-side transaction flow methods\n * - Enhanced admin query capabilities\n */\nclass TransactionApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/transactions';\n }\n /**\n * Get transaction by ID (public endpoint)\n *\n * UPDATED: /transaction/{id} → /transactions/{id}\n */\n async getTransactionById(transactionId) {\n return this.apiClient.get(`${this.basePath}/${transactionId}`);\n }\n /**\n * Unique method to create a transaction\n * @param request\n * @returns\n */\n async createTransaction(request) {\n return this.apiClient.post(`${this.basePath}`, request);\n // return this.apiClient.post<TransactionDTO>(`${this.basePath}/system`, request);\n }\n // ==========================================\n // AUTHENTICATED USER OPERATIONS\n // ==========================================\n /**\n * AUTH: Create authenticated user transaction\n *\n * UPDATED: /transaction/auth/transaction → /transactions/user\n */\n /* async createAuthTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {\n return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, request);\n } */\n /**\n * AUTH: Get user's sent transactions\n *\n * UPDATED: /transaction/auth/sender → /transactions/me/sent\n */\n async getUserSentTransactions() {\n const params = new URLSearchParams({\n timestamp: Date.now().toString()\n });\n return this.apiClient.get(`${this.basePath}/me/sent?${params.toString()}`);\n }\n /**\n * AUTH: Get user's received transactions\n *\n * UPDATED: /transaction/auth/recipient → /transactions/me/received\n */\n async getUserReceivedTransactions() {\n const params = new URLSearchParams({\n timestamp: Date.now().toString()\n });\n return this.apiClient.get(`${this.basePath}/me/received?${params.toString()}`);\n }\n /**\n * AUTH: Get user transaction history by type (backwards compatibility)\n *\n * UPDATED: Maps to appropriate /transactions/me/* endpoints\n */\n async getUserTransactionHistory(type) {\n const params = new URLSearchParams({\n timestamp: Date.now().toString()\n });\n // Map legacy type parameter to new endpoints\n switch (type.toLowerCase()) {\n case 'sender':\n case 'sent':\n return this.apiClient.get(`${this.basePath}/me/sent?${params.toString()}`);\n case 'recipient':\n case 'received':\n return this.apiClient.get(`${this.basePath}/me/received?${params.toString()}`);\n default:\n // Default to sent transactions for backwards compatibility\n return this.apiClient.get(`${this.basePath}/me/sent?${params.toString()}`);\n }\n }\n /**\n * AUTH: Prepare existing transaction for client-side signing\n *\n * NEW ENDPOINT: GET /transactions/{id}/prepare\n */\n async prepareExistingTransaction(transactionId) {\n return this.apiClient.get(`${this.basePath}/${transactionId}/prepare`);\n }\n /**\n * AUTH: Submit client-side signed transaction\n *\n * NEW ENDPOINT: POST /transactions/{id}/submit\n */\n async submitSignedTransaction(signedTxData) {\n return this.apiClient.post(`${this.basePath}/submit`, signedTxData);\n }\n /**\n * AUTH: Burn user tokens\n *\n * UPDATED: Uses new user transaction endpoint with burn-specific parameters\n * Note: This might need backend confirmation on burn functionality implementation\n */\n /* async burnUserTokens(request: UserBurnTokenRequestDTO): Promise<TransactionRequestResponseDTO> {\n // Map burn request to TransactionRequestDTO format for new endpoint\n const transactionRequest: TransactionRequestDTO = {\n ...request,\n // Add any specific burn transaction parameters here\n } as any;\n \n return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, transactionRequest);\n } */\n // ==========================================\n // BUSINESS OPERATIONS\n // ==========================================\n /**\n * BUSINESS: Create business transaction\n *\n * UPDATED: /transaction/business/transaction → /transactions/business\n */\n /* async createBusinessTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {\n return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, request);\n } */\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Create admin transaction\n *\n * UPDATED: /transaction/admin/transaction → /transactions/admin\n */\n /* async createAdminTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {\n // return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, request);\n return this.apiClient.post<TransactionDTO>(`${this.basePath}/system`, request);\n } */\n /**\n * AUTH: Prepare client signed transaction\n *\n * UPDATED: /transaction/auth/prepare-signing → /transactions/prepare\n */\n async prepareClientSignedTransaction(request) {\n return this.apiClient.post(`${this.basePath}`, request);\n }\n /**\n * ADMIN: Get all tenant transactions\n *\n * UPDATED: /transaction/admin → /transactions\n */\n async getTenantTransactions() {\n const result = await this.apiClient.get(`${this.basePath}`);\n // If the new endpoint returns paginated response, extract the data array\n if ('data' in result) {\n return result.data;\n }\n // Fallback for direct array response\n return result;\n }\n /**\n * ADMIN: Get paginated transactions with filtering and sorting\n *\n * UPDATED: /transaction/admin → /transactions (same endpoint, better structure)\n */\n async getPaginatedTransactions(params) {\n // Build query parameters\n const queryParams = {\n page: params.page.toString(),\n limit: params.limit.toString()\n };\n // Add sorting parameters if provided\n if (params.sortBy) {\n queryParams['sortBy'] = params.sortBy;\n }\n if (params.sortOrder) {\n queryParams['sortOrder'] = params.sortOrder;\n }\n // Add user-specific filtering if provided\n if (params.participantId) {\n queryParams['participantId'] = params.participantId;\n }\n // Add status filtering if provided\n if (params.status) {\n queryParams['status'] = params.status;\n }\n // Add additional filters if provided\n if (params.filters) {\n if (params.filters.startDate) {\n queryParams['startDate'] = params.filters.startDate;\n }\n if (params.filters.endDate) {\n queryParams['endDate'] = params.filters.endDate;\n }\n if (params.filters.type && params.filters.type.length > 0) {\n queryParams['type'] = params.filters.type.join(',');\n }\n if (params.filters.tokenType && params.filters.tokenType.length > 0) {\n queryParams['tokenType'] = params.filters.tokenType.join(',');\n }\n }\n // Build query string\n const queryString = Object.entries(queryParams)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n return this.apiClient.get(`${this.basePath}?${queryString}`);\n }\n /**\n * ADMIN: Export transactions to CSV\n *\n * UPDATED: /transaction/admin/export/csv → /transactions/export/csv\n */\n async exportTransactionsCSV() {\n return this.apiClient.get(`${this.basePath}/export/csv`, 'blob');\n }\n // ==========================================\n // NEW ADMIN QUERY METHODS\n // ==========================================\n /**\n * ADMIN: Query transactions by sender\n *\n * NEW ENDPOINT: POST /transactions/query-sender\n */\n /**\n * Query transactions by sender using unified endpoint\n */\n async queryTransactionsBySender(accountSelector) {\n // Build query parameters safely\n const queryParams = {};\n if (accountSelector.accountId) {\n queryParams['participantId'] = accountSelector.accountId;\n }\n queryParams['role'] = TransactionRole.SENDER.toString();\n const params = new URLSearchParams(queryParams);\n return this.apiClient.get(`${this.basePath}?${params.toString()}`).then(response => response); // Extract items from paginated response\n }\n /**\n * Query transactions by recipient using unified endpoint\n */\n async queryTransactionsByRecipient(accountSelector) {\n // Build query parameters safely\n const queryParams = {};\n if (accountSelector.accountId) {\n queryParams['participantId'] = accountSelector.accountId;\n }\n queryParams['role'] = TransactionRole.RECIPIENT.toString();\n const params = new URLSearchParams(queryParams);\n return this.apiClient.get(`${this.basePath}?${params.toString()}`).then(response => response); // Extract items from paginated response\n }\n /**\n * ADMIN: Get transaction analytics\n *\n * NEW ENDPOINT: POST /transactions/analytics\n */\n async getTransactionAnalytics(analyticsRequest) {\n return this.apiClient.post(`${this.basePath}/analytics`, analyticsRequest);\n }\n // ==========================================\n // CONVENIENCE METHODS (BACKWARDS COMPATIBILITY)\n // ==========================================\n /**\n * Convenience method: Get user sent transactions (alias)\n */\n async getUserSenderTransactions() {\n return this.getUserSentTransactions();\n }\n /**\n * Convenience method: Get user received transactions (alias)\n */\n async getUserRecipientTransactions() {\n return this.getUserReceivedTransactions();\n }\n}\n\n/**\n * Platform-Agnostic Transaction Service\n *\n * Contains transaction business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n *\n * Focuses only on actual backend capabilities.\n */\nclass TransactionService {\n constructor(transactionApi) {\n this.transactionApi = transactionApi;\n }\n /**\n * Get transaction by ID\n */\n async getTransactionById(transactionId) {\n return this.transactionApi.getTransactionById(transactionId);\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Create authenticated transaction\n */\n /* async createAuthTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {\n return this.transactionApi.createAuthTransaction(request);\n } */\n async createTransaction(request) {\n return this.transactionApi.createTransaction(request);\n }\n async submitSignedTransaction(signedTxData) {\n return this.transactionApi.submitSignedTransaction(signedTxData);\n }\n /**\n * AUTH: Get user transaction history by type\n */\n async getUserTransactionHistory(type) {\n return this.transactionApi.getUserTransactionHistory(type);\n }\n /**\n * AUTH: Prepare client signed transaction\n */\n /* async prepareClientSignedTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {\n return this.transactionApi.prepareClientSignedTransaction(request);\n } */\n /**\n * AUTH: Burn user tokens\n */\n /* async burnUserTokens(request: UserBurnTokenRequestDTO): Promise<TransactionRequestResponseDTO> {\n return this.transactionApi.burnUserTokens(request);\n } */\n // ==========================================\n // BUSINESS OPERATIONS\n // ==========================================\n /**\n * BUSINESS: Create business transaction\n */\n /* async createBusinessTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {\n return this.transactionApi.createBusinessTransaction(request);\n } */\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Create admin transaction\n */\n /* async createAdminTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {\n return this.transactionApi.createAdminTransaction(request);\n } */\n /**\n * ADMIN: Get all tenant transactions\n */\n async getTenantTransactions() {\n return this.transactionApi.getTenantTransactions();\n }\n /**\n * ADMIN: Get paginated transactions with filtering and sorting\n */\n async getPaginatedTransactions(params) {\n return this.transactionApi.getPaginatedTransactions(params);\n }\n /**\n * ADMIN: Export transactions to CSV\n */\n async exportTransactionsCSV() {\n return this.transactionApi.exportTransactionsCSV();\n }\n}\n\n/**\n * Transaction Domain Models\n *\n * Re-exports from @explorins/pers-shared for consistency with backend\n * and to provide a single import source for transaction-related types.\n */\n// Transaction account types (domain-specific enum)\nvar TransactionAccountType;\n(function (TransactionAccountType) {\n // Add specific transaction account types as needed\n // This should match the enum used in the infrastructure layer\n})(TransactionAccountType || (TransactionAccountType = {}));\n\n/**\n * @explorins/pers-sdk-transaction\n *\n * Platform-agnostic Transaction Domain SDK for PERS ecosystem\n * Handles transaction operations across different authorization levels\n */\n// API Layer\n/**\n * Create a complete Transaction SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Transaction SDK with flattened structure for better DX\n */\nfunction createTransactionSDK(apiClient) {\n const transactionApi = new TransactionApi(apiClient);\n const transactionService = new TransactionService(transactionApi);\n return {\n // Direct access to service methods (primary interface)\n // Public methods\n getTransactionById: (transactionId) => transactionService.getTransactionById(transactionId),\n createTransaction: (request) => transactionService.createTransaction(request),\n // Auth methods\n // createAuthTransaction: (request: TransactionRequestDTO) => transactionService.createAuthTransaction(request),\n getUserTransactionHistory: (type) => transactionService.getUserTransactionHistory(type),\n //prepareClientSignedTransaction: (request: TransactionRequestDTO) => transactionService.prepareClientSignedTransaction(request),\n // burnUserTokens: (request: UserBurnTokenRequestDTO) => transactionService.burnUserTokens(request),\n // Business methods\n // createBusinessTransaction: (request: TransactionRequestDTO) => transactionService.createBusinessTransaction(request),\n // Admin methods\n // createAdminTransaction: (request: TransactionRequestDTO) => transactionService.createAdminTransaction(request),\n getTenantTransactions: () => transactionService.getTenantTransactions(),\n getPaginatedTransactions: (params) => transactionService.getPaginatedTransactions(params),\n exportTransactionsCSV: () => transactionService.exportTransactionsCSV(),\n // Advanced access for edge cases\n api: transactionApi,\n service: transactionService\n };\n}\n\nexport { TransactionAccountType, TransactionApi, TransactionService, createTransactionSDK };\n//# sourceMappingURL=transaction.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Purchase API Client (RESTful Architecture)\n *\n * Handles purchase and payment operations using the PERS backend's new RESTful endpoints.\n * Uses @explorins/pers-shared DTOs for consistency with backend.\n *\n * Migration Status: Updated to match /purchases controller (replaces /purchase endpoints)\n *\n * Available Access Levels:\n * - PUBLIC: Project key authentication for catalog browsing and payment operations\n * - USER: Requires user authentication JWT (purchase creation, history access)\n * - ADMIN: Requires tenant admin privileges (not implemented in this client)\n *\n * Note: This SDK focuses on backend purchase operations only.\n * Payment provider integrations (Stripe, etc.) should remain in infrastructure layer.\n */\nclass PurchaseApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/purchases';\n }\n // ==========================================\n // PUBLIC OPERATIONS (Project Key)\n // ==========================================\n /**\n * PUBLIC: Get purchase tokens (Intelligent Access)\n *\n * RESTful endpoint: GET /purchases/tokens\n * Replaces: GET /purchase/token\n *\n * INTELLIGENT ACCESS:\n * - PUBLIC (Project Key): Returns active tokens only (active parameter ignored)\n * - ADMIN (Tenant Admin JWT): Returns filtered results based on active parameter\n */\n async getPurchaseTokens(active) {\n let url = `${this.basePath}/tokens`;\n if (active !== undefined) {\n url += `?active=${active}`;\n }\n return this.apiClient.get(url);\n }\n /**\n * PUBLIC: Get donation types\n *\n * RESTful endpoint: GET /purchases/donation-types\n * Replaces: GET /purchase/donation/type\n */\n async getDonationTypes() {\n return this.apiClient.get(`${this.basePath}/donation-types`);\n }\n // ==========================================\n // PAYMENT OPERATIONS (FINANCIAL - CRITICAL)\n // ==========================================\n /**\n * PUBLIC: Create payment intent (FINANCIAL OPERATION)\n *\n * RESTful endpoint: POST /purchases/payment-intents\n * Replaces: POST /purchase/payment-intent\n *\n * CRITICAL: Handles real money operations - tenant context required\n */\n async createPaymentIntent(amount, currency, receiptEmail, description) {\n const body = {\n amount,\n currency,\n receiptEmail,\n description\n };\n return this.apiClient.post(`${this.basePath}/payment-intents`, body);\n }\n /**\n * PUBLIC: Update payment intent (FINANCIAL OPERATION)\n *\n * RESTful endpoint: PUT /purchases/payment-intents/{paymentIntentId}\n * Replaces: PUT /purchase/payment-intent/{paymentIntentId}\n *\n * CRITICAL: Handles real money operations - tenant context required\n */\n async updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description) {\n const body = {\n amount,\n currency,\n receiptEmail,\n description\n };\n return this.apiClient.put(`${this.basePath}/payment-intents/${paymentIntentId}`, body);\n }\n /**\n * PUBLIC: Cancel payment intent (FINANCIAL OPERATION)\n *\n * RESTful endpoint: DELETE /purchases/payment-intents/{paymentIntentId}\n * Replaces: DELETE /purchase/payment-intent/{paymentIntentId}\n *\n * CRITICAL: Handles real money operations - tenant context required\n */\n async cancelPaymentIntent(paymentIntentId) {\n return this.apiClient.delete(`${this.basePath}/payment-intents/${paymentIntentId}`);\n }\n // ==========================================\n // USER OPERATIONS (JWT + Project Key)\n // ==========================================\n /**\n * USER: Create purchase (BUSINESS CRITICAL - FINANCIAL TRANSACTION)\n *\n * RESTful endpoint: POST /purchases\n * Replaces: POST /purchase/auth\n *\n * USER-ONLY: Requires user authentication JWT for purchase creation\n * CRITICAL: Real financial transaction with Stripe integration\n */\n async createUserPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) {\n const body = {\n quantity: amount,\n purchaseTokenId: purchaseTokenId || '',\n donationTypeId,\n donationAccountAddress,\n paymentIntentId\n };\n return this.apiClient.post(`${this.basePath}`, body);\n }\n /**\n * USER: Get user purchase history\n *\n * RESTful endpoint: GET /purchases/me/history\n * Replaces: GET /purchase/auth\n *\n * USER-ONLY: Get authenticated user's purchase history\n * FINANCIAL RECORDS: User attribution critical for compliance\n */\n async getUserPurchaseHistory() {\n return this.apiClient.get(`${this.basePath}/me/history`);\n }\n // ==========================================\n // CONVENIENCE METHODS (Backward Compatibility)\n // ==========================================\n /**\n * @deprecated Use getPurchaseTokens() instead\n * Backward compatibility alias for getActivePurchaseTokens\n */\n async getActivePurchaseTokens(active = true) {\n return this.getPurchaseTokens(active);\n }\n /**\n * @deprecated Use createUserPurchase() instead\n * Backward compatibility alias for createPurchase\n */\n async createPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) {\n return this.createUserPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress);\n }\n /**\n * @deprecated Use getUserPurchaseHistory() instead\n * Backward compatibility alias for getAllUserPurchases\n */\n async getAllUserPurchases() {\n return this.getUserPurchaseHistory();\n }\n}\n\n/**\n * Platform-Agnostic Payment Service\n *\n * Contains payment business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n *\n * Focuses only on actual backend capabilities.\n * Payment provider logic (Stripe, etc.) should remain in infrastructure layer.\n */\nclass PaymentService {\n constructor(paymentApi) {\n this.paymentApi = paymentApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get active purchase tokens\n */\n async getActivePurchaseTokens(active = true) {\n return this.paymentApi.getActivePurchaseTokens(active);\n }\n /**\n * PUBLIC: Create payment intent\n */\n async createPaymentIntent(amount, currency, receiptEmail, description) {\n return this.paymentApi.createPaymentIntent(amount, currency, receiptEmail, description);\n }\n /**\n * PUBLIC: Update payment intent\n */\n async updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description) {\n return this.paymentApi.updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description);\n }\n /**\n * PUBLIC: Cancel payment intent\n */\n async cancelPaymentIntent(paymentIntentId) {\n return this.paymentApi.cancelPaymentIntent(paymentIntentId);\n }\n // ==========================================\n // AUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * AUTH: Create purchase\n */\n async createPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) {\n return this.paymentApi.createPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress);\n }\n /**\n * AUTH: Get all user purchases\n */\n async getAllUserPurchases() {\n return this.paymentApi.getAllUserPurchases();\n }\n}\n\n/**\n * @explorins/pers-sdk-payment\n *\n * Platform-agnostic Payment Domain SDK for PERS ecosystem\n * Handles payment intents, purchases, and purchase tokens\n *\n * Note: Payment provider integrations (Stripe, etc.) are kept separate\n * in the infrastructure layer to maintain platform-agnostic principles.\n */\n// API Layer\n/**\n * Create a complete Payment SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Payment SDK with flattened structure for better DX\n */\nfunction createPaymentSDK(apiClient) {\n const paymentApi = new PurchaseApi(apiClient);\n const paymentService = new PaymentService(paymentApi);\n return {\n // Direct access to service methods (primary interface)\n // Public methods\n getActivePurchaseTokens: (active) => paymentService.getActivePurchaseTokens(active),\n // ✅ FIXED: Proper type instead of any\n createPaymentIntent: (amount, currency, receiptEmail, description) => paymentService.createPaymentIntent(amount, currency, receiptEmail, description),\n // ✅ FIXED: Proper type instead of any\n updatePaymentIntent: (paymentIntentId, amount, currency, receiptEmail, description) => paymentService.updatePaymentIntent(paymentIntentId, amount, currency, receiptEmail, description),\n cancelPaymentIntent: (paymentIntentId) => paymentService.cancelPaymentIntent(paymentIntentId),\n // Auth methods\n createPurchase: (paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress) => paymentService.createPurchase(paymentIntentId, amount, purchaseTokenId, donationTypeId, donationAccountAddress),\n getAllUserPurchases: () => paymentService.getAllUserPurchases(),\n // Advanced access for edge cases\n api: paymentApi,\n service: paymentService\n };\n}\n\nexport { PurchaseApi as PaymentApi, PaymentService, createPaymentSDK };\n//# sourceMappingURL=payment.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Tenant API Client\n *\n * Handles tenant and admin operations using the PERS backend.\n * Updated to match new RESTful tenant controller endpoints.\n *\n * Note: Special header handling (bypass-auth-interceptor) should be handled by PersApiClient internally\n * or through endpoint-specific configuration.\n */\nclass TenantApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/tenants';\n this.adminPath = '/admins';\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * API KEY: Get current tenant public information\n * ✅ UPDATED: Uses /tenants/me endpoint with API key authentication\n *\n * Requires: X-API-Key header (handled by PersApiClient)\n * Returns: Enhanced public tenant information for the authenticated project\n */\n async getRemoteTenant() {\n // Remove cache busting - not needed for authenticated endpoint\n const timestamp = Date.now().toString();\n const url = `${this.basePath}/me?date=${timestamp}`;\n return this.apiClient.get(url);\n }\n /**\n * API KEY: Get remote login token\n * ✅ UPDATED: Requires API key authentication\n */\n async getRemoteLoginToken() {\n return this.apiClient.get(`${this.basePath}/login-token`);\n }\n /**\n * API KEY: Get remote client configuration\n * ✅ UPDATED: Requires API key authentication\n */\n async getRemoteClientConfig() {\n return this.apiClient.get(`${this.basePath}/client-config`);\n }\n // ==========================================\n // PUBLIC UNAUTHENTICATED OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get tenant public information by ID (no auth required)\n * ✅ NEW: For cases where you need public tenant info without API key\n *\n * @param tenantId - The tenant ID to retrieve public information for\n */\n async getPublicTenantById(tenantId) {\n const url = `${this.basePath}/${tenantId}`;\n return this.apiClient.get(url);\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Update tenant information\n * ✅ UPDATED: Uses PUT /tenants (admin endpoint)\n */\n async updateRemoteTenant(tenantData) {\n return this.apiClient.put(`${this.basePath}`, tenantData);\n }\n /**\n * ADMIN: Create new API key\n * ✅ NEW: Create new API key for the tenant\n */\n async createApiKey(keyName) {\n return this.apiClient.post(`${this.basePath}/api-keys`, { keyName });\n }\n /**\n * ADMIN: Create new JWT token\n * ✅ NEW: Create new JWT token for the tenant\n */\n async createJwtToken(isTestnet = false) {\n return this.apiClient.post(`${this.basePath}/jwt-tokens`, { isTestnet });\n }\n /**\n * ADMIN: Get all tenant admins\n */\n async getAdmins() {\n return this.apiClient.get(`${this.adminPath}`);\n }\n /**\n * ADMIN: Create new admin\n */\n async postAdmin(adminData) {\n return this.apiClient.post(`${this.adminPath}`, adminData);\n }\n /**\n * ADMIN: Update admin (toggle tenant association)\n */\n async putAdmin(adminId, adminData) {\n return this.apiClient.put(`${this.adminPath}/${adminId}/tenant`, adminData);\n }\n}\n\n/**\n * Platform-Agnostic Tenant Service\n *\n * Contains tenant business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n * Matches framework TenantApiService capabilities exactly.\n */\nclass TenantService {\n constructor(tenantApi) {\n this.tenantApi = tenantApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get tenant public information\n */\n async getRemoteTenant() {\n return this.tenantApi.getRemoteTenant();\n }\n /**\n * PUBLIC: Get remote login token\n */\n async getRemoteLoginToken() {\n return this.tenantApi.getRemoteLoginToken();\n }\n /**\n * PUBLIC: Get remote client configuration\n */\n async getRemoteClientConfig() {\n return this.tenantApi.getRemoteClientConfig();\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Update tenant information\n * ✅ FIXED: Uses TenantPublicDTO directly like framework\n */\n async updateRemoteTenant(tenantData) {\n return this.tenantApi.updateRemoteTenant(tenantData);\n }\n /**\n * ADMIN: Get all tenant admins\n */\n async getAdmins() {\n return this.tenantApi.getAdmins();\n }\n /**\n * ADMIN: Create new admin\n * ✅ FIXED: Renamed to match framework postAdmin method\n */\n async postAdmin(adminData) {\n return this.tenantApi.postAdmin(adminData);\n }\n /**\n * ADMIN: Update admin (toggle tenant association)\n * ✅ FIXED: Renamed to match framework putAdmin method\n */\n async putAdmin(adminId, adminData) {\n return this.tenantApi.putAdmin(adminId, adminData);\n }\n}\n\n/**\n * @explorins/pers-sdk-tenant\n *\n * Platform-agnostic Tenant Domain SDK for PERS ecosystem\n * Handles tenant management and admin operations for multi-tenant architecture\n */\n// API Layer\n/**\n * Create a complete Tenant SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Tenant SDK with flattened structure for better DX\n */\nfunction createTenantSDK(apiClient) {\n const tenantApi = new TenantApi(apiClient);\n const tenantService = new TenantService(tenantApi);\n return {\n // Direct access to service methods (primary interface)\n // ✅ FRAMEWORK ALIGNED: Only methods actually used by framework\n // Public methods\n getRemoteTenant: () => tenantService.getRemoteTenant(),\n getRemoteLoginToken: () => tenantService.getRemoteLoginToken(),\n getRemoteClientConfig: () => tenantService.getRemoteClientConfig(),\n // Admin methods - ✅ FIXED: Matches framework method names exactly\n updateRemoteTenant: (tenantData) => tenantService.updateRemoteTenant(tenantData),\n getAdmins: () => tenantService.getAdmins(),\n postAdmin: (adminData) => tenantService.postAdmin(adminData),\n putAdmin: (adminId, adminData) => tenantService.putAdmin(adminId, adminData),\n // Advanced access for edge cases\n api: tenantApi,\n service: tenantService\n };\n}\n\nexport { TenantApi, TenantService, createTenantSDK };\n//# sourceMappingURL=tenant.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Analytics API Client\n *\n * Handles analytics operations using the PERS backend.\n * Uses @explorins/pers-shared DTOs for consistency with backend.\n */\nclass AnalyticsApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Get transaction analytics with filtering and aggregation\n */\n async getTransactionAnalytics(request) {\n return this.apiClient.post('/transactions/analytics', request);\n }\n}\n\n/**\n * Platform-Agnostic Analytics Service\n *\n * Contains analytics business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n *\n * Focuses only on actual backend capabilities.\n */\nclass AnalyticsService {\n constructor(analyticsApi) {\n this.analyticsApi = analyticsApi;\n }\n // ==========================================\n // ADMIN OPERATIONS\n // ==========================================\n /**\n * ADMIN: Get transaction analytics with filtering and aggregation\n */\n async getTransactionAnalytics(request) {\n return this.analyticsApi.getTransactionAnalytics(request);\n }\n}\n\n/**\n * @explorins/pers-sdk-analytics\n *\n * Platform-agnostic Analytics Domain SDK for PERS ecosystem\n * Handles analytics operations and data aggregation\n */\n// API Layer\n/**\n * Create a complete Analytics SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Analytics SDK with flattened structure for better DX\n */\nfunction createAnalyticsSDK(apiClient) {\n const analyticsApi = new AnalyticsApi(apiClient);\n const analyticsService = new AnalyticsService(analyticsApi);\n return {\n // Direct access to service methods (primary interface)\n // Admin methods\n getTransactionAnalytics: (request) => analyticsService.getTransactionAnalytics(request),\n // Advanced access for edge cases\n api: analyticsApi,\n service: analyticsService\n };\n}\n\nexport { AnalyticsApi, AnalyticsService, createAnalyticsSDK };\n//# sourceMappingURL=analytics.js.map\n","export { AccountOwnerType } from '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Donation API Client\n *\n * Handles donation operations using the PERS backend.\n * Matches framework DonationApiService methods exactly.\n */\nclass DonationApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get all donation types\n * ✅ ONLY method actually used by framework\n */\n async getAllDonationTypes() {\n return this.apiClient.get('/purchases/donation-types');\n }\n}\n\n/**\n * Platform-Agnostic Donation Service\n *\n * Contains donation business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n * Matches framework DonationApiService capabilities exactly.\n */\nclass DonationService {\n constructor(donationApi) {\n this.donationApi = donationApi;\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get all donation types\n * ✅ ONLY method actually used by framework\n */\n async getAllDonationTypes() {\n return this.donationApi.getAllDonationTypes();\n }\n}\n\n/**\n * @explorins/pers-sdk-donation\n *\n * Platform-agnostic Donation Domain SDK for PERS ecosystem\n * Handles donation type retrieval for purchase flow integration\n */\n// API Layer\n/**\n * Create a complete Donation SDK instance\n *\n * @param apiClient - Configured PERS API client\n * @returns Donation SDK with flattened structure for better DX\n */\nfunction createDonationSDK(apiClient) {\n const donationApi = new DonationApi(apiClient);\n const donationService = new DonationService(donationApi);\n return {\n // Direct access to service methods (primary interface)\n // ✅ FRAMEWORK ALIGNED: Only method actually used by framework\n // Public methods\n getAllDonationTypes: () => donationService.getAllDonationTypes(),\n // Advanced access for edge cases\n api: donationApi,\n service: donationService\n };\n}\n\nexport { DonationApi, DonationService, createDonationSDK };\n//# sourceMappingURL=donation.js.map\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","export const getAddressTokenBalanceByContract = async (contract, accountAddress, tokenId) => {\n try {\n let tokenBalance;\n if (tokenId) {\n // ERC1155 or multi-token contract - balanceOf(address, tokenId)\n tokenBalance = await contract.balanceOf(accountAddress, tokenId);\n }\n else {\n // ERC20 or ERC721 contract - balanceOf(address)\n tokenBalance = await contract.balanceOf(accountAddress);\n }\n // Convert bigint to number safely\n // Check if the bigint is within safe integer range\n if (tokenBalance > Number.MAX_SAFE_INTEGER) {\n throw new Error(`Token balance too large for safe conversion: ${tokenBalance}`);\n }\n const balanceNumber = Number(tokenBalance);\n return balanceNumber;\n }\n catch (error) {\n console.error('Error getting token balance:', error);\n throw new Error(`Failed to get token balance: ${error.message}`);\n }\n};\n","import { Contract } from 'ethers';\nexport const PERS_STATUS_TOKEN_ETHERS_METHOD_BUILDER = (contract, methodName) => {\n try {\n // Use unknown first, then cast to the expected type\n const method = contract[methodName];\n if (!method)\n throw new Error(`Method ${String(methodName)} not found`);\n return method;\n }\n catch (err) {\n console.error(`Error building method ${String(methodName)}`, err);\n throw err;\n }\n};\nexport const PERS_REWARD_TOKEN_ETHERS_METHOD_BUILDER = (contract, methodName) => {\n try {\n const method = contract[methodName];\n if (!method)\n throw new Error(`Method ${String(methodName)} not found`);\n return method;\n }\n catch (err) {\n console.error(`Error building method ${String(methodName)}`, err);\n throw err;\n }\n};\nexport const PERS_CREDIT_TOKEN_ETHERS_METHOD_BUILDER = (contract, methodName) => {\n try {\n const method = contract[methodName];\n if (!method)\n throw new Error(`Method ${String(methodName)} not found`);\n return method;\n }\n catch (err) {\n console.error(`Error building method ${String(methodName)}`, err);\n throw err;\n }\n};\nexport const PERS_UNIVERSAL_PROXY_ETHERS_METHOD_BUILDER = (contract, methodName) => {\n try {\n const method = contract[methodName];\n if (!method)\n throw new Error(`Method ${String(methodName)} not found`);\n return method;\n }\n catch (err) {\n console.error(`Error building method ${String(methodName)}`, err);\n throw err;\n }\n};\nexport const PERS_GENERIC_ETHERS_METHOD_BUILDER = (contract, methodName) => {\n try {\n const method = contract[methodName];\n if (!method)\n throw new Error(`Method ${String(methodName)} not found`);\n return method;\n }\n catch (err) {\n console.error(`Error building method ${String(methodName)}`, err);\n throw err;\n }\n};\n/**\n * Helper function to create an Ethers contract instance with proper typing\n */\nexport const createPERSEthersContract = (address, abi, signerOrProvider) => {\n return new Contract(address, abi, signerOrProvider);\n};\n/**\n * Helper function to validate that a contract supports a specific method\n */\nexport const validateContractMethod = (contract, methodName) => {\n try {\n return typeof contract[methodName] === 'function';\n }\n catch {\n return false;\n }\n};\n/**\n * Alternative approach: Return the raw Ethers BaseContractMethod\n * This preserves the Ethers typing while still providing method access\n */\nexport const PERS_ETHERS_METHOD_BUILDER = (contract, methodName) => {\n try {\n const method = contract[methodName];\n if (!method)\n throw new Error(`Method ${methodName} not found`);\n return method;\n }\n catch (err) {\n console.error(`Error building method ${methodName}`, err);\n throw err;\n }\n};\n","export var ContractRoles;\n(function (ContractRoles) {\n ContractRoles[\"DEFAULT_ADMIN_ROLE\"] = \"DEFAULT_ADMIN_ROLE\";\n ContractRoles[\"PAUSER_ROLE\"] = \"PAUSER_ROLE\";\n ContractRoles[\"MINTER_ROLE\"] = \"MINTER_ROLE\";\n ContractRoles[\"UPGRADER_ROLE\"] = \"UPGRADER_ROLE\";\n})(ContractRoles || (ContractRoles = {}));\nexport var PERSTokenContractTypes;\n(function (PERSTokenContractTypes) {\n PERSTokenContractTypes[\"PERS_REWARD_TOKEN\"] = \"PERS_RewardToken\";\n PERSTokenContractTypes[\"PERS_CREDIT_TOKEN\"] = \"PERS_CreditToken\";\n PERSTokenContractTypes[\"PERS_STATUS_TOKEN\"] = \"PERS_StatusToken\";\n})(PERSTokenContractTypes || (PERSTokenContractTypes = {}));\n","import { hexlify, keccak256, toUtf8Bytes, AbiCoder } from 'ethers';\nconst abiCoder = new AbiCoder();\n/**\n * Convert to hex\n * @param value\n * @param web3\n * @returns\n */\nexport function convertToHex(value) {\n if (typeof value === 'string' && value.startsWith('0x')) {\n return value;\n }\n if (typeof value === 'number') {\n return '0x' + value.toString(16);\n }\n if (typeof value === 'bigint') {\n return '0x' + value.toString(16);\n }\n if (typeof value === 'string') {\n // If it's a numeric string, convert to number first\n if (/^\\d+$/.test(value)) {\n return '0x' + parseInt(value).toString(16);\n }\n // Otherwise treat as bytes\n return hexlify(toUtf8Bytes(value));\n }\n // Fallback for other types\n return hexlify(String(value));\n}\n/**\n * Encode parameter\n * @description Encode parameter to hex string with slice\n * @param parameter\n * @param protocol - default uint256\n * @param slice - default 2\n * @returns {string}\n * @example encodeParameter('0x1234', 'uint256', 2) => '1234'\n */\nexport function encodeParameter(parameter, protocol = 'uint256', slice = 2) {\n const encoded = abiCoder.encode([protocol], [parameter]);\n return encoded.slice(slice);\n}\n/**\n * String to bytes32\n * @description Convert string to bytes32\n * @param string\n * @returns {string}\n * @example stringToBytes32('hello') => '0x68656c6c6f\n * @example stringToBytes32('hello', 64) => '0x68656c6c6f\n\n */\nexport function stringToBytes32Hash(string) {\n const bytes = toUtf8Bytes(string);\n return keccak256(bytes);\n}\n","import { ContractRoles, PERSTokenContractTypes } from \"../contractMetaData\";\nimport { PERS_CREDIT_TOKEN_ETHERS_METHOD_BUILDER, PERS_GENERIC_ETHERS_METHOD_BUILDER, PERS_REWARD_TOKEN_ETHERS_METHOD_BUILDER, PERS_STATUS_TOKEN_ETHERS_METHOD_BUILDER } from \"./PERS_METHOD_BUILDER.ethers.functions\";\nimport { stringToBytes32Hash } from \"../../helpers/encoders\";\nimport { getAddressTokenBalanceByContract } from \"../../functions/contract.ethers.functions\";\nexport const checkTokenContractType = async (tokenContract) => {\n try {\n // Try to call uri method to check if it's a reward token (ERC1155)\n const uri = await tokenContract.uri(0);\n return PERSTokenContractTypes.PERS_REWARD_TOKEN;\n }\n catch (error) {\n try {\n // Check if it supports ERC721 interface\n const supportsInterfaceMethod = PERS_STATUS_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'supportsInterface');\n const isERC721 = await supportsInterfaceMethod('0x80ac58cd');\n return isERC721 ? PERSTokenContractTypes.PERS_STATUS_TOKEN : PERSTokenContractTypes.PERS_CREDIT_TOKEN;\n }\n catch (innerError) {\n return PERSTokenContractTypes.PERS_CREDIT_TOKEN;\n }\n }\n};\nexport const checkIfAddressIsMinter = async (tokenContract, address) => {\n // TODO this will only work for contracts that have a minter role\n const role = ContractRoles.MINTER_ROLE;\n try {\n const method = PERS_GENERIC_ETHERS_METHOD_BUILDER(tokenContract, 'hasRole');\n const isMinter = await method(stringToBytes32Hash(role), address);\n return isMinter;\n }\n catch (error) {\n console.error('Error checking if address is minter:', error);\n throw error;\n }\n};\nexport const getAccountTokenBalance = async (tokenContract, accountAddress, tokenId) => {\n try {\n const balance = await getAddressTokenBalanceByContract(tokenContract, accountAddress, tokenId);\n return balance;\n }\n catch (error) {\n console.error('Error getting account token balance:', error);\n throw error;\n }\n};\nexport const getTokenUri = async (tokenContract, tokenId) => {\n const contractType = await checkTokenContractType(tokenContract);\n switch (contractType) {\n case PERSTokenContractTypes.PERS_CREDIT_TOKEN:\n throw new Error(`Contract does not support method 'uri'`);\n case PERSTokenContractTypes.PERS_REWARD_TOKEN:\n if (tokenId === null)\n throw new Error('TokenId is required');\n const uriMethod = PERS_REWARD_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'uri');\n const uri = await uriMethod(tokenId);\n // if uri ends with {id}.json, replace it with the tokenId\n return uri.endsWith('{id}.json') ? uri.replace('{id}', tokenId.toString()) : uri;\n case PERSTokenContractTypes.PERS_STATUS_TOKEN:\n if (tokenId === null)\n throw new Error('TokenId is required');\n const tokenURIMethod = PERS_STATUS_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'tokenURI');\n const tokenURI = await tokenURIMethod(tokenId);\n return tokenURI;\n default:\n throw new Error('Contract not supported');\n }\n};\nexport const checkIfAddressIsApprovedForAll = async (tokenContract, ownerAddress, operatorAddress) => {\n const contractType = await checkTokenContractType(tokenContract);\n if (contractType !== PERSTokenContractTypes.PERS_REWARD_TOKEN) {\n throw new Error('Contract does not support method isApprovedForAll');\n }\n const method = PERS_REWARD_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'isApprovedForAll');\n const isApproved = await method(ownerAddress, operatorAddress);\n return isApproved;\n};\nexport const getContractName = async (tokenContract) => {\n const contractType = await checkTokenContractType(tokenContract);\n switch (contractType) {\n case PERSTokenContractTypes.PERS_CREDIT_TOKEN:\n const creditNameMethod = PERS_CREDIT_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'name');\n return await creditNameMethod();\n case PERSTokenContractTypes.PERS_REWARD_TOKEN:\n throw new Error(`Contract does not support method 'name'; TODO ERC1155`);\n case PERSTokenContractTypes.PERS_STATUS_TOKEN:\n const statusNameMethod = PERS_STATUS_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'name');\n return await statusNameMethod();\n default:\n throw new Error('Contract not supported');\n }\n};\nexport const getContractSymbol = async (tokenContract) => {\n const contractType = await checkTokenContractType(tokenContract);\n switch (contractType) {\n case PERSTokenContractTypes.PERS_CREDIT_TOKEN:\n const creditSymbolMethod = PERS_CREDIT_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'symbol');\n return await creditSymbolMethod();\n case PERSTokenContractTypes.PERS_REWARD_TOKEN:\n throw new Error(`Contract does not support method 'symbol'; TODO ERC1155`);\n case PERSTokenContractTypes.PERS_STATUS_TOKEN:\n const statusSymbolMethod = PERS_STATUS_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'symbol');\n return await statusSymbolMethod();\n default:\n throw new Error('Contract not supported');\n }\n};\nexport const getCurrentContractNonce = async (tokenContract, accountAddress) => {\n const contractType = await checkTokenContractType(tokenContract);\n switch (contractType) {\n case PERSTokenContractTypes.PERS_CREDIT_TOKEN:\n const noncesMethod = PERS_CREDIT_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'nonces');\n return await noncesMethod(accountAddress);\n case PERSTokenContractTypes.PERS_REWARD_TOKEN:\n throw new Error('Nonces in Contract not supported, TODO ERC1155');\n case PERSTokenContractTypes.PERS_STATUS_TOKEN:\n throw new Error('Nonces in Contract not supported, TODO ERC721');\n default:\n throw new Error('Contract not supported');\n }\n};\nexport const getTokenOfOwnerByIndex = async (tokenContract, ownerAddress, index) => {\n const contractType = await checkTokenContractType(tokenContract);\n switch (contractType) {\n case PERSTokenContractTypes.PERS_CREDIT_TOKEN:\n throw new Error('tokenOfOwnerByIndex not supported for Credit Token');\n case PERSTokenContractTypes.PERS_REWARD_TOKEN:\n throw new Error('tokenOfOwnerByIndex not supported for Reward Token');\n case PERSTokenContractTypes.PERS_STATUS_TOKEN:\n const tokenOfOwnerByIndexMethod = PERS_STATUS_TOKEN_ETHERS_METHOD_BUILDER(tokenContract, 'tokenOfOwnerByIndex');\n return await tokenOfOwnerByIndexMethod(ownerAddress, index);\n default:\n throw new Error('Contract not supported');\n }\n};\n","import { isAddress } from 'ethers/address';\nimport { Interface } from 'ethers/abi';\nimport { parseEther } from 'ethers/utils';\n/**\n * Validates multiple contract methods exist and are callable\n * @param contract - The contract instance\n * @param methodNames - Array of method names to validate\n* @throws Error if any method doesn't exist or isn't callable\n *\n * @example\n * ```typescript\n * const contract = createContractReadOnly(address, abi, provider);\n *\n * // Validate multiple methods at once\n * validateContractMethods(contract, ['balanceOf', 'transfer', 'approve'],);\n * ```\n */\nexport function validateContractMethods(contract, methodNames) {\n const missingMethods = [];\n const invalidMethods = [];\n for (const methodName of methodNames) {\n if (!contract[methodName] || typeof contract[methodName] !== 'function') {\n missingMethods.push(methodName);\n }\n else if (contract[methodName].populateTransaction &&\n typeof contract[methodName].populateTransaction !== 'function') {\n invalidMethods.push(methodName);\n }\n }\n if (missingMethods.length > 0) {\n throw new Error(`Methods not found in contract ABI: ${missingMethods.join(', ')}`);\n }\n if (invalidMethods.length > 0) {\n throw new Error(`Invalid contract methods: ${invalidMethods.join(', ')}`);\n }\n}\n/**\n * Enhanced transaction parameters validation\n */\nexport function validateTransactionParams(params, config = {}) {\n const { requireValidAddress = true, requireNonZeroValue = false, maxGasLimit } = config;\n // Validate recipient address\n if (params.to && requireValidAddress) {\n if (!isAddress(params.to)) {\n throw new Error(`Invalid recipient address: ${params.to}`);\n }\n }\n // Validate value (handle both string and bigint)\n if (params.value !== undefined && params.value !== null) {\n try {\n let valueBigInt;\n if (typeof params.value === 'string') {\n valueBigInt = parseEther(params.value);\n }\n else {\n valueBigInt = BigInt(params.value);\n }\n if (requireNonZeroValue && valueBigInt === 0n) {\n throw new Error('Transaction value must be greater than zero');\n }\n if (valueBigInt < 0n) {\n throw new Error('Transaction value cannot be negative');\n }\n }\n catch (error) {\n throw new Error(`Invalid transaction value: ${params.value} - ${error.message}`);\n }\n }\n // Validate gas parameters\n validateGasParameters(params, maxGasLimit);\n // Validate nonce\n if (params.nonce !== undefined) {\n if (!Number.isInteger(params.nonce) || params.nonce < 0) {\n throw new Error(`Invalid nonce: ${params.nonce}`);\n }\n }\n // Validate data\n if (params.data && params.data !== '0x') {\n if (!params.data.startsWith('0x') || params.data.length % 2 !== 0) {\n throw new Error(`Invalid transaction data format: ${params.data}`);\n }\n }\n}\n/**\n * Validate gas-related parameters\n */\nfunction validateGasParameters(params, maxGasLimit) {\n // Validate gas limit\n if (params.gasLimit !== undefined) {\n try {\n const gasLimitBigInt = BigInt(params.gasLimit);\n if (gasLimitBigInt <= 0n) {\n throw new Error('Gas limit must be greater than zero');\n }\n if (maxGasLimit) {\n const maxGasBigInt = BigInt(maxGasLimit);\n if (gasLimitBigInt > maxGasBigInt) {\n throw new Error(`Gas limit ${params.gasLimit} exceeds maximum ${maxGasLimit}`);\n }\n }\n }\n catch (error) {\n throw new Error(`Invalid gas limit: ${params.gasLimit} - ${error.message}`);\n }\n }\n // Validate legacy gas price\n if (params.gasPrice !== undefined) {\n try {\n const gasPriceBigInt = BigInt(params.gasPrice);\n if (gasPriceBigInt < 0n) {\n throw new Error('Gas price cannot be negative');\n }\n }\n catch (error) {\n throw new Error(`Invalid gas price: ${params.gasPrice} - ${error.message}`);\n }\n }\n // Validate EIP-1559 fee parameters\n if (params.maxFeePerGas !== undefined) {\n try {\n const maxFeeBigInt = BigInt(params.maxFeePerGas);\n if (maxFeeBigInt < 0n) {\n throw new Error('Max fee per gas cannot be negative');\n }\n }\n catch (error) {\n throw new Error(`Invalid max fee per gas: ${params.maxFeePerGas} - ${error.message}`);\n }\n }\n if (params.maxPriorityFeePerGas !== undefined) {\n try {\n const maxPriorityFeeBigInt = BigInt(params.maxPriorityFeePerGas);\n if (maxPriorityFeeBigInt < 0n) {\n throw new Error('Max priority fee per gas cannot be negative');\n }\n // Validate that priority fee doesn't exceed max fee\n if (params.maxFeePerGas !== undefined) {\n const maxFeeBigInt = BigInt(params.maxFeePerGas);\n if (maxPriorityFeeBigInt > maxFeeBigInt) {\n throw new Error('Max priority fee cannot exceed max fee per gas');\n }\n }\n }\n catch (error) {\n throw new Error(`Invalid max priority fee per gas: ${params.maxPriorityFeePerGas} - ${error.message}`);\n }\n }\n}\n/**\n * Validate contract function parameters against actual ABI\n * @param contract - Ethers contract instance with ABI\n * @param functionName - Function name to validate\n * @param params - Parameters to validate\n */\nexport function validateContractParamsFromABI(contract, functionName, params) {\n try {\n // Get the function fragment from the contract's interface\n const functionFragment = contract.interface.getFunction(functionName);\n if (!functionFragment) {\n throw new Error(`Function ${functionName} not found in contract ABI`);\n }\n // Check parameter count\n if (params.length !== functionFragment.inputs.length) {\n throw new Error(`Function ${functionName} expects ${functionFragment.inputs.length} parameters, got ${params.length}`);\n }\n // Validate each parameter type\n for (let i = 0; i < params.length; i++) {\n const param = params[i];\n const input = functionFragment.inputs[i];\n validateParameterType(param, input.type, `${functionName} parameter ${i} (${input.name})`);\n }\n // Test encode to catch any remaining issues\n contract.interface.encodeFunctionData(functionName, params);\n }\n catch (error) {\n throw new Error(`Parameter validation failed for ${functionName}: ${error.message}`);\n }\n}\n/**\n * Enhanced parameter type validation with better error handling\n */\nexport function validateParameterType(value, solidityType, paramDescription) {\n if (value === null || value === undefined) {\n throw new Error(`${paramDescription} cannot be null or undefined`);\n }\n try {\n switch (true) {\n case solidityType === 'address':\n if (!isAddress(String(value))) {\n throw new Error(`${paramDescription} must be a valid address, got: ${value}`);\n }\n break;\n case solidityType.startsWith('uint'):\n const uintValue = BigInt(value);\n if (uintValue < 0n) {\n throw new Error(`${paramDescription} must be non-negative, got: ${value}`);\n }\n // Check bit size (uint8, uint256, etc.)\n const bitSize = solidityType === 'uint' ? 256 : parseInt(solidityType.substring(4));\n const maxValue = 2n ** BigInt(bitSize) - 1n;\n if (uintValue > maxValue) {\n throw new Error(`${paramDescription} exceeds maximum value for ${solidityType}`);\n }\n break;\n case solidityType.startsWith('int'):\n const intValue = BigInt(value);\n const intBitSize = solidityType === 'int' ? 256 : parseInt(solidityType.substring(3));\n const maxIntValue = 2n ** BigInt(intBitSize - 1) - 1n;\n const minIntValue = -(2n ** BigInt(intBitSize - 1));\n if (intValue > maxIntValue || intValue < minIntValue) {\n throw new Error(`${paramDescription} out of range for ${solidityType}`);\n }\n break;\n case solidityType === 'bool':\n if (typeof value !== 'boolean') {\n throw new Error(`${paramDescription} must be a boolean, got: ${typeof value}`);\n }\n break;\n case solidityType === 'string':\n if (typeof value !== 'string') {\n throw new Error(`${paramDescription} must be a string, got: ${typeof value}`);\n }\n break;\n case solidityType.startsWith('bytes'):\n if (typeof value !== 'string' || !value.startsWith('0x')) {\n throw new Error(`${paramDescription} must be valid bytes (0x...), got: ${value}`);\n }\n // Check fixed bytes length (bytes32, bytes4, etc.)\n if (solidityType !== 'bytes') {\n const expectedLength = parseInt(solidityType.substring(5));\n const actualLength = (value.length - 2) / 2; // Remove 0x and convert hex to bytes\n if (actualLength !== expectedLength) {\n throw new Error(`${paramDescription} must be exactly ${expectedLength} bytes, got ${actualLength}`);\n }\n }\n break;\n case solidityType.endsWith('[]'):\n if (!Array.isArray(value)) {\n throw new Error(`${paramDescription} must be an array, got: ${typeof value}`);\n }\n // Recursively validate array elements\n const elementType = solidityType.slice(0, -2);\n value.forEach((item, index) => {\n validateParameterType(item, elementType, `${paramDescription}[${index}]`);\n });\n break;\n case solidityType.includes('[') && solidityType.includes(']'):\n // Handle fixed-size arrays like uint256[5]\n if (!Array.isArray(value)) {\n throw new Error(`${paramDescription} must be an array, got: ${typeof value}`);\n }\n const match = solidityType.match(/(.+)\\[(\\d+)\\]$/);\n if (match) {\n const [, baseType, sizeStr] = match;\n const expectedSize = parseInt(sizeStr);\n if (value.length !== expectedSize) {\n throw new Error(`${paramDescription} must have exactly ${expectedSize} elements, got ${value.length}`);\n }\n value.forEach((item, index) => {\n validateParameterType(item, baseType, `${paramDescription}[${index}]`);\n });\n }\n break;\n default:\n // Handle tuple/struct types\n if (solidityType.startsWith('tuple') || solidityType.includes('(')) {\n // For complex types, rely on ethers encoding validation\n break;\n }\n throw new Error(`Unsupported Solidity type: ${solidityType}`);\n }\n }\n catch (error) {\n if (error.message.includes('Type validation failed')) {\n throw error; // Re-throw our own errors\n }\n throw new Error(`Type validation failed for ${paramDescription}: ${error.message}`);\n }\n}\n/**\n * Validate network and provider configuration\n * @param provider - Ethers provider instance\n * @param expectedChainId - Expected network chain ID\n */\nexport async function validateNetwork(provider, expectedChainId) {\n try {\n const network = await provider.getNetwork();\n if (expectedChainId && Number(network.chainId) !== expectedChainId) {\n throw new Error(`Network mismatch: expected chain ID ${expectedChainId}, got ${network.chainId}`);\n }\n }\n catch (error) {\n throw new Error(`Failed to validate network: ${error.message}`);\n }\n}\n/**\n * Enhanced contract method validation with parameter checking\n */\nexport function validateContractMethodWithParams(contract, methodName, params) {\n // First validate the method exists\n validateContractMethods(contract, [methodName]);\n // Then validate the parameters\n validateContractParamsFromABI(contract, methodName, params);\n}\n/**\n * Safely call contract method with automatic parameter validation\n */\nexport async function safeContractCall(contract, methodName, params = [], options = {}) {\n const { validate = true, dryRun = false } = options;\n try {\n // Validate method exists\n validateContractMethods(contract, [methodName]);\n // Validate parameters against ABI if requested\n if (validate) {\n validateContractParamsFromABI(contract, methodName, params);\n }\n // Dry run to catch errors before actual execution\n if (dryRun) {\n try {\n await contract[methodName].staticCall(...params);\n }\n catch (error) {\n throw new Error(`Dry run failed: ${error.message}`);\n }\n }\n // Execute the actual call\n return await contract[methodName](...params);\n }\n catch (error) {\n throw new Error(`Contract call failed for ${methodName}: ${error.message}`);\n }\n}\n/**\n * Pre-flight validation for contract transactions\n */\nexport async function validateContractTransaction(contract, methodName, params, options = {}) {\n const { estimateGas = false, dryRun = true } = options;\n try {\n // Validate method and parameters\n validateContractMethodWithParams(contract, methodName, params);\n // Dry run if requested\n if (dryRun) {\n await contract[methodName].staticCall(...params);\n }\n // Gas estimation if requested\n let gasEstimate;\n if (estimateGas) {\n gasEstimate = await contract[methodName].estimateGas(...params);\n }\n return { gasEstimate, valid: true };\n }\n catch (error) {\n throw new Error(`Transaction validation failed: ${error.message}`);\n }\n}\n/**\n * Validate contract deployment bytecode\n * @param bytecode - Contract bytecode to validate\n */\nexport function validateContractBytecode(bytecode) {\n if (!bytecode || typeof bytecode !== 'string') {\n throw new Error('Contract bytecode must be a non-empty string');\n }\n if (!bytecode.startsWith('0x')) {\n throw new Error('Contract bytecode must start with 0x');\n }\n if (bytecode.length <= 2) {\n throw new Error('Contract bytecode cannot be empty');\n }\n // Check if bytecode is valid hex\n const hexPattern = /^0x[0-9a-fA-F]*$/;\n if (!hexPattern.test(bytecode)) {\n throw new Error('Contract bytecode must be valid hexadecimal');\n }\n}\n/**\n * Clean an ABI to be compatible with Ethers.js\n * Removes 'indexed' property from function inputs (only valid for events)\n */\nfunction cleanABI(abi) {\n return abi.map(fragment => {\n if (fragment.type === 'function' && fragment.inputs) {\n return {\n ...fragment,\n inputs: fragment.inputs.map((input) => {\n const { indexed, ...cleanInput } = input;\n return cleanInput;\n })\n };\n }\n return fragment;\n });\n}\n/**\n * Converts various ABI formats to ethers Interface with automatic cleaning for compatibility\n * @param abi - ABI in various formats (Interface, string, array, object)\n * @returns Ethers Interface instance\n * @throws Error if ABI format is invalid\n *\n * @example\n * ```typescript\n * // From array\n * const interface1 = convertAbiToInterface(ERC20_ABI);\n *\n * // From JSON string\n * const interface2 = convertAbiToInterface('[{\"type\":\"function\",\"name\":\"transfer\",...}]');\n *\n * // Already an Interface\n * const interface3 = convertAbiToInterface(existingInterface);\n * ```\n */\nexport function convertAbiToInterface(abi) {\n try {\n // Handle null/undefined\n if (!abi) {\n throw new Error('ABI is required');\n }\n // Already an Interface\n if (abi instanceof Interface) {\n return abi;\n }\n // String format (JSON)\n if (typeof abi === 'string') {\n const parsedAbi = JSON.parse(abi);\n const cleanedAbi = Array.isArray(parsedAbi) ? cleanABI(parsedAbi) : parsedAbi;\n return new Interface(cleanedAbi);\n }\n // Array or object format\n if (Array.isArray(abi) || typeof abi === 'object') {\n const cleanedAbi = Array.isArray(abi) ? cleanABI(abi) : abi;\n return new Interface(cleanedAbi);\n }\n throw new Error(`Unsupported ABI type: ${typeof abi}`);\n }\n catch (error) {\n if (error.message.includes('JSON')) {\n throw new Error('Invalid JSON format in ABI string');\n }\n if (error.message.includes('invalid fragment') || error.message.includes('parameter cannot be indexed')) {\n throw new Error('Invalid ABI fragment structure - function inputs cannot be indexed');\n }\n throw error;\n }\n}\n","import { isAddress } from 'ethers/address';\nimport { Contract } from 'ethers/contract';\nimport { convertAbiToInterface } from './validation-utilities';\n/**\n * Safely create an Ethers contract with validation and ABI cleaning\n * @template T - Contract type extending ethers.Contract\n * @param contractAddress - Contract address as string\n * @param contractAbi - Contract ABI (can be JSON string, array, or Interface)\n * @param providerOrSigner - Ethers provider or signer\n * @returns Typed ethers contract instance\n * @throws Error if inputs are invalid\n */\nexport function createSafeContract(contractAddress, contractAbi, providerOrSigner) {\n // Validate contract address\n if (!contractAddress || typeof contractAddress !== 'string') {\n throw new Error('Contract address is required and must be a string');\n }\n if (!isAddress(contractAddress)) {\n throw new Error(`Invalid contract address: ${contractAddress}`);\n }\n // Validate ABI\n if (!contractAbi) {\n throw new Error('Contract ABI is required');\n }\n // Validate provider/signer\n if (!providerOrSigner) {\n throw new Error('Provider or signer is required');\n }\n try {\n // Clean and convert ABI to Interface (handles indexed properties in function inputs)\n const cleanInterface = convertAbiToInterface(contractAbi);\n // Create contract with cleaned ABI\n return new Contract(contractAddress, cleanInterface, providerOrSigner);\n }\n catch (error) {\n throw new Error(`Failed to create contract: ${error.message}`);\n }\n}\n/**\n * Generic contract creation with signer for transaction execution\n * @template T - Contract type extending ethers.Contract\n * @param contractAddress - Contract address as string\n * @param contractAbi - Contract ABI (can be JSON string, array, or Interface)\n * @param signer - Ethers signer for transaction signing\n * @returns Typed ethers contract instance with signer attached\n */\nexport function createContractWithSigner(contractAddress, contractAbi, signer) {\n if (!isAddress(contractAddress)) {\n throw new Error(`Invalid contract address: ${contractAddress}`);\n }\n return new Contract(contractAddress, contractAbi, signer);\n}\n/**\n * Generic read-only contract creation for querying (no signing capability)\n * @template T - Contract type extending ethers.Contract\n * @param contractAddress - Contract address as string\n * @param contractAbi - Contract ABI (can be JSON string, array, or Interface)\n * @param provider - Ethers provider for read-only operations\n * @returns Typed ethers contract instance for queries only\n */\nexport function createContractReadOnly(contractAddress, contractAbi, provider) {\n if (!isAddress(contractAddress)) {\n throw new Error(`Invalid contract address: ${contractAddress}`);\n }\n return new Contract(contractAddress, contractAbi, provider);\n}\n/**\n * Generic contract state retrieval with graceful fallback handling\n * Handles both deployed and counterfactual contract scenarios\n * @template TState - Type of the expected state object\n * @param contract - Ethers contract instance\n * @param stateGetters - Object mapping state property names to contract method names\n * @param fallbackValues - Fallback values to use if contract calls fail\n * @param options - Configuration options\n * @returns Promise resolving to contract state object\n */\nexport async function getContractState(contract, stateGetters, fallbackValues, options = {}) {\n const { enableFallback = true, throwOnMissingFallback = true, logger } = options;\n try {\n const statePromises = Object.entries(stateGetters).map(async ([key, methodName]) => {\n const value = await contract[methodName]();\n return [key, value];\n });\n const stateEntries = await Promise.all(statePromises);\n return Object.fromEntries(stateEntries);\n }\n catch (contractError) {\n if (!enableFallback) {\n throw contractError;\n }\n logger?.warn(`Contract call failed, using fallback values: ${contractError.message}`);\n const result = {};\n for (const [key] of Object.entries(stateGetters)) {\n if (key in fallbackValues) {\n result[key] = fallbackValues[key];\n }\n else if (throwOnMissingFallback) {\n throw new Error(`Missing fallback value for state property: ${key}`);\n }\n }\n return result;\n }\n}\n/**\n * Checks if a contract/wallet is deployed on the blockchain\n * Useful for checking counterfactual wallet deployment status\n *\n * @param contractAddress - The contract/wallet address to check\n * @param provider - The ethers provider for blockchain queries\n * @returns True if the contract is deployed, false otherwise\n */\nexport async function isContractDeployed(contractAddress, provider) {\n try {\n if (!isAddress(contractAddress)) {\n throw new Error(`Invalid contract address: ${contractAddress}`);\n }\n const code = await provider.getCode(contractAddress);\n return code !== \"0x\";\n }\n catch (error) {\n // Return false if there's an error checking deployment status\n return false;\n }\n}\n/**\n * Checks if a contract ABI supports a specific function\n * @param contractAbi - Contract ABI array\n * @param functionName - Name of the function to check for\n * @returns True if the function exists in the ABI, false otherwise\n */\nexport function isFunctionalitySupported(contractAbi, functionName) {\n try {\n return !!contractAbi.getFunction(functionName);\n }\n catch {\n return false;\n }\n}\n/**\n * Ensures that a contract ABI supports a specific function (throws if not found)\n * @param contractAbi - Contract ABI array\n * @param functionName - Name of the function to check for\n * @throws Error if the function is not found in the ABI\n */\nexport function ensureFunctionalitySupported(contractAbi, functionName) {\n if (!isFunctionalitySupported(contractAbi, functionName)) {\n throw new Error(`The contract does not support the ${functionName} functionality.`);\n }\n}\n","import { jwtDecode } from 'jwt-decode';\nimport { FetchRequest, JsonRpcProvider } from '@explorins/web3-ts/ethers';\nimport '@explorins/pers-shared';\n\n/**\n * Platform-Agnostic Web3 Chain API Client\n *\n * Handles blockchain chain operations using the PERS backend.\n * Uses @explorins/web3-ts types for perfect framework compatibility.\n */\nclass Web3ChainApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/chains';\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get chain data by chain ID\n * ✅ Returns ChainData exactly as framework expects from @explorins/web3-ts\n */\n async getChainData(chainId) {\n try {\n console.log('[Web3ChainApi] Fetching chain data for chainId:', chainId);\n const response = await this.apiClient.get(`${this.basePath}/${chainId}`);\n if (!response) {\n throw new Error(`No chain data received for chainId: ${chainId}`);\n }\n return response;\n }\n catch (error) {\n console.error('[Web3ChainApi] Failed to get chain data:', {\n chainId,\n error: error instanceof Error ? error.message : String(error)\n });\n throw error;\n }\n }\n}\n\nconst isTokenExpired = (token, margin = 60) => {\n // Remove Bearer prefix if present\n const cleanToken = token.split(' ')[1] || token;\n // Validate JWT format\n if (!cleanToken || cleanToken.split('.').length !== 3) {\n return true; // Consider invalid tokens as expired\n }\n try {\n // Decode JWT token\n const decoded = jwtDecode(cleanToken);\n const currentTime = Math.floor(Date.now() / 1000);\n // Check expiration with margin (default 60 seconds)\n return decoded.exp < (currentTime + margin);\n }\n catch (error) {\n return true; // Consider unparseable tokens as expired\n }\n};\n\nvar jwt_function = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isTokenExpired: isTokenExpired\n});\n\n// ✅ REVERT: Función síncrona como el código comentado que funciona\nconst getWeb3ProviderFromChainData = (chainData, timeout = 15000, customUserAgentName = '', tokenRefresher) => {\n let ethersProvider;\n if (chainData.authHeader) {\n // ✅ AUTHENTICATED: For private chains\n const fetchRequest = new FetchRequest(chainData.rpcUrl);\n fetchRequest.timeout = timeout;\n // ✅ IMPROVED AUTH HEADER: Better handling\n const authValue = chainData.authHeader.startsWith('Bearer ')\n ? chainData.authHeader\n : `Bearer ${chainData.authHeader}`;\n fetchRequest.setHeader('Authorization', authValue);\n fetchRequest.setHeader('Content-Type', 'application/json');\n fetchRequest.setHeader('Accept', 'application/json');\n if (customUserAgentName) {\n fetchRequest.setHeader('User-Agent', customUserAgentName);\n }\n ethersProvider = new JsonRpcProvider(fetchRequest, undefined, {\n staticNetwork: false,\n polling: false,\n batchMaxCount: 1, // ✅ DISABLE BATCHING: Better for private chains\n });\n }\n else {\n // ✅ PUBLIC: For public chains\n ethersProvider = new JsonRpcProvider(chainData.rpcUrl, undefined, {\n staticNetwork: false,\n polling: false,\n });\n }\n console.log(`✅ [getWeb3FCD] Provider created successfully`);\n return {\n web3Provider: null,\n ethersProvider: ethersProvider,\n isAuthenticated: !!chainData.authHeader,\n };\n};\n// ✅ NEW: Async wrapper with retry for higher-level usage\nconst getWeb3ProviderWithRetry = async (chainData, timeout = 15000, customUserAgentName = '', tokenRefresher, retryConfig = { maxAttempts: 3, baseDelay: 1000, maxDelay: 8000 }) => {\n let lastError = null;\n for (let attempt = 1; attempt <= retryConfig.maxAttempts; attempt++) {\n try {\n console.log(`🔄 [Web3Provider] Attempt ${attempt}/${retryConfig.maxAttempts} for chain ${chainData.chainId || 'unknown'}`);\n // ✅ SYNC CALL: Use the original sync function\n const provider = getWeb3ProviderFromChainData(chainData, timeout, customUserAgentName, tokenRefresher);\n await validateChainConnection(provider.ethersProvider, chainData.authHeader ? 'private' : 'public');\n console.log(`✅ [Web3Provider] Successfully connected on attempt ${attempt}`);\n return provider;\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n console.warn(`⚠️ [Web3Provider] Attempt ${attempt} failed:`, lastError.message);\n // ✅ NO RETRY: if auth error, no retry\n if (isAuthError(lastError) && chainData.authHeader) {\n console.error(`❌ [Web3Provider] Auth error, stopping retries`);\n break;\n }\n if (attempt === retryConfig.maxAttempts)\n break;\n const delay = Math.min(retryConfig.baseDelay * Math.pow(2, attempt - 1), retryConfig.maxDelay);\n console.log(`⏳ [Web3Provider] Retrying in ${delay}ms...`);\n await sleep(delay);\n }\n }\n throw new Error(`Failed to create Web3 provider after ${retryConfig.maxAttempts} attempts. Last error: ${lastError?.message}`);\n};\nasync function validateChainConnection(provider, chainType) {\n try {\n console.log(`🔍 [Validation] Testing ${chainType} chain connection...`);\n // ✅ LIGHTWEIGHT TEST: Use eth_chainId (works for both public and private)\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => reject(new Error(`${chainType} chain validation timeout`)), 3000);\n });\n // Try chainId first (fast, lightweight, universal)\n const chainIdPromise = provider.send('eth_chainId', []);\n const result = await Promise.race([chainIdPromise, timeoutPromise]);\n console.log(`✅ [Validation] ${chainType} chain connection validated - Chain ID: ${result}`);\n }\n catch (error) {\n // ✅ FALLBACK: Try net_version if chainId fails\n try {\n console.log(`🔄 [Validation] Trying fallback validation for ${chainType} chain...`);\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => reject(new Error(`${chainType} chain fallback validation timeout`)), 3000);\n });\n const versionPromise = provider.send('net_version', []);\n const result = await Promise.race([versionPromise, timeoutPromise]);\n console.log(`✅ [Validation] ${chainType} chain connection validated via fallback - Network Version: ${result}`);\n }\n catch (fallbackError) {\n throw new Error(`${chainType} chain validation failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n}\n// ✅ HELPER: Auth error detection\nfunction isAuthError(error) {\n const message = error.message.toLowerCase();\n return (message.includes('unauthorized') ||\n message.includes('401') ||\n message.includes('token expired') ||\n message.includes('-40100'));\n}\n// ✅ HELPER: Sleep utility\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nclass EthersProviderService {\n constructor() {\n this._provider = null;\n this._currentChainId = null;\n this._creationPromise = null;\n console.log('[PERS SDK] EthersProviderService initialized with enhanced instanceof handling');\n }\n async getEthersProvider(chainId, chainType, chainData) {\n // ✅ EARLY RETURN: Reuse existing provider\n if (this._provider && this._currentChainId === chainId) {\n return this._provider;\n }\n // ✅ PREVENT RACE CONDITION: Wait for ongoing creation\n if (this._creationPromise) {\n return await this._creationPromise;\n }\n if (!chainId)\n throw new Error('ChainId not found');\n if (!chainData)\n throw new Error('ChainData not found');\n // ✅ CREATE AND CACHE: Single promise for concurrent calls\n const ethersPromise = this.createEthersProvider(chainId, chainType, chainData);\n try {\n const { web3Provider, ethersProvider, isAuthenticated } = await ethersPromise;\n this._provider = ethersProvider;\n this._currentChainId = chainId;\n return ethersProvider;\n }\n finally {\n // ✅ CLEANUP: Always reset promise after completion\n this._creationPromise = null;\n }\n }\n async createEthersProvider(chainId, chainType, chainData) {\n console.log(`🔧 [createProvider] Creating provider for chain ${chainId}`);\n const provider = await getWeb3ProviderWithRetry(chainData);\n return provider;\n }\n}\n\nclass Web3ChainService {\n constructor(web3ChainApi) {\n this.web3ChainApi = web3ChainApi;\n this.web3InstanceCache = new Map();\n // TODO: Fix any\n this.providerCache = new Map();\n // private providerService: Web3ProviderService = new Web3ProviderService();\n this.ethersProviderService = new EthersProviderService();\n }\n async getEthersProviderByChainId(chainId) {\n const cached = this.providerCache.get(chainId);\n // ✅ SMART CACHE: Check if cache is valid based on token expiration\n if (cached && !this.checkIsTokenExpired(cached.authHeader)) {\n // Using cached provider\n return cached.provider;\n }\n try {\n // Creating new Web3 instance\n const { provider, chainData } = await this.createProviderInstance(chainId);\n this.providerCache.set(chainId, {\n provider,\n chainData,\n createdAt: Date.now(),\n chainId\n });\n return provider;\n }\n catch (error) {\n // ✅ AUTH ERROR RECOVERY: Clear cache and retry once\n if (this.isAuthError(error)) {\n // Auth error detected, clearing cache and retrying\n this.providerCache.delete(chainId);\n // Retry once with fresh instance\n const { provider, chainData } = await this.createProviderInstance(chainId);\n this.providerCache.set(chainId, {\n provider,\n chainData,\n createdAt: Date.now(),\n chainId\n });\n return provider;\n }\n throw error;\n }\n }\n async createProviderInstance(chainId) {\n const chainData = await this.getChainDataById(chainId);\n if (!chainData) {\n throw new Error(`Chain data not found for chainId: ${chainId}`);\n }\n const provider = await this.ethersProviderService.getEthersProvider(chainId, chainData.chainType || 'PUBLIC', chainData);\n return { provider, chainData };\n }\n async getChainDataWithCache(chainId) {\n const cached = this.web3InstanceCache.get(chainId);\n //const now = Date.now();\n if (cached && !this.checkIsTokenExpired(cached.chainData.authHeader)) {\n // Using cached ChainData\n return cached.chainData;\n }\n // If not cached, fetch fresh data\n const chainData = await this.getChainDataById(chainId);\n if (!chainData) {\n throw new Error(`Chain data not found for chainId: ${chainId}`);\n }\n return chainData;\n }\n checkIsTokenExpired(authHeader) {\n // ✅ NULL CHECK: Handle undefined case\n if (!authHeader) {\n return false; // No token means no expiration (public chains)\n }\n // ✅ FUNCTION CALL: Use imported function, not method\n return isTokenExpired(authHeader);\n }\n // ✅ HELPER: Type-safe error checking\n isAuthError(error) {\n const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();\n return (message.includes('unauthorized') ||\n message.includes('401') ||\n message.includes('token expired') ||\n message.includes('invalid token'));\n }\n async getChainDataById(chainId) {\n try {\n return await this.web3ChainApi.getChainData(chainId);\n }\n catch (error) {\n console.error('❌ [SDK Web3ChainService] Error getting chain data for chainId:', chainId, error);\n return null;\n }\n }\n}\n\n/**\n * Web3 Chain Domain Models\n *\n * Minimal interface definitions matching framework usage exactly.\n * Local ChainData interface to avoid external dependency issues.\n */\nconst ChainTypes = {\n PUBLIC: 'PUBLIC',\n PRIVATE: 'PRIVATE'\n};\n\nfunction createWeb3ChainSDK(apiClient) {\n const web3ChainApi = new Web3ChainApi(apiClient);\n const web3ChainService = new Web3ChainService(web3ChainApi);\n return {\n getEthersProviderByChainId: (chainId) => web3ChainService.getEthersProviderByChainId(chainId),\n getChainDataById: (chainId) => web3ChainService.getChainDataWithCache(chainId),\n // getWeb3ByChainId: (chainId: number) => web3ChainService.getWeb3ByChainId(chainId),\n api: web3ChainApi,\n service: web3ChainService\n };\n}\n\nexport { ChainTypes as C, Web3ChainApi as W, Web3ChainService as a, createWeb3ChainSDK as c, jwt_function as j };\n//# sourceMappingURL=index-CM21r58m.js.map\n","import { c as createWeb3ChainSDK } from './index-CM21r58m.js';\nimport { convertAbiToInterface, createSafeContract, getAccountTokenBalance, getTokenUri, getTokenOfOwnerByIndex } from '@explorins/web3-ts/ethers';\n\n/**\n * Environment Detection Utility\n *\n * Detects the runtime environment to handle platform-specific behaviors\n * for bundling and module resolution.\n */\n/**\n * Detects the current runtime environment\n */\nfunction detectEnvironment() {\n const isNode = typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null &&\n typeof globalThis.window === 'undefined';\n const isBrowser = typeof globalThis.window !== 'undefined' &&\n typeof globalThis.document !== 'undefined';\n const isReactNative = typeof globalThis.navigator !== 'undefined' &&\n typeof globalThis.navigator.product === 'string' &&\n globalThis.navigator.product.toLowerCase() === 'reactnative';\n const isWeb = isBrowser || isReactNative;\n // Node.js streams: Only native in Node.js, need polyfills or avoidance in web\n const needsNodeStreamPolyfills = isWeb;\n return {\n isNode,\n isBrowser,\n isReactNative,\n isWeb,\n needsNodeStreamPolyfills\n };\n}\n/**\n * Global environment info (cached)\n */\nconst environment = detectEnvironment();\n/**\n * Warns if we're in an environment that might have bundling issues\n */\nfunction warnIfProblematicEnvironment(feature) {\n if (environment.needsNodeStreamPolyfills) {\n console.warn(`[PERS SDK] ${feature} may require additional polyfills in web environments. ` +\n `If you encounter 'readable-stream' errors, ensure proper polyfills are configured.`);\n }\n}\n\n/**\n * TokenDomainService - Domain service for token operations\n * Implements business logic for token balance, metadata, and collection operations\n */\nclass TokenDomainService {\n constructor(web3Api, metadataService, contractService) {\n this.web3Api = web3Api;\n this.metadataService = metadataService;\n this.contractService = contractService;\n }\n async getTokenBalance(request) {\n const balance = await this.web3Api.getTokenBalance({\n accountAddress: request.accountAddress,\n contractAddress: request.contractAddress,\n abi: convertAbiToInterface(request.abi),\n tokenId: request.tokenId,\n chainId: request.chainId\n });\n return {\n tokenId: request.tokenId,\n balance,\n hasBalance: balance > 0,\n metadata: null\n };\n }\n async getTokenWithMetadata(params) {\n try {\n const balance = await this.web3Api.getTokenBalance({\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n abi: convertAbiToInterface(params.abi),\n tokenId: params.tokenId,\n chainId: params.chainId\n });\n let metadata = null;\n if (balance > 0) {\n const tokenUri = await this.web3Api.getTokenUri({\n contractAddress: params.contractAddress,\n abi: convertAbiToInterface(params.abi),\n tokenId: params.tokenId,\n chainId: params.chainId\n });\n if (tokenUri) {\n metadata = await this.metadataService.fetchAndProcessMetadata(tokenUri, params.chainId);\n }\n }\n return {\n tokenId: params.tokenId,\n balance,\n hasBalance: balance > 0,\n metadata\n };\n }\n catch (error) {\n console.error('Error getting token with metadata:', error);\n return {\n tokenId: params.tokenId,\n balance: 0,\n hasBalance: false,\n metadata: null\n };\n }\n }\n async getTokenCollection(params) {\n params.abi = convertAbiToInterface(params.abi);\n try {\n const contractAnalysis = this.contractService.analyzeContract(params.abi);\n const tokens = [];\n if (!contractAnalysis.hasEnumeration && !contractAnalysis.isERC1155) {\n console.warn('Contract does not support enumeration, cannot retrieve full collection');\n return {\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n totalBalance: 0,\n tokensRetrieved: 0,\n tokens: [],\n note: 'Contract does not support enumeration'\n };\n }\n else if (contractAnalysis.isERC1155) {\n const tokenIdsToProcess = params.tokenIds || [];\n if (tokenIdsToProcess.length > 0) {\n for (const tokenId of tokenIdsToProcess) {\n const tokenBalance = await this.getTokenWithMetadata({\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n abi: params.abi,\n tokenId,\n chainId: params.chainId\n });\n tokens.push(tokenBalance);\n }\n }\n console.log('ERC-1155 User balances:', tokens);\n // ERC-1155: Cannot enumerate without knowing token IDs\n // Would need to use events or provide specific token IDs\n console.warn('ERC-1155 collection retrieval requires specific token IDs or event analysis');\n return {\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n totalBalance: 0,\n tokensRetrieved: 0,\n tokens: tokens,\n note: 'ERC-1155 collection retrieval requires specific token IDs. Use getTokenWithMetadata() for individual tokens.'\n };\n }\n // Handle different token standards\n if (contractAnalysis.isERC721) {\n // ERC-721: Get user's total balance and enumerate through tokens\n const userBalance = await this.web3Api.getTokenBalance({\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n abi: params.abi,\n tokenId: null, // null for ERC-721 total balance\n chainId: params.chainId\n });\n console.log(`ERC-721 User balance for ${params.accountAddress}:`, userBalance);\n if (userBalance === 0) {\n return {\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n totalBalance: 0,\n tokensRetrieved: 0,\n tokens: []\n };\n }\n // Enumerate through user's tokens\n const maxTokens = params.maxTokens || userBalance;\n const tokensToRetrieve = Math.min(maxTokens, userBalance);\n for (let i = 0; i < tokensToRetrieve; i++) {\n try {\n const tokenId = await this.web3Api.getTokenOfOwnerByIndex({\n contractAddress: params.contractAddress,\n abi: params.abi,\n accountAddress: params.accountAddress,\n tokenIndex: i,\n chainId: params.chainId\n });\n const tokenWithMetadata = await this.getTokenWithMetadata({\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n abi: params.abi,\n tokenId,\n chainId: params.chainId\n });\n if (tokenWithMetadata.hasBalance) {\n tokens.push(tokenWithMetadata);\n }\n }\n catch (error) {\n console.warn(`Error retrieving ERC-721 token at index ${i}:`, error);\n continue;\n }\n }\n }\n else {\n // Unknown standard\n return {\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n totalBalance: 0,\n tokensRetrieved: 0,\n tokens: [],\n note: 'Unsupported token standard for collection retrieval'\n };\n }\n // Calculate total balance based on retrieved tokens\n let totalBalance = 0;\n if (contractAnalysis.isERC721) {\n // For ERC-721, total balance is the number of unique tokens owned\n totalBalance = tokens.length;\n }\n else {\n // For other standards, sum up individual token balances\n totalBalance = tokens.reduce((sum, token) => sum + token.balance, 0);\n }\n return {\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n totalBalance,\n tokensRetrieved: tokens.length,\n tokens\n };\n }\n catch (error) {\n console.error('Error getting token collection:', error);\n return {\n accountAddress: params.accountAddress,\n contractAddress: params.contractAddress,\n totalBalance: 0,\n tokensRetrieved: 0,\n tokens: [],\n note: 'Error retrieving collection'\n };\n }\n }\n async getTokenMetadata(params) {\n params.abi = convertAbiToInterface(params.abi);\n try {\n const tokenUri = await this.web3Api.getTokenUri({\n contractAddress: params.contractAddress,\n abi: params.abi,\n tokenId: params.tokenId,\n chainId: params.chainId\n });\n let metadata = null;\n if (tokenUri) {\n metadata = await this.metadataService.fetchAndProcessMetadata(tokenUri, params.chainId);\n }\n return {\n tokenId: params.tokenId,\n tokenUri,\n metadata\n };\n }\n catch (error) {\n console.error('Error getting token metadata:', error);\n return {\n tokenId: params.tokenId,\n tokenUri: null,\n metadata: null\n };\n }\n }\n}\n\n/**\n * MetadataDomainService - Clean IPFS metadata resolution\n */\nclass MetadataDomainService {\n constructor(ipfsApi) {\n this.ipfsApi = ipfsApi;\n }\n async fetchAndProcessMetadata(tokenUri, chainId) {\n return this.ipfsApi.fetchAndProcessMetadata(tokenUri, chainId);\n }\n async resolveIPFSUrl(url, chainId) {\n return this.ipfsApi.resolveIPFSUrl(url, chainId);\n }\n}\n\n/**\n * ContractDomainService - Clean contract analysis without external dependencies\n */\nclass ContractDomainService {\n constructor() { }\n analyzeContract(abi) {\n abi = convertAbiToInterface(abi);\n const methods = abi.fragments.filter(item => item.type === 'function').map(item => item.name);\n // ERC-721 detection\n const hasOwnerOf = methods.includes('ownerOf');\n const hasTokenURI = methods.includes('tokenURI');\n const hasTransferFrom = methods.includes('transferFrom');\n const isERC721 = hasOwnerOf && hasTokenURI && hasTransferFrom;\n // ERC-1155 detection\n const hasBalanceOfBatch = methods.includes('balanceOfBatch');\n const hasSafeBatchTransferFrom = methods.includes('safeBatchTransferFrom');\n const hasURI = methods.includes('uri');\n const isERC1155 = hasBalanceOfBatch && hasSafeBatchTransferFrom && hasURI;\n return {\n hasEnumeration: methods.includes('tokenByIndex') && methods.includes('totalSupply'),\n hasOwnerOf,\n hasBalanceOf: methods.includes('balanceOf'),\n hasTokenURI,\n hasTransfer: methods.includes('transfer') || methods.includes('transferFrom'),\n hasApprove: methods.includes('approve'),\n isERC721,\n isERC1155\n };\n }\n}\n\n/**\n * Web3ApplicationService - Application layer entrance point\n * Orchestrates domain services and provides clean public interface\n * Simplified architecture with concrete classes\n */\nclass Web3ApplicationService {\n constructor(web3Api, ipfsApi) {\n // Type-safe metadata conversion methods for ERC-721/ERC-1155 standards\n this.metadataMapper = {\n fromERCStandard: (ercMetadata) => ({\n name: ercMetadata.name || '',\n description: ercMetadata.description || '',\n imageUrl: ercMetadata.image || '',\n externalUrl: ercMetadata.external_url,\n animationUrl: ercMetadata.animation_url,\n animationUrlConverted: undefined, // Will be set by IPFS conversion\n attributes: ercMetadata.attributes || [],\n ...ercMetadata\n }),\n toERCStandard: (metadata) => ({\n name: metadata.name,\n description: metadata.description,\n image: metadata.imageUrl,\n animation_url: metadata.animationUrl,\n external_url: metadata.externalUrl,\n attributes: metadata.attributes,\n ...Object.fromEntries(Object.entries(metadata).filter(([key]) => !['name', 'description', 'imageUrl', 'animationUrl', 'externalUrl', 'attributes', 'animationUrlConverted'].includes(key)))\n })\n };\n // Create domain services with injected infrastructure dependencies\n this.contractDomainService = new ContractDomainService();\n this.metadataDomainService = new MetadataDomainService(ipfsApi);\n this.tokenDomainService = new TokenDomainService(web3Api, this.metadataDomainService, this.contractDomainService);\n }\n /**\n * Get balance and metadata for a specific token\n */\n async getSpecificTokenBalance(request) {\n if (!request.tokenId) {\n return this.tokenDomainService.getTokenBalance({\n accountAddress: request.accountAddress || '',\n contractAddress: request.contractAddress,\n abi: request.abi,\n tokenId: '',\n chainId: request.chainId\n });\n }\n return this.tokenDomainService.getTokenWithMetadata({\n accountAddress: request.accountAddress || '',\n contractAddress: request.contractAddress,\n abi: request.abi,\n tokenId: request.tokenId || '',\n chainId: request.chainId\n });\n }\n /**\n * Get metadata for a specific token from on-chain\n */\n async getTokenMetadata(request) {\n const domainResult = await this.tokenDomainService.getTokenMetadata({\n contractAddress: request.contractAddress,\n abi: request.abi,\n tokenId: request.tokenId || '',\n chainId: request.chainId\n });\n return domainResult.metadata;\n }\n /**\n * Retrieve entire collection of tokens with balance and metadata\n */\n async getTokenCollection(request) {\n return this.tokenDomainService.getTokenCollection({\n accountAddress: request.accountAddress || '',\n contractAddress: request.contractAddress,\n abi: request.abi,\n chainId: request.chainId,\n maxTokens: request.maxTokens,\n tokenIds: request.tokenIds\n });\n }\n /**\n * Resolve IPFS URLs to HTTPS if needed\n */\n async resolveIPFSUrl(url, chainId) {\n return this.metadataDomainService.resolveIPFSUrl(url, chainId);\n }\n /**\n * Fetch and process metadata from URI with IPFS conversion\n */\n async fetchAndProcessMetadata(tokenUri, chainId) {\n const domainMetadata = await this.metadataDomainService.fetchAndProcessMetadata(tokenUri, chainId);\n if (!domainMetadata)\n return null;\n // Convert from ERC token standard to our clean interface\n const cleanMetadata = this.metadataMapper.fromERCStandard(domainMetadata);\n // Add IPFS conversion if needed\n if (cleanMetadata.animationUrl?.startsWith('ipfs://')) {\n return {\n ...cleanMetadata,\n animationUrlConverted: await this.resolveIPFSUrl(cleanMetadata.animationUrl, chainId)\n };\n }\n return cleanMetadata;\n }\n}\n\n/**\n * Web3InfrastructureApi - Infrastructure implementation for blockchain operations\n * Uses @explorins/web3-ts for Web3 interactions\n */\nclass Web3InfrastructureApi {\n constructor(web3ChainService) {\n this.web3ChainService = web3ChainService;\n }\n async getTokenBalance(request) {\n try {\n if (request.tokenId !== null)\n request.tokenId = request.tokenId.toString();\n const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);\n console.log(`[getTokenBalance] Ethers provider obtained, creating contract instance...`, ethersProvider);\n const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);\n return await getAccountTokenBalance(contract, request.accountAddress, request.tokenId);\n }\n catch (error) {\n console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);\n return 0;\n }\n }\n async getTokenUri(request) {\n try {\n const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);\n const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);\n const tokenId = Number(request.tokenId);\n const tokenUri = await getTokenUri(contract, tokenId);\n return String(tokenUri);\n }\n catch (error) {\n console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);\n throw error;\n }\n }\n async getTokenOfOwnerByIndex(request) {\n try {\n const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);\n const tokenContract = createSafeContract(request.contractAddress, request.abi, ethersProvider);\n const tokenId = await getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);\n return String(tokenId);\n }\n catch (error) {\n console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);\n throw error;\n }\n }\n}\n\n/**\n * IPFSInfrastructureApi - Infrastructure implementation for IPFS operations\n * Uses Web3ChainService for IPFS gateway resolution\n */\nclass IPFSInfrastructureApi {\n constructor(web3ChainService) {\n this.web3ChainService = web3ChainService;\n this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';\n }\n async getIpfsGatewayDomain(chainId) {\n try {\n const chainData = await this.web3ChainService.getChainDataWithCache(chainId);\n return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;\n }\n catch (error) {\n console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);\n return this.defaultIpfsGatewayDomain;\n }\n }\n async resolveIPFSUrl(url, chainId) {\n if (url.startsWith('ipfs://')) {\n const gateway = await this.getIpfsGatewayDomain(chainId);\n return url.replace('ipfs://', `https://${gateway}/ipfs/`);\n }\n return url;\n }\n async fetchAndProcessMetadata(tokenUri, chainId) {\n try {\n const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);\n const response = await fetch(resolvedUri);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const metadata = await response.json();\n // Process and return clean metadata\n return {\n name: metadata.name || '',\n description: metadata.description || '',\n image: metadata.image ? await this.resolveIPFSUrl(metadata.image, chainId) : '',\n attributes: metadata.attributes || [],\n animation_url: metadata.animation_url ? await this.resolveIPFSUrl(metadata.animation_url, chainId) : undefined,\n external_url: metadata.external_url || undefined\n };\n }\n catch (error) {\n console.error('Error fetching metadata:', error);\n return null;\n }\n }\n async fetchFromUrl(url) {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);\n }\n return await response.json();\n }\n catch (error) {\n console.error(`Error fetching from URL ${url}:`, error);\n throw error;\n }\n }\n}\n\n/**\n * Generate explorer URL for a given address or transaction\n *\n * @param chainData - Chain data containing explorer URL and chain ID\n * @param address - Address or transaction hash\n * @param type - Type of explorer URL ('address' or 'tx')\n * @returns Explorer URL string\n */\nfunction getExplorerUrl(chainData, address, type) {\n if (chainData?.explorerUrl) {\n return `${chainData.explorerUrl}/${type}/${address}`;\n }\n // Fallback to hardcoded URLs if no explorer URL in chain data\n const chainId = chainData?.chainId;\n let url = '';\n switch (chainId) {\n case 1:\n url = `https://etherscan.io/${type}/${address}`;\n break;\n case 4:\n url = `https://rinkeby.etherscan.io/${type}/${address}`;\n break;\n case 56:\n url = `https://bscscan.com/${type}/${address}`;\n break;\n case 97:\n url = `https://testnet.bscscan.com/${type}/${address}`;\n break;\n case 137:\n url = `https://explorer-mainnet.maticvigil.com/${type}/${address}`;\n break;\n case 80001:\n url = `https://explorer-mumbai.maticvigil.com/${type}/${address}`;\n break;\n case 80002:\n url = `https://www.oklink.com/amoy/${type}/${address}`;\n break;\n default:\n url = `https://etherscan.io/${type}/${address}`;\n }\n return url;\n}\n/**\n * Generate explorer URL using chain ID (async version that fetches chain data)\n *\n * @param getChainData - Function to get chain data by ID\n * @param chainId - Chain ID to get explorer URL for\n * @param address - Address or transaction hash\n * @param type - Type of explorer URL ('address' or 'tx')\n * @returns Promise resolving to explorer URL string\n */\nasync function getExplorerUrlByChainId(getChainData, chainId, address, type) {\n const chainData = await getChainData(chainId);\n return getExplorerUrl(chainData, address, type);\n}\n\nfunction createWeb3SDK(apiClient) {\n // Warn about potential bundling issues in web environments\n warnIfProblematicEnvironment('Web3 functionality');\n const web3ChainSDK = createWeb3ChainSDK(apiClient);\n // Create Web3ApplicationService - main entry point for all Web3 operations\n const web3InfrastructureApi = new Web3InfrastructureApi(web3ChainSDK.service);\n const ipfsInfrastructureApi = new IPFSInfrastructureApi(web3ChainSDK.service);\n const web3ApplicationService = new Web3ApplicationService(web3InfrastructureApi, ipfsInfrastructureApi);\n // Clean SDK - all functions route through Web3ApplicationService\n return {\n getTokenBalance: (request) => web3ApplicationService.getSpecificTokenBalance(request),\n getTokenMetadata: (request) => web3ApplicationService.getTokenMetadata(request),\n getTokenCollection: (request) => web3ApplicationService.getTokenCollection(request),\n resolveIPFSUrl: (url, chainId) => web3ApplicationService.resolveIPFSUrl(url, chainId),\n fetchAndProcessMetadata: (tokenUri, chainId) => web3ApplicationService.fetchAndProcessMetadata(tokenUri, chainId),\n applicationService: web3ApplicationService\n };\n}\n\nexport { IPFSInfrastructureApi as I, Web3ApplicationService as W, Web3InfrastructureApi as a, getExplorerUrlByChainId as b, createWeb3SDK as c, detectEnvironment as d, environment as e, getExplorerUrl as g, warnIfProblematicEnvironment as w };\n//# sourceMappingURL=index-CJ9Jfa4A.js.map\n","import { AccountOwnerType } from '@explorins/pers-shared';\nimport { createUserSDK } from '../user.js';\nimport { createUserStatusSDK } from '../user-status.js';\nimport { T as TokenSDK } from './token-sdk-BW4kkJb3.js';\nimport { createBusinessSDK } from '../business.js';\nimport { createCampaignSDK } from '../campaign.js';\nimport { createRedemptionSDK } from '../redemption.js';\nimport { createTransactionSDK } from '../transaction.js';\nimport { createPaymentSDK } from '../payment.js';\nimport { createTenantSDK } from '../tenant.js';\nimport { createAnalyticsSDK } from '../analytics.js';\nimport { createDonationSDK } from '../donation.js';\nimport { c as createWeb3SDK, b as getExplorerUrlByChainId } from './index-CJ9Jfa4A.js';\nimport { c as createWeb3ChainSDK } from './index-CM21r58m.js';\n\n/**\n * PERS SDK Configuration interfaces and utilities\n *\n * Provides type-safe configuration options for the PERS SDK\n * with sensible defaults for production environments.\n */\n/**\n * Default configuration values\n */\nconst DEFAULT_PERS_CONFIG = {\n environment: 'production',\n apiVersion: 'v2',\n timeout: 30000,\n retries: 3,\n tokenRefreshMargin: 60, // Refresh tokens 60 seconds before expiry\n backgroundRefreshThreshold: 30 // Use background refresh if >30s remaining\n};\n/**\n * Internal function to construct API root from environment\n * Now defaults to production and v2\n */\nfunction buildApiRoot(environment = 'production', version = 'v2') {\n const baseUrls = {\n development: 'https://explorins-loyalty.ngrok.io',\n staging: `https://dev.api.pers.ninja/${version}`,\n production: `https://api.pers.ninja/${version}`\n };\n return `${baseUrls[environment]}`;\n}\n/**\n * Merge user config with defaults\n */\nfunction mergeWithDefaults(config) {\n return {\n ...DEFAULT_PERS_CONFIG,\n ...config,\n environment: config.environment ?? DEFAULT_PERS_CONFIG.environment,\n apiVersion: config.apiVersion ?? DEFAULT_PERS_CONFIG.apiVersion,\n timeout: config.timeout ?? DEFAULT_PERS_CONFIG.timeout,\n retries: config.retries ?? DEFAULT_PERS_CONFIG.retries\n };\n}\n\n/**\n * Platform-Agnostic Auth Admin API Client\n *\n * Handles authentication and authorization admin operations using the PERS backend.\n * Uses @explorins/pers-shared DTOs for consistency with backend.\n *\n * Note: Special header handling (bypass-auth-interceptor) may need to be implemented\n * at the PersApiClient level or through a specialized auth client.\n */\nclass AuthApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/auth';\n }\n // ==========================================\n // ADMIN AUTHENTICATION OPERATIONS\n // ==========================================\n /**\n * ADMIN: Login tenant admin with JWT\n * Note: JWT handling and auth bypass headers may need special implementation\n */\n async loginTenantAdmin(jwt) {\n const body = {\n authToken: jwt,\n authType: AccountOwnerType.TENANT\n };\n return this.apiClient.post(`${this.basePath}/token`, body, { bypassAuth: true });\n }\n /**\n * Login user with JWT - bypasses auth headers\n */\n async loginUser(jwt) {\n const body = {\n authToken: jwt,\n authType: AccountOwnerType.USER\n };\n return this.apiClient.post(`${this.basePath}/token`, body, { bypassAuth: true });\n }\n async loginUnAuthenticated(rawLoginData) {\n const body = {\n authToken: '',\n authType: AccountOwnerType.USER,\n rawLoginData\n };\n return this.apiClient.post(`${this.basePath}/token`, body, { bypassAuth: true });\n }\n /**\n * Refresh access token - bypasses auth headers to prevent circular dependency\n */\n async refreshAccessToken(refreshToken) {\n // Bypass auth headers for refresh calls to prevent circular dependency\n return this.apiClient.post(`${this.basePath}/refresh`, { refreshToken }, { bypassAuth: true });\n }\n}\n\n/**\n * Platform-Agnostic Auth Admin Service\n *\n * Contains auth admin business logic and operations that work across platforms.\n * No framework dependencies - pure TypeScript business logic.\n *\n * Focuses only on actual backend capabilities.\n */\nclass AuthService {\n constructor(authApi, authProvider) {\n this.authApi = authApi;\n this.authProvider = authProvider;\n }\n // ==========================================\n // ADMIN AUTHENTICATION OPERATIONS\n // ==========================================\n /**\n * ADMIN: Login tenant admin with JWT\n * Automatically stores tokens if auth provider supports token storage\n */\n async loginTenantAdmin(jwt) {\n const response = await this.authApi.loginTenantAdmin(jwt);\n // Store tokens if auth provider supports it\n if (this.authProvider && response.accessToken) {\n await this.storeTokens(response.accessToken, response.refreshToken, 'admin', jwt);\n }\n return response;\n }\n /**\n * Automatically stores tokens if auth provider supports token storage\n */\n async loginUser(jwt) {\n const response = await this.authApi.loginUser(jwt);\n // Store tokens if auth provider supports it\n if (this.authProvider && response.accessToken) {\n await this.storeTokens(response.accessToken, response.refreshToken, 'user', jwt);\n }\n return response;\n }\n /**\n * Automatically stores tokens if auth provider supports token storage\n */\n async loginUserWithRawData(rawLoginData) {\n const loginData = {\n externalId: rawLoginData?.externalId,\n email: rawLoginData?.email,\n firstName: rawLoginData?.firstName,\n lastName: rawLoginData?.lastName,\n customData: rawLoginData?.customData\n };\n const response = await this.authApi.loginUnAuthenticated(loginData);\n // Store tokens if auth provider supports it\n if (this.authProvider && response.accessToken) {\n await this.storeTokens(response.accessToken, response.refreshToken, 'user');\n }\n return response;\n }\n /**\n * ADMIN: Refresh access token\n * Automatically stores new tokens if auth provider supports token storage\n */\n async refreshAccessToken(refreshToken) {\n // Use provided refresh token or get from auth provider\n const tokenToUse = refreshToken || (this.authProvider?.getRefreshToken ? await this.authProvider.getRefreshToken() : null);\n if (!tokenToUse) {\n throw new Error('No refresh token available for token refresh');\n }\n const response = await this.authApi.refreshAccessToken(tokenToUse);\n // Store new tokens if auth provider supports it\n if (this.authProvider && response.accessToken) {\n await this.storeTokens(response.accessToken, response.refreshToken);\n }\n return response;\n }\n /**\n * Automatic token refresh using stored refresh token\n * Convenience method for 401 error handling\n */\n async autoRefreshToken() {\n return this.refreshAccessToken(); // Uses stored refresh token\n }\n /**\n * Clear stored tokens if auth provider supports it\n */\n async clearTokens() {\n if (this.authProvider?.clearTokens) {\n await this.authProvider.clearTokens();\n }\n }\n /**\n * Check if we have valid tokens for authentication\n */\n hasValidAuth() {\n return this.authProvider?.hasValidToken?.() ?? false;\n }\n // ==========================================\n // PRIVATE HELPERS\n // ==========================================\n /**\n * Store tokens using auth provider if it supports token storage\n */\n async storeTokens(accessToken, refreshToken, authType, providerToken) {\n if (!this.authProvider)\n return;\n try {\n // Store access token\n if (this.authProvider.setAccessToken) {\n await this.authProvider.setAccessToken(accessToken);\n }\n // Store refresh token if provided and supported\n if (refreshToken && this.authProvider.setRefreshToken) {\n await this.authProvider.setRefreshToken(refreshToken);\n }\n // Store provider token if provided and provider supports it\n if (providerToken && 'setProviderToken' in this.authProvider &&\n typeof this.authProvider.setProviderToken === 'function') {\n await this.authProvider.setProviderToken(providerToken);\n }\n // Store auth type if provided and provider supports it\n if (authType && 'setAuthType' in this.authProvider &&\n typeof this.authProvider.setAuthType === 'function') {\n await this.authProvider.setAuthType(authType);\n }\n }\n catch (error) {\n // Don't throw - token storage failure shouldn't break authentication\n }\n }\n}\n\n/**\n * Authentication-related constants for type safety\n */\n/**\n * Storage keys for authentication tokens\n */\nconst AUTH_STORAGE_KEYS = {\n ACCESS_TOKEN: 'pers_access_token',\n REFRESH_TOKEN: 'pers_refresh_token',\n PROVIDER_TOKEN: 'pers_provider_token', // Generic external JWT (Firebase, Auth0, etc.)\n AUTH_TYPE: 'pers_auth_type',\n};\n/**\n * Generate prefixed storage keys for different auth types\n */\nfunction createStorageKey(baseKey, authType = 'user') {\n if (baseKey === AUTH_STORAGE_KEYS.ACCESS_TOKEN) {\n return `pers_access_token_${authType}`;\n }\n if (baseKey === AUTH_STORAGE_KEYS.REFRESH_TOKEN) {\n return `pers_refresh_token_${authType}`;\n }\n return baseKey;\n}\n/**\n * Authentication method types\n */\nconst AUTH_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n};\n\n/**\n * Token Storage Management\n *\n * Handles secure token storage with different strategies\n */\n/**\n * LocalStorage-based token storage\n */\nlet LocalStorageTokenStorage$1 = class LocalStorageTokenStorage {\n async setToken(key, value) {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(key, value);\n }\n }\n async getToken(key) {\n if (typeof localStorage !== 'undefined') {\n return localStorage.getItem(key);\n }\n return null;\n }\n async removeToken(key) {\n if (typeof localStorage !== 'undefined') {\n localStorage.removeItem(key);\n }\n }\n async clear() {\n if (typeof localStorage !== 'undefined') {\n Object.values(AUTH_STORAGE_KEYS).forEach(key => {\n localStorage.removeItem(key);\n });\n }\n }\n};\n/**\n * Token Manager - High-level token management\n */\nlet TokenManager$1 = class TokenManager {\n constructor(storage = new LocalStorageTokenStorage$1()) {\n this.storage = storage;\n }\n async setAccessToken(token) {\n await this.storage.setToken(AUTH_STORAGE_KEYS.ACCESS_TOKEN, token);\n }\n async getAccessToken() {\n return this.storage.getToken(AUTH_STORAGE_KEYS.ACCESS_TOKEN);\n }\n async setRefreshToken(token) {\n await this.storage.setToken(AUTH_STORAGE_KEYS.REFRESH_TOKEN, token);\n }\n async getRefreshToken() {\n return this.storage.getToken(AUTH_STORAGE_KEYS.REFRESH_TOKEN);\n }\n async getProviderToken() {\n return await this.storage.getToken(AUTH_STORAGE_KEYS.PROVIDER_TOKEN);\n }\n async setTokenData(data) {\n if (data.accessToken) {\n await this.setAccessToken(data.accessToken);\n }\n if (data.refreshToken) {\n await this.setRefreshToken(data.refreshToken);\n }\n // Could store expiration time if needed\n }\n async getTokenData() {\n const accessToken = await this.getAccessToken();\n const refreshToken = await this.getRefreshToken();\n return {\n accessToken: accessToken || undefined,\n refreshToken: refreshToken || undefined\n };\n }\n async clearAllTokens() {\n await this.storage.clear();\n }\n async hasValidTokens() {\n const accessToken = await this.getAccessToken();\n return !!accessToken;\n }\n async hasRefreshToken() {\n const refreshToken = await this.getRefreshToken();\n return !!refreshToken;\n }\n async removeToken(key) {\n await this.storage.removeToken(key);\n }\n /**\n * Set auth type (user or admin)\n */\n async setAuthType(authType) {\n await this.storage.setToken(AUTH_STORAGE_KEYS.AUTH_TYPE, authType);\n }\n /**\n * Get stored auth type\n */\n async getAuthType() {\n const authType = await this.storage.getToken(AUTH_STORAGE_KEYS.AUTH_TYPE);\n return authType;\n }\n /**\n * Clear auth type from storage\n */\n async clearAuthType() {\n await this.storage.removeToken(AUTH_STORAGE_KEYS.AUTH_TYPE);\n }\n /**\n * Set provider token (generic external JWT)\n */\n async setProviderToken(token) {\n await this.storage.setToken(AUTH_STORAGE_KEYS.PROVIDER_TOKEN, token);\n }\n /**\n * Clear provider token\n */\n async clearProviderToken() {\n await this.storage.removeToken(AUTH_STORAGE_KEYS.PROVIDER_TOKEN);\n }\n};\n\n/**\n * PERS SDK Error Handling - Optimized for Performance\n *\n * Consolidated API and auth errors for fast SDK performance\n * Uses @explorins/pers-shared when available, fallback to SDK errors\n */\n// Fast type guards and utilities\nclass ErrorUtils {\n /**\n * Fast token expiration detection\n */\n static isTokenExpired(error) {\n if (typeof error !== 'object' || error === null)\n return false;\n const err = error;\n const apiError = err?.error || err?.response?.data || err;\n const status = err?.status || err?.response?.status || err?.statusCode;\n return apiError?.code === 'TOKEN_EXPIRED' ||\n apiError?.errorCode === 'TOKEN_EXPIRED' ||\n (status === 401 && apiError?.message?.toLowerCase()?.includes('token'));\n }\n /**\n * Fast error message extraction\n */\n static getMessage(error) {\n if (typeof error !== 'object' || error === null)\n return 'Unknown error';\n const err = error;\n const apiError = err?.error || err?.response?.data || err;\n return apiError?.message || apiError?.detail || err?.message || 'Request failed';\n }\n /**\n * Fast status code extraction\n */\n static getStatus(error) {\n if (typeof error !== 'object' || error === null)\n return null;\n const err = error;\n return err?.status || err?.statusCode || err?.response?.status || null;\n }\n /**\n * Fast retryability check\n */\n static isRetryable(error) {\n if (typeof error !== 'object' || error === null)\n return false;\n const err = error;\n // Check explicit retryable property first (fastest)\n if (typeof err?.retryable === 'boolean')\n return err.retryable;\n // Fast status-based check\n const status = ErrorUtils.getStatus(error);\n return status === null || status >= 500 || status === 429;\n }\n /**\n * Check if error is from PERS API (uses @explorins/pers-shared format)\n */\n static isPersApiError(error) {\n return typeof error === 'object' && error !== null &&\n 'errorCode' in error && 'domain' in error && 'category' in error;\n }\n}\n// SDK-specific error classes for auth flows\nclass TokenRefreshNeeded extends Error {\n constructor(refreshToken) {\n super('Token refresh needed');\n this.refreshToken = refreshToken;\n this.errorCode = 'TOKEN_REFRESH_NEEDED';\n this.domain = 'auth';\n this.category = 'SECURITY';\n this.retryable = true;\n this.name = 'TokenRefreshNeeded';\n }\n}\nclass ProviderTokenRefreshNeeded extends Error {\n constructor(providerToken) {\n super('Provider token refresh needed');\n this.providerToken = providerToken;\n this.errorCode = 'PROVIDER_TOKEN_REFRESH_NEEDED';\n this.domain = 'auth';\n this.category = 'SECURITY';\n this.retryable = true;\n this.name = 'ProviderTokenRefreshNeeded';\n }\n}\nclass LogoutRequired extends Error {\n constructor(message) {\n super(message);\n this.errorCode = 'LOGOUT_REQUIRED';\n this.domain = 'auth';\n this.category = 'SECURITY';\n this.retryable = false;\n this.name = 'LogoutRequired';\n }\n}\nclass PersApiError extends Error {\n constructor(message, endpoint, method, status, retryable = false) {\n super(`API request failed: ${message}`);\n this.endpoint = endpoint;\n this.method = method;\n this.status = status;\n this.errorCode = 'PERS_API_ERROR';\n this.domain = 'api';\n this.category = 'TECHNICAL';\n this.name = 'PersApiError';\n this.retryable = retryable;\n }\n}\n\n/**\n * Token Refresh Management\n *\n * Handles the 6-step authentication process:\n * 1. Check for provider token → get complete token set from PERS if missing\n * 2. Store all tokens (access, refresh, provider)\n * 3. Use access token for requests\n * 4. Use refresh token if access expires → get new token set, keep provider\n * 5. Fall back to provider token if refresh fails → get fresh token set from PERS\n * 6. Clear all tokens if provider also fails\n */\n/**\n * Token Refresh Manager\n *\n * Implements the 6-step authentication process:\n * 1. Use provider token to retrieve complete token set from PERS if not present\n * 2. Store all 3 tokens (access, refresh, provider)\n * 3. Use access token for API requests\n * 4. Use refresh token if access expires → get new token set, preserve provider token\n * 5. Fall back to provider token if refresh fails → get fresh token set from PERS\n * 6. Clear all tokens if provider also fails → force logout\n */\nclass TokenRefreshManager {\n constructor(tokenManager, refreshStrategy) {\n this.refreshAttempts = new Map();\n this.MAX_REFRESH_ATTEMPTS = 1;\n this.loginRequiredListeners = [];\n this.tokenManager = tokenManager;\n this.refreshStrategy = refreshStrategy;\n }\n /**\n * Add listener for login required events\n */\n onLoginRequired(listener) {\n this.loginRequiredListeners.push(listener);\n }\n /**\n * Remove listener for login required events\n */\n removeLoginRequiredListener(listener) {\n const index = this.loginRequiredListeners.indexOf(listener);\n if (index > -1) {\n this.loginRequiredListeners.splice(index, 1);\n }\n }\n /**\n * Emit login required event to all listeners\n */\n emitLoginRequired(reason) {\n const event = {\n reason,\n timestamp: new Date()\n };\n this.loginRequiredListeners.forEach(listener => {\n try {\n listener(event);\n }\n catch (error) {\n // Listener error - continuing with other listeners\n }\n });\n }\n /**\n * Handle token expiration - orchestrates the 6-step authentication process\n * 1. Check for provider token → get complete token set from PERS if missing\n * 2. Store all 3 tokens (access, refresh, provider)\n * 3. Use access token for requests\n * 4. Use refresh token if access expires → get new token set, keep provider\n * 5. Fall back to provider token if refresh fails → get fresh token set from PERS\n * 6. Clear all tokens if provider also fails\n */\n async handleTokenExpiration() {\n try {\n const accessToken = await this.tokenManager.getAccessToken();\n const refreshToken = await this.tokenManager.getRefreshToken();\n const providerToken = await this.tokenManager.getProviderToken();\n // If we have no PERS tokens but have a provider token, use it to get the complete set\n if (!accessToken && !refreshToken && providerToken) {\n await this.executeProviderTokenFlow(providerToken);\n return;\n }\n // Try refresh token if we have one \n if (refreshToken) {\n await this.executeRefreshTokenFlow(refreshToken);\n return;\n }\n // No refresh token, try provider token\n if (providerToken) {\n await this.executeProviderTokenFlow(providerToken);\n return;\n }\n // No tokens available, require login\n await this.executeAuthCleanup('No authentication tokens available');\n throw new LogoutRequired('No authentication tokens available');\n }\n catch (error) {\n if (error instanceof TokenRefreshNeeded || error instanceof ProviderTokenRefreshNeeded || error instanceof LogoutRequired) {\n throw error;\n }\n // Convert unexpected errors to login requirement\n await this.executeAuthCleanup('Authentication process failed unexpectedly');\n throw new LogoutRequired('Authentication process failed unexpectedly');\n }\n }\n /**\n * Execute refresh with refresh token (Step 4)\n * Use refresh token to get new access token, preserve provider token\n */\n async executeRefreshTokenFlow(refreshToken) {\n const attempts = this.refreshAttempts.get(refreshToken) || 0;\n if (attempts >= this.MAX_REFRESH_ATTEMPTS) {\n await this.fallbackToProviderToken();\n return;\n }\n try {\n this.refreshAttempts.set(refreshToken, attempts + 1);\n const result = await this.refreshStrategy.refreshWithRefreshToken(refreshToken);\n await this.storeTokenResult(result);\n this.refreshAttempts.delete(refreshToken);\n }\n catch (error) {\n await this.fallbackToProviderToken();\n }\n } /**\n * Execute refresh with provider token (Step 5)\n * Uses provider token to get a fresh token set from PERS backend\n */\n async executeProviderTokenFlow(providerToken) {\n try {\n const result = await this.refreshStrategy.refreshWithProviderToken(providerToken);\n await this.storeTokenResult(result);\n this.refreshAttempts.clear();\n }\n catch (error) {\n await this.executeAuthCleanup('Provider token authentication failed - all methods exhausted');\n throw new LogoutRequired('Provider token authentication failed - all methods exhausted');\n }\n }\n async storeTokenResult(result) {\n await this.tokenManager.setAccessToken(result.accessToken);\n if (result.refreshToken) {\n await this.tokenManager.setRefreshToken(result.refreshToken);\n }\n }\n async fallbackToProviderToken() {\n const providerToken = await this.tokenManager.getProviderToken();\n if (providerToken) {\n try {\n await this.executeProviderTokenFlow(providerToken);\n }\n catch (providerError) {\n await this.executeAuthCleanup('All authentication methods exhausted');\n throw new LogoutRequired('All authentication methods exhausted');\n }\n }\n else {\n await this.executeAuthCleanup('Refresh failed and no provider token available');\n throw new LogoutRequired('Refresh failed and no provider token available');\n }\n }\n async clearAuthTokens() {\n await this.tokenManager.removeToken(AUTH_STORAGE_KEYS.ACCESS_TOKEN);\n await this.tokenManager.removeToken(AUTH_STORAGE_KEYS.REFRESH_TOKEN);\n // Clear refresh attempts tracking\n this.refreshAttempts.clear();\n }\n /**\n * Execute authentication cleanup and notify login required (Step 6)\n */\n async executeAuthCleanup(reason = 'Authentication failed') {\n await this.tokenManager.clearAllTokens();\n this.refreshAttempts.clear();\n this.emitLoginRequired(reason);\n }\n /**\n * Check if an error should trigger token refresh (React Native compatible)\n */\n shouldRefreshToken(error) {\n return ErrorUtils.isTokenExpired(error);\n }\n}\n\n/**\n * DefaultAuthRefreshStrategy - Implements the actual refresh logic\n */\nclass DefaultAuthRefreshStrategy {\n constructor(tokenManager, getProviderTokenFn, authApi) {\n this.tokenManager = tokenManager;\n this.getProviderTokenFn = getProviderTokenFn;\n this.authApi = authApi;\n }\n async refreshWithRefreshToken(refreshToken) {\n try {\n const result = await this.authApi.refreshAccessToken(refreshToken);\n if (!result.accessToken) {\n throw new Error('Invalid refresh response: missing accessToken');\n }\n return {\n accessToken: result.accessToken,\n refreshToken: result.refreshToken || refreshToken\n };\n }\n catch (error) {\n throw new Error(`Refresh token invalid or expired: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n async refreshWithProviderToken(providerToken) {\n try {\n const storedAuthType = await this.tokenManager.getAuthType();\n let result;\n if (storedAuthType === 'admin') {\n result = await this.authApi.loginTenantAdmin(providerToken);\n }\n else if (storedAuthType === 'user') {\n result = await this.authApi.loginUser(providerToken);\n }\n else {\n try {\n result = await this.authApi.loginUser(providerToken);\n await this.tokenManager.setAuthType('user');\n }\n catch (userLoginError) {\n result = await this.authApi.loginTenantAdmin(providerToken);\n await this.tokenManager.setAuthType('admin');\n }\n }\n if (!result.accessToken) {\n throw new Error('Invalid provider login response: missing accessToken');\n }\n return {\n accessToken: result.accessToken,\n refreshToken: result.refreshToken\n };\n }\n catch (error) {\n throw new Error(`Provider token login failed: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n}\n/**\n * Default authentication provider with modular architecture\n *\n * Delegates token storage to TokenManager and refresh logic to TokenRefreshManager.\n * Perfect for platform-agnostic usage with reliable error handling.\n */\nclass DefaultAuthProvider {\n constructor(projectKey, authApi) {\n this.projectKey = null;\n this.authApi = null;\n this.authType = 'admin';\n this.projectKey = projectKey || null;\n this.authApi = authApi || null;\n this.tokenManager = new TokenManager$1();\n const refreshStrategy = new DefaultAuthRefreshStrategy(this.tokenManager, () => Promise.resolve(this.getProviderToken()), this.authApi);\n this.tokenRefreshManager = new TokenRefreshManager(this.tokenManager, refreshStrategy);\n }\n async getToken() {\n return await this.tokenManager.getAccessToken();\n }\n async getProjectKey() {\n return this.projectKey;\n }\n /**\n * Centralized token refresh handler - delegates to TokenRefreshManager\n */\n async onTokenExpired() {\n await this.tokenRefreshManager.handleTokenExpiration();\n }\n /**\n * Check if an error indicates token expiration (React Native compatible)\n */\n isTokenExpiredError(error) {\n return ErrorUtils.isTokenExpired(error);\n }\n /**\n * Get Firebase or other provider token for fresh JWT request\n * Type-safe method that uses proper storage keys from AUTH_STORAGE_KEYS\n */\n getProviderToken() {\n if (typeof localStorage !== 'undefined') {\n return localStorage.getItem(AUTH_STORAGE_KEYS.PROVIDER_TOKEN);\n }\n return null;\n }\n async setAccessToken(token) {\n await this.tokenManager.setAccessToken(token);\n }\n async setRefreshToken(token) {\n await this.tokenManager.setRefreshToken(token);\n }\n async getRefreshToken() {\n return await this.tokenManager.getRefreshToken();\n }\n async setProviderToken(token) {\n await this.tokenManager.setProviderToken(token);\n }\n async clearProviderToken() {\n await this.tokenManager.clearProviderToken();\n }\n async clearTokens() {\n await this.tokenManager.clearAllTokens();\n }\n hasValidToken() {\n if (typeof localStorage !== 'undefined') {\n return !!localStorage.getItem(AUTH_STORAGE_KEYS.ACCESS_TOKEN);\n }\n return false;\n }\n hasRefreshToken() {\n if (typeof localStorage !== 'undefined') {\n return !!localStorage.getItem(AUTH_STORAGE_KEYS.REFRESH_TOKEN);\n }\n return false;\n }\n /**\n * Proactively check token expiry and refresh if needed BEFORE making requests\n * Uses smart refresh strategy based on time remaining:\n * - >backgroundThreshold seconds: Background refresh (non-blocking)\n * - <backgroundThreshold seconds: Immediate refresh (blocking)\n */\n async ensureValidToken(marginSeconds = 60, backgroundThreshold = 30) {\n try {\n const currentToken = await this.getToken();\n // If no token, nothing to check\n if (!currentToken) {\n return;\n }\n // Check if token is expired or will expire within margin\n if (await this.isTokenExpired(marginSeconds)) {\n // Determine refresh strategy based on time remaining\n const timeToExpiry = await this.getTokenTimeToExpiry(currentToken);\n if (timeToExpiry > backgroundThreshold) {\n // Token has enough time left - start background refresh (non-blocking)\n this.startBackgroundRefresh();\n }\n else {\n // Token expiring soon or expired - block and refresh immediately\n const shouldSkipRefresh = await this.isRefreshTokenExpired(marginSeconds);\n if (shouldSkipRefresh) {\n // Both tokens expired - use provider token directly\n await this.handleExpiredRefreshToken();\n }\n else {\n // Normal refresh with refresh token\n if (this.onTokenExpired) {\n await this.onTokenExpired();\n }\n }\n }\n }\n }\n catch (error) {\n // If token check/refresh fails, the error will be handled by the calling code\n throw error;\n }\n }\n /**\n * Check if current access token is expired\n */\n async isTokenExpired(marginSeconds = 60) {\n try {\n const currentToken = await this.getToken();\n if (!currentToken) {\n return true;\n }\n // Import isTokenExpired function here to avoid circular imports\n const { isTokenExpired } = await import('./index-CM21r58m.js').then(function (n) { return n.j; });\n return isTokenExpired(currentToken, marginSeconds);\n }\n catch (error) {\n return true;\n }\n }\n /**\n * Check if refresh token is expired\n */\n async isRefreshTokenExpired(marginSeconds = 60) {\n try {\n const refreshToken = await this.tokenManager.getRefreshToken();\n if (!refreshToken) {\n return true; // No refresh token\n }\n // Import isTokenExpired function here to avoid circular imports\n const { isTokenExpired } = await import('./index-CM21r58m.js').then(function (n) { return n.j; });\n return isTokenExpired(refreshToken, marginSeconds);\n }\n catch (error) {\n return true; // Assume expired if we can't check\n }\n }\n /**\n * Check if both access and refresh tokens are expired\n */\n async areAllTokensExpired(marginSeconds = 60) {\n const accessTokenExpired = await this.isTokenExpired(marginSeconds);\n const refreshTokenExpired = await this.isRefreshTokenExpired(marginSeconds);\n return accessTokenExpired && refreshTokenExpired;\n }\n /**\n * Get seconds until token expires\n */\n async getTokenTimeToExpiry(token) {\n try {\n const { isTokenExpired } = await import('./index-CM21r58m.js').then(function (n) { return n.j; });\n const { jwtDecode } = await import('jwt-decode');\n const decoded = jwtDecode(token);\n const currentTime = Math.floor(Date.now() / 1000);\n return Math.max(0, decoded.exp - currentTime);\n }\n catch (error) {\n return 0; // Assume expired if can't decode\n }\n }\n /**\n * Start refresh in background without blocking current request\n */\n startBackgroundRefresh() {\n // Use setTimeout to avoid blocking the current request\n setTimeout(async () => {\n try {\n if (this.onTokenExpired) {\n await this.onTokenExpired();\n }\n }\n catch (error) {\n // Background refresh failed - next request will trigger reactive refresh\n }\n }, 0);\n }\n /**\n * Handle case where refresh token is also expired - use provider token directly\n */\n async handleExpiredRefreshToken() {\n try {\n // Get provider token if available\n const providerToken = this.getProviderToken();\n if (!providerToken) {\n // No provider token available - let normal refresh handle the failure\n if (this.onTokenExpired) {\n await this.onTokenExpired();\n }\n return;\n }\n // Clear expired PERS tokens and use provider token to get fresh ones\n await this.clearTokens();\n // Trigger refresh which should now use provider token path\n if (this.onTokenExpired) {\n await this.onTokenExpired();\n }\n }\n catch (error) {\n // If provider token flow fails, let normal refresh handle it\n if (this.onTokenExpired) {\n await this.onTokenExpired();\n }\n }\n }\n}\n\n// packages/pers-sdk/src/core/pers-api-client.ts\n/**\n * PERS API Client - Core platform-agnostic client for PERS backend\n *\n * Provides authenticated HTTP client with automatic token management,\n * proactive refresh, and comprehensive error handling.\n *\n * Features:\n * - Automatic token refresh before expiry\n * - Background refresh for optimal performance\n * - Provider token fallback for seamless authentication\n * - Configurable retry and timeout settings\n * - Platform-agnostic design\n *\n * @example\n * ```typescript\n * const client = new PersApiClient(httpClient, {\n * environment: 'production',\n * apiProjectKey: 'your-project-key',\n * authProvider: createAuthProvider({\n * tokenProvider: () => getFirebaseToken()\n * })\n * });\n *\n * // Make authenticated requests\n * const data = await client.get('/users/me');\n * ```\n */\nclass PersApiClient {\n /**\n * Creates a new PERS API Client instance\n *\n * @param httpClient - Platform-specific HTTP client implementation\n * @param config - Configuration options for the API client\n */\n constructor(httpClient, config) {\n this.httpClient = httpClient;\n this.config = config;\n // Merge user config with defaults (production + v2)\n this.mergedConfig = mergeWithDefaults(config);\n // Build API root from merged environment and version\n this.apiRoot = buildApiRoot(this.mergedConfig.environment, this.mergedConfig.apiVersion);\n // Initialize auth services for direct authentication\n this.authApi = new AuthApi(this);\n // Auto-create auth provider if none provided\n if (!this.mergedConfig.authProvider) {\n this.mergedConfig.authProvider = new DefaultAuthProvider(this.mergedConfig.apiProjectKey, this.authApi);\n }\n this.authService = new AuthService(this.authApi, this.mergedConfig.authProvider);\n }\n /**\n * Ensures valid authentication token before making requests\n *\n * Implements intelligent refresh strategy:\n * - Tokens with sufficient time remaining: Background refresh (non-blocking)\n * - Tokens expiring soon or expired: Immediate refresh (blocking)\n *\n * @private\n * @returns Promise that resolves when token validation is complete\n */\n async ensureValidToken() {\n if (!this.mergedConfig.authProvider?.ensureValidToken) {\n return; // Auth provider doesn't support proactive validation\n }\n try {\n const refreshMargin = this.mergedConfig.tokenRefreshMargin || 60;\n const backgroundThreshold = this.mergedConfig.backgroundRefreshThreshold || 30;\n await this.mergedConfig.authProvider.ensureValidToken(refreshMargin, backgroundThreshold);\n }\n catch (error) {\n // If token check/refresh fails, continue with request\n // The reactive error handling will catch any auth issues\n }\n }\n /**\n * Get request headers including auth token and project key\n */\n async getHeaders() {\n const headers = {\n 'Content-Type': 'application/json',\n };\n // Add authentication token\n if (this.mergedConfig.authProvider) {\n const token = await this.mergedConfig.authProvider.getToken();\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n }\n // Add project key\n if (this.mergedConfig.authProvider) {\n const projectKey = await this.mergedConfig.authProvider.getProjectKey();\n if (projectKey) {\n headers['x-project-key'] = projectKey;\n }\n }\n else if (this.mergedConfig.apiProjectKey) {\n // Fallback to config project key if no auth provider\n headers['x-project-key'] = this.mergedConfig.apiProjectKey;\n }\n return headers;\n }\n /**\n * Make a request with proper headers, auth, and error handling\n */\n async request(method, endpoint, body, options) {\n const { retryCount = 0, responseType = 'json', bypassAuth = false } = options || {};\n const url = `${this.apiRoot}${endpoint}`;\n // Proactive token expiry check and refresh BEFORE making the request\n if (!bypassAuth && this.mergedConfig.authProvider && retryCount === 0) {\n await this.ensureValidToken();\n }\n const requestOptions = {\n headers: bypassAuth ? await this.getHeadersWithoutAuth() : await this.getHeaders(),\n timeout: this.mergedConfig.timeout,\n responseType\n };\n // Log API request with auth info\n // const hasAuth = !!this.mergedConfig.authProvider;\n endpoint.includes('/export/csv');\n try {\n let result;\n switch (method) {\n case AUTH_METHODS.GET:\n result = await this.httpClient.get(url, requestOptions);\n break;\n case AUTH_METHODS.POST:\n result = await this.httpClient.post(url, body, requestOptions);\n break;\n case AUTH_METHODS.PUT:\n result = await this.httpClient.put(url, body, requestOptions);\n break;\n case AUTH_METHODS.DELETE:\n result = await this.httpClient.delete(url, requestOptions);\n break;\n default:\n throw new Error(`Unsupported HTTP method: ${method}`);\n }\n return result;\n }\n catch (error) {\n // Error handling - proactive token refresh should prevent most 401s\n const status = ErrorUtils.getStatus(error);\n const errorMessage = ErrorUtils.getMessage(error);\n // Fallback: reactive token refresh only if proactive check missed something\n if (retryCount === 0 && this.mergedConfig.authProvider && ErrorUtils.isTokenExpired(error)) {\n try {\n // Fallback token refresh delegation\n const result = await this.handleTokenRefreshDelegation(method, endpoint, body, options);\n if (result !== null) {\n return result;\n }\n }\n catch (refreshError) {\n throw new PersApiError(`Auth failed: ${refreshError.message || refreshError}`, endpoint, method, 401);\n }\n }\n throw new PersApiError(errorMessage, endpoint, method, status || undefined, ErrorUtils.isRetryable(error));\n }\n }\n /**\n * Delegate token refresh to auth provider and handle the results\n */\n async handleTokenRefreshDelegation(method, endpoint, body, options) {\n try {\n // Let auth provider handle the refresh process\n const authProvider = this.mergedConfig.authProvider;\n if (authProvider?.onTokenExpired) {\n await authProvider.onTokenExpired();\n }\n // If we get here, tokens should be refreshed - retry the request\n // Auth provider refresh succeeded, retrying...\n return this.request(method, endpoint, body, { ...options, retryCount: 1 });\n }\n catch (refreshError) {\n // Auth provider handled all refresh attempts and failed\n // Re-throw the error for the caller to handle\n throw refreshError;\n }\n }\n /**\n * Performs an authenticated GET request\n *\n * @template T - Expected response type\n * @param endpoint - API endpoint path (without base URL)\n * @param responseType - Expected response format\n * @returns Promise resolving to typed response data\n *\n * @example\n * ```typescript\n * const user = await client.get<User>('/users/123');\n * const csvData = await client.get('/export/data', 'blob');\n * ```\n */\n async get(endpoint, responseType) {\n return this.request(AUTH_METHODS.GET, endpoint, undefined, { responseType });\n }\n /**\n * Performs an authenticated POST request\n *\n * @template T - Expected response type\n * @param endpoint - API endpoint path (without base URL)\n * @param body - Request payload data\n * @param options - Request options including auth bypass\n * @returns Promise resolving to typed response data\n *\n * @example\n * ```typescript\n * const user = await client.post<User>('/users', userData);\n * const publicData = await client.post('/public/contact', formData, { bypassAuth: true });\n * ```\n */\n async post(endpoint, body, options) {\n return this.request(AUTH_METHODS.POST, endpoint, body, options);\n }\n /**\n * Generic PUT request\n */\n async put(endpoint, body) {\n return this.request(AUTH_METHODS.PUT, endpoint, body);\n }\n /**\n * Generic DELETE request\n */\n async delete(endpoint) {\n return this.request(AUTH_METHODS.DELETE, endpoint);\n }\n /**\n * Get request headers WITHOUT auth token (for auth operations like refresh/login)\n */\n async getHeadersWithoutAuth() {\n const headers = {\n 'Content-Type': 'application/json',\n };\n // Add project key only (no auth token)\n if (this.mergedConfig.authProvider) {\n const projectKey = await this.mergedConfig.authProvider.getProjectKey();\n if (projectKey) {\n headers['x-project-key'] = projectKey;\n }\n }\n else if (this.mergedConfig.apiProjectKey) {\n headers['x-project-key'] = this.mergedConfig.apiProjectKey;\n }\n return headers;\n }\n // ==========================================\n // AUTHENTICATION METHODS\n // ==========================================\n /**\n * Authenticates an admin user using external JWT token\n *\n * Exchanges external provider token (Firebase, Auth0, etc.) for PERS access tokens.\n * Automatically stores received tokens for subsequent requests.\n *\n * @param externalJwt - JWT token from external authentication provider\n * @returns Promise resolving to session context with admin permissions\n *\n * @example\n * ```typescript\n * const firebaseToken = await getIdToken();\n * const session = await client.loginAdmin(firebaseToken);\n * console.log('Admin authenticated:', session.user.email);\n * ```\n */\n async loginAdmin(externalJwt) {\n return this.authService.loginTenantAdmin(externalJwt);\n }\n /**\n * Authenticates a regular user using external JWT token\n *\n * Exchanges external provider token for PERS access tokens with user-level permissions.\n * Automatically stores received tokens for subsequent requests.\n *\n * @param externalJwt - JWT token from external authentication provider\n * @returns Promise resolving to session context with user permissions\n *\n * @example\n * ```typescript\n * const firebaseToken = await getIdToken();\n * const session = await client.loginUser(firebaseToken);\n * console.log('User authenticated:', session.user.email);\n * ```\n */\n async loginUser(externalJwt) {\n return this.authService.loginUser(externalJwt);\n }\n /**\n * Authenticates a user using raw login data (no external JWT)\n *\n * Useful for custom authentication flows where user data is provided directly.\n * Automatically stores received tokens for subsequent requests.\n *\n * @param rawLoginData - Object containing user login data (email, name, etc.)\n * @return Promise resolving to session context with user permissions\n */\n async loginUserWithRawData(rawLoginData) {\n return this.authService.loginUserWithRawData(rawLoginData);\n }\n /**\n * Checks if current user has a valid authentication token\n *\n * Performs basic token availability check without network requests.\n * For comprehensive validation including expiry, use isTokenExpired().\n *\n * @returns True if valid token exists, false otherwise\n *\n * @example\n * ```typescript\n * if (client.hasValidAuth()) {\n * // User is authenticated, proceed with API calls\n * const data = await client.get('/protected-data');\n * } else {\n * // Redirect to login\n * redirectToLogin();\n * }\n * ```\n */\n hasValidAuth() {\n return this.mergedConfig.authProvider?.hasValidToken?.() || false;\n }\n /**\n * Checks if current access token is expired or expiring soon\n *\n * @param marginSeconds - Seconds before expiry to consider token as expired (default: 60)\n * @returns Promise resolving to true if token is expired/expiring, false if valid\n *\n * @example\n * ```typescript\n * if (await client.isTokenExpired(120)) {\n * console.log('Token expires within 2 minutes');\n * // Optionally trigger manual refresh\n * }\n * ```\n */\n async isTokenExpired(marginSeconds = 60) {\n if (!this.mergedConfig.authProvider?.isTokenExpired) {\n return true; // No auth provider or doesn't support expiry checking\n }\n try {\n return await this.mergedConfig.authProvider.isTokenExpired(marginSeconds);\n }\n catch (error) {\n return true;\n }\n }\n /**\n * Checks if both access and refresh tokens are expired\n *\n * Useful for determining if full re-authentication is required.\n *\n * @param marginSeconds - Seconds before expiry to consider tokens as expired (default: 60)\n * @returns Promise resolving to true if both tokens expired, false otherwise\n *\n * @example\n * ```typescript\n * if (await client.areAllTokensExpired()) {\n * // Full re-authentication required\n * await redirectToLogin();\n * }\n * ```\n */\n async areAllTokensExpired(marginSeconds = 60) {\n if (!this.mergedConfig.authProvider?.areAllTokensExpired) {\n // Fallback to checking access token only\n return await this.isTokenExpired(marginSeconds);\n }\n return await this.mergedConfig.authProvider.areAllTokensExpired(marginSeconds);\n }\n /**\n * Refresh access token using stored refresh token\n *\n * @param refreshToken - Optional refresh token, uses stored token if not provided\n * @returns Promise resolving to new auth tokens\n *\n * @example\n * ```typescript\n * try {\n * const tokens = await client.refreshTokens();\n * console.log('Tokens refreshed successfully');\n * } catch (error) {\n * console.error('Token refresh failed:', error);\n * }\n * ```\n */\n async refreshTokens(refreshToken) {\n return this.authService.refreshAccessToken(refreshToken);\n }\n /**\n * Get current configuration (returns merged config)\n */\n getConfig() {\n return this.mergedConfig;\n }\n /**\n * Get original user configuration\n */\n getOriginalConfig() {\n return this.config;\n }\n}\n\n/**\n * Memory-based token storage (default)\n */\nclass MemoryTokenStorage {\n constructor() {\n this.storage = new Map();\n }\n async setItem(key, value) {\n this.storage.set(key, value);\n }\n async getItem(key) {\n return this.storage.get(key) || null;\n }\n async removeItem(key) {\n this.storage.delete(key);\n }\n}\n/**\n * localStorage-based token storage (browser only)\n */\nclass LocalStorageTokenStorage {\n async setItem(key, value) {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(key, value);\n }\n else {\n throw new Error('localStorage is not available in this environment');\n }\n }\n async getItem(key) {\n if (typeof localStorage !== 'undefined') {\n return localStorage.getItem(key);\n }\n return null;\n }\n async removeItem(key) {\n if (typeof localStorage !== 'undefined') {\n localStorage.removeItem(key);\n }\n }\n}\n/**\n * Creates a platform-agnostic AuthProvider from simple configuration\n *\n * This factory function is completely platform-agnostic and can be used\n * across Angular, React, Vue, Node.js, or any other JavaScript environment.\n *\n * Features:\n * - Token caching with refresh support\n * - Automatic token refresh on expiration\n * - Configurable token providers\n * - Token storage (memory, localStorage, custom)\n * - Platform-independent\n *\n * @param config - Simple auth configuration\n * @returns AuthProvider implementation\n */\nfunction createAuthProvider(config) {\n // Initialize token storage\n let tokenStorage;\n switch (config.tokenStorage) {\n case 'localStorage':\n tokenStorage = new LocalStorageTokenStorage();\n break;\n case 'custom':\n if (!config.customTokenStorage) {\n throw new Error('Custom token storage configuration is required when tokenStorage is \"custom\"');\n }\n tokenStorage = config.customTokenStorage;\n break;\n case 'memory':\n default:\n tokenStorage = new MemoryTokenStorage();\n break;\n }\n // Token storage keys\n const ACCESS_TOKEN_KEY = createStorageKey(AUTH_STORAGE_KEYS.ACCESS_TOKEN, config.authType || 'user');\n const REFRESH_TOKEN_KEY = createStorageKey(AUTH_STORAGE_KEYS.REFRESH_TOKEN, config.authType || 'user');\n // Store current token for refresh scenarios and caching\n let currentToken = config.token || null;\n let isRefreshing = false; // Prevent concurrent refresh attempts\n let refreshPromise = null;\n return {\n authType: config.authType || 'user',\n async getToken() {\n // If currently refreshing, wait for it to complete\n if (isRefreshing && refreshPromise) {\n await refreshPromise;\n return currentToken;\n }\n // Use cached current token (updated after refresh)\n if (currentToken) {\n return currentToken;\n }\n // Try to get token from storage\n try {\n const storedToken = await tokenStorage.getItem(ACCESS_TOKEN_KEY);\n if (storedToken) {\n currentToken = storedToken;\n return storedToken;\n }\n }\n catch (error) {\n // Token retrieval failed - continuing without storage\n }\n // Custom token provider function (always fresh)\n if (config.tokenProvider) {\n const token = await config.tokenProvider();\n currentToken = token; // Cache for future calls\n return token;\n }\n // No token available\n return null;\n },\n async getProjectKey() {\n return config.projectKey || null;\n },\n // Token storage methods\n async setAccessToken(token) {\n currentToken = token;\n try {\n await tokenStorage.setItem(ACCESS_TOKEN_KEY, token);\n }\n catch (error) {\n throw error;\n }\n },\n async setRefreshToken(token) {\n try {\n await tokenStorage.setItem(REFRESH_TOKEN_KEY, token);\n }\n catch (error) {\n throw error;\n }\n },\n async getRefreshToken() {\n try {\n return await tokenStorage.getItem(REFRESH_TOKEN_KEY);\n }\n catch (error) {\n return null;\n }\n },\n async clearTokens() {\n currentToken = null;\n try {\n await Promise.all([\n tokenStorage.removeItem(ACCESS_TOKEN_KEY),\n tokenStorage.removeItem(REFRESH_TOKEN_KEY)\n ]);\n }\n catch (error) {\n throw error;\n }\n },\n async onTokenExpired() {\n // Prevent concurrent refresh attempts\n if (isRefreshing) {\n if (refreshPromise) {\n await refreshPromise;\n }\n return;\n }\n // No refresh logic provided\n if (!config.onTokenExpired) {\n currentToken = null;\n try {\n await tokenStorage.removeItem(ACCESS_TOKEN_KEY);\n }\n catch (error) {\n // Token clearing failed - continuing\n }\n return;\n }\n // Start refresh process\n isRefreshing = true;\n refreshPromise = (async () => {\n try {\n // Execute refresh logic (should update token source)\n await config.onTokenExpired();\n // After refresh, get the new token\n if (config.tokenProvider) {\n const newToken = await config.tokenProvider();\n if (newToken && newToken !== currentToken) {\n currentToken = newToken;\n // Store the new token\n try {\n await tokenStorage.setItem(ACCESS_TOKEN_KEY, newToken);\n }\n catch (error) {\n // Token storage failed - token still valid in memory\n }\n // Notify about successful token refresh\n if (config.onTokenRefreshed) {\n config.onTokenRefreshed(newToken);\n }\n }\n else {\n currentToken = null;\n try {\n await tokenStorage.removeItem(ACCESS_TOKEN_KEY);\n }\n catch (error) {\n // Token clearing failed - continuing\n }\n }\n }\n else {\n // For static token configs, clear the token since we can't refresh\n currentToken = null;\n try {\n await tokenStorage.removeItem(ACCESS_TOKEN_KEY);\n }\n catch (error) {\n // Token clearing failed - continuing\n }\n }\n }\n catch (error) {\n currentToken = null; // Clear token on refresh failure\n try {\n await tokenStorage.removeItem(ACCESS_TOKEN_KEY);\n }\n catch (storageError) {\n // Token clearing failed - continuing\n }\n throw error; // Re-throw to let SDK handle the error\n }\n finally {\n isRefreshing = false;\n refreshPromise = null;\n }\n })();\n await refreshPromise;\n }\n };\n}\n/**\n * Platform-specific localStorage token provider for browsers\n * This is a convenience function for browser environments\n */\n/* export function createBrowserTokenProvider(tokenKey: string = 'userJwt'): () => Promise<string | null> {\n return async () => {\n if (typeof localStorage !== 'undefined') {\n return localStorage.getItem(tokenKey);\n }\n return null;\n };\n} */\n/**\n * Platform-specific environment variable token provider for Node.js\n * This is a convenience function for Node.js environments\n */\n/* export function createNodeTokenProvider(envVar: string = 'JWT_TOKEN'): () => Promise<string | null> {\n return async () => {\n if (typeof process !== 'undefined' && process.env) {\n return process.env[envVar] || null;\n }\n return null;\n };\n} */\n\n/**\n * Authentication Manager - Clean, high-level interface for authentication operations\n *\n * Provides a simplified API for common authentication tasks while maintaining\n * access to the underlying API client for advanced use cases.\n */\nclass AuthManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n }\n /**\n * Login with JWT token\n *\n * @param jwtToken - JWT token to authenticate with\n * @param userType - Type of user ('user' | 'admin')\n * @returns Promise resolving to authentication response\n */\n async loginWithToken(jwtToken, userType = 'user') {\n return userType === 'admin'\n ? this.apiClient.loginAdmin(jwtToken)\n : this.apiClient.loginUser(jwtToken);\n }\n /**\n * Login with raw user data\n *\n * @param rawUserData - Raw user data for authentication\n * @returns Promise resolving to authentication response\n */\n async loginWithRawData(rawUserData) {\n return this.apiClient.loginUserWithRawData(rawUserData);\n }\n /**\n * Get current authenticated user\n *\n * @returns Promise resolving to current user data\n */\n async getCurrentUser() {\n return this.apiClient.get('/users/me');\n }\n /**\n * Refresh current user data\n *\n * @returns Promise resolving to updated user data\n */\n async refreshUserData() {\n return this.getCurrentUser();\n }\n /**\n * Check if user is authenticated\n *\n * @returns Promise resolving to boolean indicating authentication status\n */\n async isAuthenticated() {\n try {\n await this.getCurrentUser();\n return true;\n }\n catch {\n return false;\n }\n }\n /**\n * Refresh access token using stored refresh token\n *\n * @param refreshToken - Optional refresh token, uses stored token if not provided\n * @returns Promise resolving to new auth tokens\n */\n async refreshTokens(refreshToken) {\n return this.apiClient.refreshTokens(refreshToken);\n }\n /**\n * Clear stored authentication tokens\n *\n * @returns Promise that resolves when tokens are cleared\n */\n async clearAuth() {\n // Use auth provider to clear tokens if available\n const authProvider = this.apiClient.getConfig().authProvider;\n if (authProvider?.clearTokens) {\n await authProvider.clearTokens();\n }\n }\n /**\n * Check if SDK has valid authentication\n *\n * @returns Boolean indicating if valid authentication exists\n */\n hasValidAuth() {\n return this.apiClient.hasValidAuth();\n }\n /**\n * Admin login with JWT token\n *\n * @param jwt - JWT token for admin authentication\n * @returns Promise resolving to authentication context\n */\n async loginAdmin(jwt) {\n return this.apiClient.loginAdmin(jwt);\n }\n /**\n * User login with JWT token\n *\n * @param jwt - JWT token for user authentication\n * @returns Promise resolving to authentication context\n */\n async loginUser(jwt) {\n return this.apiClient.loginUser(jwt);\n }\n}\n\n/**\n * User Manager - Clean, high-level interface for user operations\n *\n * Provides a simplified API for common user management tasks while maintaining\n * access to the full user SDK for advanced use cases.\n */\nclass UserManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.userSDK = createUserSDK(apiClient);\n }\n /**\n * Get current user profile\n *\n * @returns Promise resolving to current user data\n */\n async getCurrentUser() {\n return this.userSDK.getRemoteUser();\n }\n /**\n * Update current user profile\n *\n * @param userData - User data to update\n * @returns Promise resolving to updated user data\n */\n async updateCurrentUser(userData) {\n return this.userSDK.updateRemoteUser(userData);\n }\n /**\n * Get user by unique identifier\n *\n * @param identifier - Unique identifier for the user\n * @returns Promise resolving to user data\n */\n async getUserById(identifier) {\n return this.userSDK.getUserByUniqueIdentifier(identifier);\n }\n /**\n * Get all users public profiles with optional filtering\n *\n * @param filter - Optional filter criteria\n * @returns Promise resolving to array of user public profiles\n */\n async getAllUsersPublic(filter) {\n return this.userSDK.getAllUsersPublicProfiles(filter || null);\n }\n /**\n * Admin: Get all users\n *\n * @returns Promise resolving to array of all users\n */\n async getAllUsers() {\n return this.userSDK.getAllRemoteUsers();\n }\n /**\n * Admin: Update user data\n *\n * @param userId - ID of user to update\n * @param userData - User data to update\n * @returns Promise resolving to updated user data\n */\n async updateUser(userId, userData) {\n return this.userSDK.updateUserAsAdmin(userId, userData);\n }\n /**\n * Admin: Toggle user active status\n *\n * @param user - User to toggle status for\n * @returns Promise resolving to updated user data\n */\n async toggleUserStatus(user) {\n return this.userSDK.toggleUserActiveStatusByUser(user);\n }\n /**\n * Get the full user SDK for advanced operations\n *\n * @returns UserSDK instance\n */\n getUserSDK() {\n return this.userSDK;\n }\n}\n\n/**\n * User Status Manager - Clean, high-level interface for user status operations\n *\n * Provides a simplified API for common user status management tasks while maintaining\n * access to the full user status SDK for advanced use cases.\n */\nclass UserStatusManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.userStatusSDK = createUserStatusSDK(apiClient);\n }\n /**\n * Get all user status types\n *\n * @returns Promise resolving to array of user status types\n */\n async getUserStatusTypes() {\n return this.userStatusSDK.getRemoteUserStatusTypes();\n }\n /**\n * Get earned user status for authenticated user\n *\n * @returns Promise resolving to array of earned user status\n */\n async getEarnedUserStatus() {\n return this.userStatusSDK.getRemoteEarnedUserStatus();\n }\n /**\n * Admin: Create new user status type\n *\n * @param userStatusType - User status type data\n * @returns Promise resolving to created user status type\n */\n async createUserStatusType(userStatusType) {\n return this.userStatusSDK.createUserStatusType(userStatusType);\n }\n /**\n * Get the full user status SDK for advanced operations\n *\n * @returns UserStatusSDK instance\n */\n getUserStatusSDK() {\n return this.userStatusSDK;\n }\n}\n\n/**\n * Token Manager - Clean, high-level interface for token operations\n *\n * Provides a simplified API for common token management tasks while maintaining\n * access to the full token SDK for advanced use cases.\n */\nclass TokenManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.tokenSDK = new TokenSDK(apiClient);\n }\n /**\n * Get all available tokens\n *\n * @returns Promise resolving to array of tokens\n */\n async getTokens() {\n return this.tokenSDK.getTokens();\n }\n /**\n * Get all token types\n *\n * @returns Promise resolving to token types\n */\n async getTokenTypes() {\n return this.tokenSDK.getTokenTypes();\n }\n /**\n * Get active credit token\n *\n * @returns Promise resolving to active credit token\n */\n async getActiveCreditToken() {\n return this.tokenSDK.getActiveCreditToken();\n }\n /**\n * Get reward tokens\n *\n * @returns Promise resolving to reward tokens\n */\n async getRewardTokens() {\n return this.tokenSDK.getRewardTokens();\n }\n /**\n * Get status tokens\n *\n * @returns Promise resolving to status tokens\n */\n async getStatusTokens() {\n return this.tokenSDK.getStatusTokens();\n }\n /**\n * Get token by contract address\n *\n * @param contractAddress - Contract address to search for\n * @param contractTokenId - Optional contract token ID\n * @returns Promise resolving to token\n */\n async getTokenByContract(contractAddress, contractTokenId) {\n return this.tokenSDK.getTokenByContract(contractAddress, contractTokenId);\n }\n /**\n * Admin: Create new token\n *\n * @param tokenData - Token creation data\n * @returns Promise resolving to created token\n */\n async createToken(tokenData) {\n return this.tokenSDK.createToken(tokenData);\n }\n /**\n * Admin: Update token\n *\n * @param tokenId - Token ID to update\n * @param tokenData - Token update data\n * @returns Promise resolving to updated token\n */\n async updateToken(tokenId, tokenData) {\n return this.tokenSDK.updateToken(tokenId, tokenData);\n }\n /**\n * Admin: Toggle token active status\n *\n * @param tokenId - Token ID to toggle\n * @returns Promise resolving to updated token\n */\n async toggleTokenActive(tokenId) {\n return this.tokenSDK.toggleTokenActive(tokenId);\n }\n /**\n * Get the full token SDK for advanced operations\n *\n * @returns TokenSDK instance\n */\n getTokenSDK() {\n return this.tokenSDK;\n }\n}\n\n/**\n * Business Manager - Clean, high-level interface for business operations\n *\n * Provides a simplified API for common business management tasks while maintaining\n * access to the full business SDK for advanced use cases.\n */\nclass BusinessManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.businessSDK = createBusinessSDK(apiClient);\n }\n /**\n * Get all active businesses\n *\n * @returns Promise resolving to array of active businesses\n */\n async getActiveBusinesses() {\n return this.businessSDK.getActiveBusinesses();\n }\n /**\n * Get business by ID\n *\n * @param businessId - Business ID to fetch\n * @returns Promise resolving to business data\n */\n async getBusinessById(businessId) {\n return this.businessSDK.getBusinessById(businessId);\n }\n /**\n * Get business by account address\n *\n * @param accountAddress - Account address to search for\n * @returns Promise resolving to business data\n */\n async getBusinessByAccount(accountAddress) {\n return this.businessSDK.getBusinessByAccount(accountAddress);\n }\n /**\n * Get all business types\n *\n * @returns Promise resolving to array of business types\n */\n async getBusinessTypes() {\n return this.businessSDK.getBusinessTypes();\n }\n /**\n * Get businesses by type\n *\n * @param typeId - Business type ID to filter by\n * @returns Promise resolving to array of businesses\n */\n async getBusinessesByType(typeId) {\n return this.businessSDK.getBusinessesByType(typeId);\n }\n /**\n * Admin: Get all businesses (including inactive)\n *\n * @returns Promise resolving to array of all businesses\n */\n async getBusinesses() {\n return this.businessSDK.getBusinesses();\n }\n /**\n * Admin: Create new business\n *\n * @param displayName - Display name for the business\n * @returns Promise resolving to created business data\n */\n async createBusiness(displayName) {\n return this.businessSDK.createBusinessByDisplayName(displayName);\n }\n /**\n * Admin: Update business\n *\n * @param businessId - ID of business to update\n * @param businessData - Business data to update\n * @returns Promise resolving to updated business data\n */\n async updateBusiness(businessId, businessData) {\n return this.businessSDK.updateBusiness(businessId, businessData);\n }\n /**\n * Admin: Toggle business active status\n *\n * @param businessId - ID of business to toggle\n * @param toggleData - Toggle request data\n * @returns Promise resolving to updated business data\n */\n async toggleBusinessStatus(businessId, toggleData) {\n return this.businessSDK.toggleBusinessActive(businessId, toggleData);\n }\n /**\n * Get the full business SDK for advanced operations\n *\n * @returns BusinessSDK instance\n */\n getBusinessSDK() {\n return this.businessSDK;\n }\n}\n\n/**\n * Campaign Manager - Clean, high-level interface for campaign operations\n *\n * Provides a simplified API for common campaign management tasks while maintaining\n * access to the full campaign SDK for advanced use cases.\n */\nclass CampaignManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.campaignSDK = createCampaignSDK(apiClient);\n }\n /**\n * Get all active campaigns\n *\n * @returns Promise resolving to array of active campaigns\n */\n async getActiveCampaigns() {\n return this.campaignSDK.getActiveCampaigns();\n }\n /**\n * Get campaign by ID\n *\n * @param campaignId - ID of the campaign\n * @returns Promise resolving to campaign data\n */\n async getCampaignById(campaignId) {\n return this.campaignSDK.getCampaignById(campaignId);\n }\n /**\n * Claim a campaign reward\n *\n * @param claimRequest - Campaign claim data\n * @returns Promise resolving to claim result\n */\n async claimCampaign(claimRequest) {\n return this.campaignSDK.claimCampaign(claimRequest);\n }\n /**\n * Get user's campaign claims\n *\n * @returns Promise resolving to array of user's claims\n */\n async getUserClaims() {\n return this.campaignSDK.getClaimsForLoggedUser();\n }\n /**\n * Admin: Get all campaigns\n *\n * @param active - Filter by active status\n * @returns Promise resolving to array of campaigns\n */\n async getAllCampaigns(active) {\n return this.campaignSDK.getCampaigns(active);\n }\n /**\n * Admin: Create new campaign\n *\n * @param campaignData - Campaign data\n * @returns Promise resolving to created campaign\n */\n async createCampaign(campaignData) {\n return this.campaignSDK.createCampaign(campaignData);\n }\n /**\n * Admin: Update campaign\n *\n * @param campaignId - ID of campaign to update\n * @param campaignData - Updated campaign data\n * @returns Promise resolving to updated campaign\n */\n async updateCampaign(campaignId, campaignData) {\n return this.campaignSDK.updateCampaign(campaignId, campaignData);\n }\n /**\n * Admin: Toggle campaign active status\n *\n * @param campaignId - ID of campaign to toggle\n * @returns Promise resolving to updated campaign\n */\n async toggleCampaignStatus(campaignId) {\n return this.campaignSDK.toggleCampaignActive(campaignId);\n }\n /**\n * Admin: Toggle campaign testnet environment\n *\n * @param campaignId - ID of campaign to toggle\n * @returns Promise resolving to updated campaign\n */\n async toggleCampaignTestnet(campaignId) {\n return this.campaignSDK.toggleCampaignTestnet(campaignId);\n }\n /**\n * Admin: Get campaign triggers\n *\n * @returns Promise resolving to array of campaign triggers\n */\n async getCampaignTriggers() {\n return this.campaignSDK.getCampaignTriggers();\n }\n /**\n * Admin: Set campaign trigger\n *\n * @param campaignId - ID of campaign\n * @param triggerId - ID of trigger to set\n * @returns Promise resolving to updated campaign\n */\n async setCampaignTrigger(campaignId, triggerId) {\n return this.campaignSDK.setCampaignTrigger(campaignId, triggerId);\n }\n /**\n * Admin: Create campaign token unit\n *\n * @param campaignId - ID of campaign\n * @param tokenUnit - Token unit data\n * @returns Promise resolving to updated campaign\n */\n async createCampaignTokenUnit(campaignId, tokenUnit) {\n return this.campaignSDK.createCampaignTokenUnit(campaignId, tokenUnit);\n }\n /**\n * Admin: Delete campaign token unit\n *\n * @param campaignId - ID of campaign\n * @param tokenUnitId - ID of token unit to delete\n * @returns Promise resolving to updated campaign\n */\n async deleteCampaignTokenUnit(campaignId, tokenUnitId) {\n return this.campaignSDK.deleteCampaignTokenUnit(campaignId, tokenUnitId);\n }\n /**\n * Admin: Add business engagement to campaign\n *\n * @param campaignId - ID of campaign\n * @param engagement - Business engagement data\n * @returns Promise resolving to updated campaign\n */\n async addBusinessEngagementToCampaign(campaignId, engagement) {\n return this.campaignSDK.addBusinessEngagementToCampaign(campaignId, engagement);\n }\n /**\n * Admin: Update campaign business engagement\n *\n * @param campaignId - ID of campaign\n * @param engagementId - ID of engagement to update\n * @param engagement - Updated engagement data\n * @returns Promise resolving to updated campaign\n */\n async updateCampaignBusinessEngagement(campaignId, engagementId, engagement) {\n return this.campaignSDK.updateCampaignBusinessEngagement(campaignId, engagementId, engagement);\n }\n /**\n * Admin: Delete campaign business engagement\n *\n * @param campaignId - ID of campaign\n * @param engagementId - ID of engagement to delete\n * @returns Promise resolving to updated campaign\n */\n async deleteCampaignBusinessEngagement(campaignId, engagementId) {\n return this.campaignSDK.deleteCampaignBusinessEngagement(campaignId, engagementId);\n }\n /**\n * Admin: Get all campaign claims\n *\n * @returns Promise resolving to array of campaign claims\n */\n async getCampaignClaims() {\n return this.campaignSDK.getCampaignClaims();\n }\n /**\n * Admin: Get campaign claims by user ID\n *\n * @param userId - ID of user\n * @returns Promise resolving to array of user's campaign claims\n */\n async getCampaignClaimsByUserId(userId) {\n return this.campaignSDK.getCampaignClaimsByUserId(userId);\n }\n /**\n * Admin: Get campaign claims by business ID\n *\n * @param businessId - ID of business\n * @returns Promise resolving to array of business's campaign claims\n */\n async getCampaignClaimsByBusinessId(businessId) {\n return this.campaignSDK.getCampaignClaimsByBusinessId(businessId);\n }\n /**\n * Get the full campaign SDK for advanced operations\n *\n * @returns CampaignSDK instance\n */\n getCampaignSDK() {\n return this.campaignSDK;\n }\n}\n\n/**\n * Redemption Manager - Clean, high-level interface for redemption operations\n *\n * Provides a simplified API for common redemption management tasks while maintaining\n * access to the full redemption SDK for advanced use cases.\n */\nclass RedemptionManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.redemptionSDK = createRedemptionSDK(apiClient);\n }\n /**\n * Get all active redemption offers\n *\n * @returns Promise resolving to array of active redemptions\n */\n async getActiveRedemptions() {\n return this.redemptionSDK.getActiveRedemptions();\n }\n /**\n * Get available redemption types\n *\n * @returns Promise resolving to array of redemption types\n */\n async getRedemptionTypes() {\n return this.redemptionSDK.getRedemptionTypes();\n }\n /**\n * Redeem a redemption offer\n *\n * @param redemptionId - ID of the redemption to redeem\n * @returns Promise resolving to redemption result\n */\n async redeemOffer(redemptionId) {\n return this.redemptionSDK.redeemRedemption(redemptionId);\n }\n /**\n * Get user's redemption history\n *\n * @returns Promise resolving to array of user's redemptions\n */\n async getUserRedemptions() {\n return this.redemptionSDK.getUserRedeems();\n }\n /**\n * Admin: Get all redemptions\n *\n * @param active - Filter by active status\n * @returns Promise resolving to array of redemptions\n */\n async getAllRedemptions(active) {\n return this.redemptionSDK.getRedemptionsAsAdmin(active);\n }\n /**\n * Admin: Create new redemption offer\n *\n * @param redemptionData - Redemption data\n * @returns Promise resolving to created redemption\n */\n async createRedemption(redemptionData) {\n return this.redemptionSDK.createRedemption(redemptionData);\n }\n /**\n * Admin: Update redemption\n *\n * @param redemptionId - ID of redemption to update\n * @param redemptionData - Updated redemption data\n * @returns Promise resolving to updated redemption\n */\n async updateRedemption(redemptionId, redemptionData) {\n return this.redemptionSDK.updateRedemption(redemptionId, redemptionData);\n }\n /**\n * Admin: Toggle redemption active status\n *\n * @param redemptionId - ID of redemption to toggle\n * @returns Promise resolving to updated redemption\n */\n async toggleRedemptionStatus(redemptionId) {\n return this.redemptionSDK.toggleRedemptionActive(redemptionId);\n }\n /**\n * Admin: Create redemption token unit\n *\n * @param redemptionId - ID of redemption\n * @param tokenUnit - Token unit data\n * @returns Promise resolving to updated redemption\n */\n async createRedemptionTokenUnit(redemptionId, tokenUnit) {\n return this.redemptionSDK.createRedemptionTokenUnit(redemptionId, tokenUnit);\n }\n /**\n * Admin: Delete redemption token unit\n *\n * @param redemptionId - ID of redemption\n * @param tokenUnitId - ID of token unit to delete\n * @returns Promise resolving to updated redemption\n */\n async deleteRedemptionTokenUnit(redemptionId, tokenUnitId) {\n return this.redemptionSDK.deleteRedemptionTokenUnit(redemptionId, tokenUnitId);\n }\n /**\n * Get the full redemption SDK for advanced operations\n *\n * @returns RedemptionSDK instance\n */\n getRedemptionSDK() {\n return this.redemptionSDK;\n }\n}\n\n/**\n * Transaction Manager - Clean, high-level interface for transaction operations\n *\n * Provides a simplified API for common transaction management tasks while maintaining\n * access to the full transaction SDK for advanced use cases.\n */\nclass TransactionManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.transactionSDK = createTransactionSDK(apiClient);\n }\n /**\n * Get transaction by ID\n *\n * @param transactionId - ID of the transaction\n * @returns Promise resolving to transaction data\n */\n async getTransactionById(transactionId) {\n return this.transactionSDK.getTransactionById(transactionId);\n }\n /**\n * Create a new transaction\n *\n * @param transactionData - Transaction data\n * @returns Promise resolving to transaction response\n */\n async createTransaction(transactionData) {\n return this.transactionSDK.createTransaction(transactionData);\n }\n /**\n * Get user's transaction history\n *\n * @param type - Transaction type filter\n * @returns Promise resolving to array of user's transactions\n */\n async getUserTransactionHistory(type) {\n return this.transactionSDK.getUserTransactionHistory(type);\n }\n /**\n * Admin: Get all tenant transactions\n *\n * @returns Promise resolving to array of tenant transactions\n */\n async getTenantTransactions() {\n return this.transactionSDK.getTenantTransactions();\n }\n /**\n * Admin: Get paginated transactions\n *\n * @param params - Pagination parameters\n * @returns Promise resolving to paginated transaction results\n */\n async getPaginatedTransactions(params) {\n return this.transactionSDK.getPaginatedTransactions(params);\n }\n /**\n * Admin: Export transactions as CSV\n *\n * @returns Promise resolving to CSV blob\n */\n async exportTransactionsCSV() {\n return this.transactionSDK.exportTransactionsCSV();\n }\n /**\n * Get the full transaction SDK for advanced operations\n *\n * @returns TransactionSDK instance\n */\n getTransactionSDK() {\n return this.transactionSDK;\n }\n}\n\n/**\n * Purchase Manager - Clean, high-level interface for purchase operations\n *\n * Provides a simplified API for common purchase management tasks while maintaining\n * access to the full payment SDK for advanced use cases.\n */\nclass PurchaseManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.paymentSDK = createPaymentSDK(apiClient);\n }\n /**\n * Create a payment intent\n *\n * @param amount - Payment amount\n * @param currency - Payment currency\n * @param receiptEmail - Receipt email\n * @param description - Payment description\n * @returns Promise resolving to created payment intent\n */\n async createPaymentIntent(amount, currency, receiptEmail, description) {\n return this.paymentSDK.createPaymentIntent(amount, currency, receiptEmail, description);\n }\n /**\n * Get active purchase tokens\n *\n * @param active - Filter by active status\n * @returns Promise resolving to purchase tokens\n */\n async getActivePurchaseTokens(active) {\n return this.paymentSDK.getActivePurchaseTokens(active);\n }\n /**\n * Get all user purchases\n *\n * @returns Promise resolving to array of user's purchases\n */\n async getAllUserPurchases() {\n return this.paymentSDK.getAllUserPurchases();\n }\n /**\n * Get the full purchase SDK for advanced operations\n *\n * @returns PaymentSDK instance\n */\n getPurchaseSDK() {\n return this.paymentSDK;\n }\n}\n\n/**\n * Platform-Agnostic File API Client\n *\n * Handles file operations using the PERS backend's RESTful endpoints.\n */\nclass FileApi {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.basePath = '/files';\n }\n // ==========================================\n // PUBLIC OPERATIONS\n // ==========================================\n /**\n * PUBLIC: Get signed URL for file operations\n *\n * @param request - Signed URL request parameters\n * @returns Promise resolving to signed URL response\n */\n async getSignedUrl(request) {\n return this.apiClient.post(`${this.basePath}/entity-storage-url`, request);\n }\n /**\n * PUBLIC: Get signed GET URL for file access\n *\n * @param url - File URL\n * @param expireSeconds - Optional expiration time in seconds\n * @returns Promise resolving to signed URL response\n */\n async getSignedGetUrl(url, expireSeconds) {\n const searchParams = new URLSearchParams({ url });\n if (expireSeconds) {\n searchParams.set('expireSeconds', expireSeconds.toString());\n }\n return this.apiClient.get(`${this.basePath}/signed-url?${searchParams.toString()}`);\n }\n /**\n * PUBLIC: Optimize media from URL\n *\n * @param request - File optimization request\n * @returns Promise resolving to optimized file URL\n */\n async optimizeMediaFromUrl(request) {\n const searchParams = new URLSearchParams({ url: request.url });\n if (request.width)\n searchParams.set('width', request.width.toString());\n if (request.height)\n searchParams.set('height', request.height.toString());\n return this.apiClient.get(`/file/optimize-url?${searchParams.toString()}`);\n }\n}\n\n/**\n * File Service - High-level file operations\n *\n * Provides convenient methods for file upload, signed URLs, and media optimization.\n */\nclass FileService {\n constructor(apiClient) {\n this.fileApi = new FileApi(apiClient);\n }\n /**\n * Get signed PUT URL for file upload\n *\n * @param entityId - Entity ID to associate the file with\n * @param entityType - Type of entity (token, campaign, etc.)\n * @param fileExtension - File extension (e.g., 'jpg', 'png')\n * @returns Promise resolving to signed upload URL\n */\n async getSignedPutUrl(entityId, entityType, fileExtension) {\n const request = {\n entityId,\n entityType,\n signedUrlType: 'PUT',\n fileExtension\n };\n const response = await this.fileApi.getSignedUrl(request);\n return response.signedUrl;\n }\n /**\n * Get signed GET URL for file access\n *\n * @param entityId - Entity ID\n * @param entityType - Type of entity\n * @param expireSeconds - Optional expiration time in seconds\n * @returns Promise resolving to signed access URL\n */\n async getSignedGetUrl(entityId, entityType, expireSeconds) {\n const request = {\n entityId,\n entityType,\n signedUrlType: 'GET'\n };\n const response = await this.fileApi.getSignedUrl(request);\n return response.signedUrl;\n }\n /**\n * Get signed URL for any file operation\n *\n * @param request - Signed URL request\n * @returns Promise resolving to signed URL\n */\n async getSignedUrl(request) {\n const response = await this.fileApi.getSignedUrl(request);\n return response.signedUrl;\n }\n /**\n * Optimize media from URL\n *\n * @param url - Original file URL\n * @param width - Optional target width\n * @param height - Optional target height\n * @returns Promise resolving to optimized file URL\n */\n async optimizeMedia(url, width, height) {\n const request = { url, width, height };\n const response = await this.fileApi.optimizeMediaFromUrl(request);\n return response.optimizedUrl;\n }\n /**\n * Get the file API instance for advanced operations\n *\n * @returns FileApi instance\n */\n getFileApi() {\n return this.fileApi;\n }\n}\n/**\n * Factory function for creating file service\n */\nfunction createFileSDK(apiClient) {\n return new FileService(apiClient);\n}\n\n/**\n * File Manager - Clean, high-level interface for file operations\n *\n * Provides a simplified API for common file management tasks while maintaining\n * access to the full file SDK for advanced use cases.\n */\nclass FileManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.fileSDK = createFileSDK(apiClient);\n }\n /**\n * Get signed URL for file upload\n *\n * @param entityId - Entity ID to associate the file with\n * @param entityType - Type of entity (token, campaign, etc.)\n * @param fileExtension - File extension (e.g., 'jpg', 'png')\n * @returns Promise resolving to signed upload URL\n */\n async getSignedPutUrl(entityId, entityType, fileExtension) {\n return this.fileSDK.getSignedPutUrl(entityId, entityType, fileExtension);\n }\n /**\n * Get signed URL for file access\n *\n * @param entityId - Entity ID\n * @param entityType - Type of entity\n * @param expireSeconds - Optional expiration time in seconds\n * @returns Promise resolving to signed access URL\n */\n async getSignedGetUrl(entityId, entityType, expireSeconds) {\n return this.fileSDK.getSignedGetUrl(entityId, entityType, expireSeconds);\n }\n /**\n * Get signed URL for any file operation\n *\n * @param request - Signed URL request\n * @returns Promise resolving to signed URL\n */\n async getSignedUrl(request) {\n return this.fileSDK.getSignedUrl(request);\n }\n /**\n * Optimize media file\n *\n * @param url - Original file URL\n * @param width - Optional target width\n * @param height - Optional target height\n * @returns Promise resolving to optimized file URL\n */\n async optimizeMedia(url, width, height) {\n return this.fileSDK.optimizeMedia(url, width, height);\n }\n /**\n * Get the full file SDK for advanced operations\n *\n * @returns FileService instance\n */\n getFileSDK() {\n return this.fileSDK;\n }\n}\n\n/**\n * Tenant Manager - Clean, high-level interface for tenant operations\n *\n * Provides a simplified API for common tenant management tasks while maintaining\n * access to the full tenant SDK for advanced use cases.\n */\nclass TenantManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.tenantSDK = createTenantSDK(apiClient);\n }\n /**\n * Get current tenant information\n *\n * @returns Promise resolving to tenant data\n */\n async getTenantInfo() {\n return this.tenantSDK.getRemoteTenant();\n }\n /**\n * Get tenant login token\n *\n * @returns Promise resolving to login token\n */\n async getLoginToken() {\n return this.tenantSDK.getRemoteLoginToken();\n }\n /**\n * Get tenant client configuration\n *\n * @returns Promise resolving to client config\n */\n async getClientConfig() {\n return this.tenantSDK.getRemoteClientConfig();\n }\n /**\n * Admin: Update tenant data\n *\n * @param tenantData - Updated tenant data\n * @returns Promise resolving to updated tenant\n */\n async updateTenant(tenantData) {\n return this.tenantSDK.updateRemoteTenant(tenantData);\n }\n /**\n * Admin: Get all admins\n *\n * @returns Promise resolving to array of admins\n */\n async getAdmins() {\n return this.tenantSDK.getAdmins();\n }\n /**\n * Admin: Create new admin\n *\n * @param adminData - Admin data\n * @returns Promise resolving to created admin\n */\n async createAdmin(adminData) {\n return this.tenantSDK.postAdmin(adminData);\n }\n /**\n * Admin: Update existing admin\n *\n * @param adminId - ID of the admin to update\n * @param adminData - Updated admin data\n * @returns Promise resolving to updated admin\n */\n async updateAdmin(adminId, adminData) {\n return this.tenantSDK.putAdmin(adminId, adminData);\n }\n /**\n * Get the full tenant SDK for advanced operations\n *\n * @returns TenantSDK instance\n */\n getTenantSDK() {\n return this.tenantSDK;\n }\n}\n\n/**\n * Analytics Manager - Clean, high-level interface for analytics operations\n *\n * Provides a simplified API for common analytics tasks while maintaining\n * access to the full analytics SDK for advanced use cases.\n */\nclass AnalyticsManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.analyticsSDK = createAnalyticsSDK(apiClient);\n }\n /**\n * Get transaction analytics\n *\n * @param request - Analytics request parameters\n * @returns Promise resolving to transaction analytics data\n */\n async getTransactionAnalytics(request) {\n return this.analyticsSDK.getTransactionAnalytics(request);\n }\n /**\n * Get the full analytics SDK for advanced operations\n *\n * @returns AnalyticsSDK instance\n */\n getAnalyticsSDK() {\n return this.analyticsSDK;\n }\n}\n\n/**\n * Donation Manager - Clean, high-level interface for donation operations\n *\n * Provides a simplified API for common donation tasks while maintaining\n * access to the full donation SDK for advanced use cases.\n */\nclass DonationManager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.donationSDK = createDonationSDK(apiClient);\n }\n /**\n * Get available donation types\n *\n * @returns Promise resolving to array of donation types\n */\n async getDonationTypes() {\n return this.donationSDK.getAllDonationTypes();\n }\n /**\n * Get the full donation SDK for advanced operations\n *\n * @returns DonationSDK instance\n */\n getDonationSDK() {\n return this.donationSDK;\n }\n}\n\n/**\n * Web3 Manager - Clean, high-level interface for Web3 operations\n *\n * Provides a simplified API for common Web3 blockchain tasks while maintaining\n * access to the full Web3 SDK for advanced use cases.\n */\nclass Web3Manager {\n constructor(apiClient) {\n this.apiClient = apiClient;\n this.web3SDK = createWeb3SDK(apiClient);\n this.web3ChainSDK = createWeb3ChainSDK(apiClient);\n }\n /**\n * Get token balance for a specific token\n *\n * @param request - Token balance request parameters\n * @returns Promise resolving to token balance\n */\n async getTokenBalance(request) {\n return this.web3SDK.getTokenBalance(request);\n }\n /**\n * Get token metadata\n *\n * @param request - Token metadata request parameters\n * @returns Promise resolving to token metadata or null if not found\n */\n async getTokenMetadata(request) {\n return this.web3SDK.getTokenMetadata(request);\n }\n /**\n * Get token collection\n *\n * @param request - Token collection request parameters\n * @returns Promise resolving to token collection\n */\n async getTokenCollection(request) {\n return this.web3SDK.getTokenCollection(request);\n }\n /**\n * Resolve IPFS URL to accessible URL\n *\n * @param url - IPFS URL to resolve\n * @param chainId - Chain ID for context\n * @returns Promise resolving to accessible URL\n */\n async resolveIPFSUrl(url, chainId) {\n return this.web3SDK.resolveIPFSUrl(url, chainId);\n }\n /**\n * Fetch and process token metadata\n *\n * @param tokenUri - Token URI to fetch metadata from\n * @param chainId - Chain ID for context\n * @returns Promise resolving to processed metadata or null if not found\n */\n async fetchAndProcessMetadata(tokenUri, chainId) {\n return this.web3SDK.fetchAndProcessMetadata(tokenUri, chainId);\n }\n /**\n * Get blockchain chain data by chain ID\n *\n * @param chainId - Chain ID to get data for\n * @returns Promise resolving to chain data or null if not found\n */\n async getChainDataById(chainId) {\n return this.web3ChainSDK.getChainDataById(chainId);\n }\n /**\n * Get explorer URL for a given address or transaction\n *\n * @param chainId - Chain ID to get explorer URL for\n * @param address - Address or transaction hash\n * @param type - Type of explorer URL ('address' or 'tx')\n * @returns Promise resolving to explorer URL\n */\n async getExplorerUrl(chainId, address, type) {\n return getExplorerUrlByChainId((id) => this.getChainDataById(id), chainId, address, type);\n }\n /**\n * Get the full Web3 SDK for advanced operations\n *\n * @returns Web3SDK instance\n */\n getWeb3SDK() {\n return this.web3SDK;\n }\n}\n\n/**\n * PERS SDK - Platform-agnostic TypeScript SDK with High-Level Managers\n *\n * ## Overview\n *\n * The PERS SDK provides a comprehensive interface for integrating with the PERS\n * (Phygital Experience Rewards System) platform. It features a clean manager-based\n * architecture that abstracts complex domain operations into intuitive high-level APIs.\n *\n * ## Architecture\n *\n * ```\n * PersSDK\n * ├── Domain Managers (Recommended) // High-level, intuitive APIs\n * │ ├── auth: AuthManager // Authentication & user sessions\n * │ ├── users: UserManager // User profile management\n * │ ├── tokens: TokenManager // Token balances & transfers\n * │ ├── businesses: BusinessManager // Business operations\n * │ ├── campaigns: CampaignManager // Marketing campaigns\n * │ ├── redemptions: RedemptionManager // Reward redemptions\n * │ ├── transactions: TransactionManager // Transaction history\n * │ ├── purchases: PurchaseManager // Purchase processing\n * │ └── analytics: AnalyticsManager // Reporting & analytics\n * ├── Domain SDKs (Advanced) // Full-featured domain access\n * │ ├── createBusinessSDK()\n * │ ├── createCampaignSDK()\n * │ └── TokenSDK, etc.\n * └── Core API Client (Expert) // Direct REST API access\n * └── api(): PersApiClient\n * ```\n *\n * ## Usage Patterns\n *\n * ### 1. High-Level Manager Pattern (Recommended)\n *\n * ```typescript\n * import { PersSDK } from '@explorins/pers-sdk';\n * import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';\n *\n * const sdk = new PersSDK(new BrowserFetchClientAdapter(), {\n * environment: 'production',\n * apiProjectKey: 'your-project-key'\n * });\n *\n * // Clean, intuitive manager interface\n * const user = await sdk.auth.getCurrentUser();\n * const campaigns = await sdk.campaigns.getActiveCampaigns();\n * const balances = await sdk.tokens.getTokens();\n * ```\n *\n * ### 2. Advanced Domain SDK Access\n *\n * ```typescript\n * // Access full SDK capabilities when needed\n * const campaignSDK = sdk.campaigns.getCampaignSDK();\n * const advancedCampaignOps = await campaignSDK.api.createComplexCampaign(data);\n * ```\n *\n * ### 3. Direct API Client Access\n *\n * ```typescript\n * // For custom endpoints or advanced operations\n * const apiClient = sdk.api();\n * const customData = await apiClient.get('/custom-endpoint');\n * ```\n *\n * ## Platform Integration\n *\n * The SDK provides pre-built adapters for common platforms:\n *\n * - **Angular**: `AngularHttpClientAdapter`\n * - **Browser/React/Vue**: `BrowserFetchClientAdapter`\n * - **Node.js**: `NodeHttpClientAdapter`\n * - **Custom**: Implement `HttpClient` interface\n *\n * ## Features\n *\n * - ✅ **Type-safe**: Full TypeScript support with comprehensive type definitions\n * - ✅ **Platform-agnostic**: Works in browsers, Node.js, React Native, and more\n * - ✅ **Authentication**: Automatic token management and refresh\n * - ✅ **Error handling**: Comprehensive error handling with typed exceptions\n * - ✅ **Modular**: Import only the domains you need\n * - ✅ **Manager pattern**: Clean, high-level APIs for common operations\n * - ✅ **Backward compatible**: Maintains compatibility with existing integrations\n * - ✅ **Tree-shakable**: Optimized for minimal bundle size\n *\n * @example Basic Setup\n * ```typescript\n * import { PersSDK } from '@explorins/pers-sdk';\n * import { BrowserFetchClientAdapter } from '@explorins/pers-sdk/platform-adapters';\n *\n * const sdk = new PersSDK(new BrowserFetchClientAdapter(), {\n * environment: 'production',\n * apiProjectKey: 'your-project-key'\n * });\n * ```\n *\n * @example Authentication Flow\n * ```typescript\n * // Login with external JWT (Firebase, Auth0, etc.)\n * await sdk.auth.loginWithToken(firebaseJWT, 'user');\n *\n * // Check authentication status\n * if (await sdk.auth.isAuthenticated()) {\n * const user = await sdk.auth.getCurrentUser();\n * console.log('Welcome,', user.name);\n * }\n * ```\n *\n * @example Business Operations\n * ```typescript\n * // Get active businesses\n * const businesses = await sdk.businesses.getActiveBusinesses();\n *\n * // Get business details\n * const business = await sdk.businesses.getBusinessById(businessId);\n *\n * // Admin: Create new business\n * const newBusiness = await sdk.businesses.createBusiness({\n * name: 'New Business',\n * location: 'City Center',\n * type: 'restaurant'\n * });\n * ```\n *\n * @example Campaign Management\n * ```typescript\n * // Get active campaigns\n * const campaigns = await sdk.campaigns.getActiveCampaigns();\n *\n * // Claim a campaign\n * await sdk.campaigns.claimCampaign({\n * campaignId: 'campaign-123',\n * metadata: { source: 'mobile-app' }\n * });\n *\n * // Get user's claims\n * const claims = await sdk.campaigns.getUserClaims();\n * ```\n *\n * @example Token Operations\n * ```typescript\n * // Get user's token balances\n * const tokens = await sdk.tokens.getTokens();\n *\n * // Transfer tokens between users\n * await sdk.tokens.transferTokens({\n * fromUserId: 'user-1',\n * toUserId: 'user-2',\n * tokenType: 'CREDIT',\n * amount: 100\n * });\n * ```\n *\n * @since 1.3.0 - Manager pattern architecture\n */\n/**\n * PERS SDK class with domain managers\n *\n * Main SDK interface providing clean, high-level managers for common operations\n * while maintaining full access to the underlying API client and domain SDKs.\n *\n * @example\n * ```typescript\n * import { PersSDK, createAuthProvider } from '@explorins/pers-sdk/core';\n * import { BrowserHttpClient } from '@explorins/pers-sdk/browser';\n *\n * const authProvider = createAuthProvider({\n * tokenProvider: () => getFirebaseToken()\n * });\n *\n * const sdk = new PersSDK(new BrowserHttpClient(), {\n * environment: 'production',\n * apiProjectKey: 'your-project-key',\n * authProvider\n * });\n *\n * // High-level manager interface\n * const user = await sdk.auth.getCurrentUser();\n * const tokens = await sdk.tokens.getTokens();\n * const businesses = await sdk.business.getActiveBusinesses();\n *\n * // Direct API access for advanced operations\n * const apiClient = sdk.api();\n * const customData = await apiClient.get('/custom-endpoint');\n * ```\n */\nclass PersSDK {\n /**\n * Creates a new PERS SDK instance\n *\n * @param httpClient Platform-specific HTTP client implementation\n * @param config SDK configuration options\n */\n constructor(httpClient, config) {\n this.apiClient = new PersApiClient(httpClient, config);\n // Initialize domain managers\n this._auth = new AuthManager(this.apiClient);\n this._users = new UserManager(this.apiClient);\n this._userStatus = new UserStatusManager(this.apiClient);\n this._tokens = new TokenManager(this.apiClient);\n this._businesses = new BusinessManager(this.apiClient);\n this._campaigns = new CampaignManager(this.apiClient);\n this._redemptions = new RedemptionManager(this.apiClient);\n this._transactions = new TransactionManager(this.apiClient);\n this._purchases = new PurchaseManager(this.apiClient);\n this._files = new FileManager(this.apiClient);\n this._tenants = new TenantManager(this.apiClient);\n this._analytics = new AnalyticsManager(this.apiClient);\n this._donations = new DonationManager(this.apiClient);\n this._web3 = new Web3Manager(this.apiClient);\n }\n /**\n * Authentication manager - High-level auth operations\n *\n * @example\n * ```typescript\n * await sdk.auth.loginWithToken(jwtToken);\n * const user = await sdk.auth.getCurrentUser();\n * const isAuth = await sdk.auth.isAuthenticated();\n * ```\n */\n get auth() {\n return this._auth;\n }\n /**\n * User manager - High-level user operations\n *\n * @example\n * ```typescript\n * const user = await sdk.user.getCurrentUser();\n * await sdk.user.updateCurrentUser(userData);\n * const users = await sdk.user.getAllUsersPublic();\n * ```\n */\n get users() {\n return this._users;\n }\n /**\n * User Status manager - High-level user status operations\n *\n * @example\n * ```typescript\n * const statusTypes = await sdk.userStatus.getUserStatusTypes();\n * const earnedStatus = await sdk.userStatus.getEarnedUserStatus();\n * await sdk.userStatus.createUserStatusType(statusData);\n * ```\n */\n get userStatus() {\n return this._userStatus;\n }\n /**\n * Token manager - High-level token operations\n *\n * @example\n * ```typescript\n * const tokens = await sdk.tokens.getTokens();\n * const creditToken = await sdk.tokens.getActiveCreditToken();\n * const rewards = await sdk.tokens.getRewardTokens();\n * ```\n */\n get tokens() {\n return this._tokens;\n }\n /**\n * Business manager - High-level business operations\n *\n * @example\n * ```typescript\n * const businesses = await sdk.business.getActiveBusinesses();\n * const business = await sdk.business.getBusinessById(id);\n * const types = await sdk.business.getBusinessTypes();\n * ```\n */\n get businesses() {\n return this._businesses;\n }\n /**\n * Campaign manager - High-level campaign operations\n *\n * @example\n * ```typescript\n * const campaigns = await sdk.campaigns.getActiveCampaigns();\n * await sdk.campaigns.claimCampaign(claimData);\n * const claims = await sdk.campaigns.getUserClaims();\n * ```\n */\n get campaigns() {\n return this._campaigns;\n }\n /**\n * Redemption manager - High-level redemption operations\n *\n * @example\n * ```typescript\n * const redemptions = await sdk.redemptions.getActiveRedemptions();\n * await sdk.redemptions.redeemOffer(redemptionId);\n * const history = await sdk.redemptions.getUserRedemptions();\n * ```\n */\n get redemptions() {\n return this._redemptions;\n }\n /**\n * Transaction manager - High-level transaction operations\n *\n * @example\n * ```typescript\n * const transaction = await sdk.transactions.getTransactionById(id);\n * await sdk.transactions.createTransaction(txData);\n * const history = await sdk.transactions.getUserTransactionHistory('all');\n * ```\n */\n get transactions() {\n return this._transactions;\n }\n /**\n * Purchase manager - High-level purchase operations\n *\n * @example\n * ```typescript\n * const intent = await sdk.purchases.createPaymentIntent(100, 'usd', 'email@example.com', 'Purchase');\n * const tokens = await sdk.purchases.getActivePurchaseTokens();\n * const purchases = await sdk.purchases.getAllUserPurchases();\n * ```\n */\n get purchases() {\n return this._purchases;\n }\n /**\n * File manager - High-level file operations\n *\n * @example\n * ```typescript\n * const uploadUrl = await sdk.files.getSignedPutUrl('entity-123', 'token', 'jpg');\n * const accessUrl = await sdk.files.getSignedGetUrl('entity-123', 'token');\n * const optimizedUrl = await sdk.files.optimizeMedia(originalUrl, 800, 600);\n * ```\n */\n get files() {\n return this._files;\n }\n /**\n * Tenant manager - High-level tenant operations\n *\n * @example\n * ```typescript\n * const tenant = await sdk.tenant.getTenantInfo();\n * const config = await sdk.tenant.getClientConfig();\n * const admins = await sdk.tenant.getAdmins();\n * ```\n */\n get tenants() {\n return this._tenants;\n }\n /**\n * Analytics manager - High-level analytics operations\n *\n * @example\n * ```typescript\n * const analytics = await sdk.analytics.getTransactionAnalytics(request);\n * ```\n */\n get analytics() {\n return this._analytics;\n }\n /**\n * Donation manager - High-level donation operations\n *\n * @example\n * ```typescript\n * const types = await sdk.donations.getDonationTypes();\n * ```\n */\n get donations() {\n return this._donations;\n }\n /**\n * Web3 manager - High-level blockchain operations\n *\n * @example\n * ```typescript\n * const balance = await sdk.web3.getTokenBalance(request);\n * const metadata = await sdk.web3.getTokenMetadata(request);\n * const collection = await sdk.web3.getTokenCollection(request);\n * ```\n */\n get web3() {\n return this._web3;\n }\n /**\n * Gets the API client for direct PERS API requests\n *\n * Use this for advanced operations not covered by the managers.\n * The returned client handles authentication, token refresh, and error handling automatically.\n *\n * @returns Configured PersApiClient instance\n *\n * @example\n * ```typescript\n * const apiClient = sdk.api();\n * const customData = await apiClient.get<CustomType>('/custom-endpoint');\n * await apiClient.post('/custom-endpoint', customData);\n * ```\n */\n api() {\n return this.apiClient;\n }\n /**\n * Checks if SDK is configured for production environment\n *\n * @returns True if environment is 'production', false otherwise\n */\n isProduction() {\n return this.apiClient.getConfig().environment === 'production';\n }\n}\n/**\n * Factory function for creating PERS SDK\n *\n * @param httpClient Platform-specific HTTP client implementation\n * @param config SDK configuration options\n * @returns PERS SDK instance\n */\nfunction createPersSDK(httpClient, config) {\n return new PersSDK(httpClient, config);\n}\n\nexport { AuthManager as A, BusinessManager as B, CampaignManager as C, DEFAULT_PERS_CONFIG as D, FileManager as F, PersSDK as P, RedemptionManager as R, TokenManager as T, UserManager as U, Web3Manager as W, createAuthProvider as a, PersApiClient as b, createPersSDK as c, buildApiRoot as d, UserStatusManager as e, TransactionManager as f, PurchaseManager as g, TenantManager as h, AnalyticsManager as i, DonationManager as j, FileApi as k, FileService as l, mergeWithDefaults as m, createFileSDK as n };\n//# sourceMappingURL=pers-sdk-Z6MKeFBX.js.map\n"],"names":["require$$0","ieee754","require$$1","TransactionRole","Web3TransactionType","TransactionStatus","TransactionTriggerProcessType","ApiKeyType","AdminType","Web3ContractTypes","CampaignConditionType","CampaignTriggerType","AccountOwnerType","StorageType","StorageDataType","Web3MasterWalletTypes","SigningAccountProvider","SigningAccountStatus","CryptographicScheme","EllipticCurve","NetworkType","WalletManagementType","WalletStatus","SortOrder","PurchaseStatus","PurchaseCurrency","RedemptionRedeemStatus","AbiCoder","abi","Interface","isAddress","Contract","FetchRequest","JsonRpcProvider"],"mappings":"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AE,OAAO,CAAC;AACxD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE;AACrD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC;AACtE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD,QAAQ,OAAO,uBAAuB,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AACjG,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO;AAC3B,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50]}