@otim/utils 0.0.2-development.0

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 (421) hide show
  1. package/LICENSE +201 -0
  2. package/dist/api/api.d.mts +18 -0
  3. package/dist/api/api.d.ts +18 -0
  4. package/dist/api/api.d.ts.map +1 -0
  5. package/dist/api/core/error.d.mts +74 -0
  6. package/dist/api/core/error.d.ts +74 -0
  7. package/dist/api/core/error.d.ts.map +1 -0
  8. package/dist/api/core/index.d.mts +4 -0
  9. package/dist/api/core/index.d.ts +4 -0
  10. package/dist/api/core/index.d.ts.map +1 -0
  11. package/dist/api/core/instance.d.mts +13 -0
  12. package/dist/api/core/instance.d.ts +13 -0
  13. package/dist/api/core/instance.d.ts.map +1 -0
  14. package/dist/api/core/service.d.mts +51 -0
  15. package/dist/api/core/service.d.ts +51 -0
  16. package/dist/api/core/service.d.ts.map +1 -0
  17. package/dist/api/index.d.mts +7 -0
  18. package/dist/api/index.d.ts +7 -0
  19. package/dist/api/index.d.ts.map +1 -0
  20. package/dist/api/index.js +2061 -0
  21. package/dist/api/index.js.map +7 -0
  22. package/dist/api/index.mjs +2030 -0
  23. package/dist/api/index.mjs.map +7 -0
  24. package/dist/api/schemas/account.d.mts +44 -0
  25. package/dist/api/schemas/account.d.ts +44 -0
  26. package/dist/api/schemas/account.d.ts.map +1 -0
  27. package/dist/api/schemas/activity.d.mts +277 -0
  28. package/dist/api/schemas/activity.d.ts +277 -0
  29. package/dist/api/schemas/activity.d.ts.map +1 -0
  30. package/dist/api/schemas/auth.d.mts +127 -0
  31. package/dist/api/schemas/auth.d.ts +127 -0
  32. package/dist/api/schemas/auth.d.ts.map +1 -0
  33. package/dist/api/schemas/chain.d.mts +15 -0
  34. package/dist/api/schemas/chain.d.ts +15 -0
  35. package/dist/api/schemas/chain.d.ts.map +1 -0
  36. package/dist/api/schemas/config.d.mts +33 -0
  37. package/dist/api/schemas/config.d.ts +33 -0
  38. package/dist/api/schemas/config.d.ts.map +1 -0
  39. package/dist/api/schemas/contacts.d.mts +27 -0
  40. package/dist/api/schemas/contacts.d.ts +27 -0
  41. package/dist/api/schemas/contacts.d.ts.map +1 -0
  42. package/dist/api/schemas/index.d.mts +12 -0
  43. package/dist/api/schemas/index.d.ts +12 -0
  44. package/dist/api/schemas/index.d.ts.map +1 -0
  45. package/dist/api/schemas/instruction.d.mts +446 -0
  46. package/dist/api/schemas/instruction.d.ts +446 -0
  47. package/dist/api/schemas/instruction.d.ts.map +1 -0
  48. package/dist/api/schemas/integration.d.mts +166 -0
  49. package/dist/api/schemas/integration.d.ts +166 -0
  50. package/dist/api/schemas/integration.d.ts.map +1 -0
  51. package/dist/api/schemas/operating-account.d.mts +11 -0
  52. package/dist/api/schemas/operating-account.d.ts +11 -0
  53. package/dist/api/schemas/operating-account.d.ts.map +1 -0
  54. package/dist/api/schemas/payments.d.mts +196 -0
  55. package/dist/api/schemas/payments.d.ts +196 -0
  56. package/dist/api/schemas/payments.d.ts.map +1 -0
  57. package/dist/api/schemas/transaction.d.mts +37 -0
  58. package/dist/api/schemas/transaction.d.ts +37 -0
  59. package/dist/api/schemas/transaction.d.ts.map +1 -0
  60. package/dist/api/services/account.d.mts +8 -0
  61. package/dist/api/services/account.d.ts +8 -0
  62. package/dist/api/services/account.d.ts.map +1 -0
  63. package/dist/api/services/activity.d.mts +7 -0
  64. package/dist/api/services/activity.d.ts +7 -0
  65. package/dist/api/services/activity.d.ts.map +1 -0
  66. package/dist/api/services/auth.d.mts +12 -0
  67. package/dist/api/services/auth.d.ts +12 -0
  68. package/dist/api/services/auth.d.ts.map +1 -0
  69. package/dist/api/services/base.d.mts +10 -0
  70. package/dist/api/services/base.d.ts +10 -0
  71. package/dist/api/services/base.d.ts.map +1 -0
  72. package/dist/api/services/config.d.mts +10 -0
  73. package/dist/api/services/config.d.ts +10 -0
  74. package/dist/api/services/config.d.ts.map +1 -0
  75. package/dist/api/services/contacts.d.mts +8 -0
  76. package/dist/api/services/contacts.d.ts +8 -0
  77. package/dist/api/services/contacts.d.ts.map +1 -0
  78. package/dist/api/services/developer.d.mts +6 -0
  79. package/dist/api/services/developer.d.ts +6 -0
  80. package/dist/api/services/developer.d.ts.map +1 -0
  81. package/dist/api/services/index.d.mts +13 -0
  82. package/dist/api/services/index.d.ts +13 -0
  83. package/dist/api/services/index.d.ts.map +1 -0
  84. package/dist/api/services/instruction.d.mts +12 -0
  85. package/dist/api/services/instruction.d.ts +12 -0
  86. package/dist/api/services/instruction.d.ts.map +1 -0
  87. package/dist/api/services/integration.d.mts +8 -0
  88. package/dist/api/services/integration.d.ts +8 -0
  89. package/dist/api/services/integration.d.ts.map +1 -0
  90. package/dist/api/services/operating-account.d.mts +8 -0
  91. package/dist/api/services/operating-account.d.ts +8 -0
  92. package/dist/api/services/operating-account.d.ts.map +1 -0
  93. package/dist/api/services/payments.d.mts +13 -0
  94. package/dist/api/services/payments.d.ts +13 -0
  95. package/dist/api/services/payments.d.ts.map +1 -0
  96. package/dist/api/services/transaction.d.mts +8 -0
  97. package/dist/api/services/transaction.d.ts +8 -0
  98. package/dist/api/services/transaction.d.ts.map +1 -0
  99. package/dist/api/services/uniswap-token-list-service.d.mts +66 -0
  100. package/dist/api/services/uniswap-token-list-service.d.ts +66 -0
  101. package/dist/api/services/uniswap-token-list-service.d.ts.map +1 -0
  102. package/dist/api/utils/index.d.mts +2 -0
  103. package/dist/api/utils/index.d.ts +2 -0
  104. package/dist/api/utils/index.d.ts.map +1 -0
  105. package/dist/api/utils/pagination.d.mts +32 -0
  106. package/dist/api/utils/pagination.d.ts +32 -0
  107. package/dist/api/utils/pagination.d.ts.map +1 -0
  108. package/dist/chains/config/all-chains.d.mts +4243 -0
  109. package/dist/chains/config/all-chains.d.ts +4243 -0
  110. package/dist/chains/config/all-chains.d.ts.map +1 -0
  111. package/dist/chains/config/custom-chains.d.mts +49 -0
  112. package/dist/chains/config/custom-chains.d.ts +49 -0
  113. package/dist/chains/config/custom-chains.d.ts.map +1 -0
  114. package/dist/chains/config/mainnet-chains.d.mts +1063 -0
  115. package/dist/chains/config/mainnet-chains.d.ts +1063 -0
  116. package/dist/chains/config/mainnet-chains.d.ts.map +1 -0
  117. package/dist/chains/config/supported-chains.d.mts +2172 -0
  118. package/dist/chains/config/supported-chains.d.ts +2172 -0
  119. package/dist/chains/config/supported-chains.d.ts.map +1 -0
  120. package/dist/chains/config/testnet-chains.d.mts +1110 -0
  121. package/dist/chains/config/testnet-chains.d.ts +1110 -0
  122. package/dist/chains/config/testnet-chains.d.ts.map +1 -0
  123. package/dist/chains/index.d.mts +16 -0
  124. package/dist/chains/index.d.ts +16 -0
  125. package/dist/chains/index.d.ts.map +1 -0
  126. package/dist/chains/index.js +490 -0
  127. package/dist/chains/index.js.map +7 -0
  128. package/dist/chains/index.mjs +505 -0
  129. package/dist/chains/index.mjs.map +7 -0
  130. package/dist/chains/lambda/chain-mapping.d.mts +55 -0
  131. package/dist/chains/lambda/chain-mapping.d.ts +55 -0
  132. package/dist/chains/lambda/chain-mapping.d.ts.map +1 -0
  133. package/dist/chains/lambda/index.d.mts +2 -0
  134. package/dist/chains/lambda/index.d.ts +2 -0
  135. package/dist/chains/lambda/index.d.ts.map +1 -0
  136. package/dist/chains/tokens/chain-tokens.d.mts +6 -0
  137. package/dist/chains/tokens/chain-tokens.d.ts +6 -0
  138. package/dist/chains/tokens/chain-tokens.d.ts.map +1 -0
  139. package/dist/chains/tokens/token-addresses.d.mts +8 -0
  140. package/dist/chains/tokens/token-addresses.d.ts +8 -0
  141. package/dist/chains/tokens/token-addresses.d.ts.map +1 -0
  142. package/dist/chains/tokens/token-metadata.d.mts +5 -0
  143. package/dist/chains/tokens/token-metadata.d.ts +5 -0
  144. package/dist/chains/tokens/token-metadata.d.ts.map +1 -0
  145. package/dist/chains/types.d.mts +23 -0
  146. package/dist/chains/types.d.ts +23 -0
  147. package/dist/chains/types.d.ts.map +1 -0
  148. package/dist/chains/utils/filter-tokens.d.mts +3 -0
  149. package/dist/chains/utils/filter-tokens.d.ts +3 -0
  150. package/dist/chains/utils/filter-tokens.d.ts.map +1 -0
  151. package/dist/chains/utils/stablecoin.d.mts +7 -0
  152. package/dist/chains/utils/stablecoin.d.ts +7 -0
  153. package/dist/chains/utils/stablecoin.d.ts.map +1 -0
  154. package/dist/chains/utils/token-maps.d.mts +10 -0
  155. package/dist/chains/utils/token-maps.d.ts +10 -0
  156. package/dist/chains/utils/token-maps.d.ts.map +1 -0
  157. package/dist/constants.d.mts +31 -0
  158. package/dist/constants.d.ts +31 -0
  159. package/dist/constants.d.ts.map +1 -0
  160. package/dist/constants.js +47 -0
  161. package/dist/constants.js.map +7 -0
  162. package/dist/constants.mjs +26 -0
  163. package/dist/constants.mjs.map +7 -0
  164. package/dist/env.d.mts +17 -0
  165. package/dist/env.d.ts +17 -0
  166. package/dist/env.d.ts.map +1 -0
  167. package/dist/formatters/index.d.mts +2 -0
  168. package/dist/formatters/index.d.ts +2 -0
  169. package/dist/formatters/index.d.ts.map +1 -0
  170. package/dist/formatters/index.js +19 -0
  171. package/dist/formatters/index.js.map +7 -0
  172. package/dist/formatters/index.mjs +1 -0
  173. package/dist/formatters/index.mjs.map +7 -0
  174. package/dist/helpers/address.d.mts +7 -0
  175. package/dist/helpers/address.d.ts +7 -0
  176. package/dist/helpers/address.d.ts.map +1 -0
  177. package/dist/helpers/blockchain.d.mts +41 -0
  178. package/dist/helpers/blockchain.d.ts +41 -0
  179. package/dist/helpers/blockchain.d.ts.map +1 -0
  180. package/dist/helpers/date.d.mts +70 -0
  181. package/dist/helpers/date.d.ts +70 -0
  182. package/dist/helpers/date.d.ts.map +1 -0
  183. package/dist/helpers/datetime.d.mts +57 -0
  184. package/dist/helpers/datetime.d.ts +57 -0
  185. package/dist/helpers/datetime.d.ts.map +1 -0
  186. package/dist/helpers/domain.d.mts +2 -0
  187. package/dist/helpers/domain.d.ts +2 -0
  188. package/dist/helpers/domain.d.ts.map +1 -0
  189. package/dist/helpers/index.d.mts +19 -0
  190. package/dist/helpers/index.d.ts +19 -0
  191. package/dist/helpers/index.d.ts.map +1 -0
  192. package/dist/helpers/index.js +1322 -0
  193. package/dist/helpers/index.js.map +7 -0
  194. package/dist/helpers/index.mjs +1294 -0
  195. package/dist/helpers/index.mjs.map +7 -0
  196. package/dist/helpers/intl.d.mts +20 -0
  197. package/dist/helpers/intl.d.ts +20 -0
  198. package/dist/helpers/intl.d.ts.map +1 -0
  199. package/dist/helpers/logger.d.mts +26 -0
  200. package/dist/helpers/logger.d.ts +26 -0
  201. package/dist/helpers/logger.d.ts.map +1 -0
  202. package/dist/helpers/mask-options.d.mts +10 -0
  203. package/dist/helpers/mask-options.d.ts +10 -0
  204. package/dist/helpers/mask-options.d.ts.map +1 -0
  205. package/dist/helpers/num-formatter.d.mts +3 -0
  206. package/dist/helpers/num-formatter.d.ts +3 -0
  207. package/dist/helpers/num-formatter.d.ts.map +1 -0
  208. package/dist/helpers/polling.d.mts +39 -0
  209. package/dist/helpers/polling.d.ts +39 -0
  210. package/dist/helpers/polling.d.ts.map +1 -0
  211. package/dist/helpers/random.d.mts +10 -0
  212. package/dist/helpers/random.d.ts +10 -0
  213. package/dist/helpers/random.d.ts.map +1 -0
  214. package/dist/helpers/sdk-loader.d.mts +25 -0
  215. package/dist/helpers/sdk-loader.d.ts +25 -0
  216. package/dist/helpers/sdk-loader.d.ts.map +1 -0
  217. package/dist/helpers/signatures.d.mts +17 -0
  218. package/dist/helpers/signatures.d.ts +17 -0
  219. package/dist/helpers/signatures.d.ts.map +1 -0
  220. package/dist/helpers/string.d.mts +17 -0
  221. package/dist/helpers/string.d.ts +17 -0
  222. package/dist/helpers/string.d.ts.map +1 -0
  223. package/dist/helpers/types.d.mts +39 -0
  224. package/dist/helpers/types.d.ts +39 -0
  225. package/dist/helpers/types.d.ts.map +1 -0
  226. package/dist/helpers/url.d.mts +11 -0
  227. package/dist/helpers/url.d.ts +11 -0
  228. package/dist/helpers/url.d.ts.map +1 -0
  229. package/dist/helpers/window.d.mts +37 -0
  230. package/dist/helpers/window.d.ts +37 -0
  231. package/dist/helpers/window.d.ts.map +1 -0
  232. package/dist/helpers/zod.d.mts +30 -0
  233. package/dist/helpers/zod.d.ts +30 -0
  234. package/dist/helpers/zod.d.ts.map +1 -0
  235. package/dist/index.d.mts +1 -0
  236. package/dist/index.d.ts +1 -0
  237. package/dist/index.d.ts.map +1 -0
  238. package/dist/index.js +2 -0
  239. package/dist/index.js.map +7 -0
  240. package/dist/index.mjs +1 -0
  241. package/dist/index.mjs.map +7 -0
  242. package/dist/instructions/actions/index.d.mts +5 -0
  243. package/dist/instructions/actions/index.d.ts +5 -0
  244. package/dist/instructions/actions/index.d.ts.map +1 -0
  245. package/dist/instructions/actions/refuel/index.d.mts +15 -0
  246. package/dist/instructions/actions/refuel/index.d.ts +15 -0
  247. package/dist/instructions/actions/refuel/index.d.ts.map +1 -0
  248. package/dist/instructions/actions/swap/index.d.mts +19 -0
  249. package/dist/instructions/actions/swap/index.d.ts +19 -0
  250. package/dist/instructions/actions/swap/index.d.ts.map +1 -0
  251. package/dist/instructions/actions/sweep/index.d.mts +16 -0
  252. package/dist/instructions/actions/sweep/index.d.ts +16 -0
  253. package/dist/instructions/actions/sweep/index.d.ts.map +1 -0
  254. package/dist/instructions/actions/transfer/index.d.mts +13 -0
  255. package/dist/instructions/actions/transfer/index.d.ts +13 -0
  256. package/dist/instructions/actions/transfer/index.d.ts.map +1 -0
  257. package/dist/instructions/activate.d.mts +84 -0
  258. package/dist/instructions/activate.d.ts +84 -0
  259. package/dist/instructions/activate.d.ts.map +1 -0
  260. package/dist/instructions/build.d.mts +146 -0
  261. package/dist/instructions/build.d.ts +146 -0
  262. package/dist/instructions/build.d.ts.map +1 -0
  263. package/dist/instructions/constants.d.mts +9 -0
  264. package/dist/instructions/constants.d.ts +9 -0
  265. package/dist/instructions/constants.d.ts.map +1 -0
  266. package/dist/instructions/contracts/artifacts/abi/build-instruction-action-arguments-abi.d.mts +609 -0
  267. package/dist/instructions/contracts/artifacts/abi/build-instruction-action-arguments-abi.d.ts +609 -0
  268. package/dist/instructions/contracts/artifacts/abi/build-instruction-action-arguments-abi.d.ts.map +1 -0
  269. package/dist/instructions/index.d.mts +6 -0
  270. package/dist/instructions/index.d.ts +6 -0
  271. package/dist/instructions/index.d.ts.map +1 -0
  272. package/dist/instructions/index.js +1152 -0
  273. package/dist/instructions/index.js.map +7 -0
  274. package/dist/instructions/index.mjs +1119 -0
  275. package/dist/instructions/index.mjs.map +7 -0
  276. package/dist/instructions/types.d.mts +289 -0
  277. package/dist/instructions/types.d.ts +289 -0
  278. package/dist/instructions/types.d.ts.map +1 -0
  279. package/dist/payments/action-names.d.mts +16 -0
  280. package/dist/payments/action-names.d.ts +16 -0
  281. package/dist/payments/action-names.d.ts.map +1 -0
  282. package/dist/payments/actions/index.d.mts +5 -0
  283. package/dist/payments/actions/index.d.ts +5 -0
  284. package/dist/payments/actions/index.d.ts.map +1 -0
  285. package/dist/payments/actions/sweep-cctp.d.mts +15 -0
  286. package/dist/payments/actions/sweep-cctp.d.ts +15 -0
  287. package/dist/payments/actions/sweep-cctp.d.ts.map +1 -0
  288. package/dist/payments/actions/sweep-erc20.d.mts +12 -0
  289. package/dist/payments/actions/sweep-erc20.d.ts +12 -0
  290. package/dist/payments/actions/sweep-erc20.d.ts.map +1 -0
  291. package/dist/payments/actions/sweep-uniswap-v3.d.mts +17 -0
  292. package/dist/payments/actions/sweep-uniswap-v3.d.ts +17 -0
  293. package/dist/payments/actions/sweep-uniswap-v3.d.ts.map +1 -0
  294. package/dist/payments/actions/sweep.d.mts +12 -0
  295. package/dist/payments/actions/sweep.d.ts +12 -0
  296. package/dist/payments/actions/sweep.d.ts.map +1 -0
  297. package/dist/payments/build.d.mts +27 -0
  298. package/dist/payments/build.d.ts +27 -0
  299. package/dist/payments/build.d.ts.map +1 -0
  300. package/dist/payments/chain-token-config-builder.d.mts +10 -0
  301. package/dist/payments/chain-token-config-builder.d.ts +10 -0
  302. package/dist/payments/chain-token-config-builder.d.ts.map +1 -0
  303. package/dist/payments/comprehensive-payment-request.d.mts +25 -0
  304. package/dist/payments/comprehensive-payment-request.d.ts +25 -0
  305. package/dist/payments/comprehensive-payment-request.d.ts.map +1 -0
  306. package/dist/payments/config/cctp.d.mts +14 -0
  307. package/dist/payments/config/cctp.d.ts +14 -0
  308. package/dist/payments/config/cctp.d.ts.map +1 -0
  309. package/dist/payments/config/index.d.mts +3 -0
  310. package/dist/payments/config/index.d.ts +3 -0
  311. package/dist/payments/config/index.d.ts.map +1 -0
  312. package/dist/payments/config/tokens.d.mts +14 -0
  313. package/dist/payments/config/tokens.d.ts +14 -0
  314. package/dist/payments/config/tokens.d.ts.map +1 -0
  315. package/dist/payments/index.d.mts +16 -0
  316. package/dist/payments/index.d.ts +16 -0
  317. package/dist/payments/index.d.ts.map +1 -0
  318. package/dist/payments/index.js +1303 -0
  319. package/dist/payments/index.js.map +7 -0
  320. package/dist/payments/index.mjs +1281 -0
  321. package/dist/payments/index.mjs.map +7 -0
  322. package/dist/payments/instruction-registry.d.mts +19 -0
  323. package/dist/payments/instruction-registry.d.ts +19 -0
  324. package/dist/payments/instruction-registry.d.ts.map +1 -0
  325. package/dist/payments/payment-metadata-builder.d.mts +56 -0
  326. package/dist/payments/payment-metadata-builder.d.ts +56 -0
  327. package/dist/payments/payment-metadata-builder.d.ts.map +1 -0
  328. package/dist/payments/payment-metadata.d.mts +15 -0
  329. package/dist/payments/payment-metadata.d.ts +15 -0
  330. package/dist/payments/payment-metadata.d.ts.map +1 -0
  331. package/dist/payments/payment-request-token-resolver.d.mts +25 -0
  332. package/dist/payments/payment-request-token-resolver.d.ts +25 -0
  333. package/dist/payments/payment-request-token-resolver.d.ts.map +1 -0
  334. package/dist/payments/types.d.mts +40 -0
  335. package/dist/payments/types.d.ts +40 -0
  336. package/dist/payments/types.d.ts.map +1 -0
  337. package/dist/payments/validation.d.mts +19 -0
  338. package/dist/payments/validation.d.ts +19 -0
  339. package/dist/payments/validation.d.ts.map +1 -0
  340. package/dist/schemas/account.d.mts +9 -0
  341. package/dist/schemas/account.d.ts +9 -0
  342. package/dist/schemas/account.d.ts.map +1 -0
  343. package/dist/schemas/brand.d.mts +7 -0
  344. package/dist/schemas/brand.d.ts +7 -0
  345. package/dist/schemas/brand.d.ts.map +1 -0
  346. package/dist/schemas/contact.d.mts +18 -0
  347. package/dist/schemas/contact.d.ts +18 -0
  348. package/dist/schemas/contact.d.ts.map +1 -0
  349. package/dist/schemas/index.d.mts +10 -0
  350. package/dist/schemas/index.d.ts +10 -0
  351. package/dist/schemas/index.d.ts.map +1 -0
  352. package/dist/schemas/index.js +433 -0
  353. package/dist/schemas/index.js.map +7 -0
  354. package/dist/schemas/index.mjs +410 -0
  355. package/dist/schemas/index.mjs.map +7 -0
  356. package/dist/schemas/instruction.d.mts +248 -0
  357. package/dist/schemas/instruction.d.ts +248 -0
  358. package/dist/schemas/instruction.d.ts.map +1 -0
  359. package/dist/schemas/misc.d.mts +36 -0
  360. package/dist/schemas/misc.d.ts +36 -0
  361. package/dist/schemas/misc.d.ts.map +1 -0
  362. package/dist/schemas/payment.d.mts +64 -0
  363. package/dist/schemas/payment.d.ts +64 -0
  364. package/dist/schemas/payment.d.ts.map +1 -0
  365. package/dist/schemas/token.d.mts +17 -0
  366. package/dist/schemas/token.d.ts +17 -0
  367. package/dist/schemas/token.d.ts.map +1 -0
  368. package/dist/schemas/transaction.d.mts +65 -0
  369. package/dist/schemas/transaction.d.ts +65 -0
  370. package/dist/schemas/transaction.d.ts.map +1 -0
  371. package/dist/schemas/user.d.mts +24 -0
  372. package/dist/schemas/user.d.ts +24 -0
  373. package/dist/schemas/user.d.ts.map +1 -0
  374. package/dist/server/client.d.mts +3 -0
  375. package/dist/server/client.d.ts +3 -0
  376. package/dist/server/client.d.ts.map +1 -0
  377. package/dist/server/index.d.mts +3 -0
  378. package/dist/server/index.d.ts +3 -0
  379. package/dist/server/index.d.ts.map +1 -0
  380. package/dist/server/index.js +420 -0
  381. package/dist/server/index.js.map +7 -0
  382. package/dist/server/index.mjs +389 -0
  383. package/dist/server/index.mjs.map +7 -0
  384. package/dist/server/routes/account.d.mts +4 -0
  385. package/dist/server/routes/account.d.ts +4 -0
  386. package/dist/server/routes/account.d.ts.map +1 -0
  387. package/dist/server/routes/auth.d.mts +28 -0
  388. package/dist/server/routes/auth.d.ts +28 -0
  389. package/dist/server/routes/auth.d.ts.map +1 -0
  390. package/dist/server/routes/bridge.d.mts +192 -0
  391. package/dist/server/routes/bridge.d.ts +192 -0
  392. package/dist/server/routes/bridge.d.ts.map +1 -0
  393. package/dist/server/routes/config.d.mts +3 -0
  394. package/dist/server/routes/config.d.ts +3 -0
  395. package/dist/server/routes/config.d.ts.map +1 -0
  396. package/dist/server/routes/index.d.mts +8 -0
  397. package/dist/server/routes/index.d.ts +8 -0
  398. package/dist/server/routes/index.d.ts.map +1 -0
  399. package/dist/server/routes/instruction.d.mts +4 -0
  400. package/dist/server/routes/instruction.d.ts +4 -0
  401. package/dist/server/routes/instruction.d.ts.map +1 -0
  402. package/dist/server/routes/integration.d.mts +4 -0
  403. package/dist/server/routes/integration.d.ts +4 -0
  404. package/dist/server/routes/integration.d.ts.map +1 -0
  405. package/dist/server/routes/payments.d.mts +4 -0
  406. package/dist/server/routes/payments.d.ts +4 -0
  407. package/dist/server/routes/payments.d.ts.map +1 -0
  408. package/dist/server/routes/verify.d.mts +3 -0
  409. package/dist/server/routes/verify.d.ts +3 -0
  410. package/dist/server/routes/verify.d.ts.map +1 -0
  411. package/dist/wallet/wagmi/config.d.mts +18 -0
  412. package/dist/wallet/wagmi/config.d.ts +18 -0
  413. package/dist/wallet/wagmi/config.d.ts.map +1 -0
  414. package/dist/wallet/wagmi/index.d.mts +2 -0
  415. package/dist/wallet/wagmi/index.d.ts +2 -0
  416. package/dist/wallet/wagmi/index.d.ts.map +1 -0
  417. package/dist/wallet/wagmi/index.js +429 -0
  418. package/dist/wallet/wagmi/index.js.map +7 -0
  419. package/dist/wallet/wagmi/index.mjs +431 -0
  420. package/dist/wallet/wagmi/index.mjs.map +7 -0
  421. package/package.json +222 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/helpers/address.ts", "../../src/helpers/blockchain.ts", "../../src/helpers/date.ts", "../../src/env.ts", "../../src/helpers/logger.ts", "../../src/helpers/datetime.ts", "../../src/schemas/instruction.ts", "../../src/schemas/misc.ts", "../../src/helpers/domain.ts", "../../src/helpers/intl.ts", "../../src/helpers/mask-options.ts", "../../src/helpers/num-formatter.ts", "../../src/helpers/window.ts", "../../src/helpers/polling.ts", "../../src/helpers/random.ts", "../../src/helpers/sdk-loader.ts", "../../src/helpers/signatures.ts", "../../src/helpers/string.ts", "../../src/helpers/types.ts", "../../src/helpers/url.ts", "../../src/helpers/zod.ts"],
4
+ "sourcesContent": ["import type { Nullable } from \"@otim/utils/helpers\";\n\n/**\n * Check if two addresses are equal (case-insensitive)\n * Works with Ethereum addresses and other blockchain addresses\n */\nexport const areAddressesEqual = (\n address1?: Nullable<string>,\n address2?: Nullable<string>,\n): boolean => {\n if (!address1 || !address2) return false;\n return address1.toLowerCase() === address2.toLowerCase();\n};\n", "import type { EIP2098Signature, HexString, VRS } from \"@otim/utils/schemas\";\nimport type { Chain } from \"viem\";\n\nimport { isAddressEqual } from \"viem\";\n\nexport const truncateAddress = (address: string): string => {\n if (!address) return \"\";\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\n};\n\n/**\n * Ethereum address regex pattern\n * Matches addresses like 0x1234...abcd (40 hex characters after 0x prefix)\n */\nexport const ETHEREUM_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;\n\n/**\n * Validates if a string is a valid Ethereum address format\n * @param address - The address string to validate\n * @returns true if the address matches the Ethereum address format\n */\nexport const isValidEthereumAddress = (address: string): boolean => {\n return ETHEREUM_ADDRESS_REGEX.test(address);\n};\n\n/**\n * Parses a signature string into its v, r, s components.\n * @param signature - The signature string to parse (must be 0x-prefixed, 132 chars total)\n * @returns VRS object containing v, r, and s values\n */\nexport const parseSignatureToVRS = (signature: string): VRS => {\n if (typeof signature !== \"string\") {\n throw new Error(\"Signature must be a string\");\n }\n\n if (!signature.startsWith(\"0x\")) {\n throw new Error('Signature must start with \"0x\"');\n }\n\n if (signature.length !== 132) {\n throw new Error(\n 'Signature must be 65 bytes (130 hex chars) plus \"0x\" = 132 total length',\n );\n }\n\n const r = signature.slice(2, 66);\n const s = signature.slice(66, 130);\n const vHex = signature.slice(130, 132);\n const v = parseInt(vHex, 16);\n return { v, r: `0x${r}`, s: `0x${s}` };\n};\n\n/**\n * Checks if a v value is valid according to EIP-155.\n */\nexport const isValidV = (v: number): boolean => {\n return v === 0 || v === 1 || v === 27 || v === 28 || v >= 35;\n};\n\n/**\n * Normalizes v value for EIP-155 compliance.\n */\nexport const normalizeV = (v: number) => {\n if (!isValidV(v)) return 0;\n\n const cmp = v <= 1 ? 1 : 0;\n const result = v % 2 === cmp;\n\n return Number(result) % 2;\n};\n\n/**\n * Creates an EIP-2098 compact signature from VRS components.\n * @param vrs - The VRS signature components\n * @returns EIP2098Signature object with yParity, r, and s\n */\nexport const createEIP2098Signature = (vrs: VRS): EIP2098Signature => {\n const v = vrs.v;\n const r = vrs.r;\n const s = vrs.s;\n\n return { yParity: normalizeV(v), r, s };\n};\n\nexport const getChainRpcUrl = (\n chainId: number,\n chains: readonly [Chain, ...Chain[]],\n) => {\n const chain = chains.find((chain) => chain.id === chainId);\n return chain?.rpcUrls.default;\n};\n\nexport const DEFAULT_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nexport const isNullAddress = (address: HexString) => {\n return isAddressEqual(address, DEFAULT_ADDRESS);\n};\n", "import z from \"zod\";\n\nimport { logger } from \"./logger\";\n\ntype Locale = \"en\" | \"es\";\n\ntype FormatDateFunc<T> = (date: Date) => T;\n\nexport const iso8601DateSchema = z\n .string()\n .regex(\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/,\n \"Must be a valid ISO 8601 date format (e.g., 2024-12-31T23:59:59.000Z)\",\n );\n\nexport const TimeUnit = {\n Day: \"day\",\n Month: \"month\",\n Year: \"year\",\n} as const;\n\nexport type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit];\n\nconst units = {\n [TimeUnit.Day]: {\n one: \"day\",\n other: \"days\",\n },\n [TimeUnit.Month]: {\n one: \"month\",\n other: \"months\",\n },\n [TimeUnit.Year]: {\n one: \"year\",\n other: \"years\",\n },\n} as const;\n\nconst formatDateAsUSStandard = (\n date: Date,\n opts?: Intl.DateTimeFormatOptions,\n) =>\n date.toLocaleString(\"en-US\", {\n month: \"2-digit\",\n day: \"2-digit\",\n year: \"numeric\",\n ...opts,\n });\n\nexport const formatDateAsISO = (date: Date) => date.toISOString();\n\nconst formatFullDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\nconst formatTime = (date: Date): string => {\n return date.toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n });\n};\n\nconst formatDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions).format(\n date,\n );\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\n/**\n * Formats a date in long format (e.g., \"June 19, 2025\")\n * @param date - Date object to format\n * @returns Formatted date string\n */\nconst formatLongDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\n/**\n * Formats a date with time in long format (e.g., \"June 19, 2025 at 07:00 AM\")\n * @param date - Date object to format\n * @returns Formatted date and time string\n */\nconst formatLongDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true,\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions)\n .format(date)\n .toLowerCase();\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\nconst formatToShortDate = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Jan 1\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nconst formatToShortDateWithYear = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Unknown\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nexport const formatToJustDate = (dateString: string) => {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return \"1\";\n }\n\n return date.getUTCDate().toString();\n};\n\nexport const formatDateToYYYYMMDD = (date: Date) => {\n return new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n};\n\nconst isDateInvalid = (date: Date) => {\n return date.toString() === \"Invalid Date\";\n};\n\n/**\n * Validates if a date is valid (opposite of isDateInvalid)\n * Checks both the Date object validity and the timestamp\n */\nconst isValidDate = (date: Date): boolean => {\n return !isDateInvalid(date) && !isNaN(date.getTime());\n};\n\nconst isDateEpoc = (date: Date) => {\n return date.getTime() <= 0;\n};\n\nconst isDateInRange = (arg: unknown): boolean => {\n if (typeof arg !== \"string\") {\n return false;\n }\n\n const date = new Date(arg);\n const startDate = new Date(\"1800-01-01T00:00:00.000Z\");\n const endDate = new Date(\"2999-12-31T23:59:59.999Z\");\n\n return date >= startDate && date <= endDate;\n};\n\nconst isDateInPast = (input: string | number | Date): boolean => {\n let date: Date;\n if (input instanceof Date) {\n date = input;\n } else if (typeof input === \"number\") {\n const ms = input < 1e12 ? input * 1000 : input;\n date = new Date(ms);\n } else {\n date = new Date(input);\n }\n\n if (isNaN(date.getTime())) {\n return false;\n }\n\n return date.getTime() < Date.now();\n};\n\nconst isSameDate = (dateA: Date, dateB: Date) => {\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n};\n\nconst getPluralizedUnit = (\n unit: keyof typeof units,\n count: number,\n locale: Locale = \"en\",\n) => {\n const pluralRules = new Intl.PluralRules(locale, {\n type: \"cardinal\",\n });\n const pluralCategory = pluralRules.select(count);\n\n if (pluralCategory === \"one\" || pluralCategory === \"other\") {\n return `${count} ${units[unit][pluralCategory]}`;\n }\n\n return `${count} ${units[unit].other}`;\n};\n\nconst getRelativeDateDescription = (\n targetDate: Date,\n locale: Locale = \"en\",\n) => {\n const currentDate = new Date();\n\n const oneDay = 1000 * 60 * 60 * 24;\n const oneMonth = oneDay * 30;\n const oneYear = oneDay * 365;\n\n const diffInMilliseconds = targetDate.getTime() - currentDate.getTime();\n const diffInDays = Math.round(diffInMilliseconds / oneDay);\n const diffInMonths = Math.round(diffInMilliseconds / oneMonth);\n const diffInYears = Math.round(diffInMilliseconds / oneYear);\n\n if (Math.abs(diffInYears) >= 1) {\n return getPluralizedUnit(\"year\", Math.abs(diffInYears), locale);\n }\n\n if (Math.abs(diffInMonths) >= 1) {\n return getPluralizedUnit(\"month\", Math.abs(diffInMonths), locale);\n }\n\n return getPluralizedUnit(\"day\", Math.abs(diffInDays), locale);\n};\n\n/**\n * Safely formats a date with validation and fallback support\n * @param date - String or Date to format\n * @param formatter - Function that formats the Date object\n * @param fallback - Value to return if date is invalid\n * @returns Formatted string or fallback value\n */\nconst safeFormatDate = <T = string>(\n date: string | Date,\n formatter: FormatDateFunc<T>,\n fallback: T,\n): T => {\n const dateObj = typeof date === \"string\" ? new Date(date) : date;\n\n if (!isValidDate(dateObj)) {\n return fallback;\n }\n\n try {\n return formatter(dateObj);\n } catch (error) {\n logger.logError(error, {\n context: safeFormatDate.name,\n });\n return fallback;\n }\n};\n\nconst parseDateTime = (dateInput: string, timeInput?: string) => {\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM|am|pm)?$/;\n\n const dateMatch = dateRegex.exec(dateInput);\n if (!dateMatch) {\n return undefined;\n }\n\n const month = parseInt(dateMatch[1]!, 10) - 1;\n const day = parseInt(dateMatch[2]!, 10);\n const year = parseInt(dateMatch[3]!, 10);\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (timeInput) {\n timeInput = timeInput.replace(/\\u00A0/g, \" \").trim();\n\n const timeMatch = timeRegex.exec(timeInput);\n if (!timeMatch) {\n return undefined;\n }\n\n hours = parseInt(timeMatch[1]!, 10);\n minutes = parseInt(timeMatch[2]!, 10);\n seconds = timeMatch[3] ? parseInt(timeMatch[3], 10) : 0;\n const meridiem = timeMatch[4] ? timeMatch[4].toUpperCase() : null;\n\n if (meridiem === \"PM\" && hours < 12) {\n hours += 12;\n } else if (meridiem === \"AM\" && hours === 12) {\n hours = 0;\n }\n }\n\n const date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n if (isNaN(date.getTime())) {\n return undefined;\n }\n\n return date;\n};\n\nconst validateIso8601Date = (dueDate: string): void => {\n const result = iso8601DateSchema.safeParse(dueDate);\n if (!result.success) {\n const errorMessage =\n result.error.issues[0]?.message || \"Invalid ISO 8601 format\";\n throw new Error(`Invalid due date format: ${errorMessage}`);\n }\n};\n\nexport {\n formatDateAsUSStandard,\n formatToShortDate,\n formatToShortDateWithYear,\n formatFullDate,\n formatTime,\n formatDateTime,\n formatLongDate,\n formatLongDateTime,\n getPluralizedUnit,\n getRelativeDateDescription,\n isDateInvalid,\n isValidDate,\n validateIso8601Date,\n isDateEpoc,\n isDateInRange,\n isDateInPast,\n isSameDate,\n safeFormatDate,\n parseDateTime,\n};\nexport type { FormatDateFunc };\n", "/**\n * Environment configuration for @otim/utils\n *\n * These values are injected at build time via esbuild's define option.\n * See scripts/build.js for the injection logic.\n */\n\n/**\n * Build mode - determines production vs development behavior\n * Values: \"production\" | \"development\"\n */\nexport const BUILD_MODE = process.env.BUILD_MODE || \"development\";\n\n/**\n * App API URL - base URL for API requests\n * Defaults to production URL if not specified\n */\nexport const APP_API_URL =\n process.env.NEXT_PUBLIC_APP_API_URL || \"https://app.otim.com/api\";\n", "import { BUILD_MODE } from \"../env\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\ninterface LoggerOptions {\n context?: string;\n data?: unknown;\n}\n\ninterface ErrorLogOptions {\n context?: string;\n operation?: string;\n metadata?: Record<string, unknown>;\n}\n\nclass Logger {\n private isDevelopment = BUILD_MODE === \"development\";\n\n debug(message: string, options?: LoggerOptions): void {\n if (this.isDevelopment) {\n this.log(\"debug\", message, options);\n }\n }\n\n info(message: string, options?: LoggerOptions): void {\n this.log(\"info\", message, options);\n }\n\n warn(message: string, options?: LoggerOptions): void {\n this.log(\"warn\", message, options);\n }\n\n error(message: string, options?: LoggerOptions): void {\n this.log(\"error\", message, options);\n }\n\n /**\n * Log errors with context - useful for non-API errors\n * For API errors, use the existing getErrorMessage from @otim/utils/api\n */\n logError(error: unknown, options: ErrorLogOptions = {}): void {\n const { context, operation, metadata } = options;\n const prefix = this.buildPrefix(context, operation);\n\n // Extract basic error message\n let message = \"Unknown error\";\n if (error instanceof Error) {\n message = error.message;\n } else if (typeof error === \"string\") {\n message = error;\n } else if (error && typeof error === \"object\" && \"message\" in error) {\n message = String((error as { message: unknown }).message);\n }\n\n console.error(prefix ? `${prefix} ${message}` : message);\n\n // Log metadata if provided\n if (metadata && Object.keys(metadata).length > 0) {\n console.error(\"Context:\", metadata);\n }\n\n // Log the full error object for debugging\n if (error instanceof Error && error.stack) {\n console.error(\"Stack:\", error.stack);\n } else {\n console.error(\"Error details:\", error);\n }\n }\n\n private buildPrefix(context?: string, operation?: string): string {\n const parts: string[] = [];\n if (context) parts.push(`[${context}]`);\n if (operation) parts.push(`[${operation}]`);\n return parts.join(\" \");\n }\n\n private log(level: LogLevel, message: string, options?: LoggerOptions): void {\n const prefix = options?.context ? `[${options.context}]` : \"\";\n const fullMessage = `${prefix} ${message}`.trim();\n\n switch (level) {\n case \"debug\":\n case \"info\":\n console.log(fullMessage);\n break;\n case \"warn\":\n console.warn(fullMessage);\n break;\n case \"error\":\n console.error(fullMessage);\n break;\n }\n\n if (options?.data) {\n console.dir(options.data, { depth: null });\n }\n }\n}\n\nexport const logger = new Logger();\n", "import type { Nullable, Optional } from \"./types\";\n\nimport { z } from \"zod\";\n\nimport { timeUnitSchema } from \"@otim/utils/schemas\";\n\n/**\n * schema for TimeUnitInputValue\n */\nexport const timeUnitInputValueSchema = z.object({\n unit: timeUnitSchema,\n value: z.number().finite(),\n seconds: z.number().finite(),\n});\nexport type TimeUnitInputValue = z.infer<typeof timeUnitInputValueSchema>;\n\n/**\n * type guard to check if a value is a valid TimeUnitInputValue object.\n */\nconst isTimeUnitInputValue = (value: unknown): value is TimeUnitInputValue => {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const obj = value as Record<string, unknown>;\n return (\n \"unit\" in obj &&\n \"value\" in obj &&\n \"seconds\" in obj &&\n typeof obj.unit === \"string\" &&\n typeof obj.value === \"number\" &&\n typeof obj.seconds === \"number\"\n );\n};\n\n/**\n * safely parses a JSON string to TimeUnitInputValue.\n * returns undefined if parsing fails or result is invalid.\n */\nconst parseJsonToTimeUnitValue = (\n jsonString: string,\n): Optional<TimeUnitInputValue> => {\n try {\n const parsed = JSON.parse(jsonString);\n return isTimeUnitInputValue(parsed) ? parsed : undefined;\n } catch {\n return undefined;\n }\n};\n\n/**\n * converts various value formats to TimeUnitInputValue.\n * handles both direct objects and JSON strings from form system.\n *\n * @param value \u2013 value from form field (can be object, string, or other)\n * @returns parsed TimeUnitInputValue or undefined if invalid\n */\nexport const parseTimeUnitValue = (\n value: unknown,\n): Optional<TimeUnitInputValue> => {\n // handle null/undefined\n if (!value) return undefined;\n\n // handle direct object (from initial values or state)\n if (isTimeUnitInputValue(value)) {\n return value;\n }\n\n // handle JSON string (from form serialization)\n if (typeof value === \"string\") {\n return parseJsonToTimeUnitValue(value);\n }\n\n return undefined;\n};\n\n/**\n * serializes TimeUnitInputValue to JSON string for form compatibility.\n *\n * @param value \u2013 TimeUnitInputValue to serialize\n * @returns JSON string representation\n */\nexport const serializeTimeUnitValue = (value: TimeUnitInputValue): string => {\n return JSON.stringify(value);\n};\n\n/**\n * validates if a value can be converted to a valid TimeUnitInputValue.\n *\n * @param value \u2013 value to validate\n * @returns true if value is valid, false otherwise\n */\nexport const isValidTimeUnitValue = (value: unknown): boolean => {\n return parseTimeUnitValue(value) !== undefined;\n};\n\n/**\n * gets the total seconds from a TimeUnitInputValue or its serialized form.\n *\n * @param value \u2013 TimeUnitInputValue or JSON string\n * @returns number of seconds or 0 if invalid\n */\nexport const getSecondsFromTimeUnitValue = (value: unknown): number => {\n const parsed = parseTimeUnitValue(value);\n return parsed?.seconds ?? 0;\n};\n\nexport const coerceSecondsFromTimeUnitValue = (value: unknown): number => {\n if (!value) return 0;\n if (typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n const seconds = obj?.seconds;\n if (typeof seconds === \"number\" && Number.isFinite(seconds)) return seconds;\n }\n if (typeof value === \"string\") {\n try {\n const parsed = JSON.parse(value) as { seconds?: unknown };\n const seconds = parsed?.seconds;\n if (typeof seconds === \"number\" && Number.isFinite(seconds))\n return seconds;\n } catch {}\n }\n return 0;\n};\n\n/**\n * Parses a date and time string into a Date object (strict version).\n * @param date \u2013 date string\n * @param time \u2013 time string\n * @returns Date object or null if invalid\n */\nexport function parseDateTimeStrict(\n date: string,\n time: string,\n): Nullable<Date> {\n try {\n const parts = date?.split(\"/\") ?? [];\n const month = Number(parts[0]);\n const day = Number(parts[1]);\n const year = Number(parts[2]);\n\n const timeParts = time?.split(\" \") ?? [];\n const timePart = timeParts[0] ?? \"00:00:00\";\n const ampm = timeParts[1] ?? \"AM\";\n const [hoursStr, minutesStr, secondsStr] = timePart.split(\":\");\n let hours = Number(hoursStr ?? 0);\n const minutes = Number(minutesStr ?? 0);\n const seconds = Number(secondsStr ?? 0);\n if (ampm === \"PM\" && hours < 12) hours += 12;\n if (ampm === \"AM\" && hours === 12) hours = 0;\n const dt = new Date(\n year || 0,\n (month || 1) - 1,\n day || 1,\n hours,\n minutes,\n seconds,\n );\n return isNaN(dt.getTime()) ? null : dt;\n } catch {\n return null;\n }\n}\n", "import { z } from \"zod\";\n\nimport { dateStandardSchema, hexStringSchema, numberSchema } from \"./misc\";\n\nexport const instructionIdSchema = hexStringSchema;\nexport type InstructionId = z.infer<typeof instructionIdSchema>;\n\nexport const InstructionState = {\n PendingActivation: \"PendingActivation\",\n Active: \"Active\",\n PendingDeactivation: \"PendingDeactivation\",\n Deactivated: \"Deactivated\",\n Errored: \"Errored\",\n Completed: \"Completed\",\n UserNotDelegated: \"UserNotDelegated\",\n InFlight: \"InFlight\",\n NotifyUser: \"NotifyUser\",\n} as const;\nexport type InstructionState =\n (typeof InstructionState)[keyof typeof InstructionState];\nexport const instructionStateValues = Object.values(InstructionState) as [\n InstructionState,\n ...InstructionState[],\n];\nexport const instructionStateSchema = z.enum(instructionStateValues);\n\nexport const InstructionAction = {\n RefuelERC20: \"refuelERC20\",\n Refuel: \"refuel\",\n Transfer: \"transfer\",\n TransferERC20: \"transferERC20\",\n UniswapV3ExactInput: \"uniswapV3ExactInput\",\n Sweep: \"sweep\",\n SweepERC20: \"sweepERC20\",\n SweepCCTP: \"sweepCCTP\",\n SweepUniswapV3: \"sweepUniswapV3\",\n SweepDepositAccount: \"sweepDepositAccount\",\n SweepDepositAccountERC20: \"sweepDepositAccountERC20\",\n DeactivateInstruction: \"deactivateInstruction\",\n SweepSkipCCTPDepositAccount: \"sweepSkipCCTPDepositAccount\",\n} as const;\nexport type InstructionAction =\n (typeof InstructionAction)[keyof typeof InstructionAction];\nexport const instructionActionValues = Object.values(InstructionAction) as [\n InstructionAction,\n ...InstructionAction[],\n];\nexport const instructionActionSchema = z.enum(instructionActionValues);\n\nexport const InstructionScheduleStartType = {\n Now: \"now\",\n DateTime: \"datetime\",\n} as const;\nexport type InstructionScheduleStartType =\n (typeof InstructionScheduleStartType)[keyof typeof InstructionScheduleStartType];\nexport const instructionScheduleStartValues = Object.values(\n InstructionScheduleStartType,\n) as [InstructionScheduleStartType, ...InstructionScheduleStartType[]];\nconst baseStartSchema = z.object({\n type: z.enum(instructionScheduleStartValues),\n});\nconst nowStartSchema = baseStartSchema.extend({\n type: z.literal(InstructionScheduleStartType.Now),\n});\nconst dateTimeStartSchema = baseStartSchema.extend({\n type: z.literal(InstructionScheduleStartType.DateTime),\n startDate: dateStandardSchema,\n startTime: z.string(),\n});\nexport const instructionScheduleStartSchema = z.discriminatedUnion(\"type\", [\n nowStartSchema,\n dateTimeStartSchema,\n]);\nexport type InstructionScheduleStart = z.infer<\n typeof instructionScheduleStartSchema\n>;\n\nexport const InstructionScheduleRepeatType = {\n UntilDeactivated: \"until-deactivated\",\n MaxExecutions: \"max-executions\",\n} as const;\nexport type InstructionScheduleRepeatType =\n (typeof InstructionScheduleRepeatType)[keyof typeof InstructionScheduleRepeatType];\nexport const instructionScheduleRepeatValues = Object.values(\n InstructionScheduleRepeatType,\n) as [InstructionScheduleRepeatType, ...InstructionScheduleRepeatType[]];\nconst baseRepeatSchema = z.object({});\nconst untilDeactivatedRepeatSchema = baseRepeatSchema.extend({\n type: z.literal(InstructionScheduleRepeatType.UntilDeactivated),\n});\nconst maxExecutionsRepeatSchema = baseRepeatSchema.extend({\n type: z.literal(InstructionScheduleRepeatType.MaxExecutions),\n maxExecutions: numberSchema,\n});\nexport const instructionScheduleRepeatSchema = z.discriminatedUnion(\"type\", [\n untilDeactivatedRepeatSchema,\n maxExecutionsRepeatSchema,\n]);\nexport type InstructionScheduleRepeat = z.infer<\n typeof instructionScheduleRepeatSchema\n>;\n\nexport const InstructionScheduleRetryType = {\n UntilDeactivated: \"until-deactivated\",\n TimeLimited: \"time-limited\",\n} as const;\nexport type InstructionScheduleRetryType =\n (typeof InstructionScheduleRetryType)[keyof typeof InstructionScheduleRetryType];\nexport const instructionScheduleRetryValues = Object.values(\n InstructionScheduleRetryType,\n) as [InstructionScheduleRetryType, ...InstructionScheduleRetryType[]];\nconst baseRetrySchema = z.object({});\nconst untilDeactivatedRetrySchema = baseRetrySchema.extend({\n type: z.literal(InstructionScheduleRetryType.UntilDeactivated),\n});\nconst timeLimitedRetrySchema = baseRetrySchema.extend({\n type: z.literal(InstructionScheduleRetryType.TimeLimited),\n retryCount: numberSchema,\n});\nexport const instructionScheduleRetrySchema = z.discriminatedUnion(\"type\", [\n untilDeactivatedRetrySchema,\n timeLimitedRetrySchema,\n]);\nexport type InstructionScheduleRetry = z.infer<\n typeof instructionScheduleRetrySchema\n>;\n\nexport const TimeUnit = {\n None: \"none\",\n Second: \"second\",\n Minute: \"minute\",\n Hour: \"hour\",\n Day: \"day\",\n Week: \"week\",\n Month: \"month\",\n} as const;\nexport type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit];\nexport const timeUnitValues = Object.values(TimeUnit) as [\n TimeUnit,\n ...TimeUnit[],\n];\nexport const timeUnitSchema = z.enum(timeUnitValues);\n\nexport const instructionExecutionStateSchema = z.object({\n executionStatus: instructionStateSchema.optional(),\n executionCounter: z.number().int().optional(),\n lastExecuted: z.number().int().optional(),\n});\n\nexport const instructionSchema = z.object({\n instructionId: hexStringSchema,\n createdAt: z.number().optional(),\n startAt: z.string().nullish(),\n interval: z.number().nullish(),\n timeout: z.number().nullish(),\n maxExecutions: z.number().nullish(),\n executionState: instructionExecutionStateSchema.optional(),\n actionName: z.string().optional(),\n arguments: z.any(),\n nickname: z.string().nullish(),\n lastInstructedValue: z.string().optional(),\n lastErrorCode: z.number().nullish(),\n lastErrorMessage: z.string().nullish(),\n totalInstructedValue: z.string().optional(),\n instructedTokenAddress: hexStringSchema.nullish(),\n chainId: z.number().nullish(),\n chain: z.string().optional(),\n});\nexport type Instruction = z.infer<typeof instructionSchema>;\n\nexport const instructionsSchema = z.array(instructionSchema);\nexport type Instructions = z.infer<typeof instructionsSchema>;\n\nexport const instructionSummarySchema = z.object({\n instructionId: hexStringSchema,\n chainId: z.number().int(),\n executionCount: z.number().int(),\n onTimeCount: z.number().int(),\n lateCount: z.number().int(),\n wasActivatedDuring: z.boolean(),\n amount: z.number().default(0),\n instructedValue: z.string().nullish().default(\"0\"),\n instructedTokenAddress: z.string().nullish().default(null),\n});\nexport type InstructionSummary = z.infer<typeof instructionSummarySchema>;\n\nexport const instructionSummariesSchema = z.array(instructionSummarySchema);\nexport type InstructionSummaries = z.infer<typeof instructionSummariesSchema>;\n\nexport const instructionSummariesByDateSchema = z.record(\n z.string(),\n instructionSummariesSchema,\n);\nexport type InstructionSummariesByDate = z.infer<\n typeof instructionSummariesByDateSchema\n>;\n\nexport const InstructionViewTimescale = {\n Days: \"days\",\n Hours: \"hours\",\n Minutes: \"minutes\",\n Seconds: \"seconds\",\n} as const;\nexport type InstructionViewTimescale =\n (typeof InstructionViewTimescale)[keyof typeof InstructionViewTimescale];\nexport const instructionViewTimescaleValues = Object.values(\n InstructionViewTimescale,\n) as [InstructionViewTimescale, ...InstructionViewTimescale[]];\n\nexport function assertInstructionAction(\n action: unknown,\n): asserts action is InstructionAction {\n if (!instructionActionValues.includes(action as InstructionAction)) {\n throw new Error(`Invalid instruction action: ${action}`);\n }\n}\n", "import { z } from \"zod\";\n\nexport const DATE_REGEX =\n /^(19|20)\\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$/;\nexport const DATE_ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?$/;\nexport const DATE_STANDARD_REGEX =\n /^(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])\\/(19|20)\\d{2}$/;\nexport const TIME_REGEX = /^(0[1-9]|1[0-2]):[0-5][0-9]:[0-5][0-9] (AM|PM)$/;\n\nexport const regexSchema = (regex: RegExp, message?: string) =>\n z.string().regex(regex, message);\n\nexport const nonEmptyStringSchema = z.string().min(1);\n\nexport const numberSchema = z.union([\n z.number().finite(),\n z\n .string()\n .regex(/^-?\\d*\\.?\\d+(?:[eE][-+]?\\d+)?$/)\n .transform(Number),\n]);\n\nexport const decimalStringSchema = z\n .string()\n .regex(/^-?\\d*\\.?\\d+$/)\n .refine((val) => !isNaN(parseFloat(val)), {\n message: \"Must be a valid decimal number\",\n });\n\nexport const bigintSchema = z.union([\n z.bigint(),\n z\n .string()\n .regex(/^-?\\d+$/)\n .transform(BigInt),\n]);\n\nexport const hexStringSchema = z\n .string()\n .startsWith(\"0x\")\n .transform((val): `0x${string}` => val as `0x${string}`);\n\nexport const dateSchema = regexSchema(DATE_REGEX);\nexport const dateISO8601Schema = regexSchema(DATE_ISO_8601_REGEX);\nexport const dateStandardSchema = regexSchema(DATE_STANDARD_REGEX);\n\nexport const timeSchema = regexSchema(TIME_REGEX);\n\nexport const Sort = {\n Asc: \"asc\",\n Desc: \"desc\",\n} as const;\nexport type Sort = (typeof Sort)[keyof typeof Sort];\nexport const sortValues = Object.values(Sort) as [Sort, ...Sort[]];\n\nexport const vrsSchema = z.object({\n v: z.number(),\n r: z.string(),\n s: z.string(),\n});\n\nexport const eip2098SignatureSchema = z.object({\n yParity: z.number(),\n r: z.string(),\n s: z.string(),\n});\n\nexport type HexString = z.infer<typeof hexStringSchema>;\nexport type Address = z.infer<typeof hexStringSchema>;\nexport type VRS = z.infer<typeof vrsSchema>;\nexport type EIP2098Signature = z.infer<typeof eip2098SignatureSchema>;\n", "/*\n * Extracts the base domain for WebAuthn RPID (Relying Party Identifier)\n * validation.\n *\n * WebAuthn requires the RPID to be a registrable domain suffix of the current\n * origin. This function normalizes hostnames to their base domains while\n * handling special cases.\n *\n * Examples:\n * - Production subdomains collapse to base domain:\n * getBaseDomain(\"app.otim.com\") -> \"otim.com\"\n * getBaseDomain(\"pay.otim.com\") -> \"otim.com\"\n *\n * - Multi-part TLDs return the registrable domain:\n * getBaseDomain(\"app.example.co.uk\") -> \"example.co.uk\"\n *\n * - Deployment platforms preserve full domain (cannot control .well-known\n * webauthn):\n * getBaseDomain(\"my-app.vercel.app\") -> \"my-app.vercel.app\"\n *\n * - Localhost preserves subdomains for local development:\n * getBaseDomain(\"app.localhost:3000\") -> \"app.localhost:3000\"\n */\nexport function getBaseDomain(hostname: string): string {\n /**\n * Localhost: Preserve full hostname since WebAuthn allows subdomain RPIDs in\n * development (app.localhost:3000, etc.)\n */\n if (hostname.includes(\"localhost\")) {\n return hostname;\n }\n\n const parts = hostname.split(\".\");\n\n if (parts.length < 2) {\n return hostname;\n }\n\n if (parts.length === 2) {\n return hostname;\n }\n\n const lastTwoParts = parts.slice(-2).join(\".\");\n\n // Multi-part TLDs (e.g., co.uk, com.au) - return 3-part registrable domain\n const traditionalMultiPartTlds = [\n \"co.uk\",\n \"com.au\",\n \"co.jp\",\n \"co.kr\",\n \"co.za\",\n \"co.in\",\n \"com.br\",\n \"com.mx\",\n \"com.ar\",\n \"com.cn\",\n \"com.tw\",\n \"org.uk\",\n \"net.uk\",\n \"ac.uk\",\n \"gov.uk\",\n ];\n\n if (traditionalMultiPartTlds.includes(lastTwoParts)) {\n return parts.slice(-3).join(\".\");\n }\n\n /**\n * Deployment platforms: Full domain required since we can't host .well-known\n * webauthn at the parent domain level (vercel.app, netlify.app, etc.)\n */\n const deploymentTlds = [\n \"vercel.app\",\n \"netlify.app\",\n \"github.io\",\n \"gitlab.io\",\n ];\n\n if (deploymentTlds.includes(lastTwoParts)) {\n return hostname;\n }\n\n // Default: Standard 2-part TLD (domain.tld)\n return parts.slice(-2).join(\".\");\n}\n", "import { z } from \"zod\";\n\nconst locales = [\"en\", \"es\"] as const;\n\nexport const i18n = {\n defaultLocale: \"en\",\n locales: [...locales],\n};\n\nexport const localeSchema = z.enum(locales);\n\nexport type Locale = z.infer<typeof localeSchema>;\n\nexport const formattedNumber = (num: number) => {\n if (!Number.isFinite(num)) {\n return \"0\";\n }\n\n return num.toLocaleString(\"en-US\");\n};\n\n/**\n * Formats a number as USD currency with proper locale formatting\n *\n * @param amount \u2013 The amount to format\n * @param options \u2013 Optional Intl.NumberFormatOptions to customize formatting\n * @returns \u2013 Formatted currency string (e.g., \"$1,234.56\")\n */\nexport const formatCurrency = (\n amount: number,\n options?: Intl.NumberFormatOptions,\n): string => {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...options,\n }).format(amount);\n};\n", "import type { MaskitoOptions } from \"@maskito/core\";\n\nimport {\n maskitoDateOptionsGenerator,\n maskitoTimeOptionsGenerator,\n} from \"@maskito/kit\";\n\nconst SHORT_FORM_POSTAL_MASK = [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\nconst LONG_FORM_POSTAL_MASK = [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \"-\",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n];\n\nexport const postalCodeMaskOptions: MaskitoOptions = {\n mask: (state) => {\n return state.value.length > 5\n ? LONG_FORM_POSTAL_MASK\n : SHORT_FORM_POSTAL_MASK;\n },\n};\n\nexport const dateMaskOptions = maskitoDateOptionsGenerator({\n mode: \"mm/dd/yyyy\",\n separator: \"/\",\n});\n\nexport const timeOptions = maskitoTimeOptionsGenerator({\n mode: \"HH:MM:SS AA\",\n});\n\nexport const timeOptionsWithoutMeridiem = maskitoTimeOptionsGenerator({\n mode: \"HH:MM:SS\",\n});\n\nexport const timeMaskOptionsHHMM = maskitoTimeOptionsGenerator({\n mode: \"HH:MM\",\n});\n\nexport const formatUUID = (value: string): string => {\n if (!value) {\n return \"\";\n }\n\n const cleanValue = value.replace(/[^0-9a-f-]/gi, \"\");\n const hexOnly = cleanValue.replace(/-/g, \"\");\n\n const limitedHex = hexOnly.slice(0, 32);\n\n if (limitedHex.length === 32) {\n return [\n limitedHex.slice(0, 8),\n limitedHex.slice(8, 12),\n limitedHex.slice(12, 16),\n limitedHex.slice(16, 20),\n limitedHex.slice(20, 32),\n ].join(\"-\");\n }\n\n let formatted = \"\";\n let index = 0;\n\n if (index < limitedHex.length) {\n const group1 = limitedHex.slice(\n index,\n Math.min(index + 8, limitedHex.length),\n );\n formatted += group1;\n index += 8;\n\n if (index <= limitedHex.length && group1.length === 8) {\n formatted += \"-\";\n }\n }\n\n if (index < limitedHex.length) {\n const group2 = limitedHex.slice(\n index,\n Math.min(index + 4, limitedHex.length),\n );\n formatted += group2;\n index += 4;\n\n if (index <= limitedHex.length && group2.length === 4) {\n formatted += \"-\";\n }\n }\n\n if (index < limitedHex.length) {\n const group3 = limitedHex.slice(\n index,\n Math.min(index + 4, limitedHex.length),\n );\n formatted += group3;\n index += 4;\n\n if (index <= limitedHex.length && group3.length === 4) {\n formatted += \"-\";\n }\n }\n\n if (index < limitedHex.length) {\n const group4 = limitedHex.slice(\n index,\n Math.min(index + 4, limitedHex.length),\n );\n formatted += group4;\n index += 4;\n\n if (index <= limitedHex.length && group4.length === 4) {\n formatted += \"-\";\n }\n }\n\n if (index < limitedHex.length) {\n formatted += limitedHex.slice(\n index,\n Math.min(index + 12, limitedHex.length),\n );\n }\n\n return formatted;\n};\n\nexport const uuidMaskOptions: MaskitoOptions = {\n mask: /^[0-9a-f-]*$/i,\n};\n\nexport const usdCurrencyMaskOptions: MaskitoOptions = {\n mask: /^[0-9., $]*$/,\n postprocessors: [\n (state) => {\n const selectionEnd = state.selection?.[1] ?? state.value.length;\n\n const numeric = state.value.replace(/[^0-9]/g, \"\");\n if (numeric.length === 0) {\n return { ...state, value: \"\", selection: [0, 0] };\n }\n\n // Clamp to max 9 digits to avoid huge jumps ($999,999,999.99)\n const clamped = numeric.slice(0, 11); // allow up to billions incl. cents\n const amount = Number(clamped) / 100;\n const formatted = amount.toLocaleString(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n\n // Try to keep the caret near where user typed; default to end\n const nextCaret = Math.min(\n formatted.length,\n selectionEnd + (formatted.length - state.value.length),\n );\n\n return { ...state, value: formatted, selection: [nextCaret, nextCaret] };\n },\n ],\n};\n", "export const numFormatter = (num: number, round?: number) => {\n if (num >= 1000 && num < 1000000) {\n return `${(num / 1000).toFixed(typeof round === \"number\" ? round : num % 1000 === 0 ? 0 : 1)}K`;\n }\n\n if (num >= 1000000 && num < 1.0e9) {\n return `${(num / 1000000).toFixed(typeof round === \"number\" ? round : num % 1000000 === 0 ? 0 : 2)}M`;\n }\n\n if (num > 1.0e9) {\n return `${(num / 1.0e9).toFixed(typeof round === \"number\" ? round : num % 1.0e9 === 0 ? 0 : 2)}B`;\n }\n\n return Number(\n Number(num).toFixed(\n typeof round === \"number\" ? round : (num * 100) % 100 === 0 ? 0 : 2,\n ),\n );\n};\n\nexport const formatNumberAsUSStandard = (num: number) => {\n return num.toLocaleString(\"en-US\", {\n maximumSignificantDigits: 3,\n });\n};\n", "import type { Nullable } from \"./types\";\n\nimport { logger } from \"./logger\";\n\nexport const isClient = (): boolean =>\n typeof globalThis !== \"undefined\" && \"window\" in globalThis;\n\n/**\n * Configuration for emergent window\n */\nexport interface EmergentWindowConfig {\n width?: number;\n height?: number;\n name?: string;\n}\n\n/**\n * Default emergent window configuration\n */\nconst DEFAULT_EMERGENT_WINDOW_CONFIG: Required<EmergentWindowConfig> = {\n width: 480,\n height: 720,\n name: \"emergent_window\",\n};\n\n/**\n * Opens an emergent window centered on the screen.\n * Used for authentication flows and external integrations.\n *\n * @param url - The URL to open in the emergent window\n * @param config - Optional configuration for the window\n * @returns The opened window or null if it failed\n */\nexport function openCenteredEmergentWindow(\n url: string,\n config: EmergentWindowConfig = {},\n): Nullable<Window> {\n if (!isClient()) {\n return null;\n }\n\n const { width, height, name } = {\n ...DEFAULT_EMERGENT_WINDOW_CONFIG,\n ...config,\n };\n\n const screenLeft = window.screenLeft ?? window.screenX ?? 0;\n const screenTop = window.screenTop ?? window.screenY ?? 0;\n const viewportWidth =\n window.innerWidth || document.documentElement.clientWidth || screen.width;\n const viewportHeight =\n window.innerHeight ||\n document.documentElement.clientHeight ||\n screen.height;\n\n const left = Math.max(0, screenLeft + (viewportWidth - width) / 2);\n const top = Math.max(0, screenTop + (viewportHeight - height) / 2);\n\n const features = [\n \"noopener\",\n \"noreferrer\",\n `width=${width}`,\n `height=${height}`,\n `left=${left}`,\n `top=${top}`,\n \"menubar=no\",\n \"toolbar=no\",\n \"location=no\",\n \"status=no\",\n \"scrollbars=yes\",\n ].join(\",\");\n\n const emergentWindow = window.open(url, name, features);\n\n try {\n emergentWindow?.focus();\n } catch (error) {\n // Ignore focus errors in cross-origin scenarios\n logger.logError(error, {\n context: openCenteredEmergentWindow.name,\n });\n }\n\n return emergentWindow ?? null;\n}\n\n/**\n * Closes an emergent window safely\n *\n * @param emergentWindow - The emergent window to close\n */\nexport function closeEmergentWindow(emergentWindow: Nullable<Window>): void {\n if (!emergentWindow) return;\n\n try {\n emergentWindow.close();\n } catch (error) {\n logger.logError(error, {\n context: closeEmergentWindow.name,\n });\n }\n}\n\n/**\n * Returns focus to the main window\n */\nexport function focusMainWindow(): void {\n if (!isClient()) return;\n\n try {\n window.focus();\n } catch (error) {\n // Ignore focus errors in cross-origin scenarios\n logger.logError(error, {\n context: focusMainWindow.name,\n });\n }\n}\n\n/**\n * Performs a client-side redirect to the specified path\n *\n * @param path - The path to redirect to\n * @param fallbackPath - Optional fallback path if the main path is empty\n */\nexport function performRedirect(\n path: string,\n fallbackPath: string = \"/\",\n): void {\n if (!isClient()) return;\n\n const redirectPath = path || fallbackPath;\n window.location.href = redirectPath;\n}\n", "import type { Nullable } from \"./types\";\n\nimport { logger } from \"./logger\";\nimport { closeEmergentWindow, focusMainWindow } from \"./window\";\n\n/**\n * Configuration for polling behavior\n */\nexport interface PollingConfig {\n intervalMs?: number;\n onComplete?: () => void;\n}\n\n/**\n * Default polling configuration\n */\nconst DEFAULT_POLLING_CONFIG: Required<PollingConfig> = {\n intervalMs: 1000,\n onComplete: () => {},\n};\n\n/**\n * Manages polling for emergent window completion status.\n * Generic utility that can be used for any async polling scenario.\n * Follows Single Responsibility Principle - only handles polling logic.\n */\nexport class PollingManager {\n private emergentWindow: Nullable<Window> = null;\n private pollIntervalId: Nullable<number> = null;\n private config: Required<PollingConfig>;\n\n constructor(config: PollingConfig = {}) {\n this.config = { ...DEFAULT_POLLING_CONFIG, ...config };\n }\n\n /**\n * Starts polling for the given check function\n *\n * @param emergentWindow - The emergent window to monitor (optional)\n * @param checkFn - Function that returns true when polling should stop\n */\n start(\n emergentWindow: Nullable<Window>,\n checkFn: () => Promise<boolean>,\n ): void {\n this.emergentWindow = emergentWindow;\n this.stop();\n\n this.pollIntervalId = window.setInterval(() => {\n void (async () => {\n try {\n const isComplete = await checkFn();\n if (isComplete) {\n this.finalize();\n this.config.onComplete();\n }\n } catch (error) {\n logger.logError(error, {\n context: this.start.name,\n });\n }\n })();\n }, this.config.intervalMs);\n }\n\n /**\n * Stops polling and cleans up resources\n */\n stop(): void {\n if (this.pollIntervalId !== null) {\n clearInterval(this.pollIntervalId);\n this.pollIntervalId = null;\n }\n }\n\n /**\n * Finalizes polling by closing emergent window, stopping interval, and returning focus\n */\n finalize(): void {\n closeEmergentWindow(this.emergentWindow);\n this.emergentWindow = null;\n this.stop();\n focusMainWindow();\n }\n\n /**\n * Cleans up resources\n */\n dispose(): void {\n this.finalize();\n }\n}\n", "interface Range {\n min: number;\n max: number;\n}\n\ninterface GenerateRandom extends Range {\n value: string;\n}\n\nexport const randomNumber = (opts: GenerateRandom): number => {\n const { value, min, max } = opts;\n\n let hash = 0;\n for (let i = 0; i < value.length; i++) {\n hash = (hash << 5) - hash + value.charCodeAt(i);\n hash |= 0;\n }\n\n const normalizedHash = Math.abs(hash);\n return Math.floor(normalizedHash % (max - min + 1)) + min;\n};\n", "/**\n * Configuration for loading external SDK scripts\n */\nexport interface SdkLoaderConfig {\n src: string;\n name: string;\n timeout?: number;\n}\n\n/**\n * Default timeout for SDK loading (10 seconds)\n */\nconst DEFAULT_SDK_TIMEOUT = 10000;\n\n/**\n * Generic SDK loader utility for loading third-party scripts\n * Follows Single Responsibility Principle - only handles script loading\n *\n * @param config - SDK loader configuration\n * @returns Promise that resolves when SDK is loaded\n * @throws Error if SDK fails to load or times out\n */\nexport async function loadExternalSdk(config: SdkLoaderConfig): Promise<void> {\n if (typeof window === \"undefined\") {\n throw new Error(`${config.name} SDK can only be loaded in the browser`);\n }\n\n const timeout = config.timeout ?? DEFAULT_SDK_TIMEOUT;\n\n return new Promise<void>((resolve, reject) => {\n // Set up timeout\n const timeoutId = setTimeout(() => {\n reject(\n new Error(`${config.name} SDK loading timed out after ${timeout}ms`),\n );\n }, timeout);\n\n // Create and load script\n const script = document.createElement(\"script\");\n script.src = config.src;\n script.async = true;\n\n script.onload = () => {\n clearTimeout(timeoutId);\n resolve();\n };\n\n script.onerror = () => {\n clearTimeout(timeoutId);\n reject(new Error(`Failed to load ${config.name} SDK from ${config.src}`));\n };\n\n document.body.appendChild(script);\n });\n}\n\n/**\n * Checks if a script with the given src is already loaded\n *\n * @param src - Script source URL to check\n * @returns true if script is already in the DOM\n */\nexport function isScriptLoaded(src: string): boolean {\n if (typeof window === \"undefined\") {\n return false;\n }\n\n const scripts = document.getElementsByTagName(\"script\");\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i]?.src === src) {\n return true;\n }\n }\n return false;\n}\n", "/**\n * EIP-2098 Signature format (compact)\n */\nexport interface EIP2098Signature {\n yParity: number;\n r: `0x${string}`;\n s: `0x${string}`;\n}\n\n/**\n * Converts a standard signature to EIP-2098 format\n */\nexport const formatSignatureToEIP2098 = (signature: {\n v: string;\n r: string;\n s: string;\n}): EIP2098Signature => {\n const ensureHexPrefix = (value: string): `0x${string}` =>\n value.startsWith(\"0x\") ? (value as `0x${string}`) : `0x${value}`;\n\n // Normalize v to EIP-2098 yParity (0 or 1)\n const vNum = Number.parseInt(signature.v, 16);\n const yParity = (() => {\n if (Number.isNaN(vNum)) return 0;\n // v in {0,1} already parity; v in {27,28} -> 27->0, 28->1; v>=35 -> v%2\n if (vNum <= 1) return vNum;\n return vNum % 2 === 0 ? 1 : 0;\n })();\n\n return {\n yParity,\n r: ensureHexPrefix(signature.r),\n s: ensureHexPrefix(signature.s),\n };\n};\n", "import type { Optional } from \"./types\";\n\n/**\n * Capitalizes the first letter of a string\n *\n * @param str \u2013 The string to capitalize\n * @returns The string with first letter capitalized, or undefined if input is\n * nullish\n */\nexport const capitalize = (str?: string): Optional<string> => {\n if (!str) return str;\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n/**\n * Converts a string to title case (capitalizes first letter, lowercase rest)\n *\n * @param str \u2013 The string to convert\n * @returns The string in title case, or undefined if input is nullish\n */\nexport const toTitleCase = (str?: string): Optional<string> => {\n if (!str) return str;\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n};\n", "import type { z, ZodObject } from \"zod\";\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = T | null | undefined;\nexport type Optional<T> = T | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any is ok\nexport type Any = any;\n\nexport type NumberOrString = number | string;\n\nexport type OverrideProps<T, TOverridden> = Omit<T, keyof TOverridden> &\n TOverridden;\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport interface DataRecord {\n [value: string]: Nullish<DataRecord | string | number | boolean>;\n}\n\nexport interface Input<T> {\n input: T;\n}\n\nexport type ZodCustom<Values extends object> = ZodObject<{\n [P in keyof Values]: z.ZodType<Values[P]>;\n}>;\n\nexport const isError = (value: unknown): value is Error =>\n value instanceof Error;\n\nexport const isFunction = (\n value: unknown,\n): value is (...args: unknown[]) => unknown => typeof value === \"function\";\n\nexport const isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n\nexport const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\nexport const isUndefined = (value: unknown): value is undefined =>\n typeof value === \"undefined\";\n\nexport const isBoolean = (value: unknown): value is boolean =>\n typeof value === \"boolean\";\n\n/**\n * Safely extracts a string from an unknown value.\n * @param value - The value to extract from\n * @param fallback - Optional fallback value if extraction fails\n * @returns The extracted string or fallback/undefined\n */\nexport const extractString = (\n value: unknown,\n fallback?: string,\n): Optional<string> => {\n return isString(value) ? value : fallback;\n};\n\n/**\n * Safely extracts a number from an unknown value.\n * Handles both number and string representations.\n * @param value - The value to extract from\n * @returns The extracted number or undefined\n */\nexport const extractNumber = (value: unknown): Optional<number> => {\n if (isNumber(value)) {\n return value;\n }\n\n if (isString(value)) {\n const parsed = Number.parseFloat(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n return undefined;\n};\n", "export type QueryParams = Record<\n string,\n string | number | boolean | null | undefined\n>;\n\n/**\n * Builds a query string from a params object, skipping undefined/null values.\n * Encodes using encodeURIComponent. Returns empty string if no params.\n */\nexport function buildQueryString(params: QueryParams): string {\n const usp = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value === undefined || value === null) return;\n usp.set(key, String(value));\n });\n const qs = usp.toString();\n return qs ? `?${qs}` : \"\";\n}\n\n/**\n * Build a URL by combining a base path with optional query params.\n */\nexport function buildUrl(path: string, params?: QueryParams): string {\n const qs = params ? buildQueryString(params) : \"\";\n return `${path}${qs}`;\n}\n", "import type { ZodObject, ZodTypeAny } from \"zod\";\n\nimport { z } from \"zod\";\n\nimport { getSecondsFromTimeUnitValue, parseTimeUnitValue } from \"./datetime\";\n\nexport type Validator<T> = (data: T, ctx: z.RefinementCtx) => void;\n\nexport const composeValidators = <T>(validators: Validator<T>[]) => {\n return (data: T, ctx: z.RefinementCtx) => {\n for (const validator of validators) {\n validator(data, ctx);\n }\n };\n};\n\n// convert seconds to human-readable format.\nconst secondsToHumanReadable = (seconds: number): string => {\n if (seconds >= 3600) {\n const hours = seconds / 3600;\n const roundedHours = Math.round(hours * 10) / 10;\n return roundedHours === 1 ? \"1 hour\" : `${roundedHours} hours`;\n } else if (seconds >= 60) {\n const minutes = seconds / 60;\n const roundedMinutes = Math.round(minutes * 10) / 10;\n return roundedMinutes === 1 ? \"1 minute\" : `${roundedMinutes} minutes`;\n } else {\n return seconds === 1 ? \"1 second\" : `${seconds} seconds`;\n }\n};\n\n/**\n * creates a time unit validator for fields stored as JSON strings.\n * validates both the JSON format and the minimum seconds requirement.\n *\n * @param fieldName \u2013 the name of the field for error messages\n * @param options \u2013 configuration options\n * @param options.minSeconds \u2013 minimum seconds required (default: 60)\n * @param options.allowZero \u2013 whether to allow 0 seconds for \"None\" option (default: false)\n * @param options.useHumanReadable \u2013 whether to use human-readable time in error messages (default: true)\n */\nexport const createTimeUnitValidator = (\n fieldName: string,\n options: {\n minSeconds?: number;\n allowZero?: boolean;\n useHumanReadable?: boolean;\n } = {},\n) => {\n const {\n minSeconds = 60,\n allowZero = false,\n useHumanReadable = true,\n } = options;\n\n return z\n .string()\n .optional()\n .refine(\n (value) => {\n if (!value) return true;\n\n // try to parse the value.\n const parsed = parseTimeUnitValue(value);\n if (!parsed) return false;\n\n // validate minimum seconds, allowing 0 for \"none\" option if specified\n const seconds = getSecondsFromTimeUnitValue(parsed);\n return allowZero ? seconds >= 0 : seconds >= minSeconds;\n },\n {\n message: useHumanReadable\n ? `${fieldName} must be at least ${secondsToHumanReadable(minSeconds)}`\n : `${fieldName} must be at least ${minSeconds} seconds`,\n },\n );\n};\n\n/**\n * Parse the input values using the provided schema. If the input values are\n * invalid, throw a ResolverError.\n * @param values - The input values to parse.\n * @param schema - The schema to use to parse the input values.\n * @param error - The error code to use if the input values are invalid.\n * @returns The parsed input values.\n * @throws ResolverError if the input values are invalid.\n */\nexport const parseSchema = <\n Values,\n Schema extends ZodTypeAny = ZodObject<{\n [P in keyof Values]: z.ZodType<Values[P]>;\n }>,\n>(\n values: Values,\n schema: Schema,\n): z.infer<Schema> => {\n const inputValues = schema.safeParse(values);\n if (!inputValues.success) {\n throw new Error(\n `parseSchema: invalid input values ${JSON.stringify(inputValues.error)}`,\n );\n }\n\n return inputValues.data as z.infer<Schema>;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["chain", "timeOptions", "z", "z", "z", "z", "TimeUnit", "z", "z", "z", "z"]
7
+ }
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ export declare const i18n: {
3
+ defaultLocale: string;
4
+ locales: ("en" | "es")[];
5
+ };
6
+ export declare const localeSchema: z.ZodEnum<{
7
+ en: "en";
8
+ es: "es";
9
+ }>;
10
+ export type Locale = z.infer<typeof localeSchema>;
11
+ export declare const formattedNumber: (num: number) => string;
12
+ /**
13
+ * Formats a number as USD currency with proper locale formatting
14
+ *
15
+ * @param amount – The amount to format
16
+ * @param options – Optional Intl.NumberFormatOptions to customize formatting
17
+ * @returns – Formatted currency string (e.g., "$1,234.56")
18
+ */
19
+ export declare const formatCurrency: (amount: number, options?: Intl.NumberFormatOptions) => string;
20
+ //# sourceMappingURL=intl.d.ts.map
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ export declare const i18n: {
3
+ defaultLocale: string;
4
+ locales: ("en" | "es")[];
5
+ };
6
+ export declare const localeSchema: z.ZodEnum<{
7
+ en: "en";
8
+ es: "es";
9
+ }>;
10
+ export type Locale = z.infer<typeof localeSchema>;
11
+ export declare const formattedNumber: (num: number) => string;
12
+ /**
13
+ * Formats a number as USD currency with proper locale formatting
14
+ *
15
+ * @param amount – The amount to format
16
+ * @param options – Optional Intl.NumberFormatOptions to customize formatting
17
+ * @returns – Formatted currency string (e.g., "$1,234.56")
18
+ */
19
+ export declare const formatCurrency: (amount: number, options?: Intl.NumberFormatOptions) => string;
20
+ //# sourceMappingURL=intl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intl.d.ts","sourceRoot":"","sources":["../../src/helpers/intl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,IAAI;;;CAGhB,CAAC;AAEF,eAAO,MAAM,YAAY;;;EAAkB,CAAC;AAE5C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,WAM1C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,UAAU,IAAI,CAAC,mBAAmB,KACjC,MAQF,CAAC"}
@@ -0,0 +1,26 @@
1
+ interface LoggerOptions {
2
+ context?: string;
3
+ data?: unknown;
4
+ }
5
+ interface ErrorLogOptions {
6
+ context?: string;
7
+ operation?: string;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ declare class Logger {
11
+ private isDevelopment;
12
+ debug(message: string, options?: LoggerOptions): void;
13
+ info(message: string, options?: LoggerOptions): void;
14
+ warn(message: string, options?: LoggerOptions): void;
15
+ error(message: string, options?: LoggerOptions): void;
16
+ /**
17
+ * Log errors with context - useful for non-API errors
18
+ * For API errors, use the existing getErrorMessage from @otim/utils/api
19
+ */
20
+ logError(error: unknown, options?: ErrorLogOptions): void;
21
+ private buildPrefix;
22
+ private log;
23
+ }
24
+ export declare const logger: Logger;
25
+ export {};
26
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1,26 @@
1
+ interface LoggerOptions {
2
+ context?: string;
3
+ data?: unknown;
4
+ }
5
+ interface ErrorLogOptions {
6
+ context?: string;
7
+ operation?: string;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ declare class Logger {
11
+ private isDevelopment;
12
+ debug(message: string, options?: LoggerOptions): void;
13
+ info(message: string, options?: LoggerOptions): void;
14
+ warn(message: string, options?: LoggerOptions): void;
15
+ error(message: string, options?: LoggerOptions): void;
16
+ /**
17
+ * Log errors with context - useful for non-API errors
18
+ * For API errors, use the existing getErrorMessage from @otim/utils/api
19
+ */
20
+ logError(error: unknown, options?: ErrorLogOptions): void;
21
+ private buildPrefix;
22
+ private log;
23
+ }
24
+ export declare const logger: Logger;
25
+ export {};
26
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/helpers/logger.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,cAAM,MAAM;IACV,OAAO,CAAC,aAAa,CAAgC;IAErD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAMrD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAIpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAIpD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAIrD;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI;IA6B7D,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,GAAG;CAqBZ;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { MaskitoOptions } from "@maskito/core";
2
+ export declare const postalCodeMaskOptions: MaskitoOptions;
3
+ export declare const dateMaskOptions: Required<MaskitoOptions>;
4
+ export declare const timeOptions: Required<MaskitoOptions>;
5
+ export declare const timeOptionsWithoutMeridiem: Required<MaskitoOptions>;
6
+ export declare const timeMaskOptionsHHMM: Required<MaskitoOptions>;
7
+ export declare const formatUUID: (value: string) => string;
8
+ export declare const uuidMaskOptions: MaskitoOptions;
9
+ export declare const usdCurrencyMaskOptions: MaskitoOptions;
10
+ //# sourceMappingURL=mask-options.d.ts.map
@@ -0,0 +1,10 @@
1
+ import type { MaskitoOptions } from "@maskito/core";
2
+ export declare const postalCodeMaskOptions: MaskitoOptions;
3
+ export declare const dateMaskOptions: Required<MaskitoOptions>;
4
+ export declare const timeOptions: Required<MaskitoOptions>;
5
+ export declare const timeOptionsWithoutMeridiem: Required<MaskitoOptions>;
6
+ export declare const timeMaskOptionsHHMM: Required<MaskitoOptions>;
7
+ export declare const formatUUID: (value: string) => string;
8
+ export declare const uuidMaskOptions: MaskitoOptions;
9
+ export declare const usdCurrencyMaskOptions: MaskitoOptions;
10
+ //# sourceMappingURL=mask-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask-options.d.ts","sourceRoot":"","sources":["../../src/helpers/mask-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAqBpD,eAAO,MAAM,qBAAqB,EAAE,cAMnC,CAAC;AAEF,eAAO,MAAM,eAAe,0BAG1B,CAAC;AAEH,eAAO,MAAM,WAAW,0BAEtB,CAAC;AAEH,eAAO,MAAM,0BAA0B,0BAErC,CAAC;AAEH,eAAO,MAAM,mBAAmB,0BAE9B,CAAC;AAEH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAmF1C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAE7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cA8BpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const numFormatter: (num: number, round?: number) => string | number;
2
+ export declare const formatNumberAsUSStandard: (num: number) => string;
3
+ //# sourceMappingURL=num-formatter.d.ts.map
@@ -0,0 +1,3 @@
1
+ export declare const numFormatter: (num: number, round?: number) => string | number;
2
+ export declare const formatNumberAsUSStandard: (num: number) => string;
3
+ //# sourceMappingURL=num-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"num-formatter.d.ts","sourceRoot":"","sources":["../../src/helpers/num-formatter.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,oBAkBvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,KAAK,MAAM,WAInD,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { Nullable } from "./types";
2
+ /**
3
+ * Configuration for polling behavior
4
+ */
5
+ export interface PollingConfig {
6
+ intervalMs?: number;
7
+ onComplete?: () => void;
8
+ }
9
+ /**
10
+ * Manages polling for emergent window completion status.
11
+ * Generic utility that can be used for any async polling scenario.
12
+ * Follows Single Responsibility Principle - only handles polling logic.
13
+ */
14
+ export declare class PollingManager {
15
+ private emergentWindow;
16
+ private pollIntervalId;
17
+ private config;
18
+ constructor(config?: PollingConfig);
19
+ /**
20
+ * Starts polling for the given check function
21
+ *
22
+ * @param emergentWindow - The emergent window to monitor (optional)
23
+ * @param checkFn - Function that returns true when polling should stop
24
+ */
25
+ start(emergentWindow: Nullable<Window>, checkFn: () => Promise<boolean>): void;
26
+ /**
27
+ * Stops polling and cleans up resources
28
+ */
29
+ stop(): void;
30
+ /**
31
+ * Finalizes polling by closing emergent window, stopping interval, and returning focus
32
+ */
33
+ finalize(): void;
34
+ /**
35
+ * Cleans up resources
36
+ */
37
+ dispose(): void;
38
+ }
39
+ //# sourceMappingURL=polling.d.ts.map
@@ -0,0 +1,39 @@
1
+ import type { Nullable } from "./types";
2
+ /**
3
+ * Configuration for polling behavior
4
+ */
5
+ export interface PollingConfig {
6
+ intervalMs?: number;
7
+ onComplete?: () => void;
8
+ }
9
+ /**
10
+ * Manages polling for emergent window completion status.
11
+ * Generic utility that can be used for any async polling scenario.
12
+ * Follows Single Responsibility Principle - only handles polling logic.
13
+ */
14
+ export declare class PollingManager {
15
+ private emergentWindow;
16
+ private pollIntervalId;
17
+ private config;
18
+ constructor(config?: PollingConfig);
19
+ /**
20
+ * Starts polling for the given check function
21
+ *
22
+ * @param emergentWindow - The emergent window to monitor (optional)
23
+ * @param checkFn - Function that returns true when polling should stop
24
+ */
25
+ start(emergentWindow: Nullable<Window>, checkFn: () => Promise<boolean>): void;
26
+ /**
27
+ * Stops polling and cleans up resources
28
+ */
29
+ stop(): void;
30
+ /**
31
+ * Finalizes polling by closing emergent window, stopping interval, and returning focus
32
+ */
33
+ finalize(): void;
34
+ /**
35
+ * Cleans up resources
36
+ */
37
+ dispose(): void;
38
+ }
39
+ //# sourceMappingURL=polling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/helpers/polling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAUD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,GAAE,aAAkB;IAItC;;;;;OAKG;IACH,KAAK,CACH,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,EAChC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC9B,IAAI;IAqBP;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,QAAQ,IAAI,IAAI;IAOhB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,10 @@
1
+ interface Range {
2
+ min: number;
3
+ max: number;
4
+ }
5
+ interface GenerateRandom extends Range {
6
+ value: string;
7
+ }
8
+ export declare const randomNumber: (opts: GenerateRandom) => number;
9
+ export {};
10
+ //# sourceMappingURL=random.d.ts.map
@@ -0,0 +1,10 @@
1
+ interface Range {
2
+ min: number;
3
+ max: number;
4
+ }
5
+ interface GenerateRandom extends Range {
6
+ value: string;
7
+ }
8
+ export declare const randomNumber: (opts: GenerateRandom) => number;
9
+ export {};
10
+ //# sourceMappingURL=random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/helpers/random.ts"],"names":[],"mappings":"AAAA,UAAU,KAAK;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,cAAe,SAAQ,KAAK;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,GAAI,MAAM,cAAc,KAAG,MAWnD,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Configuration for loading external SDK scripts
3
+ */
4
+ export interface SdkLoaderConfig {
5
+ src: string;
6
+ name: string;
7
+ timeout?: number;
8
+ }
9
+ /**
10
+ * Generic SDK loader utility for loading third-party scripts
11
+ * Follows Single Responsibility Principle - only handles script loading
12
+ *
13
+ * @param config - SDK loader configuration
14
+ * @returns Promise that resolves when SDK is loaded
15
+ * @throws Error if SDK fails to load or times out
16
+ */
17
+ export declare function loadExternalSdk(config: SdkLoaderConfig): Promise<void>;
18
+ /**
19
+ * Checks if a script with the given src is already loaded
20
+ *
21
+ * @param src - Script source URL to check
22
+ * @returns true if script is already in the DOM
23
+ */
24
+ export declare function isScriptLoaded(src: string): boolean;
25
+ //# sourceMappingURL=sdk-loader.d.ts.map
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Configuration for loading external SDK scripts
3
+ */
4
+ export interface SdkLoaderConfig {
5
+ src: string;
6
+ name: string;
7
+ timeout?: number;
8
+ }
9
+ /**
10
+ * Generic SDK loader utility for loading third-party scripts
11
+ * Follows Single Responsibility Principle - only handles script loading
12
+ *
13
+ * @param config - SDK loader configuration
14
+ * @returns Promise that resolves when SDK is loaded
15
+ * @throws Error if SDK fails to load or times out
16
+ */
17
+ export declare function loadExternalSdk(config: SdkLoaderConfig): Promise<void>;
18
+ /**
19
+ * Checks if a script with the given src is already loaded
20
+ *
21
+ * @param src - Script source URL to check
22
+ * @returns true if script is already in the DOM
23
+ */
24
+ export declare function isScriptLoaded(src: string): boolean;
25
+ //# sourceMappingURL=sdk-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-loader.d.ts","sourceRoot":"","sources":["../../src/helpers/sdk-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYnD"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * EIP-2098 Signature format (compact)
3
+ */
4
+ export interface EIP2098Signature {
5
+ yParity: number;
6
+ r: `0x${string}`;
7
+ s: `0x${string}`;
8
+ }
9
+ /**
10
+ * Converts a standard signature to EIP-2098 format
11
+ */
12
+ export declare const formatSignatureToEIP2098: (signature: {
13
+ v: string;
14
+ r: string;
15
+ s: string;
16
+ }) => EIP2098Signature;
17
+ //# sourceMappingURL=signatures.d.ts.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * EIP-2098 Signature format (compact)
3
+ */
4
+ export interface EIP2098Signature {
5
+ yParity: number;
6
+ r: `0x${string}`;
7
+ s: `0x${string}`;
8
+ }
9
+ /**
10
+ * Converts a standard signature to EIP-2098 format
11
+ */
12
+ export declare const formatSignatureToEIP2098: (signature: {
13
+ v: string;
14
+ r: string;
15
+ s: string;
16
+ }) => EIP2098Signature;
17
+ //# sourceMappingURL=signatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../src/helpers/signatures.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,WAAW;IAClD,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,KAAG,gBAkBH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Optional } from "./types";
2
+ /**
3
+ * Capitalizes the first letter of a string
4
+ *
5
+ * @param str – The string to capitalize
6
+ * @returns The string with first letter capitalized, or undefined if input is
7
+ * nullish
8
+ */
9
+ export declare const capitalize: (str?: string) => Optional<string>;
10
+ /**
11
+ * Converts a string to title case (capitalizes first letter, lowercase rest)
12
+ *
13
+ * @param str – The string to convert
14
+ * @returns The string in title case, or undefined if input is nullish
15
+ */
16
+ export declare const toTitleCase: (str?: string) => Optional<string>;
17
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1,17 @@
1
+ import type { Optional } from "./types";
2
+ /**
3
+ * Capitalizes the first letter of a string
4
+ *
5
+ * @param str – The string to capitalize
6
+ * @returns The string with first letter capitalized, or undefined if input is
7
+ * nullish
8
+ */
9
+ export declare const capitalize: (str?: string) => Optional<string>;
10
+ /**
11
+ * Converts a string to title case (capitalizes first letter, lowercase rest)
12
+ *
13
+ * @param str – The string to convert
14
+ * @returns The string in title case, or undefined if input is nullish
15
+ */
16
+ export declare const toTitleCase: (str?: string) => Optional<string>;
17
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/helpers/string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,QAAQ,CAAC,MAAM,CAGxD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,QAAQ,CAAC,MAAM,CAGzD,CAAC"}