@n1xyz/wallet-widget 0.0.8 → 0.0.10

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 (514) hide show
  1. package/dist/Logic/getPseudoName.js +1 -0
  2. package/dist/Logic/getPseudoName.js.map +1 -0
  3. package/dist/Logic/sessionManager.js +1 -0
  4. package/dist/Logic/sessionManager.js.map +1 -0
  5. package/dist/Logic/transactionManager.js +1 -0
  6. package/dist/Logic/transactionManager.js.map +1 -0
  7. package/dist/Logic/utils.js +1 -0
  8. package/dist/Logic/utils.js.map +1 -0
  9. package/dist/Logic/words.js +1 -0
  10. package/dist/Logic/words.js.map +1 -0
  11. package/dist/Modal/LoadingFallback.js +2 -1
  12. package/dist/Modal/LoadingFallback.js.map +1 -0
  13. package/dist/Modal/N1WalletModal.js +5 -5
  14. package/dist/Modal/N1WalletModal.js.map +1 -0
  15. package/dist/Modal/NTSFlow/LoadingFallback.js +2 -1
  16. package/dist/Modal/NTSFlow/LoadingFallback.js.map +1 -0
  17. package/dist/Modal/NTSFlow/NTSFlow.js +1 -0
  18. package/dist/Modal/NTSFlow/NTSFlow.js.map +1 -0
  19. package/dist/Modal/NTSFlow/components/BackButton.js +3 -2
  20. package/dist/Modal/NTSFlow/components/BackButton.js.map +1 -0
  21. package/dist/Modal/NTSFlow/components/ModalHeader.js +2 -1
  22. package/dist/Modal/NTSFlow/components/ModalHeader.js.map +1 -0
  23. package/dist/Modal/NTSFlow/index.js +1 -0
  24. package/dist/Modal/NTSFlow/index.js.map +1 -0
  25. package/dist/Modal/NTSFlow/views/ConnectView.js +3 -2
  26. package/dist/Modal/NTSFlow/views/ConnectView.js.map +1 -0
  27. package/dist/Modal/NTSFlow/views/CreateSessionView.js +6 -5
  28. package/dist/Modal/NTSFlow/views/CreateSessionView.js.map +1 -0
  29. package/dist/Modal/NTSFlow/views/CreateUserView.js +2 -1
  30. package/dist/Modal/NTSFlow/views/CreateUserView.js.map +1 -0
  31. package/dist/Modal/NTSFlow/views/NoWhitelistView.js +4 -3
  32. package/dist/Modal/NTSFlow/views/NoWhitelistView.js.map +1 -0
  33. package/dist/Modal/NTSFlow/views/SigningView.js +2 -1
  34. package/dist/Modal/NTSFlow/views/SigningView.js.map +1 -0
  35. package/dist/Modal/NTSFlow/views/SuccessView.js +1 -0
  36. package/dist/Modal/NTSFlow/views/SuccessView.js.map +1 -0
  37. package/dist/Modal/NordFlow/NordFlow.js +8 -12
  38. package/dist/Modal/NordFlow/NordFlow.js.map +1 -0
  39. package/dist/Modal/NordFlow/components/ChainButton.js +6 -5
  40. package/dist/Modal/NordFlow/components/ChainButton.js.map +1 -0
  41. package/dist/Modal/NordFlow/components/EVMChainsButton.js +5 -4
  42. package/dist/Modal/NordFlow/components/EVMChainsButton.js.map +1 -0
  43. package/dist/Modal/NordFlow/components/ImageWithFallback.js +2 -1
  44. package/dist/Modal/NordFlow/components/ImageWithFallback.js.map +1 -0
  45. package/dist/Modal/NordFlow/components/LoadingSquares.js +2 -1
  46. package/dist/Modal/NordFlow/components/LoadingSquares.js.map +1 -0
  47. package/dist/Modal/NordFlow/components/MoreButton.js +5 -4
  48. package/dist/Modal/NordFlow/components/MoreButton.js.map +1 -0
  49. package/dist/Modal/NordFlow/components/TransactionTable.js +7 -6
  50. package/dist/Modal/NordFlow/components/TransactionTable.js.map +1 -0
  51. package/dist/Modal/NordFlow/components/WaitingMessage.js +2 -1
  52. package/dist/Modal/NordFlow/components/WaitingMessage.js.map +1 -0
  53. package/dist/Modal/NordFlow/components/index.js +1 -0
  54. package/dist/Modal/NordFlow/components/index.js.map +1 -0
  55. package/dist/Modal/NordFlow/constants.js +1 -0
  56. package/dist/Modal/NordFlow/constants.js.map +1 -0
  57. package/dist/Modal/NordFlow/hoc/index.js +1 -0
  58. package/dist/Modal/NordFlow/hoc/index.js.map +1 -0
  59. package/dist/Modal/NordFlow/hoc/withImageFallback.js +1 -0
  60. package/dist/Modal/NordFlow/hoc/withImageFallback.js.map +1 -0
  61. package/dist/Modal/NordFlow/hooks/index.js +1 -0
  62. package/dist/Modal/NordFlow/hooks/index.js.map +1 -0
  63. package/dist/Modal/NordFlow/hooks/useDepositFlow.js +31 -30
  64. package/dist/Modal/NordFlow/hooks/useDepositFlow.js.map +1 -0
  65. package/dist/Modal/NordFlow/hooks/useFlowState.js +44 -22
  66. package/dist/Modal/NordFlow/hooks/useFlowState.js.map +1 -0
  67. package/dist/Modal/NordFlow/hooks/useInterruptHandler.js +19 -16
  68. package/dist/Modal/NordFlow/hooks/useInterruptHandler.js.map +1 -0
  69. package/dist/Modal/NordFlow/hooks/useNordInstance.d.ts +0 -4
  70. package/dist/Modal/NordFlow/hooks/useNordInstance.js +65 -25
  71. package/dist/Modal/NordFlow/hooks/useNordInstance.js.map +1 -0
  72. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js +73 -52
  73. package/dist/Modal/NordFlow/hooks/useNordWalletConnect.js.map +1 -0
  74. package/dist/Modal/NordFlow/index.js +1 -0
  75. package/dist/Modal/NordFlow/index.js.map +1 -0
  76. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js +4 -3
  77. package/dist/Modal/NordFlow/screens/01-ConnectWalletScreen.js.map +1 -0
  78. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js +5 -4
  79. package/dist/Modal/NordFlow/screens/02-EvmWalletAuthScreen.js.map +1 -0
  80. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js +3 -2
  81. package/dist/Modal/NordFlow/screens/03-ChainSelectionScreen.js.map +1 -0
  82. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js +3 -2
  83. package/dist/Modal/NordFlow/screens/04-AmountInputScreen.js.map +1 -0
  84. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js +2 -1
  85. package/dist/Modal/NordFlow/screens/05-DepositProgressScreen.js.map +1 -0
  86. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js +5 -4
  87. package/dist/Modal/NordFlow/screens/06-DepositSuccessScreen.js.map +1 -0
  88. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js +5 -4
  89. package/dist/Modal/NordFlow/screens/07-AuthLoadingScreen.js.map +1 -0
  90. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js +3 -2
  91. package/dist/Modal/NordFlow/screens/08-FinalSuccessScreen.js.map +1 -0
  92. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js +4 -3
  93. package/dist/Modal/NordFlow/screens/09-ErrorScreen.js.map +1 -0
  94. package/dist/Modal/NordFlow/screens/index.js +1 -0
  95. package/dist/Modal/NordFlow/screens/index.js.map +1 -0
  96. package/dist/Modal/NordFlow/types.js +1 -0
  97. package/dist/Modal/NordFlow/types.js.map +1 -0
  98. package/dist/Modal/NordFlow/utils/imageUtils.js +1 -0
  99. package/dist/Modal/NordFlow/utils/imageUtils.js.map +1 -0
  100. package/dist/Modal/NordFlow/utils/index.js +1 -0
  101. package/dist/Modal/NordFlow/utils/index.js.map +1 -0
  102. package/dist/Modal/NordFlow/utils/nordUtils.js +1 -0
  103. package/dist/Modal/NordFlow/utils/nordUtils.js.map +1 -0
  104. package/dist/Modal/NordFlow/utils/persistence.js +1 -0
  105. package/dist/Modal/NordFlow/utils/persistence.js.map +1 -0
  106. package/dist/Modal/Sidebar/N1Sidebar.js +12 -10
  107. package/dist/Modal/Sidebar/N1Sidebar.js.map +1 -0
  108. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js +1 -0
  109. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketOverview.js.map +1 -0
  110. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js +6 -5
  111. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketSelector.js.map +1 -0
  112. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js +4 -3
  113. package/dist/Modal/Sidebar/NordTradingView/MarketOverview/MarketStats.js.map +1 -0
  114. package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js +3 -2
  115. package/dist/Modal/Sidebar/NordTradingView/NordTradingView.js.map +1 -0
  116. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js +3 -2
  117. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBook.js.map +1 -0
  118. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js +2 -1
  119. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookDepthVisualizer.js.map +1 -0
  120. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js +5 -4
  121. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookHeader.js.map +1 -0
  122. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js +7 -6
  123. package/dist/Modal/Sidebar/NordTradingView/OrderBook/OrderBookTable.js.map +1 -0
  124. package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js +2 -1
  125. package/dist/Modal/Sidebar/NordTradingView/TradeForm/AmountInput.js.map +1 -0
  126. package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js +4 -3
  127. package/dist/Modal/Sidebar/NordTradingView/TradeForm/BuySellTabs.js.map +1 -0
  128. package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js +8 -7
  129. package/dist/Modal/Sidebar/NordTradingView/TradeForm/FillModeSelector.js.map +1 -0
  130. package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js +14 -13
  131. package/dist/Modal/Sidebar/NordTradingView/TradeForm/OrderTypeSelector.js.map +1 -0
  132. package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js +2 -1
  133. package/dist/Modal/Sidebar/NordTradingView/TradeForm/PriceInput.js.map +1 -0
  134. package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js +3 -2
  135. package/dist/Modal/Sidebar/NordTradingView/TradeForm/SubmitButton.js.map +1 -0
  136. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js +2 -1
  137. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TotalCalculator.js.map +1 -0
  138. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js +6 -5
  139. package/dist/Modal/Sidebar/NordTradingView/TradeForm/TradeForm.js.map +1 -0
  140. package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js +2 -1
  141. package/dist/Modal/Sidebar/NordTradingView/UserBalances/UserBalances.js.map +1 -0
  142. package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js +6 -5
  143. package/dist/Modal/Sidebar/NordTradingView/UserOrders/UserOrders.js.map +1 -0
  144. package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js +5 -4
  145. package/dist/Modal/Sidebar/NordTradingView/UserPositions/UserPositions.js.map +1 -0
  146. package/dist/Provider/LazyWalletProvider.js +1 -0
  147. package/dist/Provider/LazyWalletProvider.js.map +1 -0
  148. package/dist/Provider/N1WalletProvider.js +3 -12
  149. package/dist/Provider/N1WalletProvider.js.map +1 -0
  150. package/dist/Provider/context.js +1 -0
  151. package/dist/Provider/context.js.map +1 -0
  152. package/dist/Provider/hooks.js +1 -0
  153. package/dist/Provider/hooks.js.map +1 -0
  154. package/dist/Provider/icons/CoinbaseWalletIcon.js +1 -0
  155. package/dist/Provider/icons/CoinbaseWalletIcon.js.map +1 -0
  156. package/dist/Provider/icons/ConnectionDotsSVG.js +1 -0
  157. package/dist/Provider/icons/ConnectionDotsSVG.js.map +1 -0
  158. package/dist/Provider/icons/MetamaskIcon.js +1 -0
  159. package/dist/Provider/icons/MetamaskIcon.js.map +1 -0
  160. package/dist/Provider/icons/PhantomIcon.js +1 -0
  161. package/dist/Provider/icons/PhantomIcon.js.map +1 -0
  162. package/dist/Provider/icons/UserIcon.js +1 -0
  163. package/dist/Provider/icons/UserIcon.js.map +1 -0
  164. package/dist/Provider/icons/WalletConnectIcon.js +1 -0
  165. package/dist/Provider/icons/WalletConnectIcon.js.map +1 -0
  166. package/dist/Provider/index.js +1 -0
  167. package/dist/Provider/index.js.map +1 -0
  168. package/dist/Provider/types.js +1 -0
  169. package/dist/Provider/types.js.map +1 -0
  170. package/dist/WidgetButton/N1ConnectButton.js +1 -0
  171. package/dist/WidgetButton/N1ConnectButton.js.map +1 -0
  172. package/dist/components/Logo.js +1 -0
  173. package/dist/components/Logo.js.map +1 -0
  174. package/dist/components/QRCodeLoader.js +2 -1
  175. package/dist/components/QRCodeLoader.js.map +1 -0
  176. package/dist/components/logos/ArbitrumLogo.js +1 -0
  177. package/dist/components/logos/ArbitrumLogo.js.map +1 -0
  178. package/dist/components/logos/BaseLogo.js +1 -0
  179. package/dist/components/logos/BaseLogo.js.map +1 -0
  180. package/dist/components/logos/BeraLogo.js +1 -0
  181. package/dist/components/logos/BeraLogo.js.map +1 -0
  182. package/dist/components/logos/BitcoinLogo.js +1 -0
  183. package/dist/components/logos/BitcoinLogo.js.map +1 -0
  184. package/dist/components/logos/EVMChainsGroup.js +2 -1
  185. package/dist/components/logos/EVMChainsGroup.js.map +1 -0
  186. package/dist/components/logos/EthereumLogo.js +1 -0
  187. package/dist/components/logos/EthereumLogo.js.map +1 -0
  188. package/dist/components/logos/HyperliquidLogo.js +1 -0
  189. package/dist/components/logos/HyperliquidLogo.js.map +1 -0
  190. package/dist/components/logos/MoreChainsGroup.js +2 -1
  191. package/dist/components/logos/MoreChainsGroup.js.map +1 -0
  192. package/dist/components/logos/OptimismLogo.js +1 -0
  193. package/dist/components/logos/OptimismLogo.js.map +1 -0
  194. package/dist/components/logos/SolanaLogo.js +1 -0
  195. package/dist/components/logos/SolanaLogo.js.map +1 -0
  196. package/dist/components/logos/index.js +1 -0
  197. package/dist/components/logos/index.js.map +1 -0
  198. package/dist/config/solana.js +1 -0
  199. package/dist/config/solana.js.map +1 -0
  200. package/dist/config.js +1 -0
  201. package/dist/config.js.map +1 -0
  202. package/dist/errors/types.js +1 -0
  203. package/dist/errors/types.js.map +1 -0
  204. package/dist/index.js +1 -0
  205. package/dist/index.js.map +1 -0
  206. package/dist/main.css +1 -1
  207. package/dist/utils/dynamicImports.js +1 -0
  208. package/dist/utils/dynamicImports.js.map +1 -0
  209. package/dist/utils/logger.d.ts +1 -0
  210. package/dist/utils/logger.js +26 -2
  211. package/dist/utils/logger.js.map +1 -0
  212. package/dist/utils/shortenString.js +1 -0
  213. package/dist/utils/shortenString.js.map +1 -0
  214. package/package.json +2 -2
  215. package/dist/Modal/BackButton.d.ts +0 -3
  216. package/dist/Modal/BackButton.js +0 -26
  217. package/dist/Modal/ConnectView.d.ts +0 -1
  218. package/dist/Modal/ConnectView.js +0 -68
  219. package/dist/Modal/CreateSessionView.d.ts +0 -1
  220. package/dist/Modal/CreateSessionView.js +0 -248
  221. package/dist/Modal/CreateUserView.d.ts +0 -1
  222. package/dist/Modal/CreateUserView.js +0 -160
  223. package/dist/Modal/ModalHeader.d.ts +0 -1
  224. package/dist/Modal/ModalHeader.js +0 -20
  225. package/dist/Modal/NTSFlow/NordFlow/WalletConnectionFlow.d.ts +0 -9
  226. package/dist/Modal/NTSFlow/NordFlow/WalletConnectionFlow.js +0 -145
  227. package/dist/Modal/NTSFlow/NordFlow/components/AnimatedButton.d.ts +0 -14
  228. package/dist/Modal/NTSFlow/NordFlow/components/AnimatedButton.js +0 -75
  229. package/dist/Modal/NTSFlow/NordFlow/components/ChainButton.d.ts +0 -7
  230. package/dist/Modal/NTSFlow/NordFlow/components/ChainButton.js +0 -5
  231. package/dist/Modal/NTSFlow/NordFlow/components/LoadingSquares.d.ts +0 -1
  232. package/dist/Modal/NTSFlow/NordFlow/components/LoadingSquares.js +0 -5
  233. package/dist/Modal/NTSFlow/NordFlow/components/TransactionTable.d.ts +0 -13
  234. package/dist/Modal/NTSFlow/NordFlow/components/TransactionTable.js +0 -58
  235. package/dist/Modal/NTSFlow/NordFlow/components/WaitingMessage.d.ts +0 -6
  236. package/dist/Modal/NTSFlow/NordFlow/components/WaitingMessage.js +0 -6
  237. package/dist/Modal/NTSFlow/NordFlow/components/index.d.ts +0 -5
  238. package/dist/Modal/NTSFlow/NordFlow/components/index.js +0 -5
  239. package/dist/Modal/NTSFlow/NordFlow/constants.d.ts +0 -37
  240. package/dist/Modal/NTSFlow/NordFlow/constants.js +0 -223
  241. package/dist/Modal/NTSFlow/NordFlow/hooks/index.d.ts +0 -8
  242. package/dist/Modal/NTSFlow/NordFlow/hooks/index.js +0 -8
  243. package/dist/Modal/NTSFlow/NordFlow/hooks/useButtonTyping.d.ts +0 -7
  244. package/dist/Modal/NTSFlow/NordFlow/hooks/useButtonTyping.js +0 -43
  245. package/dist/Modal/NTSFlow/NordFlow/hooks/useDepositFlow.d.ts +0 -38
  246. package/dist/Modal/NTSFlow/NordFlow/hooks/useDepositFlow.js +0 -166
  247. package/dist/Modal/NTSFlow/NordFlow/hooks/useFlowState.d.ts +0 -32
  248. package/dist/Modal/NTSFlow/NordFlow/hooks/useFlowState.js +0 -163
  249. package/dist/Modal/NTSFlow/NordFlow/hooks/useInterruptHandler.d.ts +0 -27
  250. package/dist/Modal/NTSFlow/NordFlow/hooks/useInterruptHandler.js +0 -101
  251. package/dist/Modal/NTSFlow/NordFlow/hooks/useNordSession.d.ts +0 -32
  252. package/dist/Modal/NTSFlow/NordFlow/hooks/useNordSession.js +0 -193
  253. package/dist/Modal/NTSFlow/NordFlow/hooks/useTableValues.d.ts +0 -2
  254. package/dist/Modal/NTSFlow/NordFlow/hooks/useTableValues.js +0 -69
  255. package/dist/Modal/NTSFlow/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
  256. package/dist/Modal/NTSFlow/NordFlow/hooks/useWaitingMessage.js +0 -89
  257. package/dist/Modal/NTSFlow/NordFlow/hooks/useWalletConnect.d.ts +0 -30
  258. package/dist/Modal/NTSFlow/NordFlow/hooks/useWalletConnect.js +0 -132
  259. package/dist/Modal/NTSFlow/NordFlow/index.d.ts +0 -3
  260. package/dist/Modal/NTSFlow/NordFlow/index.js +0 -3
  261. package/dist/Modal/NTSFlow/NordFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
  262. package/dist/Modal/NTSFlow/NordFlow/screens/01-ConnectWalletScreen.js +0 -17
  263. package/dist/Modal/NTSFlow/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
  264. package/dist/Modal/NTSFlow/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -47
  265. package/dist/Modal/NTSFlow/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
  266. package/dist/Modal/NTSFlow/NordFlow/screens/03-ChainSelectionScreen.js +0 -7
  267. package/dist/Modal/NTSFlow/NordFlow/screens/04-AmountInputScreen.d.ts +0 -8
  268. package/dist/Modal/NTSFlow/NordFlow/screens/04-AmountInputScreen.js +0 -20
  269. package/dist/Modal/NTSFlow/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -7
  270. package/dist/Modal/NTSFlow/NordFlow/screens/05-DepositProgressScreen.js +0 -6
  271. package/dist/Modal/NTSFlow/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
  272. package/dist/Modal/NTSFlow/NordFlow/screens/06-DepositSuccessScreen.js +0 -99
  273. package/dist/Modal/NTSFlow/NordFlow/screens/07-NordAuthScreen.d.ts +0 -7
  274. package/dist/Modal/NTSFlow/NordFlow/screens/07-NordAuthScreen.js +0 -14
  275. package/dist/Modal/NTSFlow/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
  276. package/dist/Modal/NTSFlow/NordFlow/screens/08-AuthLoadingScreen.js +0 -20
  277. package/dist/Modal/NTSFlow/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
  278. package/dist/Modal/NTSFlow/NordFlow/screens/09-FinalSuccessScreen.js +0 -18
  279. package/dist/Modal/NTSFlow/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
  280. package/dist/Modal/NTSFlow/NordFlow/screens/10-ErrorScreen.js +0 -13
  281. package/dist/Modal/NTSFlow/NordFlow/screens/index.d.ts +0 -10
  282. package/dist/Modal/NTSFlow/NordFlow/screens/index.js +0 -10
  283. package/dist/Modal/NTSFlow/NordFlow/types.d.ts +0 -105
  284. package/dist/Modal/NTSFlow/NordFlow/types.js +0 -34
  285. package/dist/Modal/NTSFlow/NordFlow/utils/persistence.d.ts +0 -24
  286. package/dist/Modal/NTSFlow/NordFlow/utils/persistence.js +0 -83
  287. package/dist/Modal/NoWhitelistView.d.ts +0 -1
  288. package/dist/Modal/NoWhitelistView.js +0 -42
  289. package/dist/Modal/NordFlow/NordFlowWrapper.d.ts +0 -11
  290. package/dist/Modal/NordFlow/NordFlowWrapper.js +0 -11
  291. package/dist/Modal/NordFlow/WalletConnectionFlow.d.ts +0 -9
  292. package/dist/Modal/NordFlow/WalletConnectionFlow.js +0 -145
  293. package/dist/Modal/NordFlow/components/AnimatedButton.d.ts +0 -14
  294. package/dist/Modal/NordFlow/components/AnimatedButton.js +0 -75
  295. package/dist/Modal/NordFlow/hooks/useButtonTyping.d.ts +0 -7
  296. package/dist/Modal/NordFlow/hooks/useButtonTyping.js +0 -43
  297. package/dist/Modal/NordFlow/hooks/useNordSession.d.ts +0 -32
  298. package/dist/Modal/NordFlow/hooks/useNordSession.js +0 -391
  299. package/dist/Modal/NordFlow/hooks/useTableValues.d.ts +0 -2
  300. package/dist/Modal/NordFlow/hooks/useTableValues.js +0 -69
  301. package/dist/Modal/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
  302. package/dist/Modal/NordFlow/hooks/useWaitingMessage.js +0 -89
  303. package/dist/Modal/NordFlow/hooks/useWalletConnect.d.ts +0 -14
  304. package/dist/Modal/NordFlow/hooks/useWalletConnect.js +0 -221
  305. package/dist/Modal/NordFlow/index copy.d.ts +0 -1
  306. package/dist/Modal/NordFlow/index copy.js +0 -1
  307. package/dist/Modal/NordFlow/screens/07-NordAuthScreen.d.ts +0 -5
  308. package/dist/Modal/NordFlow/screens/07-NordAuthScreen.js +0 -17
  309. package/dist/Modal/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
  310. package/dist/Modal/NordFlow/screens/08-AuthLoadingScreen.js +0 -153
  311. package/dist/Modal/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
  312. package/dist/Modal/NordFlow/screens/09-FinalSuccessScreen.js +0 -47
  313. package/dist/Modal/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
  314. package/dist/Modal/NordFlow/screens/10-ErrorScreen.js +0 -62
  315. package/dist/Modal/Sidebar/NordTradingView/AccountSummary/AccountSummary.d.ts +0 -1
  316. package/dist/Modal/Sidebar/NordTradingView/AccountSummary/AccountSummary.js +0 -116
  317. package/dist/Modal/Sidebar/NordTradingView/TradeHistory/TradeHistory.d.ts +0 -5
  318. package/dist/Modal/Sidebar/NordTradingView/TradeHistory/TradeHistory.js +0 -138
  319. package/dist/Modal/SigningView.d.ts +0 -1
  320. package/dist/Modal/SigningView.js +0 -5
  321. package/dist/Modal/SuccessView.d.ts +0 -1
  322. package/dist/Modal/SuccessView.js +0 -10
  323. package/dist/NordFlow/WalletConnectionFlow.d.ts +0 -9
  324. package/dist/NordFlow/WalletConnectionFlow.js +0 -145
  325. package/dist/NordFlow/components/AnimatedButton.d.ts +0 -14
  326. package/dist/NordFlow/components/AnimatedButton.js +0 -75
  327. package/dist/NordFlow/components/ChainButton.d.ts +0 -7
  328. package/dist/NordFlow/components/ChainButton.js +0 -5
  329. package/dist/NordFlow/components/LoadingSquares.d.ts +0 -1
  330. package/dist/NordFlow/components/LoadingSquares.js +0 -5
  331. package/dist/NordFlow/components/TransactionTable.d.ts +0 -13
  332. package/dist/NordFlow/components/TransactionTable.js +0 -58
  333. package/dist/NordFlow/components/WaitingMessage.d.ts +0 -6
  334. package/dist/NordFlow/components/WaitingMessage.js +0 -6
  335. package/dist/NordFlow/components/index.d.ts +0 -5
  336. package/dist/NordFlow/components/index.js +0 -5
  337. package/dist/NordFlow/constants.d.ts +0 -37
  338. package/dist/NordFlow/constants.js +0 -223
  339. package/dist/NordFlow/hooks/index.d.ts +0 -8
  340. package/dist/NordFlow/hooks/index.js +0 -8
  341. package/dist/NordFlow/hooks/useButtonTyping.d.ts +0 -7
  342. package/dist/NordFlow/hooks/useButtonTyping.js +0 -43
  343. package/dist/NordFlow/hooks/useDepositFlow.d.ts +0 -38
  344. package/dist/NordFlow/hooks/useDepositFlow.js +0 -166
  345. package/dist/NordFlow/hooks/useFlowState.d.ts +0 -32
  346. package/dist/NordFlow/hooks/useFlowState.js +0 -163
  347. package/dist/NordFlow/hooks/useInterruptHandler.d.ts +0 -27
  348. package/dist/NordFlow/hooks/useInterruptHandler.js +0 -101
  349. package/dist/NordFlow/hooks/useNordSession.d.ts +0 -32
  350. package/dist/NordFlow/hooks/useNordSession.js +0 -193
  351. package/dist/NordFlow/hooks/useTableValues.d.ts +0 -2
  352. package/dist/NordFlow/hooks/useTableValues.js +0 -69
  353. package/dist/NordFlow/hooks/useWaitingMessage.d.ts +0 -6
  354. package/dist/NordFlow/hooks/useWaitingMessage.js +0 -89
  355. package/dist/NordFlow/hooks/useWalletConnect.d.ts +0 -30
  356. package/dist/NordFlow/hooks/useWalletConnect.js +0 -132
  357. package/dist/NordFlow/index.d.ts +0 -3
  358. package/dist/NordFlow/index.js +0 -3
  359. package/dist/NordFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
  360. package/dist/NordFlow/screens/01-ConnectWalletScreen.js +0 -17
  361. package/dist/NordFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
  362. package/dist/NordFlow/screens/02-EvmWalletAuthScreen.js +0 -47
  363. package/dist/NordFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
  364. package/dist/NordFlow/screens/03-ChainSelectionScreen.js +0 -7
  365. package/dist/NordFlow/screens/04-AmountInputScreen.d.ts +0 -8
  366. package/dist/NordFlow/screens/04-AmountInputScreen.js +0 -20
  367. package/dist/NordFlow/screens/05-DepositProgressScreen.d.ts +0 -7
  368. package/dist/NordFlow/screens/05-DepositProgressScreen.js +0 -6
  369. package/dist/NordFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
  370. package/dist/NordFlow/screens/06-DepositSuccessScreen.js +0 -99
  371. package/dist/NordFlow/screens/07-NordAuthScreen.d.ts +0 -7
  372. package/dist/NordFlow/screens/07-NordAuthScreen.js +0 -14
  373. package/dist/NordFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
  374. package/dist/NordFlow/screens/08-AuthLoadingScreen.js +0 -20
  375. package/dist/NordFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
  376. package/dist/NordFlow/screens/09-FinalSuccessScreen.js +0 -18
  377. package/dist/NordFlow/screens/10-ErrorScreen.d.ts +0 -7
  378. package/dist/NordFlow/screens/10-ErrorScreen.js +0 -13
  379. package/dist/NordFlow/screens/index.d.ts +0 -10
  380. package/dist/NordFlow/screens/index.js +0 -10
  381. package/dist/NordFlow/types.d.ts +0 -105
  382. package/dist/NordFlow/types.js +0 -34
  383. package/dist/NordFlow/utils/persistence.d.ts +0 -24
  384. package/dist/NordFlow/utils/persistence.js +0 -83
  385. package/dist/WalletConnectionFlow/WalletConnectionFlow.d.ts +0 -9
  386. package/dist/WalletConnectionFlow/WalletConnectionFlow.js +0 -145
  387. package/dist/WalletConnectionFlow/components/AnimatedButton.d.ts +0 -14
  388. package/dist/WalletConnectionFlow/components/AnimatedButton.js +0 -75
  389. package/dist/WalletConnectionFlow/components/ChainButton.d.ts +0 -7
  390. package/dist/WalletConnectionFlow/components/ChainButton.js +0 -5
  391. package/dist/WalletConnectionFlow/components/LoadingSquares.d.ts +0 -1
  392. package/dist/WalletConnectionFlow/components/LoadingSquares.js +0 -5
  393. package/dist/WalletConnectionFlow/components/TransactionTable.d.ts +0 -13
  394. package/dist/WalletConnectionFlow/components/TransactionTable.js +0 -58
  395. package/dist/WalletConnectionFlow/components/WaitingMessage.d.ts +0 -6
  396. package/dist/WalletConnectionFlow/components/WaitingMessage.js +0 -6
  397. package/dist/WalletConnectionFlow/components/index.d.ts +0 -5
  398. package/dist/WalletConnectionFlow/components/index.js +0 -5
  399. package/dist/WalletConnectionFlow/constants.d.ts +0 -37
  400. package/dist/WalletConnectionFlow/constants.js +0 -223
  401. package/dist/WalletConnectionFlow/hooks/index.d.ts +0 -8
  402. package/dist/WalletConnectionFlow/hooks/index.js +0 -8
  403. package/dist/WalletConnectionFlow/hooks/useButtonTyping.d.ts +0 -7
  404. package/dist/WalletConnectionFlow/hooks/useButtonTyping.js +0 -43
  405. package/dist/WalletConnectionFlow/hooks/useDepositFlow.d.ts +0 -38
  406. package/dist/WalletConnectionFlow/hooks/useDepositFlow.js +0 -166
  407. package/dist/WalletConnectionFlow/hooks/useFlowState.d.ts +0 -32
  408. package/dist/WalletConnectionFlow/hooks/useFlowState.js +0 -163
  409. package/dist/WalletConnectionFlow/hooks/useInterruptHandler.d.ts +0 -27
  410. package/dist/WalletConnectionFlow/hooks/useInterruptHandler.js +0 -101
  411. package/dist/WalletConnectionFlow/hooks/useNordSession.d.ts +0 -32
  412. package/dist/WalletConnectionFlow/hooks/useNordSession.js +0 -193
  413. package/dist/WalletConnectionFlow/hooks/useTableValues.d.ts +0 -2
  414. package/dist/WalletConnectionFlow/hooks/useTableValues.js +0 -69
  415. package/dist/WalletConnectionFlow/hooks/useWaitingMessage.d.ts +0 -6
  416. package/dist/WalletConnectionFlow/hooks/useWaitingMessage.js +0 -89
  417. package/dist/WalletConnectionFlow/hooks/useWalletConnect.d.ts +0 -30
  418. package/dist/WalletConnectionFlow/hooks/useWalletConnect.js +0 -132
  419. package/dist/WalletConnectionFlow/index.d.ts +0 -3
  420. package/dist/WalletConnectionFlow/index.js +0 -3
  421. package/dist/WalletConnectionFlow/screens/01-ConnectWalletScreen.d.ts +0 -6
  422. package/dist/WalletConnectionFlow/screens/01-ConnectWalletScreen.js +0 -17
  423. package/dist/WalletConnectionFlow/screens/02-EvmWalletAuthScreen.d.ts +0 -6
  424. package/dist/WalletConnectionFlow/screens/02-EvmWalletAuthScreen.js +0 -47
  425. package/dist/WalletConnectionFlow/screens/03-ChainSelectionScreen.d.ts +0 -7
  426. package/dist/WalletConnectionFlow/screens/03-ChainSelectionScreen.js +0 -7
  427. package/dist/WalletConnectionFlow/screens/04-AmountInputScreen.d.ts +0 -8
  428. package/dist/WalletConnectionFlow/screens/04-AmountInputScreen.js +0 -20
  429. package/dist/WalletConnectionFlow/screens/05-DepositProgressScreen.d.ts +0 -7
  430. package/dist/WalletConnectionFlow/screens/05-DepositProgressScreen.js +0 -6
  431. package/dist/WalletConnectionFlow/screens/06-DepositSuccessScreen.d.ts +0 -8
  432. package/dist/WalletConnectionFlow/screens/06-DepositSuccessScreen.js +0 -99
  433. package/dist/WalletConnectionFlow/screens/07-NordAuthScreen.d.ts +0 -7
  434. package/dist/WalletConnectionFlow/screens/07-NordAuthScreen.js +0 -14
  435. package/dist/WalletConnectionFlow/screens/08-AuthLoadingScreen.d.ts +0 -6
  436. package/dist/WalletConnectionFlow/screens/08-AuthLoadingScreen.js +0 -20
  437. package/dist/WalletConnectionFlow/screens/09-FinalSuccessScreen.d.ts +0 -5
  438. package/dist/WalletConnectionFlow/screens/09-FinalSuccessScreen.js +0 -18
  439. package/dist/WalletConnectionFlow/screens/10-ErrorScreen.d.ts +0 -7
  440. package/dist/WalletConnectionFlow/screens/10-ErrorScreen.js +0 -13
  441. package/dist/WalletConnectionFlow/screens/AmountInputScreen.d.ts +0 -8
  442. package/dist/WalletConnectionFlow/screens/AmountInputScreen.js +0 -20
  443. package/dist/WalletConnectionFlow/screens/AppsTableScreen.d.ts +0 -8
  444. package/dist/WalletConnectionFlow/screens/AppsTableScreen.js +0 -28
  445. package/dist/WalletConnectionFlow/screens/AuthLoadingScreen.d.ts +0 -6
  446. package/dist/WalletConnectionFlow/screens/AuthLoadingScreen.js +0 -20
  447. package/dist/WalletConnectionFlow/screens/ChainSelectionScreen.d.ts +0 -7
  448. package/dist/WalletConnectionFlow/screens/ChainSelectionScreen.js +0 -7
  449. package/dist/WalletConnectionFlow/screens/ConnectWalletScreen.d.ts +0 -6
  450. package/dist/WalletConnectionFlow/screens/ConnectWalletScreen.js +0 -17
  451. package/dist/WalletConnectionFlow/screens/DepositProgressScreen.d.ts +0 -7
  452. package/dist/WalletConnectionFlow/screens/DepositProgressScreen.js +0 -6
  453. package/dist/WalletConnectionFlow/screens/DepositSuccessScreen.d.ts +0 -8
  454. package/dist/WalletConnectionFlow/screens/DepositSuccessScreen.js +0 -99
  455. package/dist/WalletConnectionFlow/screens/ErrorScreen.d.ts +0 -7
  456. package/dist/WalletConnectionFlow/screens/ErrorScreen.js +0 -13
  457. package/dist/WalletConnectionFlow/screens/EthToSolAuthScreen.d.ts +0 -6
  458. package/dist/WalletConnectionFlow/screens/EthToSolAuthScreen.js +0 -47
  459. package/dist/WalletConnectionFlow/screens/EvmWalletAuthScreen.d.ts +0 -6
  460. package/dist/WalletConnectionFlow/screens/EvmWalletAuthScreen.js +0 -47
  461. package/dist/WalletConnectionFlow/screens/FinalSuccessScreen.d.ts +0 -5
  462. package/dist/WalletConnectionFlow/screens/FinalSuccessScreen.js +0 -18
  463. package/dist/WalletConnectionFlow/screens/NordAuthScreen.d.ts +0 -7
  464. package/dist/WalletConnectionFlow/screens/NordAuthScreen.js +0 -14
  465. package/dist/WalletConnectionFlow/screens/SigningScreen.d.ts +0 -6
  466. package/dist/WalletConnectionFlow/screens/SigningScreen.js +0 -6
  467. package/dist/WalletConnectionFlow/screens/index.d.ts +0 -10
  468. package/dist/WalletConnectionFlow/screens/index.js +0 -10
  469. package/dist/WalletConnectionFlow/types.d.ts +0 -105
  470. package/dist/WalletConnectionFlow/types.js +0 -34
  471. package/dist/WalletConnectionFlow/utils/persistence.d.ts +0 -24
  472. package/dist/WalletConnectionFlow/utils/persistence.js +0 -83
  473. package/dist/components/LazyLoadWrapper.d.ts +0 -8
  474. package/dist/components/LazyLoadWrapper.js +0 -17
  475. package/dist/components/WalletDeposit/AnimatedButton.d.ts +0 -17
  476. package/dist/components/WalletDeposit/AnimatedButton.js +0 -29
  477. package/dist/components/WalletDeposit/components/ChainButton.d.ts +0 -7
  478. package/dist/components/WalletDeposit/components/ChainButton.js +0 -5
  479. package/dist/components/WalletDeposit/components/LoadingSquares.d.ts +0 -1
  480. package/dist/components/WalletDeposit/components/LoadingSquares.js +0 -5
  481. package/dist/components/WalletDeposit/components/TransactionTable.d.ts +0 -13
  482. package/dist/components/WalletDeposit/components/TransactionTable.js +0 -58
  483. package/dist/components/WalletDeposit/components/WaitingMessage.d.ts +0 -6
  484. package/dist/components/WalletDeposit/components/WaitingMessage.js +0 -6
  485. package/dist/components/WalletDeposit/constants.d.ts +0 -15
  486. package/dist/components/WalletDeposit/constants.js +0 -32
  487. package/dist/components/WalletDeposit/hooks.d.ts +0 -9
  488. package/dist/components/WalletDeposit/hooks.js +0 -185
  489. package/dist/components/WalletDeposit/index.d.ts +0 -1
  490. package/dist/components/WalletDeposit/index.js +0 -136
  491. package/dist/components/WalletDeposit/screens/AmountInputScreen.d.ts +0 -12
  492. package/dist/components/WalletDeposit/screens/AmountInputScreen.js +0 -18
  493. package/dist/components/WalletDeposit/screens/AppsTableScreen.d.ts +0 -8
  494. package/dist/components/WalletDeposit/screens/AppsTableScreen.js +0 -28
  495. package/dist/components/WalletDeposit/screens/ChainSelectionScreen.d.ts +0 -5
  496. package/dist/components/WalletDeposit/screens/ChainSelectionScreen.js +0 -8
  497. package/dist/components/WalletDeposit/screens/InitialScreen.d.ts +0 -9
  498. package/dist/components/WalletDeposit/screens/InitialScreen.js +0 -18
  499. package/dist/components/WalletDeposit/screens/SigningScreen.d.ts +0 -6
  500. package/dist/components/WalletDeposit/screens/SigningScreen.js +0 -6
  501. package/dist/components/WalletDeposit/screens/SuccessScreen.d.ts +0 -12
  502. package/dist/components/WalletDeposit/screens/SuccessScreen.js +0 -7
  503. package/dist/components/WalletDeposit/types.d.ts +0 -48
  504. package/dist/components/WalletDeposit/types.js +0 -1
  505. package/dist/config/dynamic.d.ts +0 -20
  506. package/dist/config/dynamic.js +0 -47
  507. package/dist/hooks/useSolanaSession.d.ts +0 -17
  508. package/dist/hooks/useSolanaSession.js +0 -180
  509. package/dist/utils/lazyLoad.d.ts +0 -3
  510. package/dist/utils/lazyLoad.js +0 -9
  511. package/dist/utils/react-shim.d.ts +0 -2
  512. package/dist/utils/react-shim.js +0 -6
  513. package/dist/utils/solana-session.d.ts +0 -84
  514. package/dist/utils/solana-session.js +0 -230
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { useCallback, useEffect, useState } from 'react';
12
+ import { useCallback, useEffect, useRef, useState } from 'react';
13
13
  import { FlowState, initialFlowContext } from '../types';
