@stridge/kit 0.1.0-alpha.6 → 0.1.0-alpha.60

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 (597) hide show
  1. package/README.md +22 -6
  2. package/dist/KitProvider.d.ts +61 -0
  3. package/dist/KitProvider.js +1 -1
  4. package/dist/_internal/activity/driver/index.d.ts +3 -0
  5. package/dist/_internal/activity/driver/index.js +1 -0
  6. package/dist/_internal/deposit/driver/index.d.ts +2 -2
  7. package/dist/_internal/drivers/stridge/index.d.ts +4 -2
  8. package/dist/_internal/drivers/stridge/index.js +1 -1
  9. package/dist/_internal/drivers/stridge-mock/index.d.ts +2 -1
  10. package/dist/_internal/drivers/stridge-mock/index.js +1 -1
  11. package/dist/_internal/withdraw/driver/index.d.ts +2 -2
  12. package/dist/activity/compound/index.d.ts +19 -0
  13. package/dist/activity/compound/index.js +1 -0
  14. package/dist/activity/dialog/index.d.ts +4 -0
  15. package/dist/activity/dialog/index.js +1 -0
  16. package/dist/activity/widgets/index.d.ts +5 -0
  17. package/dist/activity/widgets/index.js +1 -0
  18. package/dist/deposit/compound/index.d.ts +22 -15
  19. package/dist/deposit/compound/index.js +1 -1
  20. package/dist/deposit/dialog/index.d.ts +2 -1
  21. package/dist/deposit/widgets/index.d.ts +16 -0
  22. package/dist/deposit/widgets/index.js +1 -0
  23. package/dist/drivers/stridge/catalog.d.ts +54 -0
  24. package/dist/drivers/stridge/catalog.js +1 -0
  25. package/dist/drivers/stridge/createStridgeActivityDriver.d.ts +44 -0
  26. package/dist/drivers/stridge/createStridgeActivityDriver.js +1 -0
  27. package/dist/drivers/stridge/createStridgeDepositDriver.d.ts +10 -1
  28. package/dist/drivers/stridge/createStridgeDepositDriver.js +1 -1
  29. package/dist/drivers/stridge/createStridgeWithdrawDriver.d.ts +37 -14
  30. package/dist/drivers/stridge/createStridgeWithdrawDriver.js +1 -1
  31. package/dist/drivers/stridge/internal/ensureWalletChain.js +1 -0
  32. package/dist/drivers/stridge/internal/pollOnce.js +1 -1
  33. package/dist/drivers/stridge/internal/resolveAddEthereumChain.js +1 -0
  34. package/dist/drivers/stridge/internal/retry.js +1 -0
  35. package/dist/drivers/stridge/internal/supportedChains.js +1 -0
  36. package/dist/drivers/stridge/types.d.ts +20 -14
  37. package/dist/drivers/stridge/types.js +1 -1
  38. package/dist/drivers/stridge/wagmiSigner.js +1 -1
  39. package/dist/drivers/stridge-mock/createStridgeMockActivityDriver.d.ts +44 -0
  40. package/dist/drivers/stridge-mock/createStridgeMockActivityDriver.js +1 -0
  41. package/dist/drivers/stridge-mock/createStridgeMockDriver.d.ts +2 -2
  42. package/dist/drivers/stridge-mock/createStridgeMockDriver.js +1 -1
  43. package/dist/drivers/stridge-mock/createStridgeMockWithdrawDriver.d.ts +15 -3
  44. package/dist/drivers/stridge-mock/createStridgeMockWithdrawDriver.js +1 -1
  45. package/dist/drivers/stridge-mock/fixtures.d.ts +14 -12
  46. package/dist/drivers/stridge-mock/fixtures.js +1 -1
  47. package/dist/events/bus/createBus.d.ts +26 -0
  48. package/dist/events/bus/createBus.js +1 -0
  49. package/dist/events/bus/flowIdRegistry.d.ts +17 -0
  50. package/dist/events/bus/flowIdRegistry.js +1 -0
  51. package/dist/events/bus/index.js +1 -0
  52. package/dist/events/bus/metadata.js +1 -0
  53. package/dist/events/context.js +1 -0
  54. package/dist/events/emit/index.js +1 -0
  55. package/dist/events/emit/mapFailure.js +1 -0
  56. package/dist/events/emit/useActivityEmissions.js +1 -0
  57. package/dist/events/emit/useDepositEmissions.js +1 -0
  58. package/dist/events/emit/useKitEmitter.js +1 -0
  59. package/dist/events/emit/useWithdrawEmissions.js +1 -0
  60. package/dist/events/hooks/index.d.ts +6 -0
  61. package/dist/events/hooks/index.js +1 -0
  62. package/dist/events/hooks/useCurrentFlowId.d.ts +6 -0
  63. package/dist/events/hooks/useCurrentFlowId.js +1 -0
  64. package/dist/events/hooks/useStableHandler.js +1 -0
  65. package/dist/events/hooks/useStridgeEvent.d.ts +9 -0
  66. package/dist/events/hooks/useStridgeEvent.js +1 -0
  67. package/dist/events/hooks/useStridgeEventBus.d.ts +34 -0
  68. package/dist/events/hooks/useStridgeEventBus.js +1 -0
  69. package/dist/events/hooks/useStridgeEvents.d.ts +7 -0
  70. package/dist/events/hooks/useStridgeEvents.js +1 -0
  71. package/dist/events/hooks/useStridgeFlowEvent.d.ts +8 -0
  72. package/dist/events/hooks/useStridgeFlowEvent.js +1 -0
  73. package/dist/events/hooks/useStridgeFlowEvents.d.ts +6 -0
  74. package/dist/events/hooks/useStridgeFlowEvents.js +1 -0
  75. package/dist/events/index.d.ts +17 -0
  76. package/dist/events/index.js +1 -0
  77. package/dist/events/publish.js +1 -0
  78. package/dist/events/redact.d.ts +34 -0
  79. package/dist/events/redact.js +1 -0
  80. package/dist/events/types/activity.d.ts +53 -0
  81. package/dist/events/types/deposit.d.ts +235 -0
  82. package/dist/events/types/envelope.d.ts +145 -0
  83. package/dist/events/types/index.d.ts +32 -0
  84. package/dist/events/types/kit.d.ts +23 -0
  85. package/dist/events/types/withdraw.d.ts +150 -0
  86. package/dist/flows/activity/compound/ActivityFlow.d.ts +46 -0
  87. package/dist/flows/activity/compound/ActivityFlow.js +1 -0
  88. package/dist/flows/activity/compound/components/Boundary.d.ts +29 -0
  89. package/dist/flows/activity/compound/components/Boundary.js +1 -0
  90. package/dist/flows/activity/compound/components/Steps.d.ts +24 -0
  91. package/dist/flows/activity/compound/components/Steps.js +1 -0
  92. package/dist/flows/activity/dialog/ActivityDialog.d.ts +55 -0
  93. package/dist/flows/activity/dialog/ActivityDialog.js +1 -0
  94. package/dist/flows/activity/dialog/ActivityFlowBoundary.d.ts +1 -0
  95. package/dist/flows/activity/dialog/ActivityFlowBoundary.js +1 -0
  96. package/dist/flows/activity/driver/context.d.ts +38 -0
  97. package/dist/flows/activity/driver/context.js +1 -0
  98. package/dist/flows/activity/driver/types.d.ts +58 -0
  99. package/dist/flows/activity/orchestrator/controller.d.ts +11 -0
  100. package/dist/flows/activity/orchestrator/controller.js +1 -0
  101. package/dist/flows/activity/orchestrator/index.d.ts +4 -0
  102. package/dist/flows/activity/orchestrator/index.js +1 -0
  103. package/dist/flows/activity/orchestrator/reducer.d.ts +1 -0
  104. package/dist/flows/activity/orchestrator/reducer.js +1 -0
  105. package/dist/flows/activity/orchestrator/types.d.ts +71 -0
  106. package/dist/flows/activity/orchestrator/useActivity.d.ts +94 -0
  107. package/dist/flows/activity/orchestrator/useActivity.js +1 -0
  108. package/dist/flows/activity/widgets/ActivityDetail.d.ts +41 -0
  109. package/dist/flows/activity/widgets/ActivityDetail.js +1 -0
  110. package/dist/flows/activity/widgets/ActivityList.d.ts +38 -0
  111. package/dist/flows/activity/widgets/ActivityList.js +1 -0
  112. package/dist/flows/activity/widgets/useStandaloneActivitySource.js +1 -0
  113. package/dist/flows/deposit/bindings/DepositBindings.d.ts +87 -0
  114. package/dist/flows/deposit/bindings/DepositBindings.js +1 -0
  115. package/dist/flows/deposit/bindings/index.d.ts +1 -0
  116. package/dist/flows/deposit/bindings/index.js +1 -0
  117. package/dist/flows/deposit/dialog/DepositBootstrapErrorState.js +1 -1
  118. package/dist/flows/deposit/dialog/DepositDialog.d.ts +26 -79
  119. package/dist/flows/deposit/dialog/DepositDialog.js +1 -1
  120. package/dist/flows/deposit/dialog/WalletRequiredState.js +1 -0
  121. package/dist/flows/deposit/dialog/WalletRequiredState.styles.js +1 -0
  122. package/dist/flows/deposit/driver/payloads.d.ts +52 -5
  123. package/dist/flows/deposit/driver/transformers/balanceToBalancesPayload.d.ts +2 -0
  124. package/dist/flows/deposit/driver/transformers/balanceToBalancesPayload.js +1 -1
  125. package/dist/flows/deposit/driver/transformers/index.d.ts +1 -0
  126. package/dist/flows/deposit/driver/transformers/quoteToPayload.d.ts +2 -0
  127. package/dist/flows/deposit/driver/transformers/settlementToPayload.d.ts +25 -0
  128. package/dist/flows/deposit/driver/transformers/settlementToPayload.js +1 -1
  129. package/dist/flows/deposit/driver/transformers/startToAddressesPayload.d.ts +2 -0
  130. package/dist/flows/deposit/driver/transformers/startToAddressesPayload.js +1 -1
  131. package/dist/flows/deposit/driver/transformers/startToBrandPayload.d.ts +1 -0
  132. package/dist/flows/deposit/driver/transformers/startToTargetPayload.d.ts +2 -0
  133. package/dist/flows/deposit/driver/transformers/startToTargetPayload.js +1 -1
  134. package/dist/flows/deposit/driver/transformers/walletAddressToWalletPayload.d.ts +1 -0
  135. package/dist/flows/deposit/driver/types.d.ts +37 -4
  136. package/dist/flows/deposit/orchestrator/controller.js +1 -1
  137. package/dist/flows/deposit/orchestrator/index.d.ts +5 -0
  138. package/dist/flows/deposit/orchestrator/reducer.d.ts +1 -0
  139. package/dist/flows/deposit/orchestrator/reducer.js +1 -1
  140. package/dist/flows/deposit/orchestrator/types.d.ts +228 -7
  141. package/dist/flows/deposit/orchestrator/useDeposit.d.ts +45 -1
  142. package/dist/flows/deposit/orchestrator/useDeposit.js +1 -1
  143. package/dist/flows/deposit/shared/cash.d.ts +20 -0
  144. package/dist/flows/deposit/shared/cash.js +1 -0
  145. package/dist/flows/deposit/widgets/activity/DepositActivityDetail.d.ts +40 -0
  146. package/dist/flows/deposit/widgets/activity/DepositActivityDetail.js +1 -0
  147. package/dist/flows/deposit/widgets/activity/DepositActivityList.d.ts +38 -0
  148. package/dist/flows/deposit/widgets/activity/DepositActivityList.js +1 -0
  149. package/dist/flows/deposit/widgets/activity/index.d.ts +2 -0
  150. package/dist/flows/deposit/widgets/activity/index.js +1 -0
  151. package/dist/flows/deposit/widgets/activity/useDepositActivitySource.js +1 -0
  152. package/dist/flows/deposit/widgets/amount-entry/AmountEntry.d.ts +32 -5
  153. package/dist/flows/deposit/widgets/amount-entry/AmountEntry.js +1 -1
  154. package/dist/flows/deposit/widgets/amount-entry/footerIntent.js +1 -0
  155. package/dist/flows/deposit/widgets/asset-picker/AssetPicker.d.ts +24 -4
  156. package/dist/flows/deposit/widgets/asset-picker/AssetPicker.js +1 -1
  157. package/dist/flows/deposit/widgets/cash-amount-entry/CashAmountEntry.d.ts +71 -0
  158. package/dist/flows/deposit/widgets/cash-amount-entry/CashAmountEntry.js +1 -0
  159. package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.d.ts +69 -0
  160. package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.js +1 -0
  161. package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.slots.d.ts +16 -0
  162. package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.slots.js +1 -0
  163. package/dist/flows/deposit/widgets/cash-amount-entry/compound/CashAmountEntry.styles.js +1 -0
  164. package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/HeroLabel.d.ts +13 -0
  165. package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/HeroLabel.js +1 -0
  166. package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/MethodChip.d.ts +18 -0
  167. package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/MethodChip.js +1 -0
  168. package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/ReceiveChip.d.ts +14 -0
  169. package/dist/flows/deposit/widgets/cash-amount-entry/compound/components/ReceiveChip.js +1 -0
  170. package/dist/flows/deposit/widgets/cash-amount-entry/compound/context.js +1 -0
  171. package/dist/flows/deposit/widgets/cash-amount-entry/compound/index.d.ts +3 -0
  172. package/dist/flows/deposit/widgets/cash-amount-entry/compound/index.js +1 -0
  173. package/dist/flows/deposit/widgets/cash-amount-entry/compound/types.d.ts +42 -0
  174. package/dist/flows/deposit/widgets/cash-amount-entry/index.d.ts +1 -0
  175. package/dist/flows/deposit/widgets/cash-amount-entry/index.js +1 -0
  176. package/dist/flows/deposit/widgets/cash-confirm/CashConfirm.d.ts +63 -0
  177. package/dist/flows/deposit/widgets/cash-confirm/CashConfirm.js +1 -0
  178. package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.d.ts +54 -0
  179. package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.js +1 -0
  180. package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.slots.d.ts +33 -0
  181. package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.slots.js +1 -0
  182. package/dist/flows/deposit/widgets/cash-confirm/compound/CashConfirm.styles.js +1 -0
  183. package/dist/flows/deposit/widgets/cash-confirm/compound/cashConfirmDimensions.js +1 -0
  184. package/dist/flows/deposit/widgets/cash-confirm/compound/components/ApplePayBody.d.ts +15 -0
  185. package/dist/flows/deposit/widgets/cash-confirm/compound/components/ApplePayBody.js +1 -0
  186. package/dist/flows/deposit/widgets/cash-confirm/compound/components/Body.d.ts +22 -0
  187. package/dist/flows/deposit/widgets/cash-confirm/compound/components/Body.js +1 -0
  188. package/dist/flows/deposit/widgets/cash-confirm/compound/components/BodyLabel.js +1 -0
  189. package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardBody.d.ts +16 -0
  190. package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardBody.js +1 -0
  191. package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.icons.js +1 -0
  192. package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.js +1 -0
  193. package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.keys.js +1 -0
  194. package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.state.js +1 -0
  195. package/dist/flows/deposit/widgets/cash-confirm/compound/components/CardInputRow.styles.js +1 -0
  196. package/dist/flows/deposit/widgets/cash-confirm/compound/components/GooglePayBody.d.ts +16 -0
  197. package/dist/flows/deposit/widgets/cash-confirm/compound/components/GooglePayBody.js +1 -0
  198. package/dist/flows/deposit/widgets/cash-confirm/compound/components/Header.d.ts +21 -0
  199. package/dist/flows/deposit/widgets/cash-confirm/compound/components/Header.js +1 -0
  200. package/dist/flows/deposit/widgets/cash-confirm/compound/components/Summary.d.ts +17 -0
  201. package/dist/flows/deposit/widgets/cash-confirm/compound/components/Summary.js +1 -0
  202. package/dist/flows/deposit/widgets/cash-confirm/compound/components/cardFormat.js +1 -0
  203. package/dist/flows/deposit/widgets/cash-confirm/compound/context.js +1 -0
  204. package/dist/flows/deposit/widgets/cash-confirm/compound/index.d.ts +3 -0
  205. package/dist/flows/deposit/widgets/cash-confirm/compound/index.js +1 -0
  206. package/dist/flows/deposit/widgets/cash-confirm/compound/types.d.ts +66 -0
  207. package/dist/flows/deposit/widgets/cash-confirm/index.d.ts +1 -0
  208. package/dist/flows/deposit/widgets/cash-confirm/index.js +1 -0
  209. package/dist/flows/deposit/widgets/cash-confirm/mocks.js +1 -0
  210. package/dist/flows/deposit/widgets/confirm-deposit/ConfirmDeposit.d.ts +37 -4
  211. package/dist/flows/deposit/widgets/confirm-deposit/ConfirmDeposit.js +1 -1
  212. package/dist/flows/deposit/widgets/deposit/Deposit.d.ts +39 -4
  213. package/dist/flows/deposit/widgets/deposit/Deposit.js +1 -1
  214. package/dist/flows/deposit/widgets/deposit/compound/Deposit.d.ts +58 -1
  215. package/dist/flows/deposit/widgets/deposit/compound/Deposit.js +1 -1
  216. package/dist/flows/deposit/widgets/deposit/compound/Deposit.slots.d.ts +6 -0
  217. package/dist/flows/deposit/widgets/deposit/compound/Deposit.slots.js +1 -1
  218. package/dist/flows/deposit/widgets/deposit/compound/Deposit.styles.js +1 -1
  219. package/dist/flows/deposit/widgets/deposit/compound/components/Boundary.d.ts +29 -0
  220. package/dist/flows/deposit/widgets/deposit/compound/components/Boundary.js +1 -0
  221. package/dist/flows/deposit/widgets/deposit/compound/components/Guards.d.ts +28 -0
  222. package/dist/flows/deposit/widgets/deposit/compound/components/Guards.js +1 -0
  223. package/dist/flows/deposit/widgets/deposit/compound/components/Header.d.ts +11 -0
  224. package/dist/flows/deposit/widgets/deposit/compound/components/Header.js +1 -1
  225. package/dist/flows/deposit/widgets/deposit/compound/components/Method.d.ts +7 -0
  226. package/dist/flows/deposit/widgets/deposit/compound/components/Method.js +1 -1
  227. package/dist/flows/deposit/widgets/deposit/compound/components/MethodSection.d.ts +40 -0
  228. package/dist/flows/deposit/widgets/deposit/compound/components/MethodSection.js +1 -0
  229. package/dist/flows/deposit/widgets/deposit/compound/components/Methods.d.ts +16 -9
  230. package/dist/flows/deposit/widgets/deposit/compound/components/Methods.js +1 -1
  231. package/dist/flows/deposit/widgets/deposit/compound/components/Rail.d.ts +18 -0
  232. package/dist/flows/deposit/widgets/deposit/compound/components/Rail.js +1 -0
  233. package/dist/flows/deposit/widgets/deposit/compound/components/RailPicker.d.ts +43 -0
  234. package/dist/flows/deposit/widgets/deposit/compound/components/RailPicker.js +1 -0
  235. package/dist/flows/deposit/widgets/deposit/compound/components/Steps.d.ts +24 -0
  236. package/dist/flows/deposit/widgets/deposit/compound/components/Steps.js +1 -0
  237. package/dist/flows/deposit/widgets/deposit/compound/index.d.ts +2 -1
  238. package/dist/flows/deposit/widgets/deposit/compound/types.d.ts +106 -4
  239. package/dist/flows/deposit/widgets/deposit-status-banner/DepositStatusBanner.d.ts +41 -1
  240. package/dist/flows/deposit/widgets/deposit-status-banner/DepositStatusBanner.js +1 -1
  241. package/dist/flows/deposit/widgets/deposit-status-banner/compound/DepositStatusBanner.js +1 -1
  242. package/dist/flows/deposit/widgets/deposit-status-banner/compound/components/Hero.js +1 -1
  243. package/dist/flows/deposit/widgets/deposit-status-banner/compound/components/PrimaryAction.js +1 -1
  244. package/dist/flows/deposit/widgets/deposit-status-banner/compound/types.d.ts +5 -5
  245. package/dist/flows/deposit/widgets/error-state/ErrorState.d.ts +39 -4
  246. package/dist/flows/deposit/widgets/error-state/ErrorState.js +1 -1
  247. package/dist/flows/deposit/widgets/processing-state/ProcessingState.d.ts +30 -4
  248. package/dist/flows/deposit/widgets/processing-state/ProcessingState.js +1 -1
  249. package/dist/flows/deposit/widgets/success-state/SuccessState.d.ts +38 -4
  250. package/dist/flows/deposit/widgets/success-state/SuccessState.js +1 -1
  251. package/dist/flows/deposit/widgets/transfer-crypto/TransferCrypto.d.ts +34 -3
  252. package/dist/flows/deposit/widgets/transfer-crypto/TransferCrypto.js +1 -1
  253. package/dist/flows/deposit/widgets/transfer-crypto/compound/TransferCrypto.d.ts +1 -1
  254. package/dist/flows/deposit/widgets/transfer-crypto/compound/TransferCrypto.styles.js +1 -1
  255. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Address.js +1 -1
  256. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Disclosure.d.ts +5 -2
  257. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Disclosure.js +1 -1
  258. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Header.d.ts +6 -0
  259. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Header.js +1 -1
  260. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/QrCode.d.ts +4 -10
  261. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/QrCode.js +1 -1
  262. package/dist/flows/deposit/widgets/transfer-crypto/compound/types.d.ts +16 -2
  263. package/dist/flows/shared/transformers/computeQuoteAttrs.d.ts +1 -0
  264. package/dist/flows/shared/transformers/index.d.ts +1 -0
  265. package/dist/flows/shared/transformers/pickRelevantSettlement.d.ts +1 -0
  266. package/dist/flows/shared/transformers/pickRelevantSettlement.js +1 -1
  267. package/dist/flows/shared/transformers/testnets.js +1 -0
  268. package/dist/flows/withdraw/bindings/WithdrawBindings.d.ts +92 -0
  269. package/dist/flows/withdraw/bindings/WithdrawBindings.js +1 -0
  270. package/dist/flows/withdraw/bindings/index.d.ts +1 -0
  271. package/dist/flows/withdraw/bindings/index.js +1 -0
  272. package/dist/flows/withdraw/dialog/WithdrawDialog.d.ts +44 -71
  273. package/dist/flows/withdraw/dialog/WithdrawDialog.js +1 -1
  274. package/dist/flows/withdraw/driver/dto.d.ts +8 -7
  275. package/dist/flows/withdraw/driver/payloads.d.ts +16 -1
  276. package/dist/flows/withdraw/driver/transformers/settlementToWithdrawalPayload.js +1 -1
  277. package/dist/flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js +1 -1
  278. package/dist/flows/withdraw/driver/types.d.ts +77 -14
  279. package/dist/flows/withdraw/orchestrator/controller.js +1 -1
  280. package/dist/flows/withdraw/orchestrator/index.d.ts +1 -1
  281. package/dist/flows/withdraw/orchestrator/reducer.js +1 -1
  282. package/dist/flows/withdraw/orchestrator/types.d.ts +218 -35
  283. package/dist/flows/withdraw/orchestrator/useWithdraw.d.ts +36 -1
  284. package/dist/flows/withdraw/orchestrator/useWithdraw.js +1 -1
  285. package/dist/flows/withdraw/widgets/activity/WithdrawActivityDetail.d.ts +39 -0
  286. package/dist/flows/withdraw/widgets/activity/WithdrawActivityDetail.js +1 -0
  287. package/dist/flows/withdraw/widgets/activity/WithdrawActivityList.d.ts +36 -0
  288. package/dist/flows/withdraw/widgets/activity/WithdrawActivityList.js +1 -0
  289. package/dist/flows/withdraw/widgets/activity/index.d.ts +2 -0
  290. package/dist/flows/withdraw/widgets/activity/index.js +1 -0
  291. package/dist/flows/withdraw/widgets/activity/useWithdrawActivitySource.js +1 -0
  292. package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.d.ts +60 -0
  293. package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.js +1 -0
  294. package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.slots.d.ts +13 -0
  295. package/dist/flows/withdraw/widgets/withdraw/compound/Withdraw.slots.js +1 -0
  296. package/dist/flows/withdraw/widgets/withdraw/compound/components/Boundary.d.ts +29 -0
  297. package/dist/flows/withdraw/widgets/withdraw/compound/components/Boundary.js +1 -0
  298. package/dist/flows/withdraw/widgets/withdraw/compound/components/Guards.d.ts +25 -0
  299. package/dist/flows/withdraw/widgets/withdraw/compound/components/Guards.js +1 -0
  300. package/dist/flows/withdraw/widgets/withdraw/compound/components/Steps.d.ts +27 -0
  301. package/dist/flows/withdraw/widgets/withdraw/compound/components/Steps.js +1 -0
  302. package/dist/flows/withdraw/widgets/withdraw/compound/index.d.ts +3 -0
  303. package/dist/flows/withdraw/widgets/withdraw/compound/index.js +1 -0
  304. package/dist/flows/withdraw/widgets/withdraw-error/WithdrawError.d.ts +45 -2
  305. package/dist/flows/withdraw/widgets/withdraw-error/WithdrawError.js +1 -1
  306. package/dist/flows/withdraw/widgets/withdraw-form/WithdrawForm.d.ts +32 -12
  307. package/dist/flows/withdraw/widgets/withdraw-form/WithdrawForm.js +1 -1
  308. package/dist/flows/withdraw/widgets/withdraw-form/compound/WithdrawForm.js +1 -1
  309. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Body.d.ts +7 -6
  310. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Header.d.ts +6 -1
  311. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Header.js +1 -1
  312. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/RecipientField.d.ts +7 -5
  313. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/RecipientField.js +1 -1
  314. package/dist/flows/withdraw/widgets/withdraw-form/compound/types.d.ts +15 -5
  315. package/dist/flows/withdraw/widgets/withdraw-form/validation.js +1 -1
  316. package/dist/flows/withdraw/widgets/withdraw-in-progress/WithdrawInProgress.d.ts +39 -3
  317. package/dist/flows/withdraw/widgets/withdraw-in-progress/WithdrawInProgress.js +1 -1
  318. package/dist/flows/withdraw/widgets/withdraw-success/WithdrawSuccess.d.ts +46 -2
  319. package/dist/flows/withdraw/widgets/withdraw-success/WithdrawSuccess.js +1 -1
  320. package/dist/format/index.d.ts +2 -1
  321. package/dist/format/index.js +1 -1
  322. package/dist/i18n/index.d.ts +5 -4
  323. package/dist/i18n/index.js +1 -1
  324. package/dist/i18n/locales/ar.js +1 -1
  325. package/dist/i18n/locales/es.js +1 -1
  326. package/dist/i18n/locales/source-keys.d.ts +12 -0
  327. package/dist/i18n/locales/source-keys.js +0 -0
  328. package/dist/icons/index.d.ts +12 -1
  329. package/dist/icons/index.js +1 -1
  330. package/dist/index.d.ts +36 -11
  331. package/dist/index.js +1 -1
  332. package/dist/package.js +1 -1
  333. package/dist/scope/KitPortalScope.js +1 -1
  334. package/dist/scope/KitScope.d.ts +27 -1
  335. package/dist/scope/KitScope.js +1 -1
  336. package/dist/scope/context.d.ts +24 -1
  337. package/dist/scope/index.d.ts +1 -1
  338. package/dist/shared/attribution/Attribution.js +1 -0
  339. package/dist/shared/attribution/Attribution.slots.js +1 -0
  340. package/dist/shared/attribution/Attribution.styles.js +1 -0
  341. package/dist/shared/attribution/index.js +1 -0
  342. package/dist/shared/chains/index.d.ts +48 -29
  343. package/dist/shared/chains/index.js +1 -1
  344. package/dist/shared/constants/brand-intercom.js +1 -0
  345. package/dist/shared/cuer/Cuer.js +1 -1
  346. package/dist/shared/dialog/DialogShell.d.ts +21 -6
  347. package/dist/shared/dialog/DialogShell.js +1 -1
  348. package/dist/shared/dialog/Frame.js +1 -1
  349. package/dist/shared/dialog/LoadingState.js +1 -0
  350. package/dist/shared/dialog/LoadingState.styles.js +1 -0
  351. package/dist/shared/dialog/StepTransition.js +1 -1
  352. package/dist/shared/dialog/useDirectionalChevronTransform.js +1 -1
  353. package/dist/shared/driver/types.d.ts +4 -3
  354. package/dist/shared/format/formatSmartRelative.d.ts +25 -0
  355. package/dist/shared/format/formatSmartRelative.js +1 -0
  356. package/dist/shared/format/formatUsd.js +1 -1
  357. package/dist/shared/i18n/KitI18nProvider.d.ts +11 -8
  358. package/dist/shared/i18n/KitI18nProvider.js +1 -1
  359. package/dist/shared/i18n/createKitI18n.d.ts +79 -16
  360. package/dist/shared/i18n/createKitI18n.js +1 -1
  361. package/dist/shared/i18n/useLingui.d.ts +11 -3
  362. package/dist/shared/icons/ActivityIcon.d.ts +12 -0
  363. package/dist/shared/icons/ActivityIcon.js +1 -0
  364. package/dist/shared/icons/AmexIcon.d.ts +14 -0
  365. package/dist/shared/icons/AmexIcon.js +1 -0
  366. package/dist/shared/icons/ApplePayIcon.d.ts +15 -0
  367. package/dist/shared/icons/ApplePayIcon.js +1 -0
  368. package/dist/shared/icons/BitcoinIcon.d.ts +17 -0
  369. package/dist/shared/icons/BitcoinIcon.js +1 -0
  370. package/dist/shared/icons/CardIcon.d.ts +16 -0
  371. package/dist/shared/icons/CardIcon.js +1 -0
  372. package/dist/shared/icons/CashIcon.d.ts +16 -0
  373. package/dist/shared/icons/CashIcon.js +1 -0
  374. package/dist/shared/icons/DiscoverIcon.d.ts +14 -0
  375. package/dist/shared/icons/DiscoverIcon.js +1 -0
  376. package/dist/shared/icons/GooglePayIcon.d.ts +15 -0
  377. package/dist/shared/icons/GooglePayIcon.js +1 -0
  378. package/dist/shared/icons/LogoIcon.d.ts +13 -0
  379. package/dist/shared/icons/LogoIcon.js +1 -0
  380. package/dist/shared/icons/MastercardIcon.d.ts +16 -0
  381. package/dist/shared/icons/MastercardIcon.js +1 -0
  382. package/dist/shared/icons/VisaIcon.d.ts +15 -0
  383. package/dist/shared/icons/VisaIcon.js +1 -0
  384. package/dist/shared/merchant-link/MerchantLink.d.ts +1 -0
  385. package/dist/shared/merchant-link/MerchantLink.js +1 -0
  386. package/dist/shared/merchant-link/MerchantLinkButton.d.ts +1 -0
  387. package/dist/shared/merchant-link/MerchantLinkButton.js +1 -0
  388. package/dist/shared/merchant-link/index.d.ts +1 -0
  389. package/dist/shared/merchant-link/index.js +1 -0
  390. package/dist/shared/merchant-link/resolveMerchantLink.js +1 -0
  391. package/dist/shared/orchestrator/activityOpenInput.d.ts +21 -0
  392. package/dist/shared/orchestrator/createActivityReducers.js +1 -0
  393. package/dist/shared/orchestrator/index.d.ts +2 -0
  394. package/dist/shared/orchestrator/index.js +1 -1
  395. package/dist/shared/orchestrator/resolveActivityEntry.d.ts +1 -0
  396. package/dist/shared/orchestrator/resolveActivityEntry.js +1 -0
  397. package/dist/shared/orchestrator/toFailure.js +1 -1
  398. package/dist/shared/orchestrator/types.d.ts +8 -0
  399. package/dist/shared/orchestrator/useSettlementWatcher.js +1 -1
  400. package/dist/shared/presentation/index.js +1 -0
  401. package/dist/shared/presentation/types.d.ts +30 -0
  402. package/dist/shared/presentation/types.js +1 -0
  403. package/dist/shared/presentation/useResolvedSurfaceKind.js +1 -0
  404. package/dist/shared/primitives/TxHashValue/TxHashValue.js +1 -1
  405. package/dist/shared/support/SupportConfigContext.d.ts +1 -0
  406. package/dist/shared/support/SupportConfigContext.js +1 -0
  407. package/dist/shared/support/SupportLink.d.ts +1 -0
  408. package/dist/shared/support/SupportLink.js +1 -0
  409. package/dist/shared/support/SupportSpinner.d.ts +1 -0
  410. package/dist/shared/support/SupportSpinner.js +1 -0
  411. package/dist/shared/support/index.d.ts +2 -0
  412. package/dist/shared/support/index.js +1 -0
  413. package/dist/shared/support/intercom-loader.d.ts +17 -0
  414. package/dist/shared/support/intercom-loader.js +1 -0
  415. package/dist/shared/support/types.d.ts +43 -0
  416. package/dist/shared/support/useIntercomMerchantContext.d.ts +27 -0
  417. package/dist/shared/support/useIntercomMerchantContext.js +1 -0
  418. package/dist/shared/support/useIntercomShutdownOnUnmount.js +1 -0
  419. package/dist/shared/support/useMerchantContext.d.ts +1 -0
  420. package/dist/shared/support/useMerchantContext.js +1 -0
  421. package/dist/shared/support/useSupportTrigger.js +1 -0
  422. package/dist/shared/terms/TermsConfigContext.d.ts +1 -0
  423. package/dist/shared/terms/TermsConfigContext.js +1 -0
  424. package/dist/shared/terms/TermsLink.d.ts +1 -0
  425. package/dist/shared/terms/TermsLink.js +1 -0
  426. package/dist/shared/terms/index.d.ts +1 -0
  427. package/dist/shared/terms/index.js +1 -0
  428. package/dist/shared/terms/types.d.ts +43 -0
  429. package/dist/shared/ui/AdaptiveSurface/AdaptiveSurface.d.ts +52 -0
  430. package/dist/shared/ui/AdaptiveSurface/AdaptiveSurface.js +1 -0
  431. package/dist/shared/ui/AdaptiveSurface/index.d.ts +2 -0
  432. package/dist/shared/ui/AdaptiveSurface/index.js +1 -0
  433. package/dist/shared/ui/Card/Card.d.ts +12 -9
  434. package/dist/shared/ui/Card/Card.js +1 -1
  435. package/dist/shared/ui/Card/Card.styles.js +1 -1
  436. package/dist/shared/ui/Details/Details.d.ts +9 -1
  437. package/dist/shared/ui/Details/Details.styles.js +1 -1
  438. package/dist/shared/ui/Dialog/Dialog.d.ts +10 -8
  439. package/dist/shared/ui/Dialog/Dialog.js +1 -1
  440. package/dist/shared/ui/Dialog/Dialog.styles.js +1 -1
  441. package/dist/shared/ui/Drawer/Drawer.d.ts +135 -0
  442. package/dist/shared/ui/Drawer/Drawer.js +1 -0
  443. package/dist/shared/ui/Drawer/Drawer.slots.d.ts +19 -0
  444. package/dist/shared/ui/Drawer/Drawer.slots.js +1 -0
  445. package/dist/shared/ui/Drawer/Drawer.styles.js +1 -0
  446. package/dist/shared/ui/Drawer/index.d.ts +2 -0
  447. package/dist/shared/ui/Drawer/index.js +1 -0
  448. package/dist/shared/ui/Select/Select.js +1 -1
  449. package/dist/shared/ui/SelectableTile/SelectableTile.d.ts +21 -8
  450. package/dist/shared/ui/SelectableTile/SelectableTile.js +1 -1
  451. package/dist/shared/ui/Steps/Steps.d.ts +52 -0
  452. package/dist/shared/ui/Steps/Steps.js +1 -0
  453. package/dist/shared/ui/Steps/Steps.slots.d.ts +7 -0
  454. package/dist/shared/ui/Steps/Steps.slots.js +1 -0
  455. package/dist/shared/ui/Steps/Steps.styles.js +1 -0
  456. package/dist/shared/ui/Steps/index.d.ts +2 -0
  457. package/dist/shared/ui/Steps/index.js +1 -0
  458. package/dist/shared/ui/Tabs/Tabs.d.ts +79 -0
  459. package/dist/shared/ui/Tabs/Tabs.js +1 -0
  460. package/dist/shared/ui/Tabs/Tabs.slots.d.ts +11 -0
  461. package/dist/shared/ui/Tabs/Tabs.slots.js +1 -0
  462. package/dist/shared/ui/Tabs/Tabs.styles.js +1 -0
  463. package/dist/shared/ui/Tabs/index.d.ts +2 -0
  464. package/dist/shared/ui/Tabs/index.js +1 -0
  465. package/dist/shared/ui/WalletRow/WalletRow.d.ts +1 -1
  466. package/dist/shared/ui/WalletRow/WalletRow.js +1 -1
  467. package/dist/shared/ui/surfaceContext.d.ts +9 -0
  468. package/dist/shared/ui/surfaceContext.js +1 -0
  469. package/dist/shared/utils/assertNever.js +1 -0
  470. package/dist/shared/utils/logos/types.d.ts +1 -1
  471. package/dist/shared/utils/useDeepMemo.js +1 -0
  472. package/dist/shared/wallet/ConnectWalletContext.d.ts +17 -0
  473. package/dist/shared/wallet/ConnectWalletContext.js +1 -0
  474. package/dist/shared/widgets/activity/ActivityTrigger.js +1 -0
  475. package/dist/shared/widgets/activity/ActivityTrigger.styles.js +1 -0
  476. package/dist/shared/widgets/activity/adapters/settlementToWidgetProps.js +1 -0
  477. package/dist/shared/widgets/activity/compound/Activity.d.ts +95 -0
  478. package/dist/shared/widgets/activity/compound/Activity.js +1 -0
  479. package/dist/shared/widgets/activity/compound/Activity.slots.d.ts +22 -0
  480. package/dist/shared/widgets/activity/compound/Activity.slots.js +1 -0
  481. package/dist/shared/widgets/activity/compound/Activity.styles.js +1 -0
  482. package/dist/shared/widgets/activity/compound/ActivityDetail.d.ts +82 -0
  483. package/dist/shared/widgets/activity/compound/ActivityDetail.js +1 -0
  484. package/dist/shared/widgets/activity/compound/Row.slots.d.ts +21 -0
  485. package/dist/shared/widgets/activity/compound/Row.slots.js +1 -0
  486. package/dist/shared/widgets/activity/compound/Row.styles.js +1 -0
  487. package/dist/shared/widgets/activity/compound/components/ActivityHeader.d.ts +39 -0
  488. package/dist/shared/widgets/activity/compound/components/ActivityHeader.js +1 -0
  489. package/dist/shared/widgets/activity/compound/components/Empty.d.ts +15 -0
  490. package/dist/shared/widgets/activity/compound/components/Empty.js +1 -0
  491. package/dist/shared/widgets/activity/compound/components/ErrorView.d.ts +26 -0
  492. package/dist/shared/widgets/activity/compound/components/ErrorView.js +1 -0
  493. package/dist/shared/widgets/activity/compound/components/List.d.ts +23 -0
  494. package/dist/shared/widgets/activity/compound/components/List.js +1 -0
  495. package/dist/shared/widgets/activity/compound/components/Row.d.ts +51 -0
  496. package/dist/shared/widgets/activity/compound/components/Row.js +1 -0
  497. package/dist/shared/widgets/activity/compound/components/StatusPip.js +1 -0
  498. package/dist/shared/widgets/activity/compound/context.d.ts +95 -0
  499. package/dist/shared/widgets/activity/compound/context.js +1 -0
  500. package/dist/shared/widgets/activity/compound/index.d.ts +8 -0
  501. package/dist/shared/widgets/activity/compound/index.js +1 -0
  502. package/dist/shared/widgets/activity/index.js +1 -0
  503. package/dist/shared/widgets/activity/payloads.d.ts +108 -0
  504. package/dist/shared/widgets/activity/transformers/activityResponseToPayload.js +1 -0
  505. package/dist/shared/widgets/activity/transformers/resolveDirection.js +1 -0
  506. package/dist/shared/widgets/amount-entry/compound/AmountEntry.d.ts +10 -2
  507. package/dist/shared/widgets/amount-entry/compound/AmountEntry.js +1 -1
  508. package/dist/shared/widgets/amount-entry/compound/AmountEntry.slots.d.ts +6 -0
  509. package/dist/shared/widgets/amount-entry/compound/AmountEntry.slots.js +1 -1
  510. package/dist/shared/widgets/amount-entry/compound/AmountEntry.styles.js +1 -1
  511. package/dist/shared/widgets/amount-entry/compound/components/Details.d.ts +34 -0
  512. package/dist/shared/widgets/amount-entry/compound/components/Details.js +1 -0
  513. package/dist/shared/widgets/amount-entry/compound/components/Footer.d.ts +2 -1
  514. package/dist/shared/widgets/amount-entry/compound/components/Footer.js +1 -1
  515. package/dist/shared/widgets/amount-entry/compound/components/Header.d.ts +6 -1
  516. package/dist/shared/widgets/amount-entry/compound/components/Header.js +1 -1
  517. package/dist/shared/widgets/amount-entry/compound/components/Hero/Hero.js +1 -1
  518. package/dist/shared/widgets/amount-entry/compound/components/Hero/SwapBackdrop.js +1 -1
  519. package/dist/shared/widgets/amount-entry/compound/components/Notice.d.ts +7 -0
  520. package/dist/shared/widgets/amount-entry/compound/components/Notice.js +1 -0
  521. package/dist/shared/widgets/amount-entry/compound/index.d.ts +1 -1
  522. package/dist/shared/widgets/amount-entry/compound/types.d.ts +63 -3
  523. package/dist/shared/widgets/asset-picker/compound/AssetPicker.d.ts +3 -0
  524. package/dist/shared/widgets/asset-picker/compound/AssetPicker.js +1 -1
  525. package/dist/shared/widgets/asset-picker/compound/AssetPicker.slots.d.ts +2 -0
  526. package/dist/shared/widgets/asset-picker/compound/AssetPicker.slots.js +1 -1
  527. package/dist/shared/widgets/asset-picker/compound/AssetPicker.styles.js +1 -1
  528. package/dist/shared/widgets/asset-picker/compound/components/Asset.d.ts +7 -1
  529. package/dist/shared/widgets/asset-picker/compound/components/Asset.js +1 -1
  530. package/dist/shared/widgets/asset-picker/compound/components/Empty.d.ts +15 -0
  531. package/dist/shared/widgets/asset-picker/compound/components/Empty.js +1 -0
  532. package/dist/shared/widgets/asset-picker/compound/components/Header.d.ts +6 -1
  533. package/dist/shared/widgets/asset-picker/compound/components/Header.js +1 -1
  534. package/dist/shared/widgets/asset-picker/compound/types.d.ts +15 -1
  535. package/dist/shared/widgets/confirm-transfer/compound/ConfirmTransfer.styles.js +1 -1
  536. package/dist/shared/widgets/confirm-transfer/compound/components/Breakdown.js +1 -1
  537. package/dist/shared/widgets/confirm-transfer/compound/components/Disclaimer.d.ts +4 -3
  538. package/dist/shared/widgets/confirm-transfer/compound/components/Disclaimer.js +1 -1
  539. package/dist/shared/widgets/confirm-transfer/compound/components/QuoteTimer.js +1 -1
  540. package/dist/shared/widgets/error-state/compound/components/AssetValue.js +1 -1
  541. package/dist/shared/widgets/error-state/compound/components/HelpInfo.js +1 -1
  542. package/dist/shared/widgets/error-state/compound/components/MoreDetails.d.ts +1 -1
  543. package/dist/shared/widgets/error-state/compound/components/MoreDetails.js +1 -1
  544. package/dist/shared/widgets/error-state/compound/components/StatusValue.js +1 -1
  545. package/dist/shared/widgets/processing-state/compound/ProcessingState.d.ts +1 -5
  546. package/dist/shared/widgets/processing-state/compound/ProcessingState.js +1 -1
  547. package/dist/shared/widgets/processing-state/compound/ProcessingState.slots.d.ts +0 -1
  548. package/dist/shared/widgets/processing-state/compound/ProcessingState.slots.js +1 -1
  549. package/dist/shared/widgets/processing-state/compound/ProcessingState.styles.js +1 -1
  550. package/dist/shared/widgets/processing-state/compound/components/Details.d.ts +6 -1
  551. package/dist/shared/widgets/processing-state/compound/components/Details.js +1 -1
  552. package/dist/shared/widgets/processing-state/compound/components/Header.d.ts +4 -3
  553. package/dist/shared/widgets/processing-state/compound/components/Header.js +1 -1
  554. package/dist/shared/widgets/processing-state/compound/components/Hero.d.ts +14 -7
  555. package/dist/shared/widgets/processing-state/compound/components/Hero.js +1 -1
  556. package/dist/shared/widgets/processing-state/compound/components/Rows.js +1 -1
  557. package/dist/shared/widgets/processing-state/compound/components/StatusPill.js +1 -1
  558. package/dist/shared/widgets/processing-state/compound/components/splitAmount.js +1 -0
  559. package/dist/shared/widgets/processing-state/compound/index.d.ts +1 -1
  560. package/dist/shared/widgets/processing-state/compound/types.d.ts +11 -29
  561. package/dist/shared/widgets/success-state/compound/components/Actions.js +1 -1
  562. package/dist/shared/widgets/success-state/compound/components/AssetValue.js +1 -1
  563. package/dist/shared/widgets/success-state/compound/components/MoreDetails.d.ts +1 -1
  564. package/dist/shared/widgets/success-state/compound/components/MoreDetails.js +1 -1
  565. package/dist/shared/widgets/success-state/compound/components/RouteValue.js +1 -1
  566. package/dist/shared/widgets/success-state/compound/components/StatusPill.js +1 -1
  567. package/dist/shared/widgets/success-state/compound/types.d.ts +5 -5
  568. package/dist/storage/context.d.ts +9 -1
  569. package/dist/storage/context.js +1 -1
  570. package/dist/storage/index.d.ts +1 -1
  571. package/dist/stridge/StridgeProvider.d.ts +187 -35
  572. package/dist/stridge/StridgeProvider.js +1 -1
  573. package/dist/stridge/depositOwner.js +1 -0
  574. package/dist/stridge/optionalWagmi.js +1 -0
  575. package/dist/stridge/stubs.js +1 -1
  576. package/dist/styles/index.css +607 -12
  577. package/dist/types.d.ts +7 -5
  578. package/dist/ui/index.d.ts +9 -1
  579. package/dist/ui/index.js +1 -1
  580. package/dist/version.d.ts +10 -0
  581. package/dist/version.js +1 -0
  582. package/dist/withdraw/compound/index.d.ts +11 -8
  583. package/dist/withdraw/compound/index.js +1 -1
  584. package/dist/withdraw/dialog/index.d.ts +4 -1
  585. package/dist/withdraw/widgets/index.d.ts +7 -0
  586. package/dist/withdraw/widgets/index.js +1 -0
  587. package/package.json +31 -7
  588. package/dist/_internal/deposit/widgets/index.d.ts +0 -11
  589. package/dist/_internal/deposit/widgets/index.js +0 -1
  590. package/dist/_internal/withdraw/widgets/index.d.ts +0 -5
  591. package/dist/_internal/withdraw/widgets/index.js +0 -1
  592. package/dist/flows/withdraw/dialog/WithdrawDialogEventsContext.d.ts +0 -36
  593. package/dist/flows/withdraw/dialog/WithdrawDialogEventsContext.js +0 -1
  594. package/dist/shared/widgets/processing-state/compound/components/Actions.d.ts +0 -17
  595. package/dist/shared/widgets/processing-state/compound/components/Actions.js +0 -1
  596. package/dist/stridge/StridgeContext.d.ts +0 -29
  597. package/dist/stridge/StridgeContext.js +0 -1
