@stridge/kit 0.1.0-alpha.51 → 0.1.0-alpha.52

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 (200) hide show
  1. package/dist/KitProvider.d.ts +11 -0
  2. package/dist/KitProvider.js +1 -1
  3. package/dist/_internal/activity/driver/index.d.ts +3 -0
  4. package/dist/_internal/activity/driver/index.js +1 -0
  5. package/dist/_internal/drivers/stridge/index.d.ts +2 -1
  6. package/dist/_internal/drivers/stridge/index.js +1 -1
  7. package/dist/_internal/drivers/stridge-mock/index.d.ts +2 -1
  8. package/dist/_internal/drivers/stridge-mock/index.js +1 -1
  9. package/dist/activity/compound/index.d.ts +19 -0
  10. package/dist/activity/compound/index.js +1 -0
  11. package/dist/activity/dialog/index.d.ts +3 -0
  12. package/dist/activity/dialog/index.js +1 -0
  13. package/dist/activity/widgets/index.d.ts +4 -0
  14. package/dist/activity/widgets/index.js +1 -0
  15. package/dist/deposit/compound/index.d.ts +9 -9
  16. package/dist/deposit/widgets/index.d.ts +3 -3
  17. package/dist/deposit/widgets/index.js +1 -1
  18. package/dist/drivers/stridge/createStridgeActivityDriver.d.ts +44 -0
  19. package/dist/drivers/stridge/createStridgeActivityDriver.js +1 -0
  20. package/dist/drivers/stridge/createStridgeDepositDriver.js +1 -1
  21. package/dist/drivers/stridge/createStridgeWithdrawDriver.js +1 -1
  22. package/dist/drivers/stridge-mock/createStridgeMockActivityDriver.d.ts +44 -0
  23. package/dist/drivers/stridge-mock/createStridgeMockActivityDriver.js +1 -0
  24. package/dist/drivers/stridge-mock/createStridgeMockDriver.d.ts +0 -2
  25. package/dist/drivers/stridge-mock/createStridgeMockDriver.js +1 -1
  26. package/dist/drivers/stridge-mock/createStridgeMockWithdrawDriver.d.ts +1 -2
  27. package/dist/drivers/stridge-mock/createStridgeMockWithdrawDriver.js +1 -1
  28. package/dist/drivers/stridge-mock/fixtures.js +1 -1
  29. package/dist/flows/activity/compound/ActivityFlow.d.ts +46 -0
  30. package/dist/flows/activity/compound/ActivityFlow.js +1 -0
  31. package/dist/flows/activity/compound/components/Boundary.d.ts +29 -0
  32. package/dist/flows/activity/compound/components/Boundary.js +1 -0
  33. package/dist/flows/activity/compound/components/Steps.d.ts +24 -0
  34. package/dist/flows/activity/compound/components/Steps.js +1 -0
  35. package/dist/flows/activity/dialog/ActivityDialog.d.ts +38 -0
  36. package/dist/flows/activity/dialog/ActivityDialog.js +1 -0
  37. package/dist/flows/activity/dialog/ActivityFlowBoundary.d.ts +1 -0
  38. package/dist/flows/activity/dialog/ActivityFlowBoundary.js +1 -0
  39. package/dist/flows/activity/driver/context.d.ts +38 -0
  40. package/dist/flows/activity/driver/context.js +1 -0
  41. package/dist/flows/activity/driver/types.d.ts +58 -0
  42. package/dist/flows/activity/orchestrator/controller.d.ts +11 -0
  43. package/dist/flows/activity/orchestrator/controller.js +1 -0
  44. package/dist/flows/activity/orchestrator/index.d.ts +4 -0
  45. package/dist/flows/activity/orchestrator/index.js +1 -0
  46. package/dist/flows/activity/orchestrator/reducer.d.ts +1 -0
  47. package/dist/flows/activity/orchestrator/reducer.js +1 -0
  48. package/dist/flows/activity/orchestrator/types.d.ts +71 -0
  49. package/dist/flows/activity/orchestrator/useActivity.d.ts +94 -0
  50. package/dist/flows/activity/orchestrator/useActivity.js +1 -0
  51. package/dist/flows/activity/widgets/ActivityDetail.d.ts +41 -0
  52. package/dist/flows/activity/widgets/ActivityDetail.js +1 -0
  53. package/dist/flows/activity/widgets/ActivityList.d.ts +38 -0
  54. package/dist/flows/activity/widgets/ActivityList.js +1 -0
  55. package/dist/flows/activity/widgets/useStandaloneActivitySource.js +1 -0
  56. package/dist/flows/deposit/dialog/DepositBootstrapErrorState.js +1 -1
  57. package/dist/flows/deposit/dialog/DepositDialog.js +1 -1
  58. package/dist/flows/deposit/driver/transformers/settlementToPayload.js +1 -1
  59. package/dist/flows/deposit/driver/types.d.ts +1 -38
  60. package/dist/flows/deposit/orchestrator/controller.js +1 -1
  61. package/dist/flows/deposit/orchestrator/reducer.js +1 -1
  62. package/dist/flows/deposit/orchestrator/types.d.ts +43 -29
  63. package/dist/flows/deposit/widgets/{activity-history/DepositHistoryDetail.d.ts → activity/DepositActivityDetail.d.ts} +11 -11
  64. package/dist/flows/deposit/widgets/activity/DepositActivityDetail.js +1 -0
  65. package/dist/flows/deposit/widgets/activity/DepositActivityList.d.ts +38 -0
  66. package/dist/flows/deposit/widgets/activity/DepositActivityList.js +1 -0
  67. package/dist/flows/deposit/widgets/activity/index.d.ts +2 -0
  68. package/dist/flows/deposit/widgets/activity/index.js +1 -0
  69. package/dist/flows/deposit/widgets/activity/useDepositActivitySource.js +1 -0
  70. package/dist/flows/deposit/widgets/amount-entry/AmountEntry.js +1 -1
  71. package/dist/flows/deposit/widgets/asset-picker/AssetPicker.js +1 -1
  72. package/dist/flows/deposit/widgets/confirm-deposit/ConfirmDeposit.js +1 -1
  73. package/dist/flows/deposit/widgets/deposit/Deposit.js +1 -1
  74. package/dist/flows/deposit/widgets/deposit/compound/components/Header.d.ts +7 -6
  75. package/dist/flows/deposit/widgets/deposit/compound/components/Header.js +1 -1
  76. package/dist/flows/deposit/widgets/deposit-status-banner/DepositStatusBanner.js +1 -1
  77. package/dist/flows/deposit/widgets/error-state/ErrorState.js +1 -1
  78. package/dist/flows/deposit/widgets/processing-state/ProcessingState.js +1 -1
  79. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Header.d.ts +4 -3
  80. package/dist/flows/deposit/widgets/transfer-crypto/compound/components/Header.js +1 -1
  81. package/dist/flows/withdraw/dialog/WithdrawDialog.js +1 -1
  82. package/dist/flows/withdraw/driver/types.d.ts +0 -34
  83. package/dist/flows/withdraw/orchestrator/controller.js +1 -1
  84. package/dist/flows/withdraw/orchestrator/reducer.js +1 -1
  85. package/dist/flows/withdraw/orchestrator/types.d.ts +44 -30
  86. package/dist/flows/withdraw/widgets/{activity-history/WithdrawHistoryDetail.d.ts → activity/WithdrawActivityDetail.d.ts} +11 -11
  87. package/dist/flows/withdraw/widgets/activity/WithdrawActivityDetail.js +1 -0
  88. package/dist/flows/withdraw/widgets/activity/WithdrawActivityList.d.ts +36 -0
  89. package/dist/flows/withdraw/widgets/activity/WithdrawActivityList.js +1 -0
  90. package/dist/flows/withdraw/widgets/activity/index.d.ts +2 -0
  91. package/dist/flows/withdraw/widgets/activity/index.js +1 -0
  92. package/dist/flows/withdraw/widgets/activity/useWithdrawActivitySource.js +1 -0
  93. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Body.d.ts +7 -6
  94. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Header.d.ts +4 -4
  95. package/dist/flows/withdraw/widgets/withdraw-form/compound/components/Header.js +1 -1
  96. package/dist/format/index.d.ts +2 -1
  97. package/dist/format/index.js +1 -1
  98. package/dist/i18n/locales/ar.js +1 -1
  99. package/dist/i18n/locales/es.js +1 -1
  100. package/dist/i18n/locales/source-keys.d.ts +1 -1
  101. package/dist/icons/index.d.ts +2 -2
  102. package/dist/icons/index.js +1 -1
  103. package/dist/index.d.ts +8 -2
  104. package/dist/index.js +1 -1
  105. package/dist/package.js +1 -1
  106. package/dist/shared/format/formatSmartRelative.d.ts +25 -0
  107. package/dist/shared/format/formatSmartRelative.js +1 -0
  108. package/dist/shared/format/formatUsd.js +1 -1
  109. package/dist/shared/icons/{HistoryIcon.d.ts → ActivityIcon.d.ts} +4 -4
  110. package/dist/shared/icons/{HistoryIcon.js → ActivityIcon.js} +1 -1
  111. package/dist/shared/orchestrator/activityOpenInput.d.ts +21 -0
  112. package/dist/shared/orchestrator/createActivityReducers.js +1 -0
  113. package/dist/shared/orchestrator/index.d.ts +2 -0
  114. package/dist/shared/orchestrator/index.js +1 -1
  115. package/dist/shared/orchestrator/resolveActivityEntry.d.ts +1 -0
  116. package/dist/shared/orchestrator/resolveActivityEntry.js +1 -0
  117. package/dist/shared/ui/Card/Card.d.ts +12 -9
  118. package/dist/shared/ui/Card/Card.js +1 -1
  119. package/dist/shared/ui/Card/Card.styles.js +1 -1
  120. package/dist/shared/ui/SelectableTile/SelectableTile.d.ts +1 -1
  121. package/dist/shared/widgets/activity/ActivityTrigger.js +1 -0
  122. package/dist/shared/widgets/{activity-history → activity}/ActivityTrigger.styles.js +1 -1
  123. package/dist/shared/widgets/activity/adapters/settlementToWidgetProps.js +1 -0
  124. package/dist/shared/widgets/activity/compound/Activity.d.ts +95 -0
  125. package/dist/shared/widgets/activity/compound/Activity.js +1 -0
  126. package/dist/shared/widgets/activity/compound/Activity.slots.d.ts +22 -0
  127. package/dist/shared/widgets/activity/compound/Activity.slots.js +1 -0
  128. package/dist/shared/widgets/activity/compound/Activity.styles.js +1 -0
  129. package/dist/shared/widgets/{activity-history/compound/ActivityHistoryDetail.d.ts → activity/compound/ActivityDetail.d.ts} +24 -17
  130. package/dist/shared/widgets/activity/compound/ActivityDetail.js +1 -0
  131. package/dist/shared/widgets/activity/compound/Row.slots.d.ts +21 -0
  132. package/dist/shared/widgets/activity/compound/Row.slots.js +1 -0
  133. package/dist/shared/widgets/activity/compound/Row.styles.js +1 -0
  134. package/dist/shared/widgets/{activity-history/compound/components/HistoryHeader.d.ts → activity/compound/components/ActivityHeader.d.ts} +8 -8
  135. package/dist/shared/widgets/activity/compound/components/ActivityHeader.js +1 -0
  136. package/dist/shared/widgets/{activity-history → activity}/compound/components/Empty.d.ts +3 -3
  137. package/dist/shared/widgets/activity/compound/components/Empty.js +1 -0
  138. package/dist/shared/widgets/{activity-history → activity}/compound/components/ErrorView.d.ts +7 -7
  139. package/dist/shared/widgets/activity/compound/components/ErrorView.js +1 -0
  140. package/dist/shared/widgets/activity/compound/components/List.d.ts +23 -0
  141. package/dist/shared/widgets/activity/compound/components/List.js +1 -0
  142. package/dist/shared/widgets/{activity-history → activity}/compound/components/Row.d.ts +13 -16
  143. package/dist/shared/widgets/activity/compound/components/Row.js +1 -0
  144. package/dist/shared/widgets/activity/compound/components/StatusPip.js +1 -0
  145. package/dist/shared/widgets/activity/compound/context.d.ts +95 -0
  146. package/dist/shared/widgets/activity/compound/context.js +1 -0
  147. package/dist/shared/widgets/activity/compound/index.d.ts +8 -0
  148. package/dist/shared/widgets/activity/compound/index.js +1 -0
  149. package/dist/shared/widgets/activity/payloads.d.ts +108 -0
  150. package/dist/shared/widgets/activity/transformers/activityResponseToPayload.js +1 -0
  151. package/dist/shared/widgets/amount-entry/compound/components/Header.d.ts +1 -1
  152. package/dist/shared/widgets/amount-entry/compound/types.d.ts +2 -3
  153. package/dist/shared/widgets/asset-picker/compound/components/Header.d.ts +1 -1
  154. package/dist/shared/widgets/asset-picker/compound/types.d.ts +2 -2
  155. package/dist/stridge/StridgeProvider.d.ts +10 -6
  156. package/dist/stridge/StridgeProvider.js +1 -1
  157. package/dist/stridge/stubs.js +1 -1
  158. package/dist/styles/index.css +4 -0
  159. package/dist/withdraw/compound/index.d.ts +6 -6
  160. package/dist/withdraw/widgets/index.d.ts +3 -3
  161. package/dist/withdraw/widgets/index.js +1 -1
  162. package/package.json +14 -6
  163. package/dist/activity-history/compound/index.d.ts +0 -9
  164. package/dist/activity-history/compound/index.js +0 -1
  165. package/dist/flows/deposit/widgets/activity-history/DepositHistoryDetail.js +0 -1
  166. package/dist/flows/deposit/widgets/activity-history/DepositHistoryList.d.ts +0 -38
  167. package/dist/flows/deposit/widgets/activity-history/DepositHistoryList.js +0 -1
  168. package/dist/flows/deposit/widgets/activity-history/index.d.ts +0 -2
  169. package/dist/flows/deposit/widgets/activity-history/index.js +0 -1
  170. package/dist/flows/deposit/widgets/activity-history/useDepositActivityHistorySource.js +0 -1
  171. package/dist/flows/withdraw/widgets/activity-history/WithdrawHistoryDetail.js +0 -1
  172. package/dist/flows/withdraw/widgets/activity-history/WithdrawHistoryList.d.ts +0 -36
  173. package/dist/flows/withdraw/widgets/activity-history/WithdrawHistoryList.js +0 -1
  174. package/dist/flows/withdraw/widgets/activity-history/index.d.ts +0 -2
  175. package/dist/flows/withdraw/widgets/activity-history/index.js +0 -1
  176. package/dist/flows/withdraw/widgets/activity-history/useWithdrawActivityHistorySource.js +0 -1
  177. package/dist/shared/widgets/activity-history/ActivityTrigger.js +0 -1
  178. package/dist/shared/widgets/activity-history/adapters/settlementToWidgetProps.js +0 -1
  179. package/dist/shared/widgets/activity-history/compound/ActivityHistory.d.ts +0 -95
  180. package/dist/shared/widgets/activity-history/compound/ActivityHistory.js +0 -1
  181. package/dist/shared/widgets/activity-history/compound/ActivityHistory.slots.d.ts +0 -22
  182. package/dist/shared/widgets/activity-history/compound/ActivityHistory.slots.js +0 -1
  183. package/dist/shared/widgets/activity-history/compound/ActivityHistory.styles.js +0 -1
  184. package/dist/shared/widgets/activity-history/compound/ActivityHistoryDetail.js +0 -1
  185. package/dist/shared/widgets/activity-history/compound/Row.slots.d.ts +0 -21
  186. package/dist/shared/widgets/activity-history/compound/Row.slots.js +0 -1
  187. package/dist/shared/widgets/activity-history/compound/Row.styles.js +0 -1
  188. package/dist/shared/widgets/activity-history/compound/components/Empty.js +0 -1
  189. package/dist/shared/widgets/activity-history/compound/components/ErrorView.js +0 -1
  190. package/dist/shared/widgets/activity-history/compound/components/HistoryHeader.js +0 -1
  191. package/dist/shared/widgets/activity-history/compound/components/List.d.ts +0 -23
  192. package/dist/shared/widgets/activity-history/compound/components/List.js +0 -1
  193. package/dist/shared/widgets/activity-history/compound/components/Row.js +0 -1
  194. package/dist/shared/widgets/activity-history/compound/components/StatusPip.js +0 -1
  195. package/dist/shared/widgets/activity-history/compound/context.d.ts +0 -79
  196. package/dist/shared/widgets/activity-history/compound/context.js +0 -1
  197. package/dist/shared/widgets/activity-history/payloads.d.ts +0 -81
  198. package/dist/shared/widgets/activity-history/transformers/historyResponseToPayload.js +0 -1
  199. /package/dist/shared/widgets/{activity-history → activity}/index.js +0 -0
  200. /package/dist/shared/widgets/{activity-history → activity}/transformers/resolveDirection.js +0 -0