14
14
  import { STATE_TRANSITIONS } from '../constants';
15
15
  import { clearStoredState, loadStateFromLocalStorage, saveStateToLocalStorage, } from '../utils/persistence';
@@ -20,17 +20,20 @@ import { logger } from '../../../utils/logger';
20
20
  * @returns Flow state management methods and properties
21
21
  */
22
22
  export var useFlowState = function (options) {
23
- var _a = options.autoRecover, autoRecover = _a === void 0 ? true : _a, onStateChange = options.onStateChange, onError = options.onError;
23
+ var onStateChange = options.onStateChange, onError = options.onError;
24
24
  // Flow state
25
- var _b = useState(FlowState.IDLE), state = _b[0], setState = _b[1];
26
- var _c = useState(null), prevState = _c[0], setPrevState = _c[1];
27
- var _d = useState(initialFlowContext), context = _d[0], setContext = _d[1];
28
- var _e = useState(false), isTransitioning = _e[0], setIsTransitioning = _e[1];
29
- var _f = useState(false), isRecoveryAvailable = _f[0], setIsRecoveryAvailable = _f[1];
25
+ var _a = useState(FlowState.IDLE), state = _a[0], setState = _a[1];
26
+ var _b = useState(null), prevState = _b[0], setPrevState = _b[1];
27
+ var _c = useState(initialFlowContext), context = _c[0], setContext = _c[1];
28
+ var _d = useState(false), isTransitioning = _d[0], setIsTransitioning = _d[1];
29
+ var _e = useState(false), isRecoveryAvailable = _e[0], setIsRecoveryAvailable = _e[1];
30
+ // Use refs to track previous values
31
+ var prevStateRef = useRef(FlowState.IDLE);
32
+ var prevContextRef = useRef(initialFlowContext);
30
33
  /**
31
34
  * Check if a transition is allowed based on current state and context
32
35
  */
33
- var canTransition = useCallback(function (targetState, context) {
36
+ var canTransition = useCallback(function (targetState, contextData) {
34
37
  return STATE_TRANSITIONS.some(function (transition) {
35
38
  var fromMatches = Array.isArray(transition.from)
36
39
  ? transition.from.includes(state)
@@ -39,16 +42,20 @@ export var useFlowState = function (options) {
39
42
  return false;
40
43
  }
41
44
  if (transition.condition) {
42
- return transition.condition(context);
45
+ return transition.condition(contextData);
43
46
  }
44
47
  return true;
45
48
  });
46
- }, [state, context]);
49
+ }, [state]);
47
50
  /**
48
51
  * Transition to a new state if allowed
49
52
  */
50
53
  var transition = useCallback(function (targetState, contextUpdates) {
51
54
  if (contextUpdates === void 0) { contextUpdates = {}; }
55
+ // Skip if we're already in the target state and no context updates
56
+ if (targetState === state && Object.keys(contextUpdates).length === 0) {
57
+ return true;
58
+ }
52
59
  if (!canTransition(targetState, __assign(__assign({}, context), contextUpdates))) {
53
60
  logger.warn("Transition from ".concat(state, " to ").concat(targetState, " is not allowed"));
54
61
  return false;
@@ -63,23 +70,26 @@ export var useFlowState = function (options) {
63
70
  });
64
71
  // Then update state
65
72
  setPrevState(state);
66
- logger.debug(targetState, 'targetState');
73
+ prevStateRef.current = state;
74
+ logger.debug("Transitioning from ".concat(state, " to ").concat(targetState));
67
75
  setState(targetState);
68
76
  if (onStateChange) {
69
77
  onStateChange(targetState, state);
70
78
  }
71
79
  setIsTransitioning(false);
72
80
  return true;
73
- }, [canTransition, state, onStateChange]);
81
+ }, [canTransition, state, context, onStateChange]);
74
82
  /**
75
83
  * Reset flow to initial state
76
84
  */