@@ -1 +1 @@
1
- import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{pickRelevantSettlement as t}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{formatUsd as n}from"../../shared/format/formatUsd.js";import{balanceToBalancesPayload as r,buildRoutableAllowlist as i}from"../../flows/deposit/driver/transformers/balanceToBalancesPayload.js";import{quoteToPayload as a}from"../../flows/deposit/driver/transformers/quoteToPayload.js";import{settlementToPayload as o}from"../../flows/deposit/driver/transformers/settlementToPayload.js";import{startToAddressesPayload as s}from"../../flows/deposit/driver/transformers/startToAddressesPayload.js";import{startToBrandPayload as c}from"../../flows/deposit/driver/transformers/startToBrandPayload.js";import{startToTargetPayload as l}from"../../flows/deposit/driver/transformers/startToTargetPayload.js";import{walletAddressToWalletPayload as u}from"../../flows/deposit/driver/transformers/walletAddressToWalletPayload.js";import{defaultBlockExplorers as d}from"../../shared/utils/explorers.js";import{createEntityStore as f}from"../stridge-mock/store.js";import{NATIVE_QUOTE_ADDRESS as p,isStablecoinSymbol as m,toBaseUnits as ee}from"./internal/encoding.js";import"./types.js";import{resolveSdkEnv as h}from"./internal/env.js";import{buildKitMetadata as g}from"./internal/metadata.js";import{pollOnce as _}from"./internal/pollOnce.js";import{buildErc20OrNativeStep as v,signAndConfirm as y}from"./internal/signAndConfirm.js";import{startPoll as b}from"./poll.js";import{createStridgeRpc as te}from"./rpc.js";import{createWagmiSigner as x}from"./wagmiSigner.js";import{createApiClient as S}from"@stridge/sdk";function C(C){let O=S({projectKey:C.projectKey,env:h(C.environment)}),k=C.pollIntervals??{},A=k.detectionMs??2e3,j=k.processingMs??2e3,M=k.terminalMs??1e4,N=k.balancesMs??6e4,P=C.minDepositUsd??3,F=C.getI18n??(()=>e),I={...d(),...C.explorers??{}},L=C.destination.network_id,R=C.destination.asset_symbol,z=C.destination.to_address??C.userAddress,B=x({wagmiConfig:C.wagmiConfig}),V=C.rpc??te(),H={address:C.userAddress},U=f({brand:{status:`loading`},target:{status:`loading`},addresses:{status:`loading`},balances:{status:`loading`},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:u(H),raw:H,response:H}}),W,G,K,q;function J(){if(G)return K??=i(G),K}let Y=(async()=>{try{let[e,t]=await Promise.all([O.gateway.start({owner:C.userAddress,destination:{network_id:L,to_address:z,asset_symbol:R},metadata:g({flow:`deposit`,...C.metadata?{hostMetadata:C.metadata}:{},extras:{destination:{networkId:L,assetSymbol:R}}})}),O.uda.supportedAssets().catch(()=>null)]);W=e;let n=e.metadata?.brand_name;typeof n==`string`&&n.trim().length>0&&(q=n.trim());let r=F();if(t&&(G=t,K=void 0),U.update({brand:{status:`ready`,payload:c(e.metadata),raw:e.metadata,response:e},addresses:{status:`ready`,payload:s(e.deposit_addresses,{i18n:r,explorers:I,...t?{chainLogos:T(t)}:{},...t?{minDepositUsdByEip155Id:D(t,P),nativeAssetByEip155Id:E(t)}:{}}),raw:e.deposit_addresses,response:e}}),t){let e=l(t,{i18n:r,networkId:L,assetSymbol:R,minDepositUsd:P}),n=t.assets.find(e=>String(e.network_id)===L);e&&n?U.update({target:{status:`ready`,payload:e,raw:n,response:t}}):U.update({target:{status:`error`,error:Error(`Destination not found in supportedAssets catalog.`)}})}else U.update({target:{status:`error`,error:Error(`supportedAssets fetch failed.`)}})}catch(e){let t=e instanceof Error?e:Error(String(e));U.update({brand:{status:`error`,error:t},target:{status:`error`,error:t},addresses:{status:`error`,error:t}})}})(),X=!1,Z=(async()=>{try{let e=await O.balance.onchain(C.userAddress,{includeSpam:!1,includeZero:!1});await Y;let t=J();if(!t)return null;let n=r(e,{i18n:F(),routable:t,minDepositUsd:P,...C.resolveTokenIcon?{resolveTokenIcon:C.resolveTokenIcon}:{}});return U.update({balances:{status:`ready`,payload:n,raw:e,response:e},wallet:Q(n,F())}),e}catch(e){let t=e instanceof Error?e:Error(String(e));return U.update({balances:{status:`error`,error:t}}),null}})();function Q(e,t){let r=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{status:`ready`,payload:{...u(H),balanceTotalUsd:{value:r,formatted:n(r,t)}},raw:H,response:H}}return{getSnapshot(){return U.getSnapshot()},subscribe(e){return U.subscribe(e)},async requestQuote(e,t){U.update({quote:{status:`loading`}});let n=W;if(!n){U.update({quote:{status:`error`,error:Error(`gateway/start not yet resolved.`)}});return}try{let r=e.sourceChainId,i=e.sourceIsNative?p:e.sourceTokenAddress,o=ee(e.amount,e.sourceTokenDecimals),s=await O.uda.quote({fromNetworkId:r,fromAsset:i,toNetworkId:Number(n.destination.eip155_id),toAsset:n.destination.asset_address||`0x0000000000000000000000000000000000000000`,amount:o,fromAddress:C.userAddress,toAddress:z},{signal:t});if(t.aborted)return;let c=F(),l={chainId:r,networkName:w(r),eip155Id:String(r),symbol:e.sourceTokenSymbol,decimals:e.sourceTokenDecimals,address:e.sourceTokenAddress,isNative:e.sourceIsNative},u={chainId:Number(n.destination.eip155_id),networkName:n.destination.network_name,eip155Id:n.destination.eip155_id,symbol:n.destination.asset_symbol,decimals:n.destination.asset_decimals,address:n.destination.asset_address,isNative:!n.destination.asset_address},d=m(n.destination.asset_symbol)?1:void 0,f=a(s,{i18n:c,sendSide:l,receiveSide:u,sourceAmount:e.amount,now:Date.now(),...e.sourcePriceUsd===void 0?{}:{sendPriceUsd:e.sourcePriceUsd},...d===void 0?{}:{receivePriceUsd:d}});U.update({quote:{status:`ready`,payload:f,raw:s,response:s}})}catch(e){if(t.aborted)return;let n=e instanceof Error?e:Error(String(e));U.update({quote:{status:`error`,error:n}})}},async submitDeposit(e,t){let n=W;if(!n)throw Error(`gateway/start not yet resolved.`);let r=n.deposit_addresses.find(t=>Number(t.eip155_id)===Number(e.sourceChainId));if(!r)throw Error(`No Stridge deposit address provisioned on chain ${e.sourceChainId}. Pick a supported source chain.`);return y({signer:B,rpc:V,step:v({chainId:e.sourceChainId,from:C.userAddress,udaDepositAddress:r.address,amount:e.amount,decimals:e.sourceTokenDecimals,isNative:e.sourceIsNative,...e.sourceIsNative?{}:{sourceTokenAddress:e.sourceTokenAddress}}),signal:t,explorers:I,...C.receiptConfirmations===void 0?{}:{receiptConfirmations:C.receiptConfirmations},...C.receiptPollingIntervalMs===void 0?{}:{receiptPollingIntervalMs:C.receiptPollingIntervalMs}})},watchBalances(e,t,n){b({signal:n,fetch:async e=>{if(!X)return X=!0,Z;try{let t=await O.balance.onchain(C.userAddress,{signal:e,includeSpam:!1,includeZero:!1});await Y;let n=J();if(!n)return null;let i=r(t,{i18n:F(),routable:n,minDepositUsd:P,...C.resolveTokenIcon?{resolveTokenIcon:C.resolveTokenIcon}:{}});return U.update({balances:{status:`ready`,payload:i,raw:t,response:t},wallet:Q(i,F())}),t}catch{return null}},listener:()=>{t(U.getSnapshot().balances)},nextIntervalMs:()=>N})},watchSourceTx(e,t,n){let r=new Set,i={current:!1},a=!1;b({signal:n,fetch:e=>_(O,C.userAddress,$(),e),listener:e=>{if(a||!e)return;let n=e.settlements??[];if(!i.current){for(let e of n)r.add(e.id);i.current=!0;return}let o=n.find(e=>!r.has(e.id));if(!o)return;a=!0;let s=Number(o.from?.eip155_id??`0`);t({hash:o.from?.tx_id??``,...I[s]&&o.from?.tx_id?{explorerUrl:`${I[s].replace(/\/+$/,``)}/tx/${o.from.tx_id}`}:{}})},nextIntervalMs:()=>a?0:A})},watchSettlement(e,n,r){let i=e=>_(O,C.userAddress,$(),e),a=!1;b({signal:r,fetch:i,listener:r=>{if(!r)return;let i=t(r,{txHash:e.tx.hash});if(!i)return;let s=o(i,r,{i18n:F(),sourceWallet:{name:`Wallet`,address:C.userAddress},explorers:I,...q?{brandName:q}:{}});s.kind!==`pending`&&(a=!0);let c={status:`ready`,payload:s,raw:i,response:r};U.update({settlement:c}),n(c)},nextIntervalMs:()=>a?M:j})},async fetchActiveSettlement(e,n){let r=await _(O,C.userAddress,$(),n);if(!r)return null;let i=t(r);if(!i)return null;let a=o(i,r,{i18n:F(),sourceWallet:{name:`Wallet`,address:C.userAddress},explorers:I,...q?{brandName:q}:{}});return a.kind===`pending`?{payload:a,raw:i,response:r}:null}};function $(){return{network_id:L,asset_symbol:R,to_address:z}}}function w(e){switch(e){case 1:return`Ethereum`;case 56:return`BSC`;case 137:return`Polygon`;case 42161:return`Arbitrum`;case 10:return`Optimism`;case 8453:return`Base`;default:return`Chain ${e}`}}function T(e){let t={};for(let n of e.assets){let e=String(n.eip155_id),r=n.native_currency?.logo;r&&(t[e]=r)}return t}function E(e){let t={};for(let n of e.assets){let e=n.native_currency;if(!e?.symbol)continue;let r=String(n.eip155_id);t[r]={symbol:e.symbol,address:``,decimals:typeof e.decimals==`number`?e.decimals:18,isNative:!0,...e.logo?{assetLogoUrl:e.logo}:{}}}return t}function D(e,t){let n={};for(let r of e.assets){let e=String(r.eip155_id),i=r.native_currency?.min_deposit_usd,a=typeof i==`string`&&i.trim().length>0?Number.parseFloat(i):NaN;n[e]=Number.isFinite(a)?a:t}return n}export{C as createStridgeDepositDriver};
1
+ import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{NATIVE_QUOTE_ADDRESS as t,isStablecoinSymbol as n,toBaseUnits as r}from"./internal/encoding.js";import{resolveSdkEnv as i}from"./internal/env.js";import{buildKitMetadata as a}from"./internal/metadata.js";import{pollOnce as o}from"./internal/pollOnce.js";import{buildErc20OrNativeStep as s,signAndConfirm as c}from"./internal/signAndConfirm.js";import{buildEvmChainsParam as l}from"./internal/supportedChains.js";import{withOneShotRetry as u}from"./internal/retry.js";import{pickRelevantSettlement as d}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{createEntityStore as f}from"../stridge-mock/store.js";import{startPoll as p}from"./poll.js";import{formatUsd as m}from"../../shared/format/formatUsd.js";import{balanceToBalancesPayload as h,buildRoutableAllowlist as g}from"../../flows/deposit/driver/transformers/balanceToBalancesPayload.js";import{quoteToPayload as _}from"../../flows/deposit/driver/transformers/quoteToPayload.js";import{settlementToPayload as v}from"../../flows/deposit/driver/transformers/settlementToPayload.js";import{startToAddressesPayload as ee}from"../../flows/deposit/driver/transformers/startToAddressesPayload.js";import{startToBrandPayload as te}from"../../flows/deposit/driver/transformers/startToBrandPayload.js";import{startToTargetPayload as ne}from"../../flows/deposit/driver/transformers/startToTargetPayload.js";import{walletAddressToWalletPayload as y}from"../../flows/deposit/driver/transformers/walletAddressToWalletPayload.js";import{defaultBlockExplorers as re}from"../../shared/utils/explorers.js";import{createStridgeRpc as ie}from"./rpc.js";import{createWagmiSigner as b}from"./wagmiSigner.js";import{createApiClient as x}from"@stridge/sdk";function S(S){let T=x({projectKey:S.projectKey,env:i(S.environment)}),E=S.pollIntervals??{},ce=E.detectionMs??2e3,le=E.processingMs??2e3,D=E.terminalMs??1e4,O=E.balancesMs??6e4,k=S.minAmountUsd,A=S.maxAmountUsd,j=S.getI18n??(()=>e),M={...re(),...S.explorers??{}},N=S.destination.network_id,P=S.destination.asset_symbol,F=S.destination.to_address??S.userAddress,ue=S.rpc??ie(),I={address:S.userAddress},L=f({brand:{status:`idle`},target:{status:`idle`},addresses:{status:`idle`},balances:{status:`idle`},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:y(I),raw:I,response:I},cashMethods:{status:`idle`}}),R,z,B,V,H=S.wagmiConfig?b({wagmiConfig:S.wagmiConfig,getSupportedAssets:()=>z,explorers:M}):void 0;function U(){if(z)return B??=g(z),B}let W=!1,G=Promise.resolve(),K=!1,q=Promise.resolve(null),J=null;function Y(){W||(W=!0,G=de(),q=fe())}let X;async function Z(e){try{if(await G,e.aborted)return null;let t=l(z),n=await T.balance.onchain(S.userAddress,{signal:e,includeSpam:!1,includeZero:!1,...t?{chains:t}:{}});if(e.aborted)return null;J=Date.now();let r=U();if(!r)return L.update({balances:{status:`ready`,payload:[],raw:n,response:n}}),null;let i=h(n,{i18n:j(),routable:r,minAmountUsd:k,...S.resolveTokenIcon?{resolveTokenIcon:S.resolveTokenIcon}:{}});return L.update({balances:{status:`ready`,payload:i,raw:n,response:n},wallet:Q(i,j())}),n}catch{return null}}async function de(){L.update({brand:{status:`loading`},target:{status:`loading`},addresses:{status:`loading`},balances:{status:`loading`}});try{let[e,t]=await Promise.all([u(()=>T.gateway.start({owner:S.userAddress,destination:{network_id:N,to_address:F,asset_symbol:P},metadata:a({flow:`deposit`,...S.metadata?{hostMetadata:S.metadata}:{},extras:{destination:{networkId:N,assetSymbol:P}}})})),S.catalog?S.catalog.getSupportedAssets():u(()=>T.gateway.assets()).catch(()=>null)]);R=e;let n=e.metadata?.brand_name;typeof n==`string`&&n.trim().length>0&&(V=n.trim());let r=j();if(t&&(z=t,B=void 0),L.update({brand:{status:`ready`,payload:te(e.metadata),raw:e.metadata,response:e},addresses:{status:`ready`,payload:ee(e.deposit_addresses,{i18n:r,explorers:M,...t?{chainLogos:w(t)}:{},...t?{minAmountUsdByEip155Id:se(t,k),nativeAssetByEip155Id:ae(t),priceImpactByEip155Id:oe(t)}:{}}),raw:e.deposit_addresses,response:e}}),t){let e=ne(t,{i18n:r,networkId:N,assetSymbol:P,minAmountUsd:k,...A===void 0?{}:{maxAmountUsd:A}}),n=t.assets.find(e=>String(e.network_id)===N);e&&n?L.update({target:{status:`ready`,payload:e,raw:n,response:t}}):L.update({target:{status:`error`,error:Error(`Destination not found in supportedAssets catalog.`)}})}else L.update({target:{status:`error`,error:Error(`supportedAssets fetch failed.`)}})}catch(e){let t=e instanceof Error?e:Error(String(e));L.update({brand:{status:`error`,error:t},target:{status:`error`,error:t},addresses:{status:`error`,error:t}})}}async function fe(){try{await G;let e=l(z),t=await u(()=>T.balance.onchain(S.userAddress,{includeSpam:!1,includeZero:!1,...e?{chains:e}:{}}));J=Date.now();let n=U();if(!n)return L.update({balances:{status:`ready`,payload:[],raw:t,response:t}}),t;let r=h(t,{i18n:j(),routable:n,minAmountUsd:k,...S.resolveTokenIcon?{resolveTokenIcon:S.resolveTokenIcon}:{}});return L.update({balances:{status:`ready`,payload:r,raw:t,response:t},wallet:Q(r,j())}),t}catch(e){let t=e instanceof Error?e:Error(String(e));return L.update({balances:{status:`error`,error:t}}),null}}function Q(e,t){let n=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{status:`ready`,payload:{...y(I),balanceTotalUsd:{value:n,formatted:m(n,t)}},raw:I,response:I}}return{getSnapshot(){return L.getSnapshot()},subscribe(e){return L.subscribe(e)},arm:Y,async requestQuote(e,i){if(Y(),L.update({quote:{status:`loading`}}),await G,i.aborted)return;let a=R;if(!a){L.update({quote:{status:`error`,error:Error(`gateway/start not yet resolved.`)}});return}try{let o=e.sourceChainId,s=e.sourceIsNative?t:e.sourceTokenAddress,c=r(e.amount,e.sourceTokenDecimals),l=await T.uda.quote({fromNetworkId:o,fromAsset:s,toNetworkId:Number(a.destination.eip155_id),toAsset:a.destination.asset_address||`0x0000000000000000000000000000000000000000`,amount:c,fromAddress:S.userAddress,toAddress:F},{signal:i});if(i.aborted)return;let u=j(),d={chainId:o,networkName:C(o),eip155Id:String(o),symbol:e.sourceTokenSymbol,decimals:e.sourceTokenDecimals,address:e.sourceTokenAddress,isNative:e.sourceIsNative},f={chainId:Number(a.destination.eip155_id),networkName:a.destination.network_name,eip155Id:a.destination.eip155_id,symbol:a.destination.asset_symbol,decimals:a.destination.asset_decimals,address:a.destination.asset_address,isNative:!a.destination.asset_address},p=n(a.destination.asset_symbol)?1:void 0,m=_(l,{i18n:u,sendSide:d,receiveSide:f,sourceAmount:e.amount,now:Date.now(),...e.sourcePriceUsd===void 0?{}:{sendPriceUsd:e.sourcePriceUsd},...p===void 0?{}:{receivePriceUsd:p}});L.update({quote:{status:`ready`,payload:m,raw:l,response:l}})}catch(e){if(i.aborted)return;let t=e instanceof Error?e:Error(String(e));L.update({quote:{status:`error`,error:t}})}},async submitDeposit(e,t){if(!H)throw Error(`Connect a wallet to sign and submit the deposit.`);if(Y(),await G,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=R;if(!n)throw Error(`gateway/start not yet resolved.`);let r=n.deposit_addresses.find(t=>Number(t.eip155_id)===Number(e.sourceChainId));if(!r)throw Error(`No Stridge deposit address provisioned on chain ${e.sourceChainId}. Pick a supported source chain.`);return c({signer:H,rpc:ue,step:s({chainId:e.sourceChainId,from:S.userAddress,udaDepositAddress:r.address,amount:e.amount,decimals:e.sourceTokenDecimals,isNative:e.sourceIsNative,...e.sourceIsNative?{}:{sourceTokenAddress:e.sourceTokenAddress}}),signal:t,explorers:M,...S.receiptConfirmations===void 0?{}:{receiptConfirmations:S.receiptConfirmations},...S.receiptPollingIntervalMs===void 0?{}:{receiptPollingIntervalMs:S.receiptPollingIntervalMs}})},watchBalances(e,t,n){Y(),p({signal:n,fetch:async e=>K?J!==null&&Date.now()-J<3e4?L.getSnapshot().balances:Z(e):(K=!0,q),listener:()=>{t(L.getSnapshot().balances)},nextIntervalMs:()=>O})},invalidateBalances(){J=null,X?.abort();let e=new AbortController;X=e,Z(e.signal).finally(()=>{X===e&&(X=void 0)})},watchSourceTx(e,t,n){Y();let r=new Set,i={current:!1},a=!1;p({signal:n,fetch:async e=>{let{matched:t}=await o(T,S.userAddress,$(),e);return t},listener:e=>{if(a||!e)return;let n=e.settlements??[];if(!i.current){for(let e of n)r.add(e.id);i.current=!0;return}let o=n.find(e=>!r.has(e.id));if(!o)return;a=!0;let s=Number(o.from?.eip155_id??`0`);t({hash:o.from?.tx_id??``,...M[s]&&o.from?.tx_id?{explorerUrl:`${M[s].replace(/\/+$/,``)}/tx/${o.from.tx_id}`}:{}})},nextIntervalMs:()=>a?0:ce})},watchSettlement(e,t,n){let r=async e=>{let{matched:t}=await o(T,S.userAddress,$(),e);return t},i=!1;p({signal:n,fetch:r,listener:n=>{if(!n)return;let r=d(n,{txHash:e.tx.hash});if(!r)return;let a=v(r,n,{i18n:j(),sourceWallet:{name:`Wallet`,address:S.userAddress},explorers:M,...V?{brandName:V}:{}});a.kind!==`pending`&&(i=!0);let o={status:`ready`,payload:a,raw:r,response:n};L.update({settlement:o}),t(o)},nextIntervalMs:()=>i?D:le})},async fetchActiveSettlement(e,t){let{matched:n}=await o(T,S.userAddress,$(),t);if(!n)return null;let r=d(n);if(!r)return null;let i=v(r,n,{i18n:j(),sourceWallet:{name:`Wallet`,address:S.userAddress},explorers:M,...V?{brandName:V}:{}});return i.kind===`pending`?{payload:i,raw:r,response:n}:null}};function $(){return{network_id:N,asset_symbol:P,to_address:F}}}function C(e){switch(e){case 1:return`Ethereum`;case 56:return`BSC`;case 137:return`Polygon`;case 42161:return`Arbitrum`;case 10:return`Optimism`;case 8453:return`Base`;default:return`Chain ${e}`}}function w(e){let t={};for(let n of e.assets){let e=String(n.eip155_id),r=n.native_currency?.logo;r&&(t[e]=r)}return t}function ae(e){let t={};for(let n of e.assets){let e=n.native_currency;if(!e?.symbol)continue;let r=String(n.eip155_id),i=typeof e.price_impact==`string`?e.price_impact.trim():``;t[r]={symbol:e.symbol,address:``,decimals:typeof e.decimals==`number`?e.decimals:18,isNative:!0,...e.logo?{assetLogoUrl:e.logo}:{},...i?{priceImpact:i}:{}}}return t}function oe(e){let t={};for(let n of e.assets){let e={};for(let t of n.assets??[]){let n=t.price_impact;typeof n==`string`&&n.trim().length>0&&t.address&&(e[t.address.toLowerCase()]=n.trim())}Object.keys(e).length>0&&(t[String(n.eip155_id)]=e)}return t}function se(e,t){let n={};for(let r of e.assets){let e=String(r.eip155_id),i=r.native_currency?.min_deposit_usd,a=typeof i==`string`&&i.trim().length>0?Number.parseFloat(i):NaN;n[e]=Number.isFinite(a)?a:t}return n}export{S as createStridgeDepositDriver};
@@ -1,6 +1,7 @@
1
1
  import { WithdrawDriver } from "../../flows/withdraw/driver/types.js";