@@ -1,3 +1,4 @@
1
+ import { ActivityDriver } from "./flows/activity/driver/types.js";
1
2
  import { DepositDriver } from "./flows/deposit/driver/types.js";
2
3
  import { DepositMethodsConfig } from "./flows/deposit/orchestrator/types.js";
3
4
  import { WithdrawDriver } from "./flows/withdraw/driver/types.js";
@@ -51,6 +52,7 @@ declare function KitProvider({
51
52
  deposit,
52
53
  depositMethods,
53
54
  withdraw,
55
+ activity,
54
56
  storage,
55
57
  storageNamespace,
56
58
  support,
@@ -89,6 +91,15 @@ declare namespace KitProvider {
89
91
  * `@stridge/kit/withdraw/dialog` read from it.
90
92
  */
91
93
  withdraw?: WithdrawDriver;
94
+ /**
95
+ * Host-supplied {@link ActivityDriver} — source of reactive owner-scoped activity data and
96
+ * the imperative `useActivity()` controller's polling lifecycle. When supplied, the
97
+ * provider mounts the activity driver context and the standalone activity controller;
98
+ * `<ActivityDialog>` from `@stridge/kit/activity/dialog` reads from this slot, and the
99
+ * in-flow activity icons inside `<DepositDialog>` / `<WithdrawDialog>` source their
100
+ * entity from here too. When omitted, the in-flow activity icon hides gracefully.
101
+ */
102
+ activity?: ActivityDriver;
92
103
  /**
93
104
  * Persistence backing the kit's per-tab state (banner acknowledgments, future kit-wide
94
105
  * features). One of `"session"` (default — `sessionStorage`, forgotten on tab close),
@@ -1 +1 @@
1
- "use client";import{KitStorageProvider as e}from"./storage/context.js";import"./storage/index.js";import{DepositDriverProvider as t}from"./flows/deposit/driver/context.js";import{getLocaleDirection as n}from"./shared/i18n/getLocaleDirection.js";import{KitI18nProvider as r}from"./shared/i18n/KitI18nProvider.js";import"./i18n/index.js";import{GatewayController as i}from"./flows/deposit/orchestrator/controller.js";import{WithdrawBindingsProvider as a}from"./flows/withdraw/bindings/WithdrawBindings.js";import"./flows/withdraw/bindings/index.js";import{WithdrawDriverProvider as o}from"./flows/withdraw/driver/context.js";import{WithdrawControllerProvider as s}from"./flows/withdraw/orchestrator/controller.js";import{KitScope as c}from"./scope/KitScope.js";import"./scope/index.js";import{SupportConfigContext as l}from"./shared/support/SupportConfigContext.js";import{TermsConfigContext as u}from"./shared/terms/TermsConfigContext.js";import{useMemo as d}from"react";import{jsx as f}from"react/jsx-runtime";import{LazyMotion as p,domMax as m}from"motion/react";function h({children:h,i18n:g,direction:_,deposit:v,depositMethods:y,withdraw:b,storage:x,storageNamespace:S,support:C,merchantContext:w,terms:T,attribution:E=`visible`,...D}){let O=n(g?.locale),k=h;b&&(k=f(a,{children:f(o,{driver:b,children:f(s,{children:k})})})),v&&(k=f(t,{driver:v,children:f(i,{methodsConfig:y,children:k})}));let A=d(()=>({config:C,merchantContext:w??null}),[C,w]),j=C!==void 0||w!==void 0,M=d(()=>({config:T}),[T]),N=T!==void 0,P=f(r,{locale:g?.locale,messages:g?.messages,children:f(c,{...D,direction:_??O,locale:g?.locale,attribution:E,children:f(e,{storage:x,namespace:S,children:k})})});return j&&(P=f(l.Provider,{value:A,children:P})),N&&(P=f(u.Provider,{value:M,children:P})),f(p,{features:m,children:P})}export{h as KitProvider};
1
+ "use client";import{KitStorageProvider as e}from"./storage/context.js";import"./storage/index.js";import{ActivityDriverProvider as t}from"./flows/activity/driver/context.js";import{getLocaleDirection as n}from"./shared/i18n/getLocaleDirection.js";import{KitI18nProvider as r}from"./shared/i18n/KitI18nProvider.js";import"./i18n/index.js";import{ActivityControllerProvider as i}from"./flows/activity/orchestrator/controller.js";import{DepositDriverProvider as a}from"./flows/deposit/driver/context.js";import{GatewayController as o}from"./flows/deposit/orchestrator/controller.js";import{WithdrawBindingsProvider as s}from"./flows/withdraw/bindings/WithdrawBindings.js";import"./flows/withdraw/bindings/index.js";import{WithdrawDriverProvider as c}from"./flows/withdraw/driver/context.js";import{WithdrawControllerProvider as l}from"./flows/withdraw/orchestrator/controller.js";import{KitScope as u}from"./scope/KitScope.js";import"./scope/index.js";import{SupportConfigContext as d}from"./shared/support/SupportConfigContext.js";import{TermsConfigContext as f}from"./shared/terms/TermsConfigContext.js";import{useMemo as p}from"react";import{jsx as m}from"react/jsx-runtime";import{LazyMotion as h,domMax as g}from"motion/react";function _({children:_,i18n:v,direction:y,deposit:b,depositMethods:x,withdraw:S,activity:C,storage:w,storageNamespace:T,support:E,merchantContext:D,terms:O,attribution:k=`visible`,...A}){let j=n(v?.locale),M=_;S&&(M=m(s,{children:m(c,{driver:S,children:m(l,{children:M})})})),b&&(M=m(a,{driver:b,children:m(o,{methodsConfig:x,children:M})})),C&&(M=m(t,{driver:C,children:m(i,{children:M})}));let N=p(()=>({config:E,merchantContext:D??null}),[E,D]),P=E!==void 0||D!==void 0,F=p(()=>({config:O}),[O]),I=O!==void 0,L=m(r,{locale:v?.locale,messages:v?.messages,children:m(u,{...A,direction:y??j,locale:v?.locale,attribution:k,children:m(e,{storage:w,namespace:T,children:M})})});return P&&(L=m(d.Provider,{value:N,children:L})),I&&(L=m(f.Provider,{value:F,children:L})),m(h,{features:g,children:L})}export{_ as KitProvider};
@@ -0,0 +1,3 @@
1
+ import { ActivityDriver, ActivitySnapshot } from "../../../flows/activity/driver/types.js";
2
+ import { ActivityDriverContext, ActivityDriverProvider, useActivityDriverInstance, useActivitySnapshot, useOptionalActivityDriverInstance } from "../../../flows/activity/driver/context.js";
3
+ export { type ActivityDriver, ActivityDriverContext, ActivityDriverProvider, type ActivitySnapshot, useActivityDriverInstance, useActivitySnapshot, useOptionalActivityDriverInstance };
@@ -0,0 +1 @@
1
+ import{ActivityDriverContext as e,ActivityDriverProvider as t,useActivityDriverInstance as n,useActivitySnapshot as r,useOptionalActivityDriverInstance as i}from"../../../flows/activity/driver/context.js";export{e as ActivityDriverContext,t as ActivityDriverProvider,n as useActivityDriverInstance,r as useActivitySnapshot,i as useOptionalActivityDriverInstance};
@@ -1,7 +1,8 @@
1
1
  import { StridgeChainSlug, StridgeRpc, StridgeRpcConfig, StridgeRpcWaitInput, createStridgeRpc } from "../../../drivers/stridge/rpc.js";
2
2
  import { STRIDGE_DEFAULT_ENVIRONMENT, StridgeDriverConfig, StridgeDriverDestination, StridgeEnvironment, StridgePollIntervals, StridgeTokenIconResolverEntry } from "../../../drivers/stridge/types.js";
3
3
  import { CreateStridgeCatalogInput, StridgeCatalog, createStridgeCatalog } from "../../../drivers/stridge/catalog.js";
4
+ import { CreateStridgeActivityDriverInput, createStridgeActivityDriver } from "../../../drivers/stridge/createStridgeActivityDriver.js";
4
5
  import { CreateStridgeDepositDriverInput, createStridgeDepositDriver } from "../../../drivers/stridge/createStridgeDepositDriver.js";
5
6
  import { CreateStridgeWithdrawDriverInput, StridgeWithdrawCurrency, createStridgeWithdrawDriver } from "../../../drivers/stridge/createStridgeWithdrawDriver.js";
6
7
  import { GatewayStartResponse, SupportedAssetsResponse } from "@stridge/sdk";
7
- export { type CreateStridgeCatalogInput, type CreateStridgeDepositDriverInput, type CreateStridgeWithdrawDriverInput, type GatewayStartResponse, STRIDGE_DEFAULT_ENVIRONMENT, type StridgeCatalog, type StridgeChainSlug, type StridgeDriverConfig, type StridgeDriverDestination, type StridgeEnvironment, type StridgePollIntervals, type StridgeRpc, type StridgeRpcConfig, type StridgeRpcWaitInput, type StridgeTokenIconResolverEntry, type StridgeWithdrawCurrency, type SupportedAssetsResponse, createStridgeCatalog, createStridgeDepositDriver, createStridgeRpc, createStridgeWithdrawDriver };
8
+ export { type CreateStridgeActivityDriverInput, type CreateStridgeCatalogInput, type CreateStridgeDepositDriverInput, type CreateStridgeWithdrawDriverInput, type GatewayStartResponse, STRIDGE_DEFAULT_ENVIRONMENT, type StridgeCatalog, type StridgeChainSlug, type StridgeDriverConfig, type StridgeDriverDestination, type StridgeEnvironment, type StridgePollIntervals, type StridgeRpc, type StridgeRpcConfig, type StridgeRpcWaitInput, type StridgeTokenIconResolverEntry, type StridgeWithdrawCurrency, type SupportedAssetsResponse, createStridgeActivityDriver, createStridgeCatalog, createStridgeDepositDriver, createStridgeRpc, createStridgeWithdrawDriver };
@@ -1 +1 @@
1
- import{STRIDGE_DEFAULT_ENVIRONMENT as e}from"../../../drivers/stridge/types.js";import{createStridgeCatalog as t}from"../../../drivers/stridge/catalog.js";import{createStridgeRpc as n}from"../../../drivers/stridge/rpc.js";import{createStridgeDepositDriver as r}from"../../../drivers/stridge/createStridgeDepositDriver.js";import{createStridgeWithdrawDriver as i}from"../../../drivers/stridge/createStridgeWithdrawDriver.js";export{e as STRIDGE_DEFAULT_ENVIRONMENT,t as createStridgeCatalog,r as createStridgeDepositDriver,n as createStridgeRpc,i as createStridgeWithdrawDriver};
1
+ import{STRIDGE_DEFAULT_ENVIRONMENT as e}from"../../../drivers/stridge/types.js";import{createStridgeCatalog as t}from"../../../drivers/stridge/catalog.js";import{createStridgeActivityDriver as n}from"../../../drivers/stridge/createStridgeActivityDriver.js";import{createStridgeRpc as r}from"../../../drivers/stridge/rpc.js";import{createStridgeDepositDriver as i}from"../../../drivers/stridge/createStridgeDepositDriver.js";import{createStridgeWithdrawDriver as a}from"../../../drivers/stridge/createStridgeWithdrawDriver.js";export{e as STRIDGE_DEFAULT_ENVIRONMENT,n as createStridgeActivityDriver,t as createStridgeCatalog,i as createStridgeDepositDriver,r as createStridgeRpc,a as createStridgeWithdrawDriver};
@@ -1,5 +1,6 @@
1
+ import { CreateStridgeMockActivityDriverInput, MockActivityDriverHandle, MockActivityDriverLatency, createStridgeMockActivityDriver } from "../../../drivers/stridge-mock/createStridgeMockActivityDriver.js";
1
2
  import { DEFAULT_ADDRESSES_PAYLOAD, DEFAULT_BRAND_PAYLOAD, DEFAULT_TARGET_RAW, DEFAULT_WALLET_INFO, buildDefaultAddressesPayload, buildDefaultBalances, buildDefaultFailurePayload, buildDefaultPendingPayload, buildDefaultQuotePayload, buildDefaultSuccessPayload, buildDefaultTargetPayload, buildDefaultWalletPayload, buildSettlementPayload } from "../../../drivers/stridge-mock/fixtures.js";
2
3
  import { MockTriggers } from "../../../drivers/stridge-mock/triggers.js";
3
4
  import { CreateStridgeMockDriverInput, MockDriverHandle, createStridgeMockDriver } from "../../../drivers/stridge-mock/createStridgeMockDriver.js";
4
5
  import { CreateStridgeMockWithdrawDriverInput, MockWithdrawDriverHandle, MockWithdrawTriggers, buildDefaultWithdrawableBalances, buildDefaultWithdrawalFailurePayload, buildDefaultWithdrawalPendingPayload, buildDefaultWithdrawalQuotePayload, buildDefaultWithdrawalSuccessPayload, createStridgeMockWithdrawDriver } from "../../../drivers/stridge-mock/createStridgeMockWithdrawDriver.js";
5
- export { type CreateStridgeMockDriverInput, type CreateStridgeMockWithdrawDriverInput, DEFAULT_ADDRESSES_PAYLOAD, DEFAULT_BRAND_PAYLOAD, DEFAULT_TARGET_RAW, DEFAULT_WALLET_INFO, type MockDriverHandle, type MockTriggers, type MockWithdrawDriverHandle, type MockWithdrawTriggers, buildDefaultAddressesPayload, buildDefaultBalances, buildDefaultFailurePayload, buildDefaultPendingPayload, buildDefaultQuotePayload, buildDefaultSuccessPayload, buildDefaultTargetPayload, buildDefaultWalletPayload, buildDefaultWithdrawableBalances, buildDefaultWithdrawalFailurePayload, buildDefaultWithdrawalPendingPayload, buildDefaultWithdrawalQuotePayload, buildDefaultWithdrawalSuccessPayload, buildSettlementPayload, createStridgeMockDriver as createStridgeMockDepositDriver, createStridgeMockDriver, createStridgeMockWithdrawDriver };
6
+ export { type CreateStridgeMockActivityDriverInput, type CreateStridgeMockDriverInput, type CreateStridgeMockWithdrawDriverInput, DEFAULT_ADDRESSES_PAYLOAD, DEFAULT_BRAND_PAYLOAD, DEFAULT_TARGET_RAW, DEFAULT_WALLET_INFO, type MockActivityDriverHandle, type MockActivityDriverLatency, type MockDriverHandle, type MockTriggers, type MockWithdrawDriverHandle, type MockWithdrawTriggers, buildDefaultAddressesPayload, buildDefaultBalances, buildDefaultFailurePayload, buildDefaultPendingPayload, buildDefaultQuotePayload, buildDefaultSuccessPayload, buildDefaultTargetPayload, buildDefaultWalletPayload, buildDefaultWithdrawableBalances, buildDefaultWithdrawalFailurePayload, buildDefaultWithdrawalPendingPayload, buildDefaultWithdrawalQuotePayload, buildDefaultWithdrawalSuccessPayload, buildSettlementPayload, createStridgeMockActivityDriver, createStridgeMockDriver as createStridgeMockDepositDriver, createStridgeMockDriver, createStridgeMockWithdrawDriver };
@@ -1 +1 @@
1
- import{DEFAULT_ADDRESSES_PAYLOAD as e,DEFAULT_BRAND_PAYLOAD as t,DEFAULT_TARGET_RAW as n,DEFAULT_WALLET_INFO as r,buildDefaultAddressesPayload as i,buildDefaultBalances as a,buildDefaultFailurePayload as o,buildDefaultPendingPayload as s,buildDefaultQuotePayload as c,buildDefaultSuccessPayload as l,buildDefaultTargetPayload as u,buildDefaultWalletPayload as d,buildSettlementPayload as f}from"../../../drivers/stridge-mock/fixtures.js";import{createStridgeMockDriver as p}from"../../../drivers/stridge-mock/createStridgeMockDriver.js";import{buildDefaultWithdrawableBalances as m,buildDefaultWithdrawalFailurePayload as h,buildDefaultWithdrawalPendingPayload as g,buildDefaultWithdrawalQuotePayload as _,buildDefaultWithdrawalSuccessPayload as v,createStridgeMockWithdrawDriver as y}from"../../../drivers/stridge-mock/createStridgeMockWithdrawDriver.js";export{e as DEFAULT_ADDRESSES_PAYLOAD,t as DEFAULT_BRAND_PAYLOAD,n as DEFAULT_TARGET_RAW,r as DEFAULT_WALLET_INFO,i as buildDefaultAddressesPayload,a as buildDefaultBalances,o as buildDefaultFailurePayload,s as buildDefaultPendingPayload,c as buildDefaultQuotePayload,l as buildDefaultSuccessPayload,u as buildDefaultTargetPayload,d as buildDefaultWalletPayload,m as buildDefaultWithdrawableBalances,h as buildDefaultWithdrawalFailurePayload,g as buildDefaultWithdrawalPendingPayload,_ as buildDefaultWithdrawalQuotePayload,v as buildDefaultWithdrawalSuccessPayload,f as buildSettlementPayload,p as createStridgeMockDepositDriver,p as createStridgeMockDriver,y as createStridgeMockWithdrawDriver};
1
+ import{DEFAULT_ADDRESSES_PAYLOAD as e,DEFAULT_BRAND_PAYLOAD as t,DEFAULT_TARGET_RAW as n,DEFAULT_WALLET_INFO as r,buildDefaultAddressesPayload as i,buildDefaultBalances as a,buildDefaultFailurePayload as o,buildDefaultPendingPayload as s,buildDefaultQuotePayload as c,buildDefaultSuccessPayload as l,buildDefaultTargetPayload as u,buildDefaultWalletPayload as d,buildSettlementPayload as f}from"../../../drivers/stridge-mock/fixtures.js";import{createStridgeMockActivityDriver as p}from"../../../drivers/stridge-mock/createStridgeMockActivityDriver.js";import{createStridgeMockDriver as m}from"../../../drivers/stridge-mock/createStridgeMockDriver.js";import{buildDefaultWithdrawableBalances as h,buildDefaultWithdrawalFailurePayload as g,buildDefaultWithdrawalPendingPayload as _,buildDefaultWithdrawalQuotePayload as v,buildDefaultWithdrawalSuccessPayload as y,createStridgeMockWithdrawDriver as b}from"../../../drivers/stridge-mock/createStridgeMockWithdrawDriver.js";export{e as DEFAULT_ADDRESSES_PAYLOAD,t as DEFAULT_BRAND_PAYLOAD,n as DEFAULT_TARGET_RAW,r as DEFAULT_WALLET_INFO,i as buildDefaultAddressesPayload,a as buildDefaultBalances,o as buildDefaultFailurePayload,s as buildDefaultPendingPayload,c as buildDefaultQuotePayload,l as buildDefaultSuccessPayload,u as buildDefaultTargetPayload,d as buildDefaultWalletPayload,h as buildDefaultWithdrawableBalances,g as buildDefaultWithdrawalFailurePayload,_ as buildDefaultWithdrawalPendingPayload,v as buildDefaultWithdrawalQuotePayload,y as buildDefaultWithdrawalSuccessPayload,f as buildSettlementPayload,p as createStridgeMockActivityDriver,m as createStridgeMockDepositDriver,m as createStridgeMockDriver,b as createStridgeMockWithdrawDriver};
@@ -0,0 +1,19 @@
1
+ import { ActivityAmount, ActivityPayload, ActivityRowPayload } from "../../shared/widgets/activity/payloads.js";
2
+ import { ActivityHeader, ActivityListHeader } from "../../shared/widgets/activity/compound/components/ActivityHeader.js";
3
+ import { ActivityRowProps } from "../../shared/widgets/activity/compound/components/Row.js";
4
+ import { Activity } from "../../shared/widgets/activity/compound/Activity.js";
5
+ import { ACTIVITY_SLOTS, ActivitySlot } from "../../shared/widgets/activity/compound/Activity.slots.js";
6
+ import { ActivityDetail } from "../../shared/widgets/activity/compound/ActivityDetail.js";
7
+ import { ActivitySourceProvider, ActivitySourceValue, useActivitySource } from "../../shared/widgets/activity/compound/context.js";
8
+ import { ACTIVITY_ROW_SLOTS, ActivityRowSlot } from "../../shared/widgets/activity/compound/Row.slots.js";
9
+ import { ErrorStateActionsProps, ErrorStateAsset, ErrorStateAssetValueProps, ErrorStateBodyProps, ErrorStateDestination, ErrorStateDetailProps, ErrorStateDetailsProps, ErrorStateDialogProps, ErrorStateDisclosureChevronProps, ErrorStateHeaderProps, ErrorStateHelp, ErrorStateHelpInfoProps, ErrorStateHeroProps, ErrorStateMoreDetailsProps, ErrorStateProps, ErrorStateRowProps, ErrorStateSourceWallet, ErrorStateStatusValueProps, ErrorStateTxRef } from "../../shared/widgets/error-state/compound/types.js";
10
+ import { ErrorState } from "../../shared/widgets/error-state/compound/ErrorState.js";
11
+ import { ERROR_STATE_SLOTS, ErrorStateSlot } from "../../shared/widgets/error-state/compound/ErrorState.slots.js";
12
+ import { ProcessingStateAsset, ProcessingStateBodyProps, ProcessingStateDetailProps, ProcessingStateDetailsProps, ProcessingStateDialogProps, ProcessingStateHeaderProps, ProcessingStateHeroProps, ProcessingStateProps, ProcessingStateRowProps, ProcessingStateSourceWallet, ProcessingStateStatusPillProps, ProcessingStateTxRef } from "../../shared/widgets/processing-state/compound/types.js";
13
+ import { ProcessingState } from "../../shared/widgets/processing-state/compound/ProcessingState.js";
14
+ import { PROCESSING_STATE_SLOTS, ProcessingStateSlot } from "../../shared/widgets/processing-state/compound/ProcessingState.slots.js";
15
+ import { SuccessStateActionsProps, SuccessStateAsset, SuccessStateAssetValueProps, SuccessStateBodyProps, SuccessStateDetailProps, SuccessStateDetailsProps, SuccessStateDialogProps, SuccessStateExplorer, SuccessStateHeaderProps, SuccessStateHeadlineProps, SuccessStateMoreDetailsProps, SuccessStateProps, SuccessStateRouteValueProps, SuccessStateRowProps, SuccessStateSourceWallet, SuccessStateStatusPillProps, SuccessStateTxRef } from "../../shared/widgets/success-state/compound/types.js";
16
+ import { SuccessState } from "../../shared/widgets/success-state/compound/SuccessState.js";
17
+ import { SUCCESS_STATE_SLOTS, SuccessStateSlot } from "../../shared/widgets/success-state/compound/SuccessState.slots.js";
18
+ import { ActivityFlow } from "../../flows/activity/compound/ActivityFlow.js";
19
+ export { ACTIVITY_ROW_SLOTS, ACTIVITY_SLOTS, Activity, ActivityAmount, ActivityDetail, ActivityFlow, ActivityHeader, ActivityListHeader, ActivityPayload, ActivityRowPayload, ActivityRowProps, ActivityRowSlot, ActivitySlot, ActivitySourceProvider, ActivitySourceValue, ERROR_STATE_SLOTS, ErrorState, ErrorStateActionsProps, ErrorStateAsset, ErrorStateAssetValueProps, ErrorStateBodyProps, ErrorStateDestination, ErrorStateDetailProps, ErrorStateDetailsProps, ErrorStateDialogProps, ErrorStateDisclosureChevronProps, ErrorStateHeaderProps, ErrorStateHelp, ErrorStateHelpInfoProps, ErrorStateHeroProps, ErrorStateMoreDetailsProps, ErrorStateProps, ErrorStateRowProps, ErrorStateSlot, ErrorStateSourceWallet, ErrorStateStatusValueProps, ErrorStateTxRef, PROCESSING_STATE_SLOTS, ProcessingState, ProcessingStateAsset, ProcessingStateBodyProps, ProcessingStateDetailProps, ProcessingStateDetailsProps, ProcessingStateDialogProps, ProcessingStateHeaderProps, ProcessingStateHeroProps, ProcessingStateProps, ProcessingStateRowProps, ProcessingStateSlot, ProcessingStateSourceWallet, ProcessingStateStatusPillProps, ProcessingStateTxRef, SUCCESS_STATE_SLOTS, SuccessState, SuccessStateActionsProps, SuccessStateAsset, SuccessStateAssetValueProps, SuccessStateBodyProps, SuccessStateDetailProps, SuccessStateDetailsProps, SuccessStateDialogProps, SuccessStateExplorer, SuccessStateHeaderProps, SuccessStateHeadlineProps, SuccessStateMoreDetailsProps, SuccessStateProps, SuccessStateRouteValueProps, SuccessStateRowProps, SuccessStateSlot, SuccessStateSourceWallet, SuccessStateStatusPillProps, SuccessStateTxRef, useActivitySource };
@@ -0,0 +1 @@
1
+ import{ERROR_STATE_SLOTS as e}from"../../shared/widgets/error-state/compound/ErrorState.slots.js";import{ErrorState as t}from"../../shared/widgets/error-state/compound/ErrorState.js";import"../../shared/widgets/error-state/compound/index.js";import{PROCESSING_STATE_SLOTS as n}from"../../shared/widgets/processing-state/compound/ProcessingState.slots.js";import{ProcessingState as r}from"../../shared/widgets/processing-state/compound/ProcessingState.js";import"../../shared/widgets/processing-state/compound/index.js";import{SUCCESS_STATE_SLOTS as i}from"../../shared/widgets/success-state/compound/SuccessState.slots.js";import{SuccessState as a}from"../../shared/widgets/success-state/compound/SuccessState.js";import"../../shared/widgets/success-state/compound/index.js";import{ACTIVITY_SLOTS as o}from"../../shared/widgets/activity/compound/Activity.slots.js";import{ActivitySourceProvider as s,useActivitySource as c}from"../../shared/widgets/activity/compound/context.js";import{ActivityHeader as l,ActivityListHeader as u}from"../../shared/widgets/activity/compound/components/ActivityHeader.js";import{ACTIVITY_ROW_SLOTS as d}from"../../shared/widgets/activity/compound/Row.slots.js";import{Activity as f}from"../../shared/widgets/activity/compound/Activity.js";import{ActivityDetail as p}from"../../shared/widgets/activity/compound/ActivityDetail.js";import"../../shared/widgets/activity/compound/index.js";import{ActivityFlow as m}from"../../flows/activity/compound/ActivityFlow.js";export{d as ACTIVITY_ROW_SLOTS,o as ACTIVITY_SLOTS,f as Activity,p as ActivityDetail,m as ActivityFlow,l as ActivityHeader,u as ActivityListHeader,s as ActivitySourceProvider,e as ERROR_STATE_SLOTS,t as ErrorState,n as PROCESSING_STATE_SLOTS,r as ProcessingState,i as SUCCESS_STATE_SLOTS,a as SuccessState,c as useActivitySource};
@@ -0,0 +1,3 @@
1
+ import { ActivityBoundary, Props } from "../../flows/activity/compound/components/Boundary.js";
2
+ import { ActivityDialog } from "../../flows/activity/dialog/ActivityDialog.js";
3
+ export { ActivityDialog, ActivityBoundary as ActivityFlowBoundary, type Props as ActivityFlowBoundaryProps };
@@ -0,0 +1 @@
1
+ import{ActivityBoundary as e}from"../../flows/activity/compound/components/Boundary.js";import{ActivityDialog as t}from"../../flows/activity/dialog/ActivityDialog.js";import"../../flows/activity/dialog/ActivityFlowBoundary.js";export{t as ActivityDialog,e as ActivityFlowBoundary};
@@ -0,0 +1,4 @@
1
+ import { DialogShell, DialogShellControls, DialogShellProps } from "../../shared/dialog/DialogShell.js";
2
+ import { ActivityDetail } from "../../flows/activity/widgets/ActivityDetail.js";
3
+ import { ActivityList } from "../../flows/activity/widgets/ActivityList.js";
4
+ export { ActivityDetail, ActivityList, DialogShell, type DialogShellControls, type DialogShellProps };
@@ -0,0 +1 @@
1
+ import{DialogShell as e}from"../../shared/dialog/DialogShell.js";import{ActivityDetail as t}from"../../flows/activity/widgets/ActivityDetail.js";import{ActivityList as n}from"../../flows/activity/widgets/ActivityList.js";export{t as ActivityDetail,n as ActivityList,e as DialogShell};
@@ -2,6 +2,15 @@ import { ConfirmTransferAmountsProps, ConfirmTransferBodyProps, ConfirmTransferB
2
2
  import { ConfirmTransfer } from "../../shared/widgets/confirm-transfer/compound/ConfirmTransfer.js";
3
3
  import { CONFIRM_TRANSFER_SLOTS, ConfirmTransferSlot } from "../../shared/widgets/confirm-transfer/compound/ConfirmTransfer.slots.js";
4
4
  import { TransferCryptoAsset, TransferCryptoBodyProps, TransferCryptoChain, TransferCryptoDialogProps, TransferCryptoDisclosureProps, TransferCryptoHeaderProps, TransferCryptoProps, TransferCryptoToken } from "../../flows/deposit/widgets/transfer-crypto/compound/types.js";
5
+ import { ErrorStateActionsProps, ErrorStateAsset, ErrorStateAssetValueProps, ErrorStateBodyProps, ErrorStateDestination, ErrorStateDetailProps, ErrorStateDetailsProps, ErrorStateDialogProps, ErrorStateDisclosureChevronProps, ErrorStateHeaderProps, ErrorStateHelp, ErrorStateHelpInfoProps, ErrorStateHeroProps, ErrorStateMoreDetailsProps, ErrorStateProps, ErrorStateRowProps, ErrorStateSourceWallet, ErrorStateStatusValueProps, ErrorStateTxRef } from "../../shared/widgets/error-state/compound/types.js";
6
+ import { ErrorState } from "../../shared/widgets/error-state/compound/ErrorState.js";
7
+ import { ERROR_STATE_SLOTS, ErrorStateSlot } from "../../shared/widgets/error-state/compound/ErrorState.slots.js";
8
+ import { ProcessingStateAsset, ProcessingStateBodyProps, ProcessingStateDetailProps, ProcessingStateDetailsProps, ProcessingStateDialogProps, ProcessingStateHeaderProps, ProcessingStateHeroProps, ProcessingStateProps, ProcessingStateRowProps, ProcessingStateSourceWallet, ProcessingStateStatusPillProps, ProcessingStateTxRef } from "../../shared/widgets/processing-state/compound/types.js";
9
+ import { ProcessingState } from "../../shared/widgets/processing-state/compound/ProcessingState.js";
10
+ import { PROCESSING_STATE_SLOTS, ProcessingStateSlot } from "../../shared/widgets/processing-state/compound/ProcessingState.slots.js";
11
+ import { SuccessStateActionsProps, SuccessStateAsset, SuccessStateAssetValueProps, SuccessStateBodyProps, SuccessStateDetailProps, SuccessStateDetailsProps, SuccessStateDialogProps, SuccessStateExplorer, SuccessStateHeaderProps, SuccessStateHeadlineProps, SuccessStateMoreDetailsProps, SuccessStateProps, SuccessStateRouteValueProps, SuccessStateRowProps, SuccessStateSourceWallet, SuccessStateStatusPillProps, SuccessStateTxRef } from "../../shared/widgets/success-state/compound/types.js";
12
+ import { SuccessState } from "../../shared/widgets/success-state/compound/SuccessState.js";
13
+ import { SUCCESS_STATE_SLOTS, SuccessStateSlot } from "../../shared/widgets/success-state/compound/SuccessState.slots.js";
5
14
  import { DepositBodyProps, DepositDialogProps, DepositHeaderProps, DepositMethodInput, DepositMethodOption, DepositMethodProps, DepositMethodsProps, DepositProps } from "../../flows/deposit/widgets/deposit/compound/types.js";
6
15
  import { DepositStepsProps } from "../../flows/deposit/widgets/deposit/compound/components/Steps.js";
7
16
  import { Deposit } from "../../flows/deposit/widgets/deposit/compound/Deposit.js";
@@ -17,13 +26,4 @@ import { AMOUNT_ENTRY_SLOTS, AmountEntrySlot } from "../../shared/widgets/amount
17
26
  import { AssetOption, AssetPickerAssetProps, AssetPickerBodyProps, AssetPickerDialogProps, AssetPickerFooterProps, AssetPickerHeaderProps, AssetPickerListProps, AssetPickerProps, AssetPickerToken } from "../../shared/widgets/asset-picker/compound/types.js";
18
27
  import { AssetPicker } from "../../shared/widgets/asset-picker/compound/AssetPicker.js";
19
28
  import { ASSET_PICKER_SLOTS, AssetPickerSlot } from "../../shared/widgets/asset-picker/compound/AssetPicker.slots.js";
20
- import { ErrorStateActionsProps, ErrorStateAsset, ErrorStateAssetValueProps, ErrorStateBodyProps, ErrorStateDestination, ErrorStateDetailProps, ErrorStateDetailsProps, ErrorStateDialogProps, ErrorStateDisclosureChevronProps, ErrorStateHeaderProps, ErrorStateHelp, ErrorStateHelpInfoProps, ErrorStateHeroProps, ErrorStateMoreDetailsProps, ErrorStateProps, ErrorStateRowProps, ErrorStateSourceWallet, ErrorStateStatusValueProps, ErrorStateTxRef } from "../../shared/widgets/error-state/compound/types.js";
21
- import { ErrorState } from "../../shared/widgets/error-state/compound/ErrorState.js";
22
- import { ERROR_STATE_SLOTS, ErrorStateSlot } from "../../shared/widgets/error-state/compound/ErrorState.slots.js";
23
- import { ProcessingStateAsset, ProcessingStateBodyProps, ProcessingStateDetailProps, ProcessingStateDetailsProps, ProcessingStateDialogProps, ProcessingStateHeaderProps, ProcessingStateHeroProps, ProcessingStateProps, ProcessingStateRowProps, ProcessingStateSourceWallet, ProcessingStateStatusPillProps, ProcessingStateTxRef } from "../../shared/widgets/processing-state/compound/types.js";
24
- import { ProcessingState } from "../../shared/widgets/processing-state/compound/ProcessingState.js";
25
- import { PROCESSING_STATE_SLOTS, ProcessingStateSlot } from "../../shared/widgets/processing-state/compound/ProcessingState.slots.js";
26
- import { SuccessStateActionsProps, SuccessStateAsset, SuccessStateAssetValueProps, SuccessStateBodyProps, SuccessStateDetailProps, SuccessStateDetailsProps, SuccessStateDialogProps, SuccessStateExplorer, SuccessStateHeaderProps, SuccessStateHeadlineProps, SuccessStateMoreDetailsProps, SuccessStateProps, SuccessStateRouteValueProps, SuccessStateRowProps, SuccessStateSourceWallet, SuccessStateStatusPillProps, SuccessStateTxRef } from "../../shared/widgets/success-state/compound/types.js";
27
- import { SuccessState } from "../../shared/widgets/success-state/compound/SuccessState.js";
28
- import { SUCCESS_STATE_SLOTS, SuccessStateSlot } from "../../shared/widgets/success-state/compound/SuccessState.slots.js";
29
29
  export { AMOUNT_ENTRY_SLOTS, ASSET_PICKER_SLOTS, AmountEntry, AmountEntryBodyProps, AmountEntryDialogProps, AmountEntryFlowProps, AmountEntryFooterProps, AmountEntryHeaderProps, AmountEntryHeroProps, AmountEntryPercentPreset, AmountEntryPillsProps, AmountEntryProps, AmountEntrySlot, AmountEntryToken, AssetOption, AssetPicker, AssetPickerAssetProps, AssetPickerBodyProps, AssetPickerDialogProps, AssetPickerFooterProps, AssetPickerHeaderProps, AssetPickerListProps, AssetPickerProps, AssetPickerSlot, AssetPickerToken, CONFIRM_TRANSFER_SLOTS, ConfirmTransfer, ConfirmTransferAmountsProps, ConfirmTransferBodyProps, ConfirmTransferBreakdown, ConfirmTransferBreakdownPercentRow, ConfirmTransferBreakdownProps, ConfirmTransferBreakdownTextRow, ConfirmTransferBreakdownUsdRow, ConfirmTransferDialogProps, ConfirmTransferDisclaimerProps, ConfirmTransferFooterProps, ConfirmTransferHeaderProps, ConfirmTransferHeroProps, ConfirmTransferMetaProps, ConfirmTransferProps, ConfirmTransferSlot, ConfirmTransferToken, ConfirmTransferTransfer, DEPOSIT_SLOTS, DEPOSIT_STATUS_BANNER_SLOTS, Deposit, DepositBodyProps, DepositDialogProps, DepositHeaderProps, DepositMethodInput, DepositMethodOption, DepositMethodProps, DepositMethodsProps, DepositProps, DepositSlot, DepositStatusBanner, DepositStatusBannerAsset, DepositStatusBannerBodyProps, DepositStatusBannerCloseProps, DepositStatusBannerDetailProps, DepositStatusBannerDetailsProps, DepositStatusBannerFooterProps, DepositStatusBannerHeroProps, DepositStatusBannerKind, DepositStatusBannerPrimaryActionProps, DepositStatusBannerProps, DepositStatusBannerRowProps, DepositStatusBannerSlot, DepositStatusBannerToggleProps, DepositStatusBannerTxRef, DepositStepsProps, ERROR_STATE_SLOTS, ErrorState, ErrorStateActionsProps, ErrorStateAsset, ErrorStateAssetValueProps, ErrorStateBodyProps, ErrorStateDestination, ErrorStateDetailProps, ErrorStateDetailsProps, ErrorStateDialogProps, ErrorStateDisclosureChevronProps, ErrorStateHeaderProps, ErrorStateHelp, ErrorStateHelpInfoProps, ErrorStateHeroProps, ErrorStateMoreDetailsProps, ErrorStateProps, ErrorStateRowProps, ErrorStateSlot, ErrorStateSourceWallet, ErrorStateStatusValueProps, ErrorStateTxRef, PROCESSING_STATE_SLOTS, ProcessingState, ProcessingStateAsset, ProcessingStateBodyProps, ProcessingStateDetailProps, ProcessingStateDetailsProps, ProcessingStateDialogProps, ProcessingStateHeaderProps, ProcessingStateHeroProps, ProcessingStateProps, ProcessingStateRowProps, ProcessingStateSlot, ProcessingStateSourceWallet, ProcessingStateStatusPillProps, ProcessingStateTxRef, SUCCESS_STATE_SLOTS, SuccessState, SuccessStateActionsProps, SuccessStateAsset, SuccessStateAssetValueProps, SuccessStateBodyProps, SuccessStateDetailProps, SuccessStateDetailsProps, SuccessStateDialogProps, SuccessStateExplorer, SuccessStateHeaderProps, SuccessStateHeadlineProps, SuccessStateMoreDetailsProps, SuccessStateProps, SuccessStateRouteValueProps, SuccessStateRowProps, SuccessStateSlot, SuccessStateSourceWallet, SuccessStateStatusPillProps, SuccessStateTxRef, TRANSFER_CRYPTO_SLOTS, TransferCrypto, TransferCryptoAsset, TransferCryptoBodyProps, TransferCryptoChain, TransferCryptoDialogProps, TransferCryptoDisclosureProps, TransferCryptoHeaderProps, TransferCryptoProps, TransferCryptoSlot, TransferCryptoToken };
@@ -1,6 +1,6 @@
1
1
  import { DialogShell, DialogShellControls, DialogShellProps } from "../../shared/dialog/DialogShell.js";
2
- import { DepositHistoryDetail } from "../../flows/deposit/widgets/activity-history/DepositHistoryDetail.js";
3
- import { DepositHistoryList } from "../../flows/deposit/widgets/activity-history/DepositHistoryList.js";
2
+ import { DepositActivityDetail } from "../../flows/deposit/widgets/activity/DepositActivityDetail.js";
3
+ import { DepositActivityList } from "../../flows/deposit/widgets/activity/DepositActivityList.js";
4
4
  import { AmountEntry } from "../../flows/deposit/widgets/amount-entry/AmountEntry.js";
5
5
  import { AssetPicker } from "../../flows/deposit/widgets/asset-picker/AssetPicker.js";
6
6
  import { ConfirmDeposit } from "../../flows/deposit/widgets/confirm-deposit/ConfirmDeposit.js";
@@ -10,4 +10,4 @@ import { ErrorState } from "../../flows/deposit/widgets/error-state/ErrorState.j
10
10
  import { ProcessingState } from "../../flows/deposit/widgets/processing-state/ProcessingState.js";
11
11
  import { SuccessState } from "../../flows/deposit/widgets/success-state/SuccessState.js";
12
12
  import { TransferCrypto } from "../../flows/deposit/widgets/transfer-crypto/TransferCrypto.js";
13
- export { AmountEntry, AssetPicker, ConfirmDeposit, Deposit, DepositHistoryDetail, DepositHistoryList, DepositStatusBanner, DialogShell, type DialogShellControls, type DialogShellProps, ErrorState, ProcessingState, SuccessState, TransferCrypto };
13
+ export { AmountEntry, AssetPicker, ConfirmDeposit, Deposit, DepositActivityDetail, DepositActivityList, DepositStatusBanner, DialogShell, type DialogShellControls, type DialogShellProps, ErrorState, ProcessingState, SuccessState, TransferCrypto };
@@ -1 +1 @@
1
- import{DialogShell as e}from"../../shared/dialog/DialogShell.js";import{DepositHistoryDetail as t}from"../../flows/deposit/widgets/activity-history/DepositHistoryDetail.js";import{DepositHistoryList as n}from"../../flows/deposit/widgets/activity-history/DepositHistoryList.js";import"../../flows/deposit/widgets/activity-history/index.js";import{AmountEntry as r}from"../../flows/deposit/widgets/amount-entry/AmountEntry.js";import"../../flows/deposit/widgets/amount-entry/index.js";import{AssetPicker as i}from"../../flows/deposit/widgets/asset-picker/AssetPicker.js";import"../../flows/deposit/widgets/asset-picker/index.js";import{ConfirmDeposit as a}from"../../flows/deposit/widgets/confirm-deposit/ConfirmDeposit.js";import"../../flows/deposit/widgets/confirm-deposit/index.js";import{Deposit as o}from"../../flows/deposit/widgets/deposit/Deposit.js";import"../../flows/deposit/widgets/deposit/index.js";import{DepositStatusBanner as s}from"../../flows/deposit/widgets/deposit-status-banner/DepositStatusBanner.js";import"../../flows/deposit/widgets/deposit-status-banner/index.js";import{ErrorState as c}from"../../flows/deposit/widgets/error-state/ErrorState.js";import"../../flows/deposit/widgets/error-state/index.js";import{ProcessingState as l}from"../../flows/deposit/widgets/processing-state/ProcessingState.js";import"../../flows/deposit/widgets/processing-state/index.js";import{SuccessState as u}from"../../flows/deposit/widgets/success-state/SuccessState.js";import"../../flows/deposit/widgets/success-state/index.js";import{TransferCrypto as d}from"../../flows/deposit/widgets/transfer-crypto/TransferCrypto.js";import"../../flows/deposit/widgets/transfer-crypto/index.js";export{r as AmountEntry,i as AssetPicker,a as ConfirmDeposit,o as Deposit,t as DepositHistoryDetail,n as DepositHistoryList,s as DepositStatusBanner,e as DialogShell,c as ErrorState,l as ProcessingState,u as SuccessState,d as TransferCrypto};
1
+ import{DialogShell as e}from"../../shared/dialog/DialogShell.js";import{DepositActivityDetail as t}from"../../flows/deposit/widgets/activity/DepositActivityDetail.js";import{DepositActivityList as n}from"../../flows/deposit/widgets/activity/DepositActivityList.js";import"../../flows/deposit/widgets/activity/index.js";import{AmountEntry as r}from"../../flows/deposit/widgets/amount-entry/AmountEntry.js";import"../../flows/deposit/widgets/amount-entry/index.js";import{AssetPicker as i}from"../../flows/deposit/widgets/asset-picker/AssetPicker.js";import"../../flows/deposit/widgets/asset-picker/index.js";import{ConfirmDeposit as a}from"../../flows/deposit/widgets/confirm-deposit/ConfirmDeposit.js";import"../../flows/deposit/widgets/confirm-deposit/index.js";import{Deposit as o}from"../../flows/deposit/widgets/deposit/Deposit.js";import"../../flows/deposit/widgets/deposit/index.js";import{DepositStatusBanner as s}from"../../flows/deposit/widgets/deposit-status-banner/DepositStatusBanner.js";import"../../flows/deposit/widgets/deposit-status-banner/index.js";import{ErrorState as c}from"../../flows/deposit/widgets/error-state/ErrorState.js";import"../../flows/deposit/widgets/error-state/index.js";import{ProcessingState as l}from"../../flows/deposit/widgets/processing-state/ProcessingState.js";import"../../flows/deposit/widgets/processing-state/index.js";import{SuccessState as u}from"../../flows/deposit/widgets/success-state/SuccessState.js";import"../../flows/deposit/widgets/success-state/index.js";import{TransferCrypto as d}from"../../flows/deposit/widgets/transfer-crypto/TransferCrypto.js";import"../../flows/deposit/widgets/transfer-crypto/index.js";export{r as AmountEntry,i as AssetPicker,a as ConfirmDeposit,o as Deposit,t as DepositActivityDetail,n as DepositActivityList,s as DepositStatusBanner,e as DialogShell,c as ErrorState,l as ProcessingState,u as SuccessState,d as TransferCrypto};
@@ -0,0 +1,44 @@
1
+ import { ActivityDriver } from "../../flows/activity/driver/types.js";
2
+ import { StridgeEnvironment } from "./types.js";
3
+ import { StridgeCatalog } from "./catalog.js";
4
+ import { ApiClient } from "@stridge/sdk";
5
+
6
+ //#region src/drivers/stridge/createStridgeActivityDriver.d.ts
7
+ /**
8
+ * Configuration accepted by {@link createStridgeActivityDriver}.
9
+ */
10
+ interface CreateStridgeActivityDriverInput {
11
+ /** Connected wallet EOA — threaded as the `gateway/{owner}` owner parameter. */
12
+ userAddress: string;
13
+ /** Stridge project key — sent as `X-Gateway-Key` by the SDK's HttpClient. */
14
+ projectKey: string;
15
+ /** Which Stridge API host to target. Defaults to `production`. */
16
+ environment?: StridgeEnvironment;
17
+ /**
18
+ * Pre-built SDK client. Pass this when the caller already has a client they want the driver
19
+ * to share (so request headers / dedup behaviour stay consistent across calls). Mutually
20
+ * exclusive with `projectKey` / `environment`.
21
+ */
22
+ sdk?: ApiClient;
23
+ /**
24
+ * Provider-scoped shared catalog cache. When supplied, the driver awaits this single
25
+ * in-flight promise instead of issuing its own `Gateway.assets()` call — deduplicates the
26
+ * catalog fetch across the deposit / withdraw / activity drivers mounted under one
27
+ * `<StridgeProvider>`. When omitted, the driver falls back to its own per-instance fetch.
28
+ */
29
+ catalog?: StridgeCatalog;
30
+ }
31
+ /**
32
+ * Build a Stridge-backed {@link ActivityDriver}. The driver owns owner-scoped recent-settlements
33
+ * polling — `GET /gateway/{owner}` on adaptive cadence, transformed into the kit's
34
+ * {@link ActivityPayload} for the shared `<Activity>` compound.
35
+ *
36
+ * Lazy-arm contract mirrors the per-flow drivers: the factory returns without making any network
37
+ * calls; the first {@link ActivityDriver.arm} call (typically dispatched by the controller's
38
+ * `open()` path or by `usePrefetchActivity()`) fires the shared `Gateway.assets()` catalog fetch
39
+ * alongside the initial `gateway/{owner}` envelope GET in parallel, so a subsequent
40
+ * `useActivity().open()` lands on a populated payload without a perceptible loading window.
41
+ */
42
+ declare function createStridgeActivityDriver(config: CreateStridgeActivityDriverInput): ActivityDriver;
43
+ //#endregion
44
+ export { CreateStridgeActivityDriverInput, createStridgeActivityDriver };
@@ -0,0 +1 @@
1
+ import{resolveSdkEnv as e}from"./internal/env.js";import{withOneShotRetry as t}from"./internal/retry.js";import{activityResponseToPayload as n}from"../../shared/widgets/activity/transformers/activityResponseToPayload.js";import{createEntityStore as r}from"../stridge-mock/store.js";import{startPoll as i}from"./poll.js";import{createApiClient as a}from"@stridge/sdk";const o=3e4;function s(s){let l=s.sdk??a({projectKey:s.projectKey,env:e(s.environment)}),u=r({activity:{status:`idle`}}),d,f=!1,p=Promise.resolve(),m=!1,h;function g(){f||(f=!0,p=_())}async function _(){let e=(async()=>{try{let e=await(s.catalog?s.catalog.getSupportedAssets():t(()=>l.gateway.assets()).catch(()=>null));e&&(d=e)}catch{}})(),n=b(new AbortController().signal);await Promise.all([e,n])}function v(){let e=d?c(d):void 0;return{ownerAddress:s.userAddress,...e?{chainLogoFor:t=>e[String(t)]}:{}}}function y(e){let t=n(e,v());u.update({activity:{status:`ready`,payload:t,raw:e.udas,response:e}})}async function b(e){let t=u.getSnapshot().activity;(t.status===`idle`||t.status===`error`)&&u.update({activity:{status:`loading`}});try{let t=await l.gateway.poll(s.userAddress,{limit:20,signal:e});return e.aborted?null:(y(t),t)}catch(t){if(e.aborted)return null;if(t.statusCode===404)return y({owner:s.userAddress,filter:{},udas:[]}),null;let n=t instanceof Error?t:Error(String(t)),r=u.getSnapshot().activity;return r.status===`ready`?(u.update({activity:{status:`stale`,payload:r.payload,raw:r.raw,response:r.response}}),null):(r.status===`stale`||u.update({activity:{status:`error`,error:n}}),null)}}return{arm:g,getSnapshot(){return u.getSnapshot()},subscribe(e){return u.subscribe(e)},refreshActivity(e){let t=f;if(g(),!t&&!m){m=!0;return}b(e)},watchActivity(e){g(),i({signal:e,fetch:async e=>{if(!m){m=!0,await p;let e=u.getSnapshot().activity;return e.status===`ready`||e.status===`stale`?e.response:null}return b(e)},listener:()=>{},nextIntervalMs:()=>{let e=u.getSnapshot().activity;return e.status!==`ready`&&e.status!==`stale`?o:e.payload.rows.some(e=>e.status.kind===`pending`)?5e3:o}})},invalidateActivity(){if(!f)return;h?.abort();let e=new AbortController;h=e;let t=u.getSnapshot().activity;t.status===`ready`?u.update({activity:{status:`stale`,payload:t.payload,raw:t.raw,response:t.response}}):(t.status===`idle`||t.status===`error`)&&u.update({activity:{status:`loading`}}),b(e.signal)}}}function c(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}export{s as createStridgeActivityDriver};
@@ -1 +1 @@
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{formatUsd as f}from"../../shared/format/formatUsd.js";import{balanceToBalancesPayload as p,buildRoutableAllowlist as m}from"../../flows/deposit/driver/transformers/balanceToBalancesPayload.js";import{quoteToPayload as ee}from"../../flows/deposit/driver/transformers/quoteToPayload.js";import{settlementToPayload as h}from"../../flows/deposit/driver/transformers/settlementToPayload.js";import{startToAddressesPayload as te}from"../../flows/deposit/driver/transformers/startToAddressesPayload.js";import{startToBrandPayload as ne}from"../../flows/deposit/driver/transformers/startToBrandPayload.js";import{startToTargetPayload as re}from"../../flows/deposit/driver/transformers/startToTargetPayload.js";import{walletAddressToWalletPayload as g}from"../../flows/deposit/driver/transformers/walletAddressToWalletPayload.js";import{historyResponseToPayload as ie}from"../../shared/widgets/activity-history/transformers/historyResponseToPayload.js";import{defaultBlockExplorers as _}from"../../shared/utils/explorers.js";import{createEntityStore as ae}from"../stridge-mock/store.js";import{startPoll as v}from"./poll.js";import{createStridgeRpc as y}from"./rpc.js";import{createWagmiSigner as oe}from"./wagmiSigner.js";import{BackendError as se,createApiClient as ce}from"@stridge/sdk";const b=3e4;function x(x){let w=ce({projectKey:x.projectKey,env:i(x.environment)}),T=x.pollIntervals??{},fe=T.detectionMs??2e3,pe=T.processingMs??2e3,E=T.terminalMs??1e4,me=T.balancesMs??6e4,D=x.minAmountUsd,O=x.maxAmountUsd,k=x.getI18n??(()=>e),A={..._(),...x.explorers??{}},j=x.destination.network_id,M=x.destination.asset_symbol,N=x.destination.to_address??x.userAddress,he=x.rpc??y(),P={address:x.userAddress},F=ae({brand:{status:`idle`},target:{status:`idle`},addresses:{status:`idle`},balances:{status:`idle`},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:g(P),raw:P,response:P},history:{status:`idle`}}),I,L,R,z,B=x.wagmiConfig?oe({wagmiConfig:x.wagmiConfig,getSupportedAssets:()=>L,explorers:A}):void 0;function V(){if(L)return R??=m(L),R}let H=!1,U=Promise.resolve(),W=!1,G=Promise.resolve(null),K=null;function q(){H||(H=!0,U=ge(),G=_e())}let J;async function Y(e){try{if(await U,e.aborted)return null;let t=l(L),n=await w.balance.onchain(x.userAddress,{signal:e,includeSpam:!1,includeZero:!1,...t?{chains:t}:{}});if(e.aborted)return null;K=Date.now();let r=V();if(!r)return F.update({balances:{status:`ready`,payload:[],raw:n,response:n}}),null;let i=p(n,{i18n:k(),routable:r,minAmountUsd:D,...x.resolveTokenIcon?{resolveTokenIcon:x.resolveTokenIcon}:{}});return F.update({balances:{status:`ready`,payload:i,raw:n,response:n},wallet:X(i,k())}),n}catch{return null}}async function ge(){F.update({brand:{status:`loading`},target:{status:`loading`},addresses:{status:`loading`},balances:{status:`loading`}});try{let[e,t]=await Promise.all([u(()=>w.gateway.start({owner:x.userAddress,destination:{network_id:j,to_address:N,asset_symbol:M},metadata:a({flow:`deposit`,...x.metadata?{hostMetadata:x.metadata}:{},extras:{destination:{networkId:j,assetSymbol:M}}})})),x.catalog?x.catalog.getSupportedAssets():u(()=>w.gateway.assets()).catch(()=>null)]);I=e;let n=e.metadata?.brand_name;typeof n==`string`&&n.trim().length>0&&(z=n.trim());let r=k();if(t&&(L=t,R=void 0),F.update({brand:{status:`ready`,payload:ne(e.metadata),raw:e.metadata,response:e},addresses:{status:`ready`,payload:te(e.deposit_addresses,{i18n:r,explorers:A,...t?{chainLogos:S(t)}:{},...t?{minAmountUsdByEip155Id:C(t,D),nativeAssetByEip155Id:ue(t),priceImpactByEip155Id:de(t)}:{}}),raw:e.deposit_addresses,response:e}}),t){let e=re(t,{i18n:r,networkId:j,assetSymbol:M,minAmountUsd:D,...O===void 0?{}:{maxAmountUsd:O}}),n=t.assets.find(e=>String(e.network_id)===j);e&&n?F.update({target:{status:`ready`,payload:e,raw:n,response:t}}):F.update({target:{status:`error`,error:Error(`Destination not found in supportedAssets catalog.`)}})}else F.update({target:{status:`error`,error:Error(`supportedAssets fetch failed.`)}})}catch(e){let t=e instanceof Error?e:Error(String(e));F.update({brand:{status:`error`,error:t},target:{status:`error`,error:t},addresses:{status:`error`,error:t}})}}async function _e(){try{await U;let e=l(L),t=await u(()=>w.balance.onchain(x.userAddress,{includeSpam:!1,includeZero:!1,...e?{chains:e}:{}}));K=Date.now();let n=V();if(!n)return F.update({balances:{status:`ready`,payload:[],raw:t,response:t}}),t;let r=p(t,{i18n:k(),routable:n,minAmountUsd:D,...x.resolveTokenIcon?{resolveTokenIcon:x.resolveTokenIcon}:{}});return F.update({balances:{status:`ready`,payload:r,raw:t,response:t},wallet:X(r,k())}),t}catch(e){let t=e instanceof Error?e:Error(String(e));return F.update({balances:{status:`error`,error:t}}),null}}function X(e,t){let n=e.reduce((e,t)=>e+(t.amountUsd?.value??0),0);return{status:`ready`,payload:{...g(P),balanceTotalUsd:{value:n,formatted:f(n,t)}},raw:P,response:P}}function ve(){let e=L?S(L):void 0;return{i18n:k(),ownerAddress:x.userAddress,...e?{chainLogoFor:t=>e[String(t)]}:{}}}function Z(e){let t=ie(e,ve());F.update({history:{status:`ready`,payload:t,raw:e.udas,response:e}})}async function Q(e){let t=F.getSnapshot().history;(t.status===`idle`||t.status===`error`)&&F.update({history:{status:`loading`}});try{let t=await w.gateway.poll(x.userAddress,{limit:20,signal:e});return e.aborted?null:(Z(t),t)}catch(t){if(e.aborted)return null;if(t instanceof se&&t.statusCode===404)return Z({owner:x.userAddress,filter:{},udas:[]}),null;let n=t instanceof Error?t:Error(String(t)),r=F.getSnapshot().history;return r.status===`ready`?(F.update({history:{status:`stale`,payload:r.payload,raw:r.raw,response:r.response}}),null):(r.status===`stale`||F.update({history:{status:`error`,error:n}}),null)}}return{getSnapshot(){return F.getSnapshot()},subscribe(e){return F.subscribe(e)},arm:q,async requestQuote(e,i){if(q(),F.update({quote:{status:`loading`}}),await U,i.aborted)return;let a=I;if(!a){F.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 w.uda.quote({fromNetworkId:o,fromAsset:s,toNetworkId:Number(a.destination.eip155_id),toAsset:a.destination.asset_address||`0x0000000000000000000000000000000000000000`,amount:c,fromAddress:x.userAddress,toAddress:N},{signal:i});if(i.aborted)return;let u=k(),d={chainId:o,networkName:le(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=ee(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}});F.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));F.update({quote:{status:`error`,error:t}})}},async submitDeposit(e,t){if(!B)throw Error(`Connect a wallet to sign and submit the deposit.`);if(q(),await U,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=I;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:B,rpc:he,step:s({chainId:e.sourceChainId,from:x.userAddress,udaDepositAddress:r.address,amount:e.amount,decimals:e.sourceTokenDecimals,isNative:e.sourceIsNative,...e.sourceIsNative?{}:{sourceTokenAddress:e.sourceTokenAddress}}),signal:t,explorers:A,...x.receiptConfirmations===void 0?{}:{receiptConfirmations:x.receiptConfirmations},...x.receiptPollingIntervalMs===void 0?{}:{receiptPollingIntervalMs:x.receiptPollingIntervalMs}})},watchBalances(e,t,n){q(),v({signal:n,fetch:async e=>W?K!==null&&Date.now()-K<3e4?F.getSnapshot().balances:Y(e):(W=!0,G),listener:()=>{t(F.getSnapshot().balances)},nextIntervalMs:()=>me})},invalidateBalances(){K=null,J?.abort();let e=new AbortController;J=e,Y(e.signal).finally(()=>{J===e&&(J=void 0)})},watchSourceTx(e,t,n){q();let r=new Set,i={current:!1},a=!1;v({signal:n,fetch:async e=>{let{matched:t}=await o(w,x.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??``,...A[s]&&o.from?.tx_id?{explorerUrl:`${A[s].replace(/\/+$/,``)}/tx/${o.from.tx_id}`}:{}})},nextIntervalMs:()=>a?0:fe})},watchSettlement(e,t,n){let r=async e=>{let{matched:t}=await o(w,x.userAddress,$(),e);return t},i=!1;v({signal:n,fetch:r,listener:n=>{if(!n)return;let r=d(n,{txHash:e.tx.hash});if(!r)return;let a=h(r,n,{i18n:k(),sourceWallet:{name:`Wallet`,address:x.userAddress},explorers:A,...z?{brandName:z}:{}});a.kind!==`pending`&&(i=!0);let o={status:`ready`,payload:a,raw:r,response:n};F.update({settlement:o}),t(o)},nextIntervalMs:()=>i?E:pe})},async fetchActiveSettlement(e,t){let{matched:n}=await o(w,x.userAddress,$(),t);if(!n)return null;let r=d(n);if(!r)return null;let i=h(r,n,{i18n:k(),sourceWallet:{name:`Wallet`,address:x.userAddress},explorers:A,...z?{brandName:z}:{}});return i.kind===`pending`?{payload:i,raw:r,response:n}:null},refreshHistory(e){q(),Q(e)},watchHistory(e){q(),v({signal:e,fetch:e=>Q(e),listener:()=>{},nextIntervalMs:()=>{let e=F.getSnapshot().history;return e.status!==`ready`&&e.status!==`stale`?b:e.payload.rows.some(e=>e.status.kind===`pending`)?5e3:b}})}};function $(){return{network_id:j,asset_symbol:M,to_address:N}}}function le(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 S(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 ue(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 de(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 C(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{x 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}}),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 +1 @@
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{formatUsd as u}from"../../shared/format/formatUsd.js";import{historyResponseToPayload as d}from"../../shared/widgets/activity-history/transformers/historyResponseToPayload.js";import{defaultBlockExplorers as f}from"../../shared/utils/explorers.js";import{createEntityStore as p}from"../stridge-mock/store.js";import{startPoll as m}from"./poll.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{BackendError as y,createApiClient as b}from"@stridge/sdk";const x=3e4;function S(S){let w=b({projectKey:S.projectKey,env:i(S.environment)}),T=S.pollIntervals??{},E=T.processingMs??2e3,D=T.terminalMs??1e4,O=T.balancesMs??6e4,k=S.getI18n??(()=>e),A={...f(),...S.explorers??{}},j=k(),M=p({withdrawableBalances:{status:`idle`},receiveOptions:{status:`idle`},quote:{status:`idle`},settlement:{status:`idle`},history:{status:`idle`},...S.minAmountUsd===void 0?{}:{minAmountUsd:{value:S.minAmountUsd,formatted:u(S.minAmountUsd,j)}},...S.maxAmountUsd===void 0?{}:{maxAmountUsd:{value:S.maxAmountUsd,formatted:u(S.maxAmountUsd,j)}}}),N,P,F;function I(e){let t=e.assets.find(e=>e.network_id===S.currency.networkId);if(!t)return;let n=S.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 L(e){let t=k(),n=P,r=h(e,{i18n:t,networkId:S.currency.networkId,assetSymbol:S.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}:{}}}:{}});M.update({withdrawableBalances:{status:`ready`,payload:r,raw:e,response:e}})}let R=!1,z=Promise.resolve(),B=!1,V=null;function H(){R||(R=!0,z=U())}async function U(){M.update({withdrawableBalances:{status:`loading`},receiveOptions:{status:`loading`}});let e=S.catalog?await S.catalog.getSupportedAssets():await c(()=>w.gateway.assets()).catch(()=>null);if(e){N=e,P=I(e);let t=v(e);M.update({receiveOptions:{status:`ready`,payload:t,raw:e.assets,response:e}})}else M.update({receiveOptions:{status:`error`,error:Error(`supportedAssets fetch failed.`)}});let t=s(e??void 0),n=await c(()=>w.balance.onchain(S.userAddress,{includeSpam:!1,includeZero:!1,...t?{chains:t}:{}})).catch(()=>null);n?(V=Date.now(),L(n)):L({wallet_address:S.userAddress,fetched_at:new Date().toISOString(),total_usd:`0`,chains:[]})}function W(){return a({flow:`withdraw`,...S.metadata?{hostMetadata:S.metadata}:{},extras:{source:{networkId:S.currency.networkId,assetSymbol:S.currency.assetSymbol}}})}function G(e,t){if(!N)return;let n=N.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 K(e){let t=M.getSnapshot().receiveOptions;if(!(t.status!==`ready`&&t.status!==`stale`))return t.payload.find(t=>t.eip155Id===e)}function q(){let e=N?C(N):void 0;return{i18n:k(),ownerAddress:S.userAddress,...e?{chainLogoFor:t=>e[String(t)]}:{}}}function J(e){let t=d(e,q());M.update({history:{status:`ready`,payload:t,raw:e.udas,response:e}})}async function Y(e){let t=M.getSnapshot().history;(t.status===`idle`||t.status===`error`)&&M.update({history:{status:`loading`}});try{let t=await w.gateway.poll(S.userAddress,{limit:20,signal:e});return e.aborted?null:(J(t),t)}catch(t){if(e.aborted)return null;if(t instanceof y&&t.statusCode===404)return J({owner:S.userAddress,filter:{},udas:[]}),null;let n=t instanceof Error?t:Error(String(t)),r=M.getSnapshot().history;return r.status===`ready`?(M.update({history:{status:`stale`,payload:r.payload,raw:r.raw,response:r.response}}),null):(r.status===`stale`||M.update({history:{status:`error`,error:n}}),null)}}return{getSnapshot(){return M.getSnapshot()},subscribe(e){return M.subscribe(e)},arm:H,async requestQuote(e,i){H(),M.update({quote:{status:`loading`}});try{if(await z,i.aborted)return;let a=P;if(!a)throw Error(`Stridge withdraw driver: source currency ${S.currency.assetSymbol} not found on network ${S.currency.networkId} in supportedAssets.`);let o=G(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 w.uda.quote({fromNetworkId:a.eip155Id,fromAsset:a.isNative?t:a.address,toNetworkId:o.chainId,toAsset:o.isNative?t:o.address,amount:s,fromAddress:S.userAddress,toAddress:e.recipientAddress},{signal:i});if(i.aborted)return;let l=n(S.currency.assetSymbol)?1:void 0,u=n(o.symbol)?1:void 0,d=g(c,{i18n:k(),receiveSide:o,sourceAmount:e.amount,sendDecimals:a.decimals,sendSymbol:S.currency.assetSymbol,now:Date.now(),...l===void 0?{}:{sendPriceUsd:l},...u===void 0?{}:{receivePriceUsd:u}});M.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));M.update({quote:{status:`error`,error:t}})}},async prepareWithdrawal(e,t){if(H(),await z,t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n=P;if(!n)throw Error(`Stridge withdraw driver: source currency ${S.currency.assetSymbol} not found on network ${S.currency.networkId} in supportedAssets.`);let r=G(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 w.gateway.start({owner:S.userAddress,destination:{network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},metadata:W()},{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 F={network_id:r.networkId??String(e.receiveChainId),asset_symbol:r.symbol,to_address:e.recipientAddress},{depositTarget:{address:a.address,chainId:n.eip155Id,tokenSymbol:S.currency.assetSymbol,tokenAddress:n.isNative?``:n.address,tokenDecimals:n.decimals,isNative:n.isNative,amount:e.amount},correlation:{owner:S.userAddress}}},watchSettlement(e,t,n){let i=async e=>{let{matched:t}=await o(w,S.userAddress,F,e);return t},a=!1;m({signal:n,fetch:i,listener:n=>{if(!n)return;let i=P?r(e.form.amount,P.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=k(),c=K(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=_(o,n,{i18n:s,explorers:A,...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};M.update({settlement:p}),t(p)},nextIntervalMs:()=>a?D:E})},watchWithdrawableBalances(e,t,n){H(),m({signal:n,fetch:async e=>{if(!B){B=!0,await z;let e=M.getSnapshot().withdrawableBalances;return e.status===`ready`||e.status===`stale`?e.response:null}if(V!==null&&Date.now()-V<3e4)return null;try{if(await z,e.aborted)return null;let t=s(N),n=await w.balance.onchain(S.userAddress,{signal:e,includeSpam:!1,includeZero:!1,...t?{chains:t}:{}});return V=Date.now(),n}catch{return null}},listener:e=>{e&&L(e),t(M.getSnapshot().withdrawableBalances)},nextIntervalMs:()=>O})},refreshHistory(e){H(),Y(e)},watchHistory(e){H(),m({signal:e,fetch:e=>Y(e),listener:()=>{},nextIntervalMs:()=>{let e=M.getSnapshot().history;return e.status!==`ready`&&e.status!==`stale`?x:e.payload.rows.some(e=>e.status.kind===`pending`)?5e3:x}})}}}function C(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}export{S 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,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};
@@ -23,8 +23,6 @@ interface MockDriverLatency {
23
23
  processingTerminal?: number;
24
24
  /** Path B — `watchSourceTx` listener fires after this many ms. */
25
25
  transferDetected?: number;
26
- /** `refreshHistory` resolves after this many ms (lets the activity surface flash its skeleton). */
27
- refreshHistory?: number;
28
26
  }
29
27
  /**
30
28
  * Configuration for {@link createStridgeMockDriver}. Every field is optional — calling the
@@ -1 +1 @@
1
- import{defaultI18n as e}from"../../shared/i18n/defaultI18n.js";import{shortenAddress as t}from"../../shared/format/shortenAddress.js";import{historyResponseToPayload as n}from"../../shared/widgets/activity-history/transformers/historyResponseToPayload.js";import{createEntityStore as r}from"./store.js";import{DEFAULT_BRAND_PAYLOAD as i,DEFAULT_WALLET_INFO as a,STUB_DEPOSIT_ADDRESSES_RAW as o,STUB_GATEWAY_POLL_RESPONSE as s,STUB_GATEWAY_SETTLEMENT_DTO as c,STUB_GATEWAY_START_RESPONSE as l,STUB_ONCHAIN_BALANCE_RESPONSE as u,STUB_QUOTE_RESPONSE as d,STUB_SUPPORTED_ASSETS_RESPONSE as f,buildDefaultAddressesPayload as p,buildDefaultBalances as m,buildDefaultFailurePayload as h,buildDefaultPendingPayload as g,buildDefaultQuotePayload as _,buildDefaultSuccessPayload as v,buildDefaultTargetPayload as y,buildDefaultTargetRaw as b,buildDefaultWalletPayload as x,buildMockHistoryResponse as S,resolveMockAsset as C}from"./fixtures.js";const w={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3,transferDetected:4e3,refreshHistory:400};function T(i={}){let o=i.getI18n??(()=>e),l=i.wallet??a,u=C(i.asset),f=r(E(o(),l,i.minAmountUsd,u,i.initialState)),p={...w,...i.latency??{}},m=i.autoSettleTo??`succeeded`,y=i.pendingTriggerToSuccessMs===void 0?3500:i.pendingTriggerToSuccessMs,b=new Set,x=new Set,T=new Set,O=!1,k,A;function j(){k!==void 0&&(clearTimeout(k),k=void 0),A!==void 0&&(clearTimeout(A),A=void 0),O=!1}function M(){if(O)return;O=!0;let e=o();k=setTimeout(()=>{k=void 0;let t={status:`ready`,payload:g(e,u),raw:c,response:s};f.update({settlement:t});for(let e of b)e(t);A=setTimeout(()=>{if(A=void 0,m===`succeeded`){let t={status:`ready`,payload:v(e,u),raw:c,response:s};f.update({settlement:t});for(let e of b)e(t)}else if(m===`failed`){let t={status:`ready`,payload:h(e,void 0,u),raw:c,response:s};f.update({settlement:t});for(let e of b)e(t)}O=!1},p.processingTerminal)},p.processingPendingDelay)}let N={getSnapshot(){return f.getSnapshot()},subscribe(e){return f.subscribe(e)},arm(){},async requestQuote(e,t){f.update({quote:{status:`loading`}}),await D(p.quote,t);let n=o(),r=Date.now()+3e4;f.update({quote:{status:`ready`,payload:_(n,r,u),raw:d,response:d}})},async submitDeposit(e,t){return await D(p.submit,t),m!==`none`&&M(),{hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`}},watchBalances(e,t,n){T.add(t);let r=f.getSnapshot().balances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>T.delete(t),{once:!0})},invalidateBalances(){let e=f.getSnapshot().balances;for(let t of T)t(e)},watchSourceTx(e,t,n){x.add(t);let r=setTimeout(()=>{n.aborted||t({hash:`0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`,explorerUrl:`https://etherscan.io/tx/0x1d72b900dd9b4f9fb0e11c14978d9cbbff7b47db0b820911839aad7081f6b72a`})},p.transferDetected);n.addEventListener(`abort`,()=>{clearTimeout(r),x.delete(t)},{once:!0})},watchSettlement(e,t,n){b.add(t);let r=f.getSnapshot().settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>b.delete(t),{once:!0})},async fetchActiveSettlement(e,t){let n=f.getSnapshot().settlement;return n.status!==`ready`||n.payload.kind!==`pending`?null:{payload:n.payload,raw:n.raw,response:n.response}},refreshHistory(e){P(e)},watchHistory(e){let t,n=()=>{e.aborted||(P(e),t=setTimeout(n,5e3))};e.addEventListener(`abort`,()=>{t!==void 0&&clearTimeout(t)},{once:!0}),n()}};function P(e){let t=f.getSnapshot().history;(t.status===`idle`||t.status===`error`)&&f.update({history:{status:`loading`}}),(async()=>{try{await D(p.refreshHistory,e)}catch{return}if(e.aborted)return;let t=o(),r=S(l.address),i=n(r,{i18n:t,ownerAddress:l.address});f.update({history:{status:`ready`,payload:i,raw:r.udas,response:r}})})()}let F=0,I=null;function L(){I!==null&&(clearTimeout(I),I=null)}function R(e){F+=1;let n=`0x${F.toString(16).padStart(8,`0`)}${e.value.length>10?e.value.slice(10):`0`.repeat(56)}`;return{value:n,formatted:t(n)}}function z(e,t){if(e)return e.replace(/(\/tx\/|\/address\/)(0x[0-9a-fA-F]+)/,(e,n)=>`${n}${t}`)}let B={triggerSettlementPending(e){let t=g(o(),u),n=t.txHash?R(t.txHash):void 0,r=n?z(t.txExplorerUrl,n.value):void 0,i={status:`ready`,payload:{...t,...n?{txHash:n}:{},...r?{txExplorerUrl:r}:{},...e},raw:c,response:s};L(),f.update({settlement:i});for(let e of b)e(i);y!==null&&y>=0&&(I=setTimeout(()=>{I=null,B.triggerSettlementSuccess()},y))},triggerSettlementSuccess(e){L();let t=v(o(),u),n=R(t.depositTx.hash),r=z(t.depositTx.explorerUrl,n.value),i={status:`ready`,payload:{...t,depositTx:{...t.depositTx,hash:n,...r?{explorerUrl:r}:{}},...e},raw:c,response:s};f.update({settlement:i});for(let e of b)e(i)},triggerSettlementFailure(e,t){L();let n=h(o(),e,u),r=R(n.txHash),i=z(n.txExplorerUrl,r.value),a={status:`ready`,payload:{...n,txHash:r,...i?{txExplorerUrl:i}:{},...t},raw:c,response:s};f.update({settlement:a});for(let e of b)e(a)},triggerQuoteFailure(e){f.update({quote:{status:`error`,error:e}})},reset(){L(),j(),f.replace(E(o(),l,i.minAmountUsd,u,i.initialState))}};return{driver:N,triggers:B}}function E(e,t,n,r,a){let s={brand:{status:`ready`,payload:i,raw:l.metadata,response:l},target:{status:`ready`,payload:y(e,n,r),raw:b(r),response:f},addresses:{status:`ready`,payload:p(e,n),raw:o,response:l},balances:{status:`ready`,payload:m(e),raw:u,response:u},quote:{status:`idle`},settlement:{status:`idle`},wallet:{status:`ready`,payload:x(e,t),raw:t,response:t},history:{status:`idle`}};return a?{...s,...a}:s}function D(e,t){return new Promise((n,r)=>{if(t.aborted){r(O());return}let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(O())};t.addEventListener(`abort`,a,{once:!0})})}function O(){if(typeof DOMException==`function`)return new DOMException(`Aborted`,`AbortError`);let e=Error(`Aborted`);return e.name=`AbortError`,e}export{T 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,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=t(w(a(),c,r.minAmountUsd,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)},arm(){},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})},invalidateBalances(){let e=d.getSnapshot().balances;for(let t of C)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=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.minAmountUsd,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};
@@ -9,8 +9,7 @@ declare const DEFAULT_LATENCY: {
9
9
  /** `requestQuote` resolves after this many ms. */quote: number; /** `prepareWithdrawal` resolves after this many ms. */
10
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
- processingTerminal: number; /** `refreshHistory` resolves after this many ms — lets the activity surface flash its skeleton. */
13
- refreshHistory: number;
12
+ processingTerminal: number;
14
13
  };
15
14
  /**
16
15
  * Bundled fixture: a single withdrawable USDC@BSC row matching the V2 mock + apps/demo currency.
@@ -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{formatUsd as r}from"../../shared/format/formatUsd.js";import{shortenAddress as i}from"../../shared/format/shortenAddress.js";import{historyResponseToPayload as a}from"../../shared/widgets/activity-history/transformers/historyResponseToPayload.js";import{supportedAssetsToReceiveOptionsPayload as o}from"../../flows/withdraw/driver/transformers/supportedAssetsToReceiveOptionsPayload.js";import{DEFAULT_MOCK_ASSET as s,buildDefaultSupportedAssetsResponse as c,buildMockHistoryResponse as l,resolveMockAsset as u}from"./fixtures.js";const d=`0x32995Fb47918BD37133dB46F21c5Ed906140Dd41`,f=`0x70997970C51812dc3A010C7d01b50e0d17dc79C8`,p=`0xd41f5e9e5b1c2c4d8e7a0bf3a9e6c1d2b8f5d4c3e2a1b0c9d8e7f6a5b4c3d2e1`;function m(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 h(e){return`${e.explorerBase}/tx/`}const g={quote:1400,submit:4e3,processingPendingDelay:1500,processingTerminal:3e3,refreshHistory:400},_=m(s),v=4.00613;function y(e=s){let t=m(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 b(e=v,t=s){let n=j(e);return{receiveAsset:m(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 x(t=e,a=v,o=d,c=p,l=s){let u=Date.now();return{kind:`pending`,receiveAsset:m(l),receiveAmount:{value:a,formatted:j(a)},receiveAmountUsd:{value:a,formatted:r(a,t)},recipient:{value:o,formatted:i(o)},submittedAt:{value:u,formatted:n(u,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${h(l)}${c}`}}function S(r=e,a=v,o=d,c=14,l=p,u=s,f=`0xa17b4c9e2d68f0a5c3b91e7f4d52a86b09c1d7e3f8a4b2c5d6e9f0a1b2c3d4e5`){let g=Date.now(),_=c*1e3,y=g-_;return{kind:`succeeded`,receiveAsset:m(u),receiveAmount:{value:a,formatted:j(a)},recipient:{value:o,formatted:i(o)},submittedAt:{value:y,formatted:n(y,r)},filledAt:{value:g,formatted:n(g,r)},totalTime:{value:c,formatted:t(_,r)},txHash:{value:l,formatted:i(l)},txExplorerUrl:`${h(u)}${l}`,completionTx:{hash:{value:f,formatted:i(f)},explorerUrl:`${h(u)}${f}`}}}function C(t=e,r=`unknown`,a=v,o=d,c=p,l=s){let u=Date.now(),f=u-5e3;return{kind:`failed`,failureKind:r,receiveAsset:m(l),receiveAmount:{value:a,formatted:j(a)},recipient:{value:o,formatted:i(o)},submittedAt:{value:f,formatted:n(f,t)},failedAt:{value:u,formatted:n(u,t)},txHash:{value:c,formatted:i(c)},txExplorerUrl:`${h(l)}${c}`}}function w(t={}){let n={...g,...t.latency},i=t.autoSettleTo??`succeeded`,s=t.pendingTriggerToSuccessMs===void 0?3500:t.pendingTriggerToSuccessMs,h=t.getI18n??(()=>e),_=u(t.asset),w=m(_),E=y(_),j=T(E),M=c(),N=o(M),P=t.initialState?.minAmountUsd??(t.minAmountUsd===void 0?void 0:{value:t.minAmountUsd,formatted:r(t.minAmountUsd,h())}),F=t.initialState?.maxAmountUsd??(t.maxAmountUsd===void 0?void 0:{value:t.maxAmountUsd,formatted:r(t.maxAmountUsd,h())}),I={withdrawableBalances:t.initialState?.withdrawableBalances??{status:`ready`,payload:E,raw:j,response:j},receiveOptions:t.initialState?.receiveOptions??{status:`ready`,payload:N,raw:M.assets,response:M},quote:t.initialState?.quote??{status:`idle`},settlement:t.initialState?.settlement??{status:`idle`},history:t.initialState?.history??{status:`idle`},...P?{minAmountUsd:P}:{},...F?{maxAmountUsd:F}:{}},L=I,R=new Set,z=new Set,B=new Set,V=new Set,H=()=>{for(let e of R)e()},U=e=>{if(L={...L,...e},H(),e.settlement)for(let e of z)e(L.settlement);if(e.withdrawableBalances)for(let e of B)e(L.withdrawableBalances)},W=(e,t)=>{let n=setTimeout(()=>{V.delete(n),e()},t);V.add(n)},G=null,K=!1,q=0;function J(){return q+=1,`0x${q.toString(16).padStart(8,`0`)}${p.slice(10)}`}let Y={getSnapshot:()=>L,subscribe(e){return R.add(e),()=>{R.delete(e)}},arm(){},async requestQuote(e,t){U({quote:{status:`loading`}}),await A(n.quote,t);let r=b(e.amount,_),i=D(r,e.amount,w);U({quote:{status:`ready`,payload:r,raw:i,response:i}})},async prepareWithdrawal(e,t){await A(n.submit,t),G={amount:e.amount,recipient:e.recipientAddress};let r=J();return Z(e.amount,e.recipientAddress,r,t),{depositTarget:{address:`0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC`,chainId:Number(_.eip155IdString),tokenSymbol:_.symbol,tokenAddress:_.address,tokenDecimals:_.decimals,isNative:_.isNative,amount:e.amount},correlation:{owner:f}}},watchSettlement(e,t,n){z.add(t);let r=L.settlement;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>z.delete(t),{once:!0})},watchWithdrawableBalances(e,t,n){B.add(t);let r=L.withdrawableBalances;queueMicrotask(()=>{n.aborted||t(r)}),n.addEventListener(`abort`,()=>B.delete(t),{once:!0})},refreshHistory(e){X(e)},watchHistory(e){let t,n=()=>{e.aborted||(X(e),t=setTimeout(n,5e3))};e.addEventListener(`abort`,()=>{t!==void 0&&clearTimeout(t)},{once:!0}),n()}};function X(e){let t=L.history;(t.status===`idle`||t.status===`error`)&&U({history:{status:`loading`}}),(async()=>{try{await A(n.refreshHistory,e)}catch{return}if(e.aborted)return;let t=h(),r=l(f);U({history:{status:`ready`,payload:a(r,{i18n:t,ownerAddress:f}),raw:r.udas,response:r}})})()}function Z(e,t,r,a){K||(K=!0,W(()=>{if(a.aborted){K=!1;return}let o=x(h(),e,t,r,_),s=O(o,w);if(U({settlement:{status:`ready`,payload:o,raw:s,response:k(s,o)}}),i===`none`){K=!1;return}W(()=>{if(K=!1,a.aborted)return;let n=i===`succeeded`?S(h(),e,t,14,r,_):C(h(),`unknown`,e,t,r,_),o=O(n,w);U({settlement:{status:`ready`,payload:n,raw:o,response:k(o,n)}})},n.processingTerminal)},n.processingPendingDelay))}let Q={triggerWithdrawalInProgress(e){let{amount:t,recipient:n}=$(),r={...x(h(),t,n,J(),_),...e},i=O(r,w);U({settlement:{status:`ready`,payload:r,raw:i,response:k(i,r)}}),s!==null&&W(()=>Q.triggerWithdrawalSuccess(),s)},triggerWithdrawalSuccess(e){let{amount:t,recipient:n}=$(),r={...S(h(),t,n,14,J(),_),...e},i=O(r,w);U({settlement:{status:`ready`,payload:r,raw:i,response:k(i,r)}})},triggerWithdrawalFailed(e,t){let{amount:n,recipient:r}=$(),i={...C(h(),e,n,r,J(),_),...t},a=O(i,w);U({settlement:{status:`ready`,payload:i,raw:a,response:k(a,i)}})},triggerQuoteFailure(e){U({quote:{status:`error`,error:e}})},reset(){for(let e of V)clearTimeout(e);V.clear(),K=!1,G=null,q=0,L=I,H()}};function $(){return{amount:G?.amount??v,recipient:G?.recipient??d}}return{driver:Y,triggers:Q}}function T(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:E(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 E(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 D(e,t,n=_){let r=E(e.receiveAmount.value,e.receiveAsset.decimals).toString(),i=E(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 O(e,t=_){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:E(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:E(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 k(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 A(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 j(e){return Number.isInteger(e)?e.toFixed(2):e.toFixed(5)}export{y as buildDefaultWithdrawableBalances,C as buildDefaultWithdrawalFailurePayload,x as buildDefaultWithdrawalPendingPayload,b as buildDefaultWithdrawalQuotePayload,S as buildDefaultWithdrawalSuccessPayload,w 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};