77
85
  var reset = useCallback(function () {
78
86
  clearStoredState();
79
87
  setContext(initialFlowContext);
88
+ prevContextRef.current = initialFlowContext;
80
89
  setPrevState(null);
81
- logger.debug('resetting');
90
+ logger.debug('Resetting flow state to IDLE');
82
91
  setState(FlowState.IDLE);
92
+ prevStateRef.current = FlowState.IDLE;
83
93
  if (onStateChange) {
84
94
  onStateChange(FlowState.IDLE, state);
85
95
  }
@@ -103,8 +113,10 @@ export var useFlowState = function (options) {
103
113
  return false;
104
114
  }
105
115
  setContext(savedState.context);
116
+ prevContextRef.current = savedState.context;
106
117
  setPrevState(state);
107
- logger.debug(savedState.state, 'savedState.state');
118
+ prevStateRef.current = state;
119
+ logger.debug("Recovering state: ".concat(savedState.state));
108
120
  setState(savedState.state);
109
121
  if (onStateChange) {
110
122
  onStateChange(savedState.state, state);
@@ -115,8 +127,25 @@ export var useFlowState = function (options) {
115
127
  * Update context without state transition
116
128
  */
117
129
  var updateContext = useCallback(function (updates) {
130
+ // Skip if no actual updates
131
+ if (Object.keys(updates).length === 0) {
132
+ return;
133
+ }
118
134
  setContext(function (prevContext) {
135
+ // Check if any values are actually changing
136
+ var hasChanges = false;
137
+ // Type-safe way to check for changes
138
+ Object.keys(updates).forEach(function (key) {
139
+ if (updates[key] !== prevContext[key]) {
140
+ hasChanges = true;
141
+ }
142
+ });
143
+ // If nothing is changing, return the previous context
144
+ if (!hasChanges) {
145
+ return prevContext;
146
+ }
119
147
  var newContext = __assign(__assign({}, prevContext), updates);
148
+ prevContextRef.current = newContext;
120
149
  saveStateToLocalStorage(state, newContext);
121
150
  return newContext;
122
151
  });
@@ -133,14 +162,6 @@ export var useFlowState = function (options) {
133
162
  },
134
163
  });
135
164
  }, [state, context, updateContext]);
136
- // Check for recoverable state on mount
137
- useEffect(function () {
138
- var hasRecoverable = loadStateFromLocalStorage() !== null;
139
- setIsRecoveryAvailable(hasRecoverable);
140
- if (autoRecover && hasRecoverable) {
141
- recover();
142
- }
143
- }, [autoRecover, recover]);
144
165
  // Register unload handler to record interruptions
145
166
  useEffect(function () {
146
167
  var handleBeforeUnload = function () {
@@ -165,3 +186,4 @@ export var useFlowState = function (options) {
165
186
  handleError: handleError,
166
187
  };
167
188
  };
189
+ //# sourceMappingURL=useFlowState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFlowState.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useFlowState.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { FlowContext, FlowState, initialFlowContext } from '../types';\nimport { STATE_TRANSITIONS } from '../constants';\nimport {\n clearStoredState,\n loadStateFromLocalStorage,\n saveStateToLocalStorage,\n} from '../utils/persistence';\nimport { logger } from '../../../utils/logger';\n\n/**\n * Custom hook for managing the wallet connection flow state machine\n * @param options Configuration options\n * @returns Flow state management methods and properties\n */\nexport const useFlowState = (options: {\n /**\n * Whether to automatically recover saved state on initialization\n */\n autoRecover?: boolean;\n /**\n * Callback when state changes\n */\n onStateChange?: (newState: FlowState, prevState: FlowState | null) => void;\n /**\n * Callback when an error occurs\n */\n onError?: (error: Error) => void;\n}) => {\n const { onStateChange, onError } = options;\n\n // Flow state\n const [state, setState] = useState<FlowState>(FlowState.IDLE);\n const [prevState, setPrevState] = useState<FlowState | null>(null);\n const [context, setContext] = useState<FlowContext>(initialFlowContext);\n const [isTransitioning, setIsTransitioning] = useState(false);\n const [isRecoveryAvailable, setIsRecoveryAvailable] = useState(false);\n \n // Use refs to track previous values\n const prevStateRef = useRef<FlowState>(FlowState.IDLE);\n const prevContextRef = useRef<FlowContext>(initialFlowContext);\n\n /**\n * Check if a transition is allowed based on current state and context\n */\n const canTransition = useCallback(\n (targetState: FlowState, contextData: FlowContext): boolean => {\n return STATE_TRANSITIONS.some((transition) => {\n const fromMatches = Array.isArray(transition.from)\n ? transition.from.includes(state)\n : transition.from === state;\n\n if (!fromMatches || transition.to !== targetState) {\n return false;\n }\n\n if (transition.condition) {\n return transition.condition(contextData);\n }\n\n return true;\n });\n },\n [state]\n );\n\n /**\n * Transition to a new state if allowed\n */\n const transition = useCallback(\n (\n targetState: FlowState,\n contextUpdates: Partial<FlowContext> = {}\n ): boolean => {\n // Skip if we're already in the target state and no context updates\n if (targetState === state && Object.keys(contextUpdates).length === 0) {\n return true;\n }\n \n if (!canTransition(targetState, { ...context, ...contextUpdates })) {\n logger.warn(\n `Transition from ${state} to ${targetState} is not allowed`\n );\n return false;\n }\n\n setIsTransitioning(true);\n\n // Update context first\n setContext((prevContext) => {\n const newContext = { ...prevContext, ...contextUpdates };\n\n // Save new state and context to localStorage for recovery\n saveStateToLocalStorage(targetState, newContext);\n\n return newContext;\n });\n\n // Then update state\n setPrevState(state);\n prevStateRef.current = state;\n logger.debug(`Transitioning from ${state} to ${targetState}`);\n setState(targetState);\n\n if (onStateChange) {\n onStateChange(targetState, state);\n }\n\n setIsTransitioning(false);\n return true;\n },\n [canTransition, state, context, onStateChange]\n );\n\n /**\n * Reset flow to initial state\n */\n const reset = useCallback(() => {\n clearStoredState();\n setContext(initialFlowContext);\n prevContextRef.current = initialFlowContext;\n setPrevState(null);\n logger.debug('Resetting flow state to IDLE');\n setState(FlowState.IDLE);\n prevStateRef.current = FlowState.IDLE;\n\n if (onStateChange) {\n onStateChange(FlowState.IDLE, state);\n }\n }, [state, onStateChange]);\n\n /**\n * Handle an error by transitioning to error state\n */\n const handleError = useCallback(\n (error: Error) => {\n if (onError) {\n onError(error);\n }\n\n transition(FlowState.ERROR, { error });\n },\n [transition, onError]\n );\n\n /**\n * Recover state from localStorage\n */\n const recover = useCallback((): boolean => {\n const savedState = loadStateFromLocalStorage();\n\n if (!savedState) {\n setIsRecoveryAvailable(false);\n return false;\n }\n\n setContext(savedState.context);\n prevContextRef.current = savedState.context;\n setPrevState(state);\n prevStateRef.current = state;\n logger.debug(`Recovering state: ${savedState.state}`);\n setState(savedState.state);\n\n if (onStateChange) {\n onStateChange(savedState.state, state);\n }\n\n return true;\n }, [state, onStateChange]);\n\n /**\n * Update context without state transition\n */\n const updateContext = useCallback(\n (updates: Partial<FlowContext>) => {\n // Skip if no actual updates\n if (Object.keys(updates).length === 0) {\n return;\n }\n \n setContext((prevContext) => {\n // Check if any values are actually changing\n let hasChanges = false;\n \n // Type-safe way to check for changes\n (Object.keys(updates) as Array<keyof Partial<FlowContext>>).forEach(key => {\n if (updates[key] !== prevContext[key]) {\n hasChanges = true;\n }\n });\n \n // If nothing is changing, return the previous context\n if (!hasChanges) {\n return prevContext;\n }\n \n const newContext = { ...prevContext, ...updates };\n prevContextRef.current = newContext;\n saveStateToLocalStorage(state, newContext);\n return newContext;\n });\n },\n [state]\n );\n\n /**\n * Record an interruption in the flow (e.g., modal close, page reload)\n */\n const recordInterruption = useCallback(() => {\n updateContext({\n lastInterruption: {\n timestamp: Date.now(),\n state,\n context: { ...context },\n },\n });\n }, [state, context, updateContext]);\n\n // Register unload handler to record interruptions\n useEffect(() => {\n const handleBeforeUnload = () => {\n recordInterruption();\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n };\n }, [recordInterruption]);\n\n return {\n state,\n prevState,\n context,\n isTransitioning,\n isRecoveryAvailable,\n transition,\n updateContext,\n reset,\n recover,\n recordInterruption,\n handleError,\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { useCallback, useEffect, useState } from 'react';
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
2
  /**
3
3
  * Hook for handling interruptions during the flow
4
4
  *
@@ -6,12 +6,18 @@ import { useCallback, useEffect, useState } from 'react';
6
6
  * @returns Interruption handling methods and state
7
7
  */
8
8
  export var useInterruptHandler = function (options) {
9
- var state = options.state, recordInterruption = options.recordInterruption, onClose = options.onClose;
9
+ var recordInterruption = options.recordInterruption, onClose = options.onClose;
10
+ // Use ref to track previous state
11
+ var prevStateRef = useRef(options.state);
10
12
  var _a = useState(false), isClosing = _a[0], setIsClosing = _a[1];
11
13
  /**
12
14
  * Handle modal close request
13
15
  */
14
16
  var handleCloseRequest = useCallback(function () {
17
+ // Skip if already closing
18
+ if (isClosing) {
19
+ return true;
20
+ }
15
21
  // Always proceed with closing
16
22
  setIsClosing(true);
17
23
  recordInterruption();
@@ -22,12 +28,12 @@ export var useInterruptHandler = function (options) {
22
28
  }
23
29
  }, 300);
24
30
  return true;
25
- }, [recordInterruption, onClose]);
31
+ }, [recordInterruption, onClose, isClosing]);
26
32
  /**
27
33
  * Handle beforeunload event to record interruptions
28
34
  */
29
35
  useEffect(function () {
30
- var handleBeforeUnload = function (event) {
36
+ var handleBeforeUnload = function () {
31
37
  // Record the interruption
32
38
  recordInterruption();
33
39
  };
@@ -36,21 +42,18 @@ export var useInterruptHandler = function (options) {
36
42
  window.removeEventListener('beforeunload', handleBeforeUnload);
37
43
  };
38
44
  }, [recordInterruption]);
39
- /**
40
- * Handle focus events to detect when user returns to the page
41
- */
45
+ // Track state changes
42
46
  useEffect(function () {
43
- var handleFocus = function () {
44
- // Here we could potentially check for state changes
45
- // that happened while the user was away
46
- };
47
- window.addEventListener('focus', handleFocus);
48
- return function () {
49
- window.removeEventListener('focus', handleFocus);
50
- };
51
- }, []);
47
+ var currentState = options.state;
48
+ var prevState = prevStateRef.current;
49
+ // Update ref if state has changed
50
+ if (currentState !== prevState) {
51
+ prevStateRef.current = currentState;
52
+ }
53
+ }, [options.state]);
52
54
  return {
53
55
  isClosing: isClosing,
54
56
  handleCloseRequest: handleCloseRequest,
55
57
  };
56
58
  };
59
+ //# sourceMappingURL=useInterruptHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInterruptHandler.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useInterruptHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjE;;;;;GAKG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,OAanC;IACS,IAAA,kBAAkB,GAAc,OAAO,mBAArB,EAAE,OAAO,GAAK,OAAO,QAAZ,CAAa;IAEhD,kCAAkC;IAClC,IAAM,YAAY,GAAG,MAAM,CAAY,OAAO,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAA,KAA4B,QAAQ,CAAC,KAAK,CAAC,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAC;IAElD;;OAEG;IACH,IAAM,kBAAkB,GAAG,WAAW,CAAC;QACrC,0BAA0B;QAC1B,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8BAA8B;QAC9B,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,kBAAkB,EAAE,CAAC;QAErB,wCAAwC;QACxC,UAAU,CAAC;YACT,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7C;;OAEG;IACH,SAAS,CAAC;QACR,IAAM,kBAAkB,GAAG;YACzB,0BAA0B;YAC1B,kBAAkB,EAAE,CAAC;QACvB,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAE5D,OAAO;YACL,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzB,sBAAsB;IACtB,SAAS,CAAC;QACR,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QACnC,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,kCAAkC;QAClC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpB,OAAO;QACL,SAAS,WAAA;QACT,kBAAkB,oBAAA;KACnB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { FlowState } from '../types';\n\n/**\n * Hook for handling interruptions during the flow\n *\n * @param options Configuration options\n * @returns Interruption handling methods and state\n */\nexport const useInterruptHandler = (options: {\n /**\n * Flow state\n */\n state: FlowState;\n /**\n * Record an interruption\n */\n recordInterruption: () => void;\n /**\n * Callback to handle modal close\n */\n onClose?: () => void;\n}) => {\n const { recordInterruption, onClose } = options;\n \n // Use ref to track previous state\n const prevStateRef = useRef<FlowState>(options.state);\n\n const [isClosing, setIsClosing] = useState(false);\n\n /**\n * Handle modal close request\n */\n const handleCloseRequest = useCallback(() => {\n // Skip if already closing\n if (isClosing) {\n return true;\n }\n \n // Always proceed with closing\n setIsClosing(true);\n recordInterruption();\n\n // Delay actual close to allow animation\n setTimeout(() => {\n if (onClose) {\n onClose();\n }\n }, 300);\n\n return true;\n }, [recordInterruption, onClose, isClosing]);\n\n /**\n * Handle beforeunload event to record interruptions\n */\n useEffect(() => {\n const handleBeforeUnload = () => {\n // Record the interruption\n recordInterruption();\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n };\n }, [recordInterruption]);\n\n // Track state changes\n useEffect(() => {\n const currentState = options.state;\n const prevState = prevStateRef.current;\n \n // Update ref if state has changed\n if (currentState !== prevState) {\n prevStateRef.current = currentState;\n }\n }, [options.state]);\n\n return {\n isClosing,\n handleCloseRequest,\n };\n};\n"]}
@@ -1,10 +1,6 @@
1
- import { NordUser } from '@n1xyz/nord-ts';
2
1
  /**
3
2
  * Hook to access the Nord instance and create a NordUser if needed
4
3
  */
5
4
  export declare const useNordInstance: () => {
6
- nord: import("@n1xyz/nord-ts").Nord | undefined;
7
- createNordUser: () => Promise<NordUser | null>;
8
5
  nordUser: any;
9
- createTransactionSignFunction: () => (transaction: any) => Promise<any>;
10
6
  };
@@ -36,28 +36,23 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  };
37
37
  import { NordUser } from '@n1xyz/nord-ts';
38
38
  import { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';
39
- import { PublicKey } from '@solana/web3.js';
40
- import { useEffect } from 'react';
39
+ import { PublicKey, Transaction } from '@solana/web3.js';
40
+ import { useCallback, useEffect, useRef } from 'react';
41
41
  import { WalletError, WalletErrorCode } from '../../../errors/types';
42
42
  import { getSessionKeysFromLocalStorage, storeSessionKeysInLocalStorage, } from '../../../Logic/utils';
43
43
  import { useN1WalletContext, useN1WalletInternalContext, } from '../../../Provider/hooks';
44
44
  import { logger } from '../../../utils/logger';
45
- // Utility function to convert Uint8Array to base64 string
46
- function arrayBufferToBase64(buffer) {
47
- var binary = '';
48
- for (var i = 0; i < buffer.length; i++) {
49
- binary += String.fromCharCode(buffer[i]);
50
- }
51
- return btoa(binary);
52
- }
53
45
  /**
54
46
  * Hook to access the Nord instance and create a NordUser if needed
55
47
  */
56
48
  export var useNordInstance = function () {
57
49
  var _a = useN1WalletContext(), nord = _a.nord, address = _a.address, signMessageWithWalletKey = _a.signMessageWithWalletKey, signMessageWithSessionKey = _a.signMessageWithSessionKey, signTransactionWithWalletKey = _a.signTransactionWithWalletKey, nordUser = _a.nordUser, sessionPubKey = _a.sessionPubKey;
58
50
  var _b = useN1WalletInternalContext(), setSessionPubKey = _b.setSessionPubKey, setSignMessageWithSessionKey = _b.setSignMessageWithSessionKey, setSignMessageWithWalletKey = _b.setSignMessageWithWalletKey, setSignTransactionWithWalletKey = _b.setSignTransactionWithWalletKey, dynamicWallet = _b.dynamicWallet, setNordUser = _b.setNordUser;
51
+ // Use refs to track previous values to prevent unnecessary re-renders
52
+ var prevDynamicWalletRef = useRef(dynamicWallet);
53
+ var prevAddressRef = useRef(address);
59
54
  // Create a wallet signing function if needed
60
- var createWalletSignFunction = function () {
55
+ var createWalletSignFunction = useCallback(function () {
61
56
  if (!dynamicWallet) {
62
57
  return null;
63
58
  }
@@ -88,11 +83,14 @@ export var useNordInstance = function () {
88
83
  // Set the wallet sign function in context
89
84
  setSignMessageWithWalletKey(function () { return signWithWallet; });
90
85
  return signWithWallet;
91
- };
86
+ }, [dynamicWallet, setSignMessageWithWalletKey]);
92
87
  // Create a wallet transaction signing function
93
- var createTransactionSignFunction = function () {
88
+ var createTransactionSignFunction = useCallback(function () {
89
+ if (!dynamicWallet) {
90
+ return null;
91
+ }
94
92
  var signTransactionWithWallet = function (transaction) { return __awaiter(void 0, void 0, void 0, function () {
95
- var signedTransaction, error_2;
93
+ var signedTransaction, serializedTx, error_2;
96
94
  return __generator(this, function (_a) {
97
95
  switch (_a.label) {
98
96
  case 0:
@@ -103,7 +101,10 @@ export var useNordInstance = function () {
103
101
  case 2:
104
102
  signedTransaction = _a.sent();
105
103
  logger.debug('Solana transaction signature received');
106
- return [2 /*return*/, signedTransaction];
104
+ serializedTx = signedTransaction.serialize();
105
+ // Create a new transaction from the serialized data
106
+ // This will have a proper signature property that can be accessed
107
+ return [2 /*return*/, Transaction.from(serializedTx)];
107
108
  case 3: throw new WalletError(WalletErrorCode.USER_REJECTED, 'Unsupported chain', { originalError: new Error('Unsupported chain') });
108
109
  case 4:
109
110
  error_2 = _a.sent();
@@ -116,9 +117,9 @@ export var useNordInstance = function () {
116
117
  // Set the transaction sign function in context
117
118
  setSignTransactionWithWalletKey(function () { return signTransactionWithWallet; });
118
119
  return signTransactionWithWallet;
119
- };
120
+ }, [dynamicWallet, setSignTransactionWithWalletKey]);
120
121
  // Create a session if we have the necessary dependencies but no session sign function
121
- var createSession = function () { return __awaiter(void 0, void 0, void 0, function () {
122
+ var createSession = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
122
123
  var sessionKeyPair_1, storedKeys, tempKeyPair, error_3, signFn_1, error_4;
123
124
  return __generator(this, function (_a) {
124
125
  switch (_a.label) {
@@ -186,9 +187,9 @@ export var useNordInstance = function () {
186
187
  case 8: return [2 /*return*/];
187
188
  }
188
189
  });
189
- }); };
190
+ }); }, [address, dynamicWallet, setSessionPubKey, setSignMessageWithSessionKey]);
190
191
  // Create a NordUser instance if needed
191
- var createNordUser = function () { return __awaiter(void 0, void 0, void 0, function () {
192
+ var createNordUser = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
192
193
  var walletSignFn, sessionSignFn, createdSignFn, sessionId, sessionKeyData, sessionIdKey, storedSessionId, user, _1, error_6;
193
194
  return __generator(this, function (_a) {
194
195
  switch (_a.label) {
@@ -242,6 +243,9 @@ export var useNordInstance = function () {
242
243
  console.error('Error retrieving sessionId from localStorage:', error);
243
244
  }
244
245
  }
246
+ if (!nord || !address || !sessionPubKey) {
247
+ return [2 /*return*/, null];
248
+ }
245
249
  user = new NordUser({
246
250
  nord: nord,
247
251
  address: address,
@@ -274,17 +278,53 @@ export var useNordInstance = function () {
274
278
  case 8: return [2 /*return*/];
275
279
  }
276
280
  });
277
- }); };
281
+ }); }, [
282
+ nord,
283
+ address,
284
+ dynamicWallet,
285
+ signMessageWithWalletKey,
286
+ signMessageWithSessionKey,
287
+ signTransactionWithWalletKey,
288
+ sessionPubKey,
289
+ createWalletSignFunction,
290
+ createTransactionSignFunction,
291
+ createSession,
292
+ setNordUser
293
+ ]);
294
+ // Initialize wallet and session functions only when dependencies change
278
295
  useEffect(function () {
279
- if (dynamicWallet && nord && address) {
296
+ var currentDynamicWallet = dynamicWallet;
297
+ var currentAddress = address;
298
+ var prevDynamicWallet = prevDynamicWalletRef.current;
299
+ var prevAddress = prevAddressRef.current;
300
+ // Only run if dynamicWallet or address has actually changed
301
+ if ((currentDynamicWallet !== prevDynamicWallet ||
302
+ currentAddress !== prevAddress) &&
303
+ currentDynamicWallet &&
304
+ nord &&
305
+ currentAddress) {
306
+ logger.debug('Wallet or address changed, initializing functions');
280
307
  if (signMessageWithSessionKey == null)
281
308
  createSession();
282
309
  if (signMessageWithWalletKey == null)
283
310
  createWalletSignFunction();
284
311
  if (signTransactionWithWalletKey == null)
285
312
  createTransactionSignFunction();
313
+ // Update refs
314
+ prevDynamicWalletRef.current = currentDynamicWallet;
315
+ prevAddressRef.current = currentAddress;
286
316
  }
287
- }, [nord, dynamicWallet, address]);
317
+ }, [
318
+ dynamicWallet,
319
+ address,
320
+ nord,
321
+ signMessageWithSessionKey,
322
+ signMessageWithWalletKey,
323
+ signTransactionWithWalletKey,
324
+ createSession,
325
+ createWalletSignFunction,
326
+ createTransactionSignFunction
327
+ ]);
288
328
  // Initialize NordUser when dependencies change, but only if we don't already have one
289
329
  useEffect(function () {
290
330
  var initNordUser = function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -309,11 +349,11 @@ export var useNordInstance = function () {
309
349
  signMessageWithWalletKey,
310
350
  signMessageWithSessionKey,
311
351
  signTransactionWithWalletKey,
352
+ nordUser,
353
+ createNordUser
312
354
  ]);
313
355
  return {
314
- nord: nord,
315
- createNordUser: createNordUser,
316
356
  nordUser: nordUser,
317
- createTransactionSignFunction: createTransactionSignFunction,
318
357
  };
319
358
  };
359
+ //# sourceMappingURL=useNordInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNordInstance.js","sourceRoot":"","sources":["../../../../src/Modal/NordFlow/hooks/useNordInstance.ts"],"names":[],"mappings":"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","sourcesContent":["import { NordUser } from '@n1xyz/nord-ts';\nimport { generateSessionKeyPair, signEd25519 } from '@n1xyz/nts-sdk';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { WalletError, WalletErrorCode } from '../../../errors/types';\nimport {\n getSessionKeysFromLocalStorage,\n storeSessionKeysInLocalStorage,\n} from '../../../Logic/utils';\nimport {\n useN1WalletContext,\n useN1WalletInternalContext,\n} from '../../../Provider/hooks';\nimport { logger } from '../../../utils/logger';\nimport { sign } from 'crypto';\n\n\n/**\n * Hook to access the Nord instance and create a NordUser if needed\n */\nexport const useNordInstance = () => {\n const {\n nord,\n address,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n nordUser,\n sessionPubKey,\n } = useN1WalletContext();\n const {\n setSessionPubKey,\n setSignMessageWithSessionKey,\n setSignMessageWithWalletKey,\n setSignTransactionWithWalletKey,\n dynamicWallet,\n setNordUser,\n } = useN1WalletInternalContext();\n\n // Use refs to track previous values to prevent unnecessary re-renders\n const prevDynamicWalletRef = useRef(dynamicWallet);\n const prevAddressRef = useRef(address);\n\n // Create a wallet signing function if needed\n const createWalletSignFunction = useCallback(() => {\n if (!dynamicWallet) {\n return null;\n }\n\n const signWithWallet = async (msg: Uint8Array): Promise<Uint8Array> => {\n try {\n const hexMsg = Buffer.from(msg).toString('hex');\n const signature = await dynamicWallet.signMessage(hexMsg);\n const binaryString = atob(signature);\n const signatureUint8Array = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n signatureUint8Array[i] = binaryString.charCodeAt(i);\n }\n return signatureUint8Array;\n } catch (error) {\n console.error('Error signing with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign message with wallet',\n { originalError: error }\n );\n }\n };\n\n // Set the wallet sign function in context\n setSignMessageWithWalletKey(() => signWithWallet);\n return signWithWallet;\n }, [dynamicWallet, setSignMessageWithWalletKey]);\n\n // Create a wallet transaction signing function\n const createTransactionSignFunction = useCallback(() => {\n if (!dynamicWallet) {\n return null;\n }\n \n const signTransactionWithWallet = async (\n transaction: any\n ): Promise<any> => {\n try {\n if (dynamicWallet.chain === 'SOL') {\n const signedTransaction = await (\n await dynamicWallet.getSigner()\n ).signTransaction(transaction);\n logger.debug('Solana transaction signature received');\n \n // Serialize the transaction and create a new one from the serialized data\n // This avoids the need to modify the signature property directly\n const serializedTx = signedTransaction.serialize();\n \n // Create a new transaction from the serialized data\n // This will have a proper signature property that can be accessed\n return Transaction.from(serializedTx);\n }\n\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Unsupported chain',\n { originalError: new Error('Unsupported chain') }\n );\n } catch (error) {\n console.error('Error signing transaction with wallet:', error);\n throw new WalletError(\n WalletErrorCode.USER_REJECTED,\n 'Failed to sign transaction with wallet',\n { originalError: error }\n );\n }\n };\n\n // Set the transaction sign function in context\n setSignTransactionWithWalletKey(() => signTransactionWithWallet);\n return signTransactionWithWallet;\n }, [dynamicWallet, setSignTransactionWithWalletKey]);\n\n // Create a session if we have the necessary dependencies but no session sign function\n const createSession = useCallback(async () => {\n try {\n // Try to load existing session keys from localStorage\n let sessionKeyPair = null;\n if (address) {\n const storedKeys = getSessionKeysFromLocalStorage(address);\n if (storedKeys) {\n // Reconstruct the key pair from the stored private key\n // We need to derive the public key from the private key\n try {\n // Generate a new key pair to get the proper structure\n const tempKeyPair = await generateSessionKeyPair();\n // Replace the private key with our stored one\n sessionKeyPair = {\n privateKey: storedKeys.ed25519PrivateKey,\n // For Ed25519, the public key is the second half of the private key\n publicKey: tempKeyPair.publicKey,\n };\n } catch (error) {\n console.error(\n 'Error reconstructing key pair from stored keys:',\n error\n );\n sessionKeyPair = null;\n }\n }\n }\n\n // If we couldn't load keys from localStorage, generate new ones\n if (!sessionKeyPair) {\n sessionKeyPair = await generateSessionKeyPair();\n }\n\n // Create session signing function\n const signFn = async (message: any): Promise<any> => {\n try {\n return await signEd25519(message, sessionKeyPair.privateKey);\n } catch (error) {\n console.error('Error signing with session key:', error);\n throw error;\n }\n };\n\n // Store session keys\n storeSessionKeysInLocalStorage({\n privKey: sessionKeyPair.privateKey,\n walletPublicKey: address,\n chainName: dynamicWallet?.chain || 'ETH', // Default to ETH if we don't have chain info\n });\n\n // Set session public key and sign function in context\n setSessionPubKey(sessionKeyPair.publicKey);\n setSignMessageWithSessionKey(() => signFn);\n return signFn;\n } catch (error) {\n console.error('Error creating session:', error);\n return null;\n }\n }, [address, dynamicWallet, setSessionPubKey, setSignMessageWithSessionKey]);\n\n // Create a NordUser instance if needed\n const createNordUser = useCallback(async () => {\n try {\n // If we don't have a wallet sign function, create one\n let walletSignFn = signMessageWithWalletKey;\n if (!walletSignFn && dynamicWallet) {\n walletSignFn = createWalletSignFunction();\n\n if (!walletSignFn) {\n console.error('Failed to create wallet sign function');\n return null;\n }\n }\n\n if (!walletSignFn) {\n console.error(\n 'Cannot create NordUser, no wallet sign function available'\n );\n return null;\n }\n\n // If we don't have a transaction sign function, create one\n if (!signTransactionWithWalletKey && dynamicWallet) {\n createTransactionSignFunction();\n }\n\n // If we don't have a session sign function, create one\n let sessionSignFn = signMessageWithSessionKey;\n if (!sessionSignFn) {\n const createdSignFn = await createSession();\n\n if (!createdSignFn) {\n console.error('Failed to create session sign function');\n return null;\n }\n\n sessionSignFn = createdSignFn;\n }\n\n // Check if there's a sessionId stored for the session public key\n let sessionId = undefined;\n if (address) {\n try {\n // Get the session key from localStorage\n const sessionKeyData = getSessionKeysFromLocalStorage(address);\n if (sessionKeyData) {\n // Check if there's a sessionId stored in localStorage\n const sessionIdKey = `n1_sessionId_${address}`;\n const storedSessionId = localStorage.getItem(sessionIdKey);\n if (storedSessionId !== null) {\n // Convert the stored sessionId to BigInt\n sessionId = BigInt(storedSessionId);\n logger.debug('Found existing sessionId in localStorage', {\n sessionId: storedSessionId,\n });\n }\n }\n } catch (error) {\n console.error('Error retrieving sessionId from localStorage:', error);\n }\n }\n\n if (!nord || !address || !sessionPubKey) {\n return null;\n }\n\n const user = new NordUser({\n nord: nord,\n address,\n walletSignFn,\n sessionSignFn,\n transactionSignFn: signTransactionWithWalletKey!,\n sessionId, // Pass the sessionId if it exists\n sessionPubKey: sessionPubKey!,\n publicKey: new PublicKey(address),\n });\n\n try {\n await user.updateAccountId();\n } catch (_) {\n // Ignore errors during account ID update\n }\n\n // Update the nordUser in the context\n setNordUser(user);\n return user;\n } catch (error) {\n console.error('Error creating NordUser:', error);\n setNordUser(null);\n return null;\n }\n }, [\n nord,\n address,\n dynamicWallet,\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n sessionPubKey,\n createWalletSignFunction,\n createTransactionSignFunction,\n createSession,\n setNordUser\n ]);\n\n // Initialize wallet and session functions only when dependencies change\n useEffect(() => {\n const currentDynamicWallet = dynamicWallet;\n const currentAddress = address;\n const prevDynamicWallet = prevDynamicWalletRef.current;\n const prevAddress = prevAddressRef.current;\n\n // Only run if dynamicWallet or address has actually changed\n if (\n (currentDynamicWallet !== prevDynamicWallet || \n currentAddress !== prevAddress) && \n currentDynamicWallet && \n nord && \n currentAddress\n ) {\n logger.debug('Wallet or address changed, initializing functions');\n \n if (signMessageWithSessionKey == null) createSession();\n if (signMessageWithWalletKey == null) createWalletSignFunction();\n if (signTransactionWithWalletKey == null) createTransactionSignFunction();\n \n // Update refs\n prevDynamicWalletRef.current = currentDynamicWallet;\n prevAddressRef.current = currentAddress;\n }\n }, [\n dynamicWallet, \n address, \n nord, \n signMessageWithSessionKey,\n signMessageWithWalletKey,\n signTransactionWithWalletKey,\n createSession,\n createWalletSignFunction,\n createTransactionSignFunction\n ]);\n\n // Initialize NordUser when dependencies change, but only if we don't already have one\n useEffect(() => {\n const initNordUser = async () => {\n if (\n signMessageWithWalletKey &&\n signMessageWithSessionKey &&\n signTransactionWithWalletKey &&\n nordUser == null\n ) {\n logger.debug('Dependencies available, initializing NordUser');\n await createNordUser();\n }\n };\n\n initNordUser();\n }, [\n signMessageWithWalletKey,\n signMessageWithSessionKey,\n signTransactionWithWalletKey,\n nordUser,\n createNordUser\n ]);\n\n return {\n nordUser,\n };\n};\n"]}