2
2
  import { StridgeRpc } from "./rpc.js";
3
3
  import { StridgeEnvironment, StridgePollIntervals, StridgeTokenIconResolverEntry } from "./types.js";
4
+ import { StridgeCatalog } from "./catalog.js";
4
5
  import { I18n } from "@lingui/core";
5
6
  import { Config } from "wagmi";
6
7
 
@@ -28,7 +29,8 @@ interface StridgeWithdrawCurrency {
28
29
  * recipient/chain/token, so the destination is per-submit (closure state) rather than
29
30
  * driver-config.
30
31
  * - No `confirmDisplay` — withdraw doesn't ship a confirm-deposit step.
31
- * - No `minDepositUsd` — withdraw v1 doesn't surface a USD floor on the form.
32
+ * - No bundled default for `minAmountUsd` — the floor only blocks submit when the host
33
+ * explicitly configures one.
32
34
  */
33
35
  interface CreateStridgeWithdrawDriverInput {
34
36
  /** Connected wallet EOA. Threaded as `gateway/start.owner` and `uda/quote.from_address`. */
@@ -52,12 +54,13 @@ interface CreateStridgeWithdrawDriverInput {
52
54
  */
53
55
  currency: StridgeWithdrawCurrency;
54
56
  /**
55
- * Wagmi config used to sign and broadcast the source-chain transfer. Receipt polling uses an
56
- * internal Stridge RPC client (see `rpc.ts`) withdraws don't depend on the host's wagmi
57
- * public client (which falls through to viem's hard-coded public defaults unreliable for
58
- * live tx flow).
57
+ * Wagmi config slot retained for symmetry with {@link import("./types").StridgeDriverConfig}
58
+ * but no longer consumed by the withdraw driver. Withdraw broadcasting is fully host-driven
59
+ * via the orchestrator's `onSubmit` callback + actions; the kit never signs the source-chain
60
+ * transfer to the UDA itself. Pass it for forward compatibility or omit entirely — both
61
+ * behave identically.
59
62
  */
60
- wagmiConfig: Config;
63
+ wagmiConfig?: Config;
61
64
  /**
62
65
  * Stable `I18n` ref-getter. The driver re-runs transformers on read so locale flips don't
63
66
  * re-bootstrap. When omitted, falls back to the kit's English-only {@link defaultI18n}.
@@ -78,33 +81,53 @@ interface CreateStridgeWithdrawDriverInput {
78
81
  /** Polling cadence overrides. */
79
82
  pollIntervals?: StridgePollIntervals;
80
83
  /**
81
- * Advanced escape hatch: inject a custom Stridge RPC client (e.g. for tests or a self-hosted
82
- * proxy). Defaults to a client that targets `https://${chainId}.nodes.stridge.com`.
84
+ * Retained-for-symmetry RPC slot accepted for parity with the deposit driver config but
85
+ * no longer consumed; the withdraw driver does not poll source-chain receipts (host-side
86
+ * `onSubmit` owns the broadcast lifecycle).
83
87
  */
84
88
  rpc?: StridgeRpc;
85
- /** Block confirmations to wait on before treating the broadcast tx as mined. Defaults to `1`. */
86
- receiptConfirmations?: number;
87
- /** Receipt polling interval in milliseconds while waiting for mining. */
88
- receiptPollingIntervalMs?: number;
89
89
  /**
90
90
  * Optional metadata persisted on every UDA the driver provisions. Echoed back on
91
91
  * `gateway/{owner}` and webhook payloads. Treat as untrusted display data on read. Merged
92
92
  * UNDER the kit-set `kit_flow` / `kit_version` / `source` keys (kit keys win).
93
93
  */
94
94
  metadata?: Record<string, unknown>;
95
+ /**
96
+ * Optional lower USD bound on the withdraw amount. Surfaced on
97
+ * {@link WithdrawSnapshot.minAmountUsd}; the form blocks submit with a localized "Min $X"
98
+ * CTA while the typed amount sits below this value. Omit to leave the form without a lower
99
+ * bound (only the wallet balance / non-zero gate apply).
100
+ */
101
+ minAmountUsd?: number;
102
+ /**
103
+ * Optional upper USD bound on the withdraw amount. Surfaced on
104
+ * {@link WithdrawSnapshot.maxAmountUsd}; the form blocks submit with a localized "Max $X"
105
+ * CTA while the typed amount sits above this value. Omit to let the brand-currency balance
106
+ * be the only ceiling.
107
+ */
108
+ maxAmountUsd?: number;
109
+ /**
110
+ * Provider-scoped shared catalog cache. When supplied, the driver awaits this single
111
+ * in-flight promise instead of issuing its own `Gateway.assets()` call — deduplicates the
112
+ * catalog fetch across deposit + withdraw drivers mounted under one `<StridgeProvider>`.
113
+ * When omitted, the driver falls back to its own per-instance fetch.
114
+ */
115
+ catalog?: StridgeCatalog;
95
116
  }
96
117
  /**
97
118
  * Builds a Stridge-backed {@link WithdrawDriver}. Returns the unified driver contract — the kit's
98
119
  * `<KitProvider withdraw={…}>` consumes this directly, no separate `dataSource` / `operations`
99
120
  * adapter layer.
100
121
  *
101
- * Bootstrap kicks off `Uda.supportedAssets()` and `balance/onchain` in parallel on creation. The
122
+ * Bootstrap is lazy `Gateway.assets()` and `balance/onchain` fire on the first `arm()`, not
123
+ * at construction. Inside `arm()` the two calls run sequentially (assets first so its EVM chain
124
+ * list can be threaded as the `chains` filter on the initial `balance/onchain` call). The
102
125
  * `receiveOptions` entity transitions `loading → ready` once supportedAssets lands; the
103
126
  * `withdrawableBalances` entity flips `loading → ready` after the first balance fetch (and the
104
127
  * supportedAssets-derived source-currency lookup completes).
105
128
  *
106
129
  * `gateway/start` is **not** part of bootstrap — the destination is user-picked at submit time, so
107
- * each `submitWithdrawal` call provisions a fresh UDA scoped to the chosen recipient/chain/token.
130
+ * each `prepareWithdrawal` call provisions a fresh UDA scoped to the chosen recipient/chain/token.
108
131
  * The destination is idempotent on `(owner, destination)`, so repeat submits to the same target
109
132
  * dedupe to one UDA.
110
133
  */
@@ -1 +1 @@
1
- "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{pickRelevantSettlement as t}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{defaultBlockExplorers as n}from"../../shared/utils/explorers.js";import{createEntityStore as r}from"../stridge-mock/store.js";import{NATIVE_QUOTE_ADDRESS as i,isStablecoinSymbol as a,toBaseUnits as o}from"./internal/encoding.js";import{resolveSdkEnv as s}from"./internal/env.js";import{buildKitMetadata as c}from"./internal/metadata.js";import{pollOnce as l}from"./internal/pollOnce.js";import{buildErc20OrNativeStep as u,signAndConfirm as d}from"./internal/signAndConfirm.js";import{startPoll as f}from"./poll.js";import{createStridgeRpc as p}from"./rpc.js";import{createWagmiSigner as m}from"./wagmiSigner.js";import{balanceToWithdrawableBalancesPayload as h}from"../../flows/withdraw/driver/transformers/balanceToWithdrawableBalancesPayload.js";import{quoteToWithdrawalPayload as g}from"../../flows/withdraw/driver/transformers/quoteToWithdrawalPayload.js";import{settlementToWithdrawalPayload as _}from"../../flows/withdraw/driver/transformers/settlementToWithdrawalPayload.js";import{supportedAssetsToReceiveOptionsPayload as v}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{createApiClient as y}from"@stridge/sdk";function b(b){let x=y({projectKey:b.projectKey,env:s(b.environment)}),S=b.pollIntervals??{},C=S.processingMs??2e3,w=S.terminalMs??1e4,T=S.balancesMs??6e4,E=b.getI18n??(()=>e),D={...n(),...b.explorers??{}},O=m({wagmiConfig:b.wagmiConfig}),k=b.rpc??p(),A=r({withdrawableBalances:{status:`loading`},receiveOptions:{status:`loading`},quote:{status:`idle`},settlement:{status:`idle`}}),j,M,N;function P(e){let t=e.assets.find(e=>e.network_id===b.currency.networkId);if(!t)return;let n=b.currency.assetSymbol.toUpperCase(),r=t.native_currency?.symbol?.toUpperCase()===n?t.native_currency:void 0,i=t.assets.find(e=>e.symbol?.toUpperCase()===n),a={networkId:t.network_id,eip155Id:t.eip155_id,networkName:t.network_name,...t.native_currency?.logo?{chainLogoUrl:t.native_currency.logo}:{},decimals:i?.decimals??r?.decimals??18,address:i?.address??``,isNative:!i&&!!r,...i?.logo?{assetLogoUrl:i.logo}:r?.logo?{assetLogoUrl:r.logo}:{}};return i||r?a:void 0}function F(e){let t=E(),n=M,r=h(e,{i18n:t,networkId:b.currency.networkId,assetSymbol:b.currency.assetSymbol,...n?{fallbackMeta:{decimals:n.decimals,address:n.address,isNative:n.isNative,eip155Id:String(n.eip155Id),networkName:n.networkName,...n.chainLogoUrl?{chainLogoUrl:n.chainLogoUrl}:{},...n.assetLogoUrl?{assetLogoUrl:n.assetLogoUrl}:{}}}:{}});A.update({withdrawableBalances:{status:`ready`,payload:r,raw:e,response:e}})}let I=(async()=>{try{let[e,t]=await Promise.all([x.uda.supportedAssets(),x.balance.onchain(b.userAddress,{includeSpam:!1,includeZero:!1}).catch(()=>null)]);j=e,M=P(e);let n=v(e);A.update({receiveOptions:{status:`ready`,payload:n,raw:e.assets,response:e}}),t?F(t):M&&F({wallet_address:b.userAddress,fetched_at:new Date().toISOString(),total_usd:`0`,chains:[]})}catch(e){let t=e instanceof Error?e:Error(String(e));A.update({receiveOptions:{status:`error`,error:t}})}})();function L(){return c({flow:`withdraw`,...b.metadata?{hostMetadata:b.metadata}:{},extras:{source:{networkId:b.currency.networkId,assetSymbol:b.currency.assetSymbol}}})}function R(e,t){if(!j)return;let n=j.assets.find(t=>t.eip155_id===e);if(!n)return;let r=t.toUpperCase(),i=n.native_currency?.symbol?.toUpperCase()===r?n.native_currency:void 0,a=n.assets.find(e=>e.symbol?.toUpperCase()===r);if(!(!i&&!a))return{chainId:n.eip155_id,symbol:a?.symbol??i?.symbol??t,decimals:a?.decimals??i?.decimals??18,address:a?.address??``,isNative:!a&&!!i,...a?.logo?{assetLogoUrl:a.logo}:i?.logo?{assetLogoUrl:i.logo}:{},networkId:n.network_id,networkName:n.network_name,...i?.logo?{chainLogoUrl:i.logo}:{}}}function z(e){let t=A.getSnapshot().receiveOptions;if(!(t.status!==`ready`&&t.status!==`stale`))return t.payload.find(t=>t.eip155Id===e)}return{getSnapshot(){return A.getSnapshot()},subscribe(e){return A.subscribe(e)},async requestQuote(e,t){A.update({quote:{status:`loading`}});try{if(await I,t.aborted)return;let n=M;if(!n)throw Error(`Stridge withdraw driver: source currency ${b.currency.assetSymbol} not found on network ${b.currency.networkId} in supportedAssets.`);let r=R(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let s=o(e.amount,n.decimals),c=await x.uda.quote({fromNetworkId:n.eip155Id,fromAsset:n.isNative?i:n.address,toNetworkId:r.chainId,toAsset:r.isNative?i:r.address,amount:s,fromAddress:b.userAddress,toAddress:e.recipientAddress},{signal:t});if(t.aborted)return;let l=a(b.currency.assetSymbol)?1:void 0,u=a(r.symbol)?1:void 0,d=g(c,{i18n:E(),receiveSide:r,sourceAmount:e.amount,sendDecimals:n.decimals,sendSymbol:b.currency.assetSymbol,now:Date.now(),...l===void 0?{}:{sendPriceUsd:l},...u===void 0?{}:{receivePriceUsd:u}});A.update({quote:{status:`ready`,payload:d,raw:c,response:c}})}catch(e){if(t.aborted)return;let n=e instanceof Error?e:Error(String(e));A.update({quote:{status:`error`,error:n}})}},async submitWithdrawal(e,t){if(await I,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=M;if(!n)throw Error(`Stridge withdraw driver: source currency ${b.currency.assetSymbol} not found on network ${b.currency.networkId} in supportedAssets.`);let r=R(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let i=await x.gateway.start({owner:b.userAddress,destination:{network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},metadata:L()},{signal:t});if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let a=i.deposit_addresses.find(e=>Number(e.eip155_id)===n.eip155Id);if(!a)throw Error(`Stridge withdraw driver: no UDA deposit address provisioned on chain ${n.eip155Id} for the brand currency. Check that supportedAssets advertises this chain.`);return N={network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},d({signer:O,rpc:k,step:u({chainId:n.eip155Id,from:b.userAddress,udaDepositAddress:a.address,amount:e.amount,decimals:n.decimals,isNative:n.isNative,...n.isNative?{}:{sourceTokenAddress:n.address}}),signal:t,explorers:D,...b.receiptConfirmations===void 0?{}:{receiptConfirmations:b.receiptConfirmations},...b.receiptPollingIntervalMs===void 0?{}:{receiptPollingIntervalMs:b.receiptPollingIntervalMs}})},watchSettlement(e,n,r){let i=e=>l(x,b.userAddress,N,e),a=!1;f({signal:r,fetch:i,listener:r=>{if(!r)return;let i=t(r,{txHash:e.tx.hash});if(!i)return;let o=E(),s=z(Number(r.destination.eip155_id)),c=s?.tokens.find(e=>e.symbol===r.destination.asset_symbol),l={...s?.chainLogoUrl?{chainLogoUrl:s.chainLogoUrl}:{},...c?.assetLogoUrl?{assetLogoUrl:c.assetLogoUrl}:{},...s?.networkName?{networkName:s.networkName}:{}},u=_(i,r,{i18n:o,explorers:D,...Object.keys(l).length>0?{receiveAssetEnrichment:l}:{}});u.kind!==`pending`&&(a=!0);let d={status:`ready`,payload:u,raw:i,response:r};A.update({settlement:d}),n(d)},nextIntervalMs:()=>a?w:C})},watchWithdrawableBalances(e,t,n){f({signal:n,fetch:async e=>{try{return await I,e.aborted?null:await x.balance.onchain(b.userAddress,{signal:e,includeSpam:!1,includeZero:!1})}catch{return null}},listener:e=>{e&&F(e),t(A.getSnapshot().withdrawableBalances)},nextIntervalMs:()=>T})}}}export{b as createStridgeWithdrawDriver};
1
+ "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{NATIVE_QUOTE_ADDRESS as t,isStablecoinSymbol as n,toBaseUnits as r}from"./internal/encoding.js";import{resolveSdkEnv as i}from"./internal/env.js";import{buildKitMetadata as a}from"./internal/metadata.js";import{pollOnce as o}from"./internal/pollOnce.js";import{buildEvmChainsParam as s}from"./internal/supportedChains.js";import{withOneShotRetry as c}from"./internal/retry.js";import{pickRelevantSettlement as l}from"../../flows/shared/transformers/pickRelevantSettlement.js";import{createEntityStore as u}from"../stridge-mock/store.js";import{startPoll as d}from"./poll.js";import{formatUsd as f}from"../../shared/format/formatUsd.js";import{defaultBlockExplorers as p}from"../../shared/utils/explorers.js";import{balanceToWithdrawableBalancesPayload as m}from"../../flows/withdraw/driver/transformers/balanceToWithdrawableBalancesPayload.js";import{quoteToWithdrawalPayload as h}from"../../flows/withdraw/driver/transformers/quoteToWithdrawalPayload.js";import{settlementToWithdrawalPayload as g}from"../../flows/withdraw/driver/transformers/settlementToWithdrawalPayload.js";import{supportedAssetsToReceiveOptionsPayload as _}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{createApiClient as v}from"@stridge/sdk";function y(y){let b=v({projectKey:y.projectKey,env:i(y.environment)}),x=y.pollIntervals??{},S=x.processingMs??2e3,C=x.terminalMs??1e4,w=x.balancesMs??6e4,T=y.getI18n??(()=>e),E={...p(),...y.explorers??{}},D=T(),O=u({withdrawableBalances:{status:`idle`},receiveOptions:{status:`idle`},quote:{status:`idle`},settlement:{status:`idle`},...y.minAmountUsd===void 0?{}:{minAmountUsd:{value:y.minAmountUsd,formatted:f(y.minAmountUsd,D)}},...y.maxAmountUsd===void 0?{}:{maxAmountUsd:{value:y.maxAmountUsd,formatted:f(y.maxAmountUsd,D)}}}),k,A,j;function M(e){let t=e.assets.find(e=>e.network_id===y.currency.networkId);if(!t)return;let n=y.currency.assetSymbol.toUpperCase(),r=t.native_currency?.symbol?.toUpperCase()===n?t.native_currency:void 0,i=t.assets.find(e=>e.symbol?.toUpperCase()===n),a={networkId:t.network_id,eip155Id:t.eip155_id,networkName:t.network_name,...t.native_currency?.logo?{chainLogoUrl:t.native_currency.logo}:{},decimals:i?.decimals??r?.decimals??18,address:i?.address??``,isNative:!i&&!!r,...i?.logo?{assetLogoUrl:i.logo}:r?.logo?{assetLogoUrl:r.logo}:{}};return i||r?a:void 0}function N(e){let t=T(),n=A,r=m(e,{i18n:t,networkId:y.currency.networkId,assetSymbol:y.currency.assetSymbol,...n?{fallbackMeta:{decimals:n.decimals,address:n.address,isNative:n.isNative,eip155Id:String(n.eip155Id),networkName:n.networkName,...n.chainLogoUrl?{chainLogoUrl:n.chainLogoUrl}:{},...n.assetLogoUrl?{assetLogoUrl:n.assetLogoUrl}:{}}}:{}});O.update({withdrawableBalances:{status:`ready`,payload:r,raw:e,response:e}})}let P=!1,F=Promise.resolve(),I=!1,L=null;function R(){P||(P=!0,F=z())}async function z(){O.update({withdrawableBalances:{status:`loading`},receiveOptions:{status:`loading`}});let e=y.catalog?await y.catalog.getSupportedAssets():await c(()=>b.gateway.assets()).catch(()=>null);if(e){k=e,A=M(e);let t=_(e);O.update({receiveOptions:{status:`ready`,payload:t,raw:e.assets,response:e}})}else O.update({receiveOptions:{status:`error`,error:Error(`supportedAssets fetch failed.`)}});let t=s(e??void 0),n=await c(()=>b.balance.onchain(y.userAddress,{includeSpam:!1,includeZero:!1,...t?{chains:t}:{}})).catch(()=>null);n?(L=Date.now(),N(n)):N({wallet_address:y.userAddress,fetched_at:new Date().toISOString(),total_usd:`0`,chains:[]})}function B(){return a({flow:`withdraw`,...y.metadata?{hostMetadata:y.metadata}:{},extras:{source:{networkId:y.currency.networkId,assetSymbol:y.currency.assetSymbol}}})}function V(e,t){if(!k)return;let n=k.assets.find(t=>t.eip155_id===e);if(!n)return;let r=t.toUpperCase(),i=n.native_currency?.symbol?.toUpperCase()===r?n.native_currency:void 0,a=n.assets.find(e=>e.symbol?.toUpperCase()===r);if(!(!i&&!a))return{chainId:n.eip155_id,symbol:a?.symbol??i?.symbol??t,decimals:a?.decimals??i?.decimals??18,address:a?.address??``,isNative:!a&&!!i,...a?.logo?{assetLogoUrl:a.logo}:i?.logo?{assetLogoUrl:i.logo}:{},networkId:n.network_id,networkName:n.network_name,...i?.logo?{chainLogoUrl:i.logo}:{}}}function H(e){let t=O.getSnapshot().receiveOptions;if(!(t.status!==`ready`&&t.status!==`stale`))return t.payload.find(t=>t.eip155Id===e)}return{getSnapshot(){return O.getSnapshot()},subscribe(e){return O.subscribe(e)},arm:R,async requestQuote(e,i){R(),O.update({quote:{status:`loading`}});try{if(await F,i.aborted)return;let a=A;if(!a)throw Error(`Stridge withdraw driver: source currency ${y.currency.assetSymbol} not found on network ${y.currency.networkId} in supportedAssets.`);let o=V(e.receiveChainId,e.receiveTokenSymbol);if(!o)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let s=r(e.amount,a.decimals),c=await b.uda.quote({fromNetworkId:a.eip155Id,fromAsset:a.isNative?t:a.address,toNetworkId:o.chainId,toAsset:o.isNative?t:o.address,amount:s,fromAddress:y.userAddress,toAddress:e.recipientAddress},{signal:i});if(i.aborted)return;let l=n(y.currency.assetSymbol)?1:void 0,u=n(o.symbol)?1:void 0,d=h(c,{i18n:T(),receiveSide:o,sourceAmount:e.amount,sendDecimals:a.decimals,sendSymbol:y.currency.assetSymbol,now:Date.now(),...l===void 0?{}:{sendPriceUsd:l},...u===void 0?{}:{receivePriceUsd:u}});O.update({quote:{status:`ready`,payload:d,raw:c,response:c}})}catch(e){if(i.aborted)return;let t=e instanceof Error?e:Error(String(e));O.update({quote:{status:`error`,error:t}})}},async prepareWithdrawal(e,t){if(R(),await F,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=A;if(!n)throw Error(`Stridge withdraw driver: source currency ${y.currency.assetSymbol} not found on network ${y.currency.networkId} in supportedAssets.`);let r=V(e.receiveChainId,e.receiveTokenSymbol);if(!r)throw Error(`Stridge withdraw driver: receive asset ${e.receiveTokenSymbol} not found on chain ${e.receiveChainId} in supportedAssets.`);let i=await b.gateway.start({owner:y.userAddress,destination:{network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},metadata:B()},{signal:t});if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let a=i.deposit_addresses.find(e=>Number(e.eip155_id)===n.eip155Id);if(!a)throw Error(`Stridge withdraw driver: no UDA deposit address provisioned on chain ${n.eip155Id} for the brand currency. Check that supportedAssets advertises this chain.`);return j={network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},{depositTarget:{address:a.address,chainId:n.eip155Id,tokenSymbol:y.currency.assetSymbol,tokenAddress:n.isNative?``:n.address,tokenDecimals:n.decimals,isNative:n.isNative,amount:e.amount},correlation:{owner:y.userAddress}}},watchSettlement(e,t,n){let i=async e=>{let{matched:t}=await o(b,y.userAddress,j,e);return t},a=!1;d({signal:n,fetch:i,listener:n=>{if(!n)return;let i=A?r(e.form.amount,A.decimals).toString():void 0,o=e.tx?.hash?l(n,{txHash:e.tx.hash}):l(n,{bestMatch:{destination:{chainId:e.form.receiveChainId,tokenSymbol:e.form.receiveTokenSymbol,recipientAddress:e.form.recipientAddress},submittedAt:e.submittedAt,...i?{sourceAmountBaseUnits:i}:{}}});if(!o)return;let s=T(),c=H(Number(n.destination.eip155_id)),u=c?.tokens.find(e=>e.symbol===n.destination.asset_symbol),d={...c?.chainLogoUrl?{chainLogoUrl:c.chainLogoUrl}:{},...u?.assetLogoUrl?{assetLogoUrl:u.assetLogoUrl}:{},...c?.networkName?{networkName:c.networkName}:{}},f=g(o,n,{i18n:s,explorers:E,...Object.keys(d).length>0?{receiveAssetEnrichment:d}:{},...u?.decimals===void 0?{}:{receiveAssetDecimals:u.decimals}});f.kind!==`pending`&&(a=!0);let p={status:`ready`,payload:f,raw:o,response:n};O.update({settlement:p}),t(p)},nextIntervalMs:()=>a?C:S})},watchWithdrawableBalances(e,t,n){R(),d({signal:n,fetch:async e=>{if(!I){I=!0,await F;let e=O.getSnapshot().withdrawableBalances;return e.status===`ready`||e.status===`stale`?e.response:null}if(L!==null&&Date.now()-L<3e4)return null;try{if(await F,e.aborted)return null;let t=s(k),n=await b.balance.onchain(y.userAddress,{signal:e,includeSpam:!1,includeZero:!1,...t?{chains:t}:{}});return L=Date.now(),n}catch{return null}},listener:e=>{e&&N(e),t(O.getSnapshot().withdrawableBalances)},nextIntervalMs:()=>w})}}}export{y as createStridgeWithdrawDriver};
@@ -0,0 +1 @@
1
+ import{resolveAddEthereumChain as e}from"./resolveAddEthereumChain.js";import{numberToHex as t}from"viem";import{getAccount as n,switchChain as r}from"wagmi/actions";function i(e){let t=e,n=new Set;for(;t&&!n.has(t);){if(n.add(t),t instanceof Error&&t.name===`ChainNotConfiguredError`)return!0;t=t.cause}return!1}function a(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===4902||t.data?.originalError?.code===4902}async function o(o,s){let c=n(s.wagmiConfig);if(c.chainId===o)return;if(!c.connector)throw Error(`Connect a wallet to sign and submit the deposit.`);try{await r(s.wagmiConfig,{chainId:o});return}catch(e){if(!i(e))throw e}let l=e(o,{wagmiConfig:s.wagmiConfig,supportedAssets:s.getSupportedAssets(),explorers:s.explorers});if(!l)throw Error(`Unable to add chain ${o} to your wallet automatically. Add it manually in your wallet and try again.`);let u=await c.connector.getProvider({chainId:o}),d=t(o);try{await u.request({method:`wallet_switchEthereumChain`,params:[{chainId:d}]})}catch(e){if(!a(e))throw e;await u.request({method:`wallet_addEthereumChain`,params:[l]})}let f=await u.request({method:`eth_chainId`});if(Number.parseInt(f,16)!==o){let e=Error(`User rejected the chain switch after adding the network.`);throw e.name=`UserRejectedRequestError`,Object.assign(e,{code:4001}),e}}export{o as ensureWalletChain};
@@ -1 +1 @@
1
- async function e(e,t,n,r){try{return await e.gateway.poll(t,{...n?{network_id:n.network_id,to_address:n.to_address,asset_symbol:n.asset_symbol}:{},signal:r})}catch(e){if(r.aborted)throw e;if(e.statusCode===404)return null;throw e}}export{e as pollOnce};
1
+ async function e(e,n,r,i){try{let a=await e.gateway.poll(n,{...r?{network_id:r.network_id,to_address:r.to_address,asset_symbol:r.asset_symbol}:{},signal:i});return{matched:t(a.udas,r),envelope:a}}catch(e){if(i.aborted)throw e;if(e.statusCode===404)return{matched:null,envelope:null};throw e}}function t(e,t){if(e.length===0)return null;if(!t)return e[0]??null;let n=t.to_address.toLowerCase(),r=t.asset_symbol.toUpperCase();return e.find(e=>e.destination.network_id===t.network_id&&(e.destination.asset_symbol??``).toUpperCase()===r&&(e.destination.address??``).toLowerCase()===n)??null}export{e as pollOnce};
@@ -0,0 +1 @@
1
+ import{numberToHex as e}from"viem";const t=e=>`https://${e}.nodes.stridge.com`;function n(n,r){let i=r.wagmiConfig.chains.find(e=>e.id===n),a=r.supportedAssets?.assets.find(e=>e.chain_type===`EVM`&&e.eip155_id===n),o=i?.name??a?.network_name,s=i?.nativeCurrency.symbol??a?.native_currency.symbol,c=typeof a?.native_currency.decimals==`number`?a.native_currency.decimals:void 0,l=i?.nativeCurrency.decimals??c??18,u=i?.nativeCurrency.name??a?.native_currency.name??s;if(!o||!s||!u)return;let d=i?.rpcUrls.default?.http[0],f=[d&&d.length>0?d:t(n)],p=i?.blockExplorers?.default?.url??r.explorers[n];return{chainId:e(n),chainName:o,nativeCurrency:{name:u,symbol:s,decimals:l},rpcUrls:f,...p?{blockExplorerUrls:[p]}:{}}}export{n as resolveAddEthereumChain};
@@ -0,0 +1 @@
1
+ async function e(e,r={}){let i=r.baseDelayMs??500,a=r.jitterMs??250;try{return await e()}catch(r){if(!t(r))throw r;return await n(i+Math.random()*a),await e()}}function t(e){if(!e||typeof e!=`object`)return!0;let t=e;return t.name===`AbortError`?!1:typeof t.status==`number`?t.status>=500||t.status===429:!0}function n(e){return new Promise(t=>setTimeout(t,e))}export{e as withOneShotRetry};
@@ -0,0 +1 @@
1
+ import{KNOWN_TESTNET_EIP155_IDS as e}from"../../../flows/shared/transformers/testnets.js";function t(t){if(!t)return;let n=new Set;for(let r of t.assets)r.chain_type===`EVM`&&(typeof r.eip155_id!=`number`||!Number.isFinite(r.eip155_id)||r.eip155_id<=0||e.has(r.eip155_id)||n.add(r.eip155_id));if(n.size!==0)return Array.from(n).join(`,`)}export{t as buildEvmChainsParam};
@@ -34,11 +34,6 @@ interface StridgePollIntervals {
34
34
  type StridgeEnvironment = "production" | "staging";
35
35
  /** Default {@link StridgeEnvironment} when {@link StridgeDriverConfig.environment} is omitted. */
36
36
  declare const STRIDGE_DEFAULT_ENVIRONMENT = "production";
37
- /**
38
- * Default low-balance / amount-entry floor in USD used when {@link StridgeDriverConfig.minDepositUsd}
39
- * is omitted. Hosts can override per project (some perp DEXes want a higher floor than $3).
40
- */
41
- declare const STRIDGE_DEFAULT_MIN_DEPOSIT_USD = 3;
42
37
  /**
43
38
  * Settlement destination for `gateway/start`. Mirrors the wire shape so hosts don't have to reach
44
39
  * for the SDK's `GatewayStartRequest.destination` type — every field corresponds 1:1.
@@ -81,11 +76,19 @@ interface StridgeDriverConfig {
81
76
  */
82
77
  destination: StridgeDriverDestination;
83
78
  /**
84
- * Low-balance / amount-entry USD floor. Drives the asset-picker's "Low balance" pill and the
85
- * amount-entry hero's `min` / `initialAmount` (via {@link toKitTarget}). Defaults to
86
- * {@link STRIDGE_DEFAULT_MIN_DEPOSIT_USD} when omitted.
79
+ * Low-balance / amount-entry USD floor. Drives the asset-picker's "Low Balance" pill and the
80
+ * amount-entry hero's `min` / `initialAmount`. The kit ships no default — when omitted, the
81
+ * floor is unset and the picker / amount-entry surface neither a "Low Balance" pill nor a
82
+ * minimum CTA. Hosts that want a floor opt in by passing the USD value here.
83
+ */
84
+ minAmountUsd?: number;
85
+ /**
86
+ * Optional upper USD bound on the deposit amount. When set, the amount-entry treats
87
+ * `min(walletBalanceUsd, maxAmountUsd)` as the effective ceiling — typing above it surfaces
88
+ * an inline notice and the footer CTA snaps the amount down on click. Omit to let the
89
+ * wallet balance be the only ceiling.
87
90
  */
88
- minDepositUsd?: number;
91
+ maxAmountUsd?: number;
89
92
  /**
90
93
  * Optional metadata persisted on the UDA at `gateway/start` time. Echoed back on
91
94
  * `gateway/{owner}` and webhook payloads. Treat as untrusted display data.
@@ -104,12 +107,15 @@ interface StridgeDriverConfig {
104
107
  /** Polling cadence overrides. */
105
108
  pollIntervals?: StridgePollIntervals;
106
109
  /**
107
- * Wagmi config used to sign and broadcast transfers. Receipt polling is intentionally NOT
110
+ * Wagmi config used to sign and broadcast transfers. Optional when omitted, the driver
111
+ * still bootstraps for read-only paths (balances, addresses, brand, quotes) and the
112
+ * transfer-crypto method path, but {@link DepositDriver.submitDeposit} throws a user-readable
113
+ * error since signing has no connector to talk to. Receipt polling is intentionally NOT
108
114
  * routed through this — the driver uses an internal Stridge RPC client (see `rpc.ts`) so
109
- * deposits don't depend on the host's wagmi public client (which falls
110
- * through to viem's hard-coded public defaults — unreliable for live tx flow).
115
+ * deposits don't depend on the host's wagmi public client (which falls through to viem's
116
+ * hard-coded public defaults — unreliable for live tx flow).
111
117
  */
112
- wagmiConfig: Config;
118
+ wagmiConfig?: Config;
113
119
  /**
114
120
  * Advanced escape hatch: inject a custom Stridge RPC client (e.g. for tests or a self-hosted
115
121
  * proxy). Defaults to a client that targets `https://${chainId}.nodes.stridge.com`.
@@ -142,4 +148,4 @@ interface StridgeDriverConfig {
142
148
  };
143
149
  }
144
150
  //#endregion
145
- export { STRIDGE_DEFAULT_ENVIRONMENT, STRIDGE_DEFAULT_MIN_DEPOSIT_USD, StridgeDriverConfig, StridgeDriverDestination, StridgeEnvironment, StridgePollIntervals, StridgeTokenIconResolverEntry };
151
+ export { STRIDGE_DEFAULT_ENVIRONMENT, StridgeDriverConfig, StridgeDriverDestination, StridgeEnvironment, StridgePollIntervals, StridgeTokenIconResolverEntry };
@@ -1 +1 @@
1
- const e=`production`,t=3;export{e as STRIDGE_DEFAULT_ENVIRONMENT,t as STRIDGE_DEFAULT_MIN_DEPOSIT_USD};
1
+ const e=`production`;export{e as STRIDGE_DEFAULT_ENVIRONMENT};
@@ -1 +1 @@
1
- import{numberToHex as e}from"viem";import{getAccount as t,getConnectorClient as n,switchChain as r}from"wagmi/actions";function i(i){return{async signAndBroadcastStep(o,s){a(s);let c=t(i.wagmiConfig);if(!c.address)throw Error(`Connect a wallet to sign and submit the deposit.`);c.chainId!==o.chainId&&await r(i.wagmiConfig,{chainId:o.chainId}),a(s);let l=o.from??c.address;if(!l)throw Error(`Stridge driver: no connected wallet address available to broadcast the deposit tx.`);return await(await n(i.wagmiConfig,{chainId:o.chainId})).request({method:`eth_sendTransaction`,params:[{from:l,to:o.to,data:o.data,value:e(o.value),chainId:e(o.chainId)}]})}}}function a(e){if(e.aborted)throw new DOMException(`Aborted`,`AbortError`)}export{i as createWagmiSigner};
1
+ import{ensureWalletChain as e}from"./internal/ensureWalletChain.js";import{numberToHex as t}from"viem";import{getAccount as n,getConnectorClient as r}from"wagmi/actions";function i(i){return{async signAndBroadcastStep(o,s){a(s);let c=n(i.wagmiConfig);if(!c.address)throw Error(`Connect a wallet to sign and submit the deposit.`);await e(o.chainId,{wagmiConfig:i.wagmiConfig,getSupportedAssets:i.getSupportedAssets,explorers:i.explorers}),a(s);let l=o.from??c.address;if(!l)throw Error(`Stridge driver: no connected wallet address available to broadcast the deposit tx.`);return await(await r(i.wagmiConfig,{chainId:o.chainId})).request({method:`eth_sendTransaction`,params:[{from:l,to:o.to,data:o.data,value:t(o.value),chainId:t(o.chainId)}]})}}}function a(e){if(e.aborted)throw new DOMException(`Aborted`,`AbortError`)}export{i as createWagmiSigner};
@@ -0,0 +1,44 @@
1
+ import { ActivityDriver } from "../../flows/activity/driver/types.js";
2
+ //#region src/drivers/stridge-mock/createStridgeMockActivityDriver.d.ts
3
+ /**
4
+ * Per-call latency budget the mock activity driver imposes to mirror production cadence — the
5
+ * `refreshActivity` round-trip lets the activity surface flash its skeleton briefly before the
6
+ * fixture envelope arrives. Hosts can override when scripting tests / Storybook scenarios that
7
+ * need tighter / longer windows.
8
+ */
9
+ interface MockActivityDriverLatency {
10
+ /** `refreshActivity` resolves after this many ms. */
11
+ refreshActivity?: number;
12
+ }
13
+ /**
14
+ * Configuration for {@link createStridgeMockActivityDriver}. Every field is optional — calling
15
+ * the factory with no arguments produces a fully seeded driver against the bundled
16
+ * captured-production fixtures.
17
+ */
18
+ interface CreateStridgeMockActivityDriverInput {
19
+ /**
20
+ * Owner address threaded into the bundled `gateway/{owner}` fixture and used as the
21
+ * direction-discriminator fallback when `metadata.kit_flow` is absent. Defaults to the
22
+ * captured production EOA exported as {@link DEFAULT_WALLET_INFO}.
23
+ */
24
+ owner?: string;
25
+ /** Per-call latency overrides. */
26
+ latency?: MockActivityDriverLatency;
27
+ }
28
+ /**
29
+ * Result of {@link createStridgeMockActivityDriver}. Mirrors the {@link import("./createStridgeMockDriver").MockDriverHandle}
30
+ * shape — `driver` is the only piece the kit's `<KitProvider activity={…}>` cares about; future
31
+ * iterations can extend the handle with mock-only affordances (e.g. trigger panel hooks) without
32
+ * touching the {@link ActivityDriver} contract.
33
+ */
34
+ interface MockActivityDriverHandle {
35
+ driver: ActivityDriver;
36
+ }
37
+ /**
38
+ * Build a programmatic {@link ActivityDriver} backed by deterministic in-memory state. Used by
39
+ * demos, tests, Storybook, and any `<KitProvider activity={…}>` mount that doesn't have a Stridge
40
+ * gateway key available.
41
+ */
42
+ declare function createStridgeMockActivityDriver(input?: CreateStridgeMockActivityDriverInput): MockActivityDriverHandle;
43
+ //#endregion
44
+ export { CreateStridgeMockActivityDriverInput, MockActivityDriverHandle, MockActivityDriverLatency, createStridgeMockActivityDriver };
@@ -0,0 +1 @@
1
+ import{activityResponseToPayload as e}from"../../shared/widgets/activity/transformers/activityResponseToPayload.js";import{createEntityStore as t}from"./store.js";import{DEFAULT_WALLET_INFO as n,buildMockActivityResponse as r}from"./fixtures.js";const i={refreshActivity:400};function a(a={}){let s=a.owner??n.address,c={...i,...a.latency??{}},l=t({activity:{status:`idle`}}),u=!1,d=Promise.resolve(),f=!1;function p(){u||(u=!0,d=h(new AbortController().signal))}let m={getSnapshot(){return l.getSnapshot()},subscribe(e){return l.subscribe(e)},arm:p,refreshActivity(e){let t=u;if(p(),!t&&!f){f=!0;return}h(e)},watchActivity(e){p();let t,n=async()=>{e.aborted||(f?await h(e):(f=!0,await d),!e.aborted&&(t=setTimeout(n,5e3)))};e.addEventListener(`abort`,()=>{t!==void 0&&clearTimeout(t)},{once:!0}),n()},invalidateActivity(){let e=l.getSnapshot().activity;e.status===`ready`?l.update({activity:{status:`stale`,payload:e.payload,raw:e.raw,response:e.response}}):(e.status===`idle`||e.status===`error`)&&l.update({activity:{status:`loading`}})}};async function h(t){let n=l.getSnapshot().activity;(n.status===`idle`||n.status===`error`)&&l.update({activity:{status:`loading`}});try{await o(c.refreshActivity,t)}catch{return}if(t.aborted)return;let i=r(s),a=e(i,{ownerAddress:s});l.update({activity:{status:`ready`,payload:a,raw:i.udas,response:i}})}return{driver:m}}function o(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a,{once:!0})})}export{a as createStridgeMockActivityDriver};
@@ -38,8 +38,8 @@ interface CreateStridgeMockDriverInput {
38
38
  getI18n?: () => I18n;
39
39
  /** Connected wallet info. When omitted, defaults to {@link DEFAULT_WALLET_INFO}. */
40
40
  wallet?: WalletInfo;
41
- /** Optional minimum-deposit USD floor surfaced on `target.payload.minDepositUsd`. */
42
- minDepositUsd?: number;
41
+ /** Optional minimum-deposit USD floor surfaced on `target.payload.minAmountUsd`. */
42
+ minAmountUsd?: number;
43
43
  /**
44
44
  * Settlement-destination override — a `{ chain, symbol }` selector resolved against the
45
45
  * mock's bundled catalog ({@link SAMPLE_DEPOSIT_CHAINS} via {@link resolveMockAsset}). Drives
@@ -1 +1 @@
1
- import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{shortenAddress as t}from"../../shared/format/shortenAddress.js";import{createEntityStore as n}from"./store.js";import{DEFAULT_BRAND_PAYLOAD as r,DEFAULT_WALLET_INFO as i,STUB_DEPOSIT_ADDRESSES_RAW as a,STUB_GATEWAY_POLL_RESPONSE as o,STUB_GATEWAY_SETTLEMENT_DTO as s,STUB_GATEWAY_START_RESPONSE as c,STUB_ONCHAIN_BALANCE_RESPONSE as l,STUB_QUOTE_RESPONSE as u,STUB_SUPPORTED_ASSETS_RESPONSE as d,buildDefaultAddressesPayload as f,buildDefaultBalances as p,buildDefaultFailurePayload as m,buildDefaultPendingPayload as h,buildDefaultQuotePayload as g,buildDefaultSuccessPayload as _,buildDefaultTargetPayload as v,buildDefaultTargetRaw as y,buildDefaultWalletPayload as b,resolveMockAsset as x}from"./fixtures.js";const S={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3,transferDetected:4e3};function C(r={}){let a=r.getI18n??(()=>e),c=r.wallet??i,l=x(r.asset),d=n(w(a(),c,r.minDepositUsd,l,r.initialState)),f={...S,...r.latency??{}},p=r.autoSettleTo??`succeeded`,v=r.pendingTriggerToSuccessMs===void 0?3500:r.pendingTriggerToSuccessMs,y=new Set,b=new Set,C=new Set,E=!1,D,O;function k(){D!==void 0&&(clearTimeout(D),D=void 0),O!==void 0&&(clearTimeout(O),O=void 0),E=!1}function A(){if(E)return;E=!0;let e=a();D=setTimeout(()=>{D=void 0;let t={status:`ready`,payload:h(e,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t);O=setTimeout(()=>{if(O=void 0,p===`succeeded`){let t={status:`ready`,payload:_(e,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t)}else if(p===`failed`){let t={status:`ready`,payload:m(e,void 0,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t)}E=!1},f.processingTerminal)},f.processingPendingDelay)}let j={getSnapshot(){return d.getSnapshot()},subscribe(e){return d.subscribe(e)},async requestQuote(e,t){d.update({quote:{status:`loading`}}),await T(f.quote,t);let n=a(),r=Date.now()+3e4;d.update({quote:{status:`ready`,payload:g(n,r,l),raw:u,response:u}})},async submitDeposit(e,t){return await T(f.submit,t),p!==`none`&&A(),{hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`}},watchBalances(e,t,n){C.add(t);let r=d.getSnapshot().balances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>C.delete(t),{once:!0})},watchSourceTx(e,t,n){b.add(t);let r=setTimeout(()=>{n.aborted||t({hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`})},f.transferDetected);n.addEventListener(`abort`,()=>{clearTimeout(r),b.delete(t)},{once:!0})},watchSettlement(e,t,n){y.add(t);let r=d.getSnapshot().settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>y.delete(t),{once:!0})},async fetchActiveSettlement(e,t){let n=d.getSnapshot().settlement;return n.status!==`ready`||n.payload.kind!==`pending`?null:{payload:n.payload,raw:n.raw,response:n.response}}},M=0,N=null;function P(){N!==null&&(clearTimeout(N),N=null)}function F(e){M+=1;let n=`0x${M.toString(16).padStart(8,`0`)}${e.value.length>10?e.value.slice(10):`0`.repeat(56)}`;return{value:n,formatted:t(n)}}function I(e,t){if(e)return e.replace(/(\/tx\/|\/address\/)(0x[0-9a-fA-F]+)/,(e,n)=>`${n}${t}`)}let L={triggerSettlementPending(e){let t=h(a(),l),n=t.txHash?F(t.txHash):void 0,r=n?I(t.txExplorerUrl,n.value):void 0,i={status:`ready`,payload:{...t,...n?{txHash:n}:{},...r?{txExplorerUrl:r}:{},...e},raw:s,response:o};P(),d.update({settlement:i});for(let e of y)e(i);v!==null&&v>=0&&(N=setTimeout(()=>{N=null,L.triggerSettlementSuccess()},v))},triggerSettlementSuccess(e){P();let t=_(a(),l),n=F(t.depositTx.hash),r=I(t.depositTx.explorerUrl,n.value),i={status:`ready`,payload:{...t,depositTx:{...t.depositTx,hash:n,...r?{explorerUrl:r}:{}},...e},raw:s,response:o};d.update({settlement:i});for(let e of y)e(i)},triggerSettlementFailure(e,t){P();let n=m(a(),e,l),r=F(n.txHash),i=I(n.txExplorerUrl,r.value),c={status:`ready`,payload:{...n,txHash:r,...i?{txExplorerUrl:i}:{},...t},raw:s,response:o};d.update({settlement:c});for(let e of y)e(c)},triggerQuoteFailure(e){d.update({quote:{status:`error`,error:e}})},reset(){P(),k(),d.replace(w(a(),c,r.minDepositUsd,l,r.initialState))}};return{driver:j,triggers:L}}function w(e,t,n,i,o){let s={brand:{status:`ready`,payload:r,raw:c.metadata,response:c},target:{status:`ready`,payload:v(e,n,i),raw:y(i),response:d},addresses:{status:`ready`,payload:f(e,n),raw:a,response:c},balances:{status:`ready`,payload:p(e),raw:l,response:l},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:b(e,t),raw:t,response:t}};return o?{...s,...o}:s}function T(e,t){return new Promise((n,r)=>{if(t.aborted){r(E());return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(E())};t.addEventListener(`abort`,a,{once:!0})})}function E(){if(typeof DOMException==`function`)return new DOMException(`Aborted`,`AbortError`);let e=Error(`Aborted`);return e.name=`AbortError`,e}export{C as createStridgeMockDriver};
1
+ import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{createEntityStore as t}from"./store.js";import{shortenAddress as n}from"../../shared/format/shortenAddress.js";import{DEFAULT_BRAND_PAYLOAD as r,DEFAULT_WALLET_INFO as i,STUB_DEPOSIT_ADDRESSES_RAW as a,STUB_GATEWAY_POLL_RESPONSE as o,STUB_GATEWAY_SETTLEMENT_DTO as s,STUB_GATEWAY_START_RESPONSE as c,STUB_ONCHAIN_BALANCE_RESPONSE as l,STUB_QUOTE_RESPONSE as u,STUB_SUPPORTED_ASSETS_RESPONSE as d,buildDefaultAddressesPayload as f,buildDefaultBalances as p,buildDefaultCashMethodsPayload as m,buildDefaultFailurePayload as h,buildDefaultPendingPayload as g,buildDefaultQuotePayload as _,buildDefaultSuccessPayload as v,buildDefaultTargetPayload as y,buildDefaultTargetRaw as b,buildDefaultWalletPayload as x,resolveMockAsset as S}from"./fixtures.js";const C={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3,transferDetected:4e3};function w(r={}){let a=r.getI18n??(()=>e),c=r.wallet??i,l=S(r.asset),d=t(T(a(),c,r.minAmountUsd,l,r.initialState)),f={...C,...r.latency??{}},p=r.autoSettleTo??`succeeded`,m=r.pendingTriggerToSuccessMs===void 0?3500:r.pendingTriggerToSuccessMs,y=new Set,b=new Set,x=new Set,w=!1,D,O;function k(){D!==void 0&&(clearTimeout(D),D=void 0),O!==void 0&&(clearTimeout(O),O=void 0),w=!1}function A(){if(w)return;w=!0;let e=a();D=setTimeout(()=>{D=void 0;let t={status:`ready`,payload:g(e,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t);O=setTimeout(()=>{if(O=void 0,p===`succeeded`){let t={status:`ready`,payload:v(e,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t)}else if(p===`failed`){let t={status:`ready`,payload:h(e,void 0,l),raw:s,response:o};d.update({settlement:t});for(let e of y)e(t)}w=!1},f.processingTerminal)},f.processingPendingDelay)}let j={getSnapshot(){return d.getSnapshot()},subscribe(e){return d.subscribe(e)},arm(){},async requestQuote(e,t){d.update({quote:{status:`loading`}}),await E(f.quote,t);let n=a(),r=Date.now()+3e4;d.update({quote:{status:`ready`,payload:_(n,r,l),raw:u,response:u}})},async submitDeposit(e,t){return await E(f.submit,t),p!==`none`&&A(),{hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`}},watchBalances(e,t,n){x.add(t);let r=d.getSnapshot().balances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>x.delete(t),{once:!0})},invalidateBalances(){let e=d.getSnapshot().balances;for(let t of x)t(e)},watchSourceTx(e,t,n){b.add(t);let r=setTimeout(()=>{n.aborted||t({hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`})},f.transferDetected);n.addEventListener(`abort`,()=>{clearTimeout(r),b.delete(t)},{once:!0})},watchSettlement(e,t,n){y.add(t);let r=d.getSnapshot().settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>y.delete(t),{once:!0})},async fetchActiveSettlement(e,t){let n=d.getSnapshot().settlement;return n.status!==`ready`||n.payload.kind!==`pending`?null:{payload:n.payload,raw:n.raw,response:n.response}}},M=0,N=null;function P(){N!==null&&(clearTimeout(N),N=null)}function F(e){M+=1;let t=`0x${M.toString(16).padStart(8,`0`)}${e.value.length>10?e.value.slice(10):`0`.repeat(56)}`;return{value:t,formatted:n(t)}}function I(e,t){if(e)return e.replace(/(\/tx\/|\/address\/)(0x[0-9a-fA-F]+)/,(e,n)=>`${n}${t}`)}let L={triggerSettlementPending(e){let t=g(a(),l),n=t.txHash?F(t.txHash):void 0,r=n?I(t.txExplorerUrl,n.value):void 0,i={status:`ready`,payload:{...t,...n?{txHash:n}:{},...r?{txExplorerUrl:r}:{},...e},raw:s,response:o};P(),d.update({settlement:i});for(let e of y)e(i);m!==null&&m>=0&&(N=setTimeout(()=>{N=null,L.triggerSettlementSuccess()},m))},triggerSettlementSuccess(e){P();let t=v(a(),l),n=F(t.depositTx.hash),r=I(t.depositTx.explorerUrl,n.value),i={status:`ready`,payload:{...t,depositTx:{...t.depositTx,hash:n,...r?{explorerUrl:r}:{}},...e},raw:s,response:o};d.update({settlement:i});for(let e of y)e(i)},triggerSettlementFailure(e,t){P();let n=h(a(),e,l),r=F(n.txHash),i=I(n.txExplorerUrl,r.value),c={status:`ready`,payload:{...n,txHash:r,...i?{txExplorerUrl:i}:{},...t},raw:s,response:o};d.update({settlement:c});for(let e of y)e(c)},triggerQuoteFailure(e){d.update({quote:{status:`error`,error:e}})},reset(){P(),k(),d.replace(T(a(),c,r.minAmountUsd,l,r.initialState))}};return{driver:j,triggers:L}}function T(e,t,n,i,o){let s={brand:{status:`ready`,payload:r,raw:c.metadata,response:c},target:{status:`ready`,payload:y(e,n,i),raw:b(i),response:d},addresses:{status:`ready`,payload:f(e,n),raw:a,response:c},balances:{status:`ready`,payload:p(e),raw:l,response:l},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:x(e,t),raw:t,response:t},cashMethods:(()=>{let t=m(e);return{status:`ready`,payload:t,raw:t,response:t}})()};return o?{...s,...o}:s}function E(e,t){return new Promise((n,r)=>{if(t.aborted){r(D());return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(D())};t.addEventListener(`abort`,a,{once:!0})})}function D(){if(typeof DOMException==`function`)return new DOMException(`Aborted`,`AbortError`);let e=Error(`Aborted`);return e.name=`AbortError`,e}export{w as createStridgeMockDriver};
@@ -6,8 +6,8 @@ import { I18n } from "@lingui/core";
6
6
 
7
7
  //#region src/drivers/stridge-mock/createStridgeMockWithdrawDriver.d.ts
8
8
  declare const DEFAULT_LATENCY: {
9
- /** `requestQuote` resolves after this many ms. */quote: number; /** `submitWithdrawal` resolves after this many ms. */
10
- submit: number; /** Time between `submitWithdrawal` returning and the settlement entity flipping to `pending`. */
9
+ /** `requestQuote` resolves after this many ms. */quote: number; /** `prepareWithdrawal` resolves after this many ms. */
10
+ submit: number; /** Time between `prepareWithdrawal` returning and the settlement entity flipping to `pending`. */
11
11
  processingPendingDelay: number; /** Time between `pending` and the terminal verdict. */
12
12
  processingTerminal: number;
13
13
  };
@@ -93,10 +93,22 @@ interface CreateStridgeMockWithdrawDriverInput {
93
93
  /**
94
94
  * Settlement asset override — same shape as the deposit factory's `asset` field. Drives the
95
95
  * withdrawable-balance row, the quote receive-side, and every settlement banner so the
96
- * picker's `(chain, symbol)` is reflected end-to-end. Unknown combinations fall back to USDC
96
+ * picker's `(networkId, symbol)` is reflected end-to-end. Unknown combinations fall back to USDC
97
97
  * on BSC via {@link resolveMockAsset}.
98
98
  */
99
99
  asset?: MockAssetSelection;
100
+ /**
101
+ * Optional lower USD bound on the withdraw amount. Mirrors the live driver's option —
102
+ * populates {@link WithdrawSnapshot.minAmountUsd} so the form's "Min $X" gate fires under the
103
+ * mock too.
104
+ */
105
+ minAmountUsd?: number;
106
+ /**
107
+ * Optional upper USD bound on the withdraw amount. Mirrors the live driver's option —
108
+ * populates {@link WithdrawSnapshot.maxAmountUsd} so the form's "Max $X" gate fires under the
109
+ * mock too.
110
+ */
111
+ maxAmountUsd?: number;
100
112
  }
101
113
  /**
102
114
  * Deterministic in-memory {@link WithdrawDriver} backed by the V2 mockup fixtures. Used by
@@ -1 +1 @@
1
- "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{formatDurationCompact as t}from"../../shared/format/formatDurationCompact.js";import{formatTimestamp as n}from"../../shared/format/formatTimestamp.js";import{shortenAddress as r}from"../../shared/format/shortenAddress.js";import{supportedAssetsToReceiveOptionsPayload as i}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{DEFAULT_MOCK_ASSET as a,buildDefaultSupportedAssetsResponse as o,resolveMockAsset as s}from"./fixtures.js";const c=`0x32995Fb47918BD37133dB46F21c5Ed906140Dd41`,l=`0xd41f5e9e5b1c2c4d8e7a0bf3a9e6c1d2b8f5d4c3e2a1b0c9d8e7f6a5b4c3d2e1`;function u(e){return{symbol:e.symbol,decimals:e.decimals,address:e.address,isNative:e.isNative,assetLogoUrl:e.assetLogoUrl,networkName:e.networkName,eip155Id:e.eip155IdString,networkId:e.networkId,chainLogoUrl:e.chainLogoUrl}}function d(e){return`${e.explorerBase}/tx/`}const f={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3},p=u(a),m=4.00613;function h(e=a){let t=u(e);return[{networkId:t.networkId,networkName:t.networkName,eip155Id:t.eip155Id,...t.chainLogoUrl?{chainLogoUrl:t.chainLogoUrl}:{},symbol:t.symbol,decimals:t.decimals,address:t.address,...t.assetLogoUrl?{assetLogoUrl:t.assetLogoUrl}:{},isNative:t.isNative,amount:{value:4.01,formatted:`4.01`},amountUsd:{value:4.01,formatted:`$4.01`}}]}function g(e=m,t=a){let n=D(e);return{receiveAsset:u(t),receiveAmount:{value:e,formatted:n},receiveAmountUsd:{value:e,formatted:`$${e.toFixed(2)}`},breakdown:{selectedRoute:{provider:`mock`,scenario:`same_chain_same_token`,label:`Mock · same chain same token`},networkCost:{value:0,formatted:`$0.00`},priceImpact:{value:0,formatted:`0.00%`}},quoteTotalSeconds:30,expiresAt:Date.now()+3e4}}function _(t=e,i=m,o=c,s=l,f=a){let p=Date.now();return{kind:`pending`,receiveAsset:u(f),receiveAmount:{value:i,formatted:D(i)},recipient:{value:o,formatted:r(o)},submittedAt:{value:p,formatted:n(p,t)},txHash:{value:s,formatted:r(s)},txExplorerUrl:`${d(f)}${s}`}}function v(i=e,o=m,s=c,f=14,p=l,h=a,g=`0xa17b4c9e2d68f0a5c3b91e7f4d52a86b09c1d7e3f8a4b2c5d6e9f0a1b2c3d4e5`){let _=Date.now(),v=f*1e3,y=_-v;return{kind:`succeeded`,receiveAsset:u(h),receiveAmount:{value:o,formatted:D(o)},recipient:{value:s,formatted:r(s)},submittedAt:{value:y,formatted:n(y,i)},filledAt:{value:_,formatted:n(_,i)},totalTime:{value:f,formatted:t(v,i)},txHash:{value:p,formatted:r(p)},txExplorerUrl:`${d(h)}${p}`,completionTx:{hash:{value:g,formatted:r(g)},explorerUrl:`${d(h)}${g}`}}}function y(t=e,i=`unknown`,o=m,s=c,f=l,p=a){let h=Date.now(),g=h-5e3;return{kind:`failed`,failureKind:i,receiveAsset:u(p),receiveAmount:{value:o,formatted:D(o)},recipient:{value:s,formatted:r(s)},submittedAt:{value:g,formatted:n(g,t)},failedAt:{value:h,formatted:n(h,t)},txHash:{value:f,formatted:r(f)},txExplorerUrl:`${d(p)}${f}`}}function b(t={}){let n={...f,...t.latency},r=t.autoSettleTo??`succeeded`,a=t.pendingTriggerToSuccessMs===void 0?3500:t.pendingTriggerToSuccessMs,p=t.getI18n??(()=>e),b=s(t.asset),S=u(b),D=d(b),O=h(b),k=x(O),A=o(),j=i(A),M={withdrawableBalances:t.initialState?.withdrawableBalances??{status:`ready`,payload:O,raw:k,response:k},receiveOptions:t.initialState?.receiveOptions??{status:`ready`,payload:j,raw:A.assets,response:A},quote:t.initialState?.quote??{status:`idle`},settlement:t.initialState?.settlement??{status:`idle`}},N=M,P=new Set,F=new Set,I=new Set,L=new Set,R=()=>{for(let e of P)e()},z=e=>{if(N={...N,...e},R(),e.settlement)for(let e of F)e(N.settlement);if(e.withdrawableBalances)for(let e of I)e(N.withdrawableBalances)},B=(e,t)=>{let n=setTimeout(()=>{L.delete(n),e()},t);L.add(n)},V=null,H=!1,U=0;function W(){return U+=1,`0x${U.toString(16).padStart(8,`0`)}${l.slice(10)}`}let G={getSnapshot:()=>N,subscribe(e){return P.add(e),()=>{P.delete(e)}},async requestQuote(e,t){z({quote:{status:`loading`}}),await E(n.quote,t);let r=g(e.amount,b),i=C(r,e.amount,S);z({quote:{status:`ready`,payload:r,raw:i,response:i}})},async submitWithdrawal(e,t){await E(n.submit,t),V={amount:e.amount,recipient:e.recipientAddress};let r=W(),i={hash:r,explorerUrl:`${D}${r}`};return K(e.amount,e.recipientAddress,r,t),i},watchSettlement(e,t,n){F.add(t);let r=N.settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>F.delete(t),{once:!0})},watchWithdrawableBalances(e,t,n){I.add(t);let r=N.withdrawableBalances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>I.delete(t),{once:!0})}};function K(e,t,i,a){H||(H=!0,B(()=>{if(a.aborted){H=!1;return}let o=_(p(),e,t,i,b),s=w(o,S);if(z({settlement:{status:`ready`,payload:o,raw:s,response:T(s,o)}}),r===`none`){H=!1;return}B(()=>{if(H=!1,a.aborted)return;let n=r===`succeeded`?v(p(),e,t,14,i,b):y(p(),`unknown`,e,t,i,b),o=w(n,S);z({settlement:{status:`ready`,payload:n,raw:o,response:T(o,n)}})},n.processingTerminal)},n.processingPendingDelay))}let q={triggerWithdrawalInProgress(e){let{amount:t,recipient:n}=J(),r={..._(p(),t,n,W(),b),...e},i=w(r,S);z({settlement:{status:`ready`,payload:r,raw:i,response:T(i,r)}}),a!==null&&B(()=>q.triggerWithdrawalSuccess(),a)},triggerWithdrawalSuccess(e){let{amount:t,recipient:n}=J(),r={...v(p(),t,n,14,W(),b),...e},i=w(r,S);z({settlement:{status:`ready`,payload:r,raw:i,response:T(i,r)}})},triggerWithdrawalFailed(e,t){let{amount:n,recipient:r}=J(),i={...y(p(),e,n,r,W(),b),...t},a=w(i,S);z({settlement:{status:`ready`,payload:i,raw:a,response:T(a,i)}})},triggerQuoteFailure(e){z({quote:{status:`error`,error:e}})},reset(){for(let e of L)clearTimeout(e);L.clear(),H=!1,V=null,U=0,N=M,R()}};function J(){return{amount:V?.amount??m,recipient:V?.recipient??c}}return{driver:G,triggers:q}}function x(e){let t=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{wallet_address:`0xMockWallet000000000000000000000000000000`,fetched_at:new Date(0).toISOString(),total_usd:t.toFixed(2),chains:e.map(e=>({eip155_id:e.eip155Id?Number(e.eip155Id):0,stridge_network_id:e.networkId??``,network_name:e.networkName.toLowerCase(),label:e.networkName,scanner_url:``,native_symbol:``,subtotal_usd:(e.amountUsd?.value??0).toFixed(2),tokens:[{token_address:e.address,symbol:e.symbol,name:e.symbol,decimals:e.decimals,logo:e.assetLogoUrl??``,is_native:e.isNative,is_spam:!1,raw_amount:S(e.amount.value,e.decimals).toString(),amount:e.amount.value.toString(),amount_usd:(e.amountUsd?.value??0).toFixed(2),usd_price:e.amount.value>0?((e.amountUsd?.value??0)/e.amount.value).toFixed(6):`0`,price_change_24h_pct:`0`}]}))}}function S(e,t){if(!Number.isFinite(e)||e<0)return 0n;let[n,r=``]=e.toFixed(t).split(`.`),i=r.padEnd(t,`0`).slice(0,t);return BigInt((n??`0`)+i)}function C(e,t,n=p){let r=S(e.receiveAmount.value,e.receiveAsset.decimals).toString(),i=S(t,n.decimals).toString(),a=t>0?(e.receiveAmount.value/t).toFixed(6):`1`;return{from:{network_id:Number(n.eip155Id??56),asset_address:n.address,amount:i},to:{network_id:Number(e.receiveAsset.eip155Id??56),asset_address:e.receiveAsset.address,amount:r},exchange_rate:a,fees:{total_fee:`0`},route:{provider:`mock`,scenario:`same_chain_same_token`,estimated_time_seconds:30},expires_at:new Date(e.expiresAt).toISOString()}}function w(e,t=p){let n=new Date(e.submittedAt.value).toISOString(),r=e.kind===`succeeded`?`completed`:e.kind===`failed`?`failed`:`routing`,i=e.kind===`succeeded`?e.filledAt.value:e.kind===`failed`?e.failedAt.value:e.submittedAt.value,a={tx_id:(e.kind===`succeeded`?e.txHash.value:e.txHash?.value)??``,asset_symbol:t.symbol,asset_address:t.address,eip155_id:t.eip155Id??`56`,network_id:t.networkId??`9006`,network_name:t.networkName.toLowerCase(),raw_amount:S(e.receiveAmount.value,t.decimals).toString(),amount:e.receiveAmount.value.toString(),confirmed_at:n},o={address:e.recipient.value,asset_address:e.receiveAsset.address,asset_symbol:e.receiveAsset.symbol,eip155_id:e.receiveAsset.eip155Id??``,network_id:e.receiveAsset.networkId??``,network_name:e.receiveAsset.networkName.toLowerCase(),raw_amount:S(e.receiveAmount.value,e.receiveAsset.decimals).toString(),amount:e.receiveAmount.value.toString(),...e.kind===`succeeded`?{settled_at:new Date(e.filledAt.value).toISOString(),...e.completionTx?{tx_id:e.completionTx.hash.value}:{}}:{}};return{id:`mock-settlement-${e.recipient.value}-${a.tx_id}`,status:r,created_at:n,updated_at:new Date(i).toISOString(),events:[],fees:{raw_amount:`0`},from:a,to:o,route:{provider:`mock`,scenario:`withdraw_v1`},...e.kind===`failed`?{error:e.failureKind}:{}}}function T(e,t){let n=t.kind!==`pending`;return{owner:`0xMockOwner`,uda_id:`mock-uda`,created_at:e.created_at,updated_at:e.updated_at,is_terminal:n,status:t.kind===`succeeded`?`completed`:t.kind===`failed`?`failed`:`to_pending`,destination:{address:t.recipient.value,asset_address:t.receiveAsset.address,asset_decimals:t.receiveAsset.decimals,asset_symbol:t.receiveAsset.symbol,eip155_id:t.receiveAsset.eip155Id??``,network_id:t.receiveAsset.networkId??``,network_name:t.receiveAsset.networkName},settlements:[e]}}function E(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),t.removeEventListener(`abort`,a),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a)})}function D(e){return Number.isInteger(e)?e.toFixed(2):e.toFixed(5)}export{h as buildDefaultWithdrawableBalances,y as buildDefaultWithdrawalFailurePayload,_ as buildDefaultWithdrawalPendingPayload,g as buildDefaultWithdrawalQuotePayload,v as buildDefaultWithdrawalSuccessPayload,b as createStridgeMockWithdrawDriver};
1
+ "use client";import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{formatDurationCompact as t}from"../../shared/format/formatDurationCompact.js";import{formatTimestamp as n}from"../../shared/format/formatTimestamp.js";import{formatUsd as r}from"../../shared/format/formatUsd.js";import{shortenAddress as i}from"../../shared/format/shortenAddress.js";import{supportedAssetsToReceiveOptionsPayload as a}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{DEFAULT_MOCK_ASSET as o,buildDefaultSupportedAssetsResponse as s,resolveMockAsset as c}from"./fixtures.js";const l=`0x32995Fb47918BD37133dB46F21c5Ed906140Dd41`,u=`0xd41f5e9e5b1c2c4d8e7a0bf3a9e6c1d2b8f5d4c3e2a1b0c9d8e7f6a5b4c3d2e1`;function d(e){return{symbol:e.symbol,decimals:e.decimals,address:e.address,isNative:e.isNative,assetLogoUrl:e.assetLogoUrl,networkName:e.networkName,eip155Id:e.eip155IdString,networkId:e.networkId,chainLogoUrl:e.chainLogoUrl}}function f(e){return`${e.explorerBase}/tx/`}const p={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3},m=d(o),h=4.00613;function g(e=o){let t=d(e);return[{networkId:t.networkId,networkName:t.networkName,eip155Id:t.eip155Id,...t.chainLogoUrl?{chainLogoUrl:t.chainLogoUrl}:{},symbol:t.symbol,decimals:t.decimals,address:t.address,...t.assetLogoUrl?{assetLogoUrl:t.assetLogoUrl}:{},isNative:t.isNative,amount:{value:4.01,formatted:`4.01`},amountUsd:{value:4.01,formatted:`$4.01`}}]}function _(e=h,t=o){let n=O(e);return{receiveAsset:d(t),receiveAmount:{value:e,formatted:n},receiveAmountUsd:{value:e,formatted:`$${e.toFixed(2)}`},breakdown:{selectedRoute:{provider:`mock`,scenario:`same_chain_same_token`,label:`Mock · same chain same token`},networkCost:{value:0,formatted:`$0.00`},priceImpact:{value:0,formatted:`0.00%`}},quoteTotalSeconds:30,expiresAt:Date.now()+3e4}}function v(t=e,a=h,s=l,c=u,p=o){let m=Date.now();return{kind:`pending`,receiveAsset:d(p),receiveAmount:{value:a,formatted:O(a)},receiveAmountUsd:{value:a,formatted:r(a,t)},recipient:{value:s,formatted:i(s)},submittedAt:{value:m,formatted:n(m,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${f(p)}${c}`}}function y(r=e,a=h,s=l,c=14,p=u,m=o,g=`0xa17b4c9e2d68f0a5c3b91e7f4d52a86b09c1d7e3f8a4b2c5d6e9f0a1b2c3d4e5`){let _=Date.now(),v=c*1e3,y=_-v;return{kind:`succeeded`,receiveAsset:d(m),receiveAmount:{value:a,formatted:O(a)},recipient:{value:s,formatted:i(s)},submittedAt:{value:y,formatted:n(y,r)},filledAt:{value:_,formatted:n(_,r)},totalTime:{value:c,formatted:t(v,r)},txHash:{value:p,formatted:i(p)},txExplorerUrl:`${f(m)}${p}`,completionTx:{hash:{value:g,formatted:i(g)},explorerUrl:`${f(m)}${g}`}}}function b(t=e,r=`unknown`,a=h,s=l,c=u,p=o){let m=Date.now(),g=m-5e3;return{kind:`failed`,failureKind:r,receiveAsset:d(p),receiveAmount:{value:a,formatted:O(a)},recipient:{value:s,formatted:i(s)},submittedAt:{value:g,formatted:n(g,t)},failedAt:{value:m,formatted:n(m,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${f(p)}${c}`}}function x(t={}){let n={...p,...t.latency},i=t.autoSettleTo??`succeeded`,o=t.pendingTriggerToSuccessMs===void 0?3500:t.pendingTriggerToSuccessMs,f=t.getI18n??(()=>e),m=c(t.asset),x=d(m),C=g(m),O=S(C),k=s(),A=a(k),j=t.initialState?.minAmountUsd??(t.minAmountUsd===void 0?void 0:{value:t.minAmountUsd,formatted:r(t.minAmountUsd,f())}),M=t.initialState?.maxAmountUsd??(t.maxAmountUsd===void 0?void 0:{value:t.maxAmountUsd,formatted:r(t.maxAmountUsd,f())}),N={withdrawableBalances:t.initialState?.withdrawableBalances??{status:`ready`,payload:C,raw:O,response:O},receiveOptions:t.initialState?.receiveOptions??{status:`ready`,payload:A,raw:k.assets,response:k},quote:t.initialState?.quote??{status:`idle`},settlement:t.initialState?.settlement??{status:`idle`},...j?{minAmountUsd:j}:{},...M?{maxAmountUsd:M}:{}},P=N,F=new Set,I=new Set,L=new Set,R=new Set,z=()=>{for(let e of F)e()},B=e=>{if(P={...P,...e},z(),e.settlement)for(let e of I)e(P.settlement);if(e.withdrawableBalances)for(let e of L)e(P.withdrawableBalances)},V=(e,t)=>{let n=setTimeout(()=>{R.delete(n),e()},t);R.add(n)},H=null,U=!1,W=0;function G(){return W+=1,`0x${W.toString(16).padStart(8,`0`)}${u.slice(10)}`}let K={getSnapshot:()=>P,subscribe(e){return F.add(e),()=>{F.delete(e)}},arm(){},async requestQuote(e,t){B({quote:{status:`loading`}}),await D(n.quote,t);let r=_(e.amount,m),i=w(r,e.amount,x);B({quote:{status:`ready`,payload:r,raw:i,response:i}})},async prepareWithdrawal(e,t){await D(n.submit,t),H={amount:e.amount,recipient:e.recipientAddress};let r=G();return q(e.amount,e.recipientAddress,r,t),{depositTarget:{address:`0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC`,chainId:Number(m.eip155IdString),tokenSymbol:m.symbol,tokenAddress:m.address,tokenDecimals:m.decimals,isNative:m.isNative,amount:e.amount},correlation:{owner:`0x70997970C51812dc3A010C7d01b50e0d17dc79C8`}}},watchSettlement(e,t,n){I.add(t);let r=P.settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>I.delete(t),{once:!0})},watchWithdrawableBalances(e,t,n){L.add(t);let r=P.withdrawableBalances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>L.delete(t),{once:!0})}};function q(e,t,r,a){U||(U=!0,V(()=>{if(a.aborted){U=!1;return}let o=v(f(),e,t,r,m),s=T(o,x);if(B({settlement:{status:`ready`,payload:o,raw:s,response:E(s,o)}}),i===`none`){U=!1;return}V(()=>{if(U=!1,a.aborted)return;let n=i===`succeeded`?y(f(),e,t,14,r,m):b(f(),`unknown`,e,t,r,m),o=T(n,x);B({settlement:{status:`ready`,payload:n,raw:o,response:E(o,n)}})},n.processingTerminal)},n.processingPendingDelay))}let J={triggerWithdrawalInProgress(e){let{amount:t,recipient:n}=Y(),r={...v(f(),t,n,G(),m),...e},i=T(r,x);B({settlement:{status:`ready`,payload:r,raw:i,response:E(i,r)}}),o!==null&&V(()=>J.triggerWithdrawalSuccess(),o)},triggerWithdrawalSuccess(e){let{amount:t,recipient:n}=Y(),r={...y(f(),t,n,14,G(),m),...e},i=T(r,x);B({settlement:{status:`ready`,payload:r,raw:i,response:E(i,r)}})},triggerWithdrawalFailed(e,t){let{amount:n,recipient:r}=Y(),i={...b(f(),e,n,r,G(),m),...t},a=T(i,x);B({settlement:{status:`ready`,payload:i,raw:a,response:E(a,i)}})},triggerQuoteFailure(e){B({quote:{status:`error`,error:e}})},reset(){for(let e of R)clearTimeout(e);R.clear(),U=!1,H=null,W=0,P=N,z()}};function Y(){return{amount:H?.amount??h,recipient:H?.recipient??l}}return{driver:K,triggers:J}}function S(e){let t=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{wallet_address:`0xMockWallet000000000000000000000000000000`,fetched_at:new Date(0).toISOString(),total_usd:t.toFixed(2),chains:e.map(e=>({eip155_id:e.eip155Id?Number(e.eip155Id):0,stridge_network_id:e.networkId??``,network_name:e.networkName.toLowerCase(),label:e.networkName,scanner_url:``,native_symbol:``,subtotal_usd:(e.amountUsd?.value??0).toFixed(2),tokens:[{token_address:e.address,symbol:e.symbol,name:e.symbol,decimals:e.decimals,logo:e.assetLogoUrl??``,is_native:e.isNative,is_spam:!1,raw_amount:C(e.amount.value,e.decimals).toString(),amount:e.amount.value.toString(),amount_usd:(e.amountUsd?.value??0).toFixed(2),usd_price:e.amount.value>0?((e.amountUsd?.value??0)/e.amount.value).toFixed(6):`0`,price_change_24h_pct:`0`}]}))}}function C(e,t){if(!Number.isFinite(e)||e<0)return 0n;let[n,r=``]=e.toFixed(t).split(`.`),i=r.padEnd(t,`0`).slice(0,t);return BigInt((n??`0`)+i)}function w(e,t,n=m){let r=C(e.receiveAmount.value,e.receiveAsset.decimals).toString(),i=C(t,n.decimals).toString(),a=t>0?(e.receiveAmount.value/t).toFixed(6):`1`;return{from:{network_id:Number(n.eip155Id??56),asset_address:n.address,amount:i},to:{network_id:Number(e.receiveAsset.eip155Id??56),asset_address:e.receiveAsset.address,amount:r},exchange_rate:a,fees:{total_fee:`0`},route:{provider:`mock`,scenario:`same_chain_same_token`,estimated_time_seconds:30},expires_at:new Date(e.expiresAt).toISOString()}}function T(e,t=m){let n=new Date(e.submittedAt.value).toISOString(),r=e.kind===`succeeded`?`completed`:e.kind===`failed`?`failed`:`routing`,i=e.kind===`succeeded`?e.filledAt.value:e.kind===`failed`?e.failedAt.value:e.submittedAt.value,a={tx_id:(e.kind===`succeeded`?e.txHash.value:e.txHash?.value)??``,asset_symbol:t.symbol,asset_address:t.address,eip155_id:t.eip155Id??`56`,network_id:t.networkId??`9006`,network_name:t.networkName.toLowerCase(),raw_amount:C(e.receiveAmount.value,t.decimals).toString(),amount:e.receiveAmount.value.toString(),confirmed_at:n},o={address:e.recipient.value,asset_address:e.receiveAsset.address,asset_symbol:e.receiveAsset.symbol,eip155_id:e.receiveAsset.eip155Id??``,network_id:e.receiveAsset.networkId??``,network_name:e.receiveAsset.networkName.toLowerCase(),raw_amount:C(e.receiveAmount.value,e.receiveAsset.decimals).toString(),amount:e.receiveAmount.value.toString(),...e.kind===`succeeded`?{settled_at:new Date(e.filledAt.value).toISOString(),...e.completionTx?{tx_id:e.completionTx.hash.value}:{}}:{}};return{id:`mock-settlement-${e.recipient.value}-${a.tx_id}`,status:r,created_at:n,updated_at:new Date(i).toISOString(),events:[],fees:{raw_amount:`0`},from:a,to:o,route:{provider:`mock`,scenario:`withdraw_v1`},...e.kind===`failed`?{error:e.failureKind}:{}}}function E(e,t){let n=t.kind!==`pending`;return{owner:`0xMockOwner`,uda_id:`mock-uda`,created_at:e.created_at,updated_at:e.updated_at,is_terminal:n,status:t.kind===`succeeded`?`completed`:t.kind===`failed`?`failed`:`to_pending`,destination:{address:t.recipient.value,asset_address:t.receiveAsset.address,asset_decimals:t.receiveAsset.decimals,asset_symbol:t.receiveAsset.symbol,eip155_id:t.receiveAsset.eip155Id??``,network_id:t.receiveAsset.networkId??``,network_name:t.receiveAsset.networkName},settlements:[e]}}function D(e,t){return new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),t.removeEventListener(`abort`,a),r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a)})}function O(e){return Number.isInteger(e)?e.toFixed(2):e.toFixed(5)}export{g as buildDefaultWithdrawableBalances,b as buildDefaultWithdrawalFailurePayload,v as buildDefaultWithdrawalPendingPayload,_ as buildDefaultWithdrawalQuotePayload,y as buildDefaultWithdrawalSuccessPayload,x as createStridgeMockWithdrawDriver};
@@ -1,7 +1,7 @@
1
1
  import { SettlementFailureKind } from "../../shared/driver/types.js";
2
2
  import { AddressItemPayload, BalanceItemPayload, BrandPayload, QuotePayload, SettlementFailurePayload, SettlementPayload, SettlementPendingPayload, SettlementSuccessPayload, TargetPayload, WalletInfo, WalletPayload } from "../../flows/deposit/driver/payloads.js";
3
3
  import { I18n } from "@lingui/core";
4
- import { DepositAddressDto, GatewayPollResponse, GatewaySettlementDto, GatewayStartResponse, OnchainBalanceResponse, QuoteResponse, SupportedAssetDto, SupportedAssetsResponse } from "@stridge/sdk";
4
+ import { DepositAddressDto, GatewayPollResponse, GatewaySettlementDto, GatewayStartResponse, GatewayUdaDto, OnchainBalanceResponse, QuoteResponse, SupportedAssetDto, SupportedAssetsResponse } from "@stridge/sdk";
5
5
 
6
6
  //#region src/drivers/stridge-mock/fixtures.d.ts
7
7
  /**
@@ -16,7 +16,7 @@ declare const DEFAULT_WALLET_INFO: WalletInfo;
16
16
  declare const DEFAULT_BRAND_PAYLOAD: BrandPayload;
17
17
  /**
18
18
  * Resolved destination-asset record the mock driver seeds every entity from. Hosts that need
19
- * to demo a non-default `(chain, symbol)` pass {@link MockAssetSelection} through the factory;
19
+ * to demo a non-default `(networkId, symbol)` pass {@link MockAssetSelection} through the factory;
20
20
  * the driver resolves it once via {@link resolveMockAsset} and threads this shape into every
21
21
  * builder, so target / quote / settlement payloads all stay coherent against the same asset.
22
22
  */
@@ -42,11 +42,13 @@ interface MockAsset {
42
42
  nativeSymbol: string;
43
43
  }
44
44
  /**
45
- * Selector accepted by {@link resolveMockAsset}. `chain` is the gateway's `network_name`
46
- * (case-insensitive, e.g. `"bsc"` / `"BSC"`), `symbol` the asset ticker (`"USDC"`).
45
+ * Selector accepted by {@link resolveMockAsset}. `networkId` is the Stridge network id
46
+ * (`"9006"`) the same wire value `StridgeAsset.networkId` carries and is also matched,
47
+ * case-insensitively, against the gateway's `network_name` (`"bsc"` / `"BSC"`) so legacy
48
+ * callers keep working. `symbol` is the asset ticker (`"USDC"`).
47
49
  */
48
50
  interface MockAssetSelection {
49
- chain: string;
51
+ networkId: string;
50
52
  symbol: string;
51
53
  }
52
54
  /**
@@ -54,23 +56,23 @@ interface MockAssetSelection {
54
56
  * {@link buildDefaultTargetRaw}() with no asset override.
55
57
  */
56
58
  declare const DEFAULT_TARGET_RAW: SupportedAssetDto;
57
- declare function buildDefaultTargetPayload(i18n: I18n, minDepositUsd?: number, asset?: MockAsset): TargetPayload;
59
+ declare function buildDefaultTargetPayload(i18n: I18n, minAmountUsd?: number, asset?: MockAsset): TargetPayload;
58
60
  /**
59
- * Build the bundled deposit-address fixtures. When `minDepositUsd` is set, every row carries a
60
- * formatted per-chain `minDepositUsd` so the transfer-crypto picker renders `Min $X` next to the
61
+ * Build the bundled deposit-address fixtures. When `minAmountUsd` is set, every row carries a
62
+ * formatted per-chain `minAmountUsd` so the transfer-crypto picker renders `Min $X` next to the
61
63
  * Chains label and on each option row — the same display the captured-production payload showed.
62
64
  */
63
- declare function buildDefaultAddressesPayload(i18n: I18n, minDepositUsd?: number): ReadonlyArray<AddressItemPayload>;
65
+ declare function buildDefaultAddressesPayload(i18n: I18n, minAmountUsd?: number): ReadonlyArray<AddressItemPayload>;
64
66
  /**
65
67
  * Static-i18n form of {@link buildDefaultAddressesPayload} — kept for callers that pre-import the
66
- * canonical mock list without a live `I18n` handle. Excludes per-row `minDepositUsd`; callers that
68
+ * canonical mock list without a live `I18n` handle. Excludes per-row `minAmountUsd`; callers that
67
69
  * want it must use the builder.
68
70
  */
69
71
  declare const DEFAULT_ADDRESSES_PAYLOAD: ReadonlyArray<AddressItemPayload>;
70
72
  /**
71
73
  * Default source-side balance list — derived from the captured `/v1/balance/onchain/{wallet}`
72
74
  * response for `0xf39Fd6…2266` against the production UDA, filtered through routability +
73
- * spam-drop + the kit's `minDepositUsd` floor (rows whose `amountUsd` is below the floor ride in
75
+ * spam-drop + the kit's `minAmountUsd` floor (rows whose `amountUsd` is below the floor ride in
74
76
  * as `lowBalance + disabled` so the picker dims them out instead of dropping them).
75
77
  *
76
78
  * Captured snapshot (chain × token, after routability filter):
@@ -87,7 +89,7 @@ declare function buildDefaultBalances(i18n: I18n): ReadonlyArray<BalanceItemPayl
87
89
  * Default quote payload. Captured production scenario: 5 USDC on Ethereum routed to the
88
90
  * destination asset (USDC on BSC by default) via LIFI cross-chain. Total time around 28m on
89
91
  * the wire — same number {@link DEFAULT_SUCCESS_PAYLOAD} uses for `totalTime`. Pass `asset` to
90
- * retarget the receive side at a different `(chain, symbol)` while keeping the same numeric
92
+ * retarget the receive side at a different `(networkId, symbol)` while keeping the same numeric
91
93
  * route shape.
92
94
  */
93
95
  declare function buildDefaultQuotePayload(i18n: I18n, expiresAt: number, asset?: MockAsset): QuotePayload;