@rango-dev/wallets-react 0.0.0-experimental-d44b759f-20260701 → 0.0.0-experimental-a84f27a7-20260921

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 (84) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/context.d.ts.map +1 -0
  3. package/dist/helpers.d.ts +1 -1
  4. package/dist/hooks.d.ts +3 -0
  5. package/dist/hooks.d.ts.map +1 -0
  6. package/dist/hub/autoConnect.d.ts +2 -5
  7. package/dist/hub/autoConnect.d.ts.map +1 -1
  8. package/dist/hub/constants.d.ts +0 -1
  9. package/dist/hub/constants.d.ts.map +1 -1
  10. package/dist/hub/helpers.d.ts +2 -0
  11. package/dist/hub/helpers.d.ts.map +1 -1
  12. package/dist/hub/lastConnectedWallets.d.ts +1 -2
  13. package/dist/hub/lastConnectedWallets.d.ts.map +1 -1
  14. package/dist/hub/mod.d.ts +1 -1
  15. package/dist/hub/mod.d.ts.map +1 -1
  16. package/dist/hub/persistor.d.ts +11 -0
  17. package/dist/hub/persistor.d.ts.map +1 -0
  18. package/dist/{legacy → hub}/useAutoConnect.d.ts +1 -1
  19. package/dist/hub/useAutoConnect.d.ts.map +1 -0
  20. package/dist/hub/useHubAdapter.d.ts +1 -5
  21. package/dist/hub/useHubAdapter.d.ts.map +1 -1
  22. package/dist/hub/utils.d.ts +14 -15
  23. package/dist/hub/utils.d.ts.map +1 -1
  24. package/dist/index.d.ts +2 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/index.js.map +4 -4
  28. package/dist/legacy/mod.d.ts +2 -4
  29. package/dist/legacy/mod.d.ts.map +1 -1
  30. package/dist/legacy/types.d.ts +89 -69
  31. package/dist/legacy/types.d.ts.map +1 -1
  32. package/dist/provider.d.ts +1 -1
  33. package/dist/provider.d.ts.map +1 -1
  34. package/dist/types.d.ts +39 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/package.json +15 -16
  37. package/src/{legacy/context.ts → context.ts} +0 -3
  38. package/src/helpers.ts +1 -1
  39. package/src/hooks.ts +13 -0
  40. package/src/hub/autoConnect.ts +26 -35
  41. package/src/hub/constants.ts +0 -1
  42. package/src/hub/helpers.ts +11 -4
  43. package/src/hub/lastConnectedWallets.ts +3 -51
  44. package/src/hub/mod.ts +1 -5
  45. package/src/hub/persistor.ts +19 -0
  46. package/src/{legacy → hub}/useAutoConnect.ts +2 -2
  47. package/src/hub/useHubAdapter.ts +75 -73
  48. package/src/hub/utils.ts +39 -80
  49. package/src/index.ts +2 -2
  50. package/src/legacy/mod.ts +6 -9
  51. package/src/legacy/types.ts +112 -97
  52. package/src/provider.tsx +8 -4
  53. package/src/types.ts +58 -0
  54. package/dist/helpers/index.d.ts +0 -2
  55. package/dist/helpers/index.d.ts.map +0 -1
  56. package/dist/helpers/index.js +0 -2
  57. package/dist/helpers/index.js.map +0 -7
  58. package/dist/legacy/autoConnect.d.ts +0 -8
  59. package/dist/legacy/autoConnect.d.ts.map +0 -1
  60. package/dist/legacy/context.d.ts.map +0 -1
  61. package/dist/legacy/helpers.d.ts +0 -23
  62. package/dist/legacy/helpers.d.ts.map +0 -1
  63. package/dist/legacy/hooks.d.ts +0 -10
  64. package/dist/legacy/hooks.d.ts.map +0 -1
  65. package/dist/legacy/useAutoConnect.d.ts.map +0 -1
  66. package/dist/legacy/useLegacyProviders.d.ts +0 -7
  67. package/dist/legacy/useLegacyProviders.d.ts.map +0 -1
  68. package/dist/legacy/utils.d.ts +0 -3
  69. package/dist/legacy/utils.d.ts.map +0 -1
  70. package/dist/test-utils/fixtures.d.ts +0 -14
  71. package/dist/test-utils/fixtures.d.ts.map +0 -1
  72. package/dist/useProviders.d.ts +0 -4
  73. package/dist/useProviders.d.ts.map +0 -1
  74. package/dist/wallets-react.build.json +0 -1
  75. package/helpers/package.json +0 -8
  76. package/src/helpers/index.ts +0 -1
  77. package/src/legacy/autoConnect.ts +0 -66
  78. package/src/legacy/helpers.ts +0 -183
  79. package/src/legacy/hooks.ts +0 -54
  80. package/src/legacy/useLegacyProviders.ts +0 -244
  81. package/src/legacy/utils.ts +0 -7
  82. package/src/test-utils/fixtures.ts +0 -164
  83. package/src/useProviders.ts +0 -121
  84. /package/dist/{legacy/context.d.ts → context.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,41 @@
1
+ ## [0.49.1](https://github.com/rango-exchange/rango-client/compare/wallets-react@0.49.0...wallets-react@0.49.1) (2026-09-16)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * ship dist and changelog when publishing with npm ([0a8bd5d](https://github.com/rango-exchange/rango-client/commit/0a8bd5d779bd652b6ca7195cda4ce465ba196f0e))
7
+ # [0.49.0](https://github.com/rango-exchange/rango-client/compare/wallets-react@0.48.0...wallets-react@0.49.0) (2026-09-15)
8
+
9
+
10
+ ### Features
11
+
12
+ * add support for ledger wallet ([eacfd0b](https://github.com/rango-exchange/rango-client/commit/eacfd0bd32f87629e6cc9f6170368e1e208a6bd0))
13
+ * migrate wallet connect provider to hub ([efa6aef](https://github.com/rango-exchange/rango-client/commit/efa6aeff2c9dc406707024417c2307f3c345b71d))
14
+ # [0.48.0](https://github.com/rango-exchange/rango-client/compare/wallets-react@0.47.0...wallets-react@0.48.0) (2026-08-18)
15
+
16
+
17
+ ### Features
18
+
19
+ * support UTXO namespace derivation paths in hub connect ([13be2ed](https://github.com/rango-exchange/rango-client/commit/13be2edddf582913b6dd7f986be8654b55df9bfc))
20
+
21
+
22
+
23
+ # [0.47.0](https://github.com/rango-exchange/rango-client/compare/wallets-react@0.46.0...wallets-react@0.47.0) (2026-07-07)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * add wallet error logging ([a0a57bd](https://github.com/rango-exchange/rango-client/commit/a0a57bd733f5920f99c38fed92092143c7720a9a))
29
+
30
+
31
+ ### Features
32
+
33
+ * migrate ctrl(formerly xdefi) wallet ([c621ee8](https://github.com/rango-exchange/rango-client/commit/c621ee85eb9c6ee4ca548e0fbf5bd8b3e285513c))
34
+ * remove Cosmos blockchain support ([2b51ea3](https://github.com/rango-exchange/rango-client/commit/2b51ea3aa202f3ea049492ed90d00d97c552a490))
35
+ * **wallets:** migrate provider-safe to hub3 ([2e409e7](https://github.com/rango-exchange/rango-client/commit/2e409e795d0bb8b975e359fa96acc6ecfe084cbb))
36
+
37
+
38
+
1
39
  # [0.46.0](https://github.com/rango-exchange/rango-client/compare/wallets-react@0.45.1...wallets-react@0.46.0) (2026-05-31)
2
40
 
3
41
 
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmClD,eAAO,MAAM,aAAa,0CAAiD,CAAC"}
package/dist/helpers.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { ProviderContext } from './index.js';
1
+ import type { ProviderContext } from './types.js';
2
2
  export declare function withErrorLoggingApi(api: ProviderContext): ProviderContext;
3
3
  //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1,3 @@
1
+ import type { ProviderContext } from './types.js';
2
+ export declare function useWallets(): ProviderContext;
3
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,wBAAgB,UAAU,IAAI,eAAe,CAM5C"}
@@ -1,11 +1,8 @@
1
1
  import type { UseAdapterParams } from './useHubAdapter.js';
2
- import type { Hub } from '@hub3js/core';
3
- import type { LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
4
- import type { WalletType } from '@rango-dev/wallets-shared';
5
- import { Provider } from '@hub3js/core';
2
+ import type { Hub, Provider, WalletType } from '@hub3js/core';
6
3
  export declare function autoConnect(deps: {
7
4
  getHub: () => Hub;
8
5
  allBlockChains: UseAdapterParams['allBlockChains'];
9
- wallets?: (WalletType | LegacyProviderInterface | Provider)[];
6
+ wallets?: (WalletType | Provider)[];
10
7
  }): Promise<void>;
11
8
  //# sourceMappingURL=autoConnect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autoConnect.d.ts","sourceRoot":"","sources":["../../src/hub/autoConnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxC,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA4KxC,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM,GAAG,CAAC;IAClB,cAAc,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,uBAAuB,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC/D,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEhB"}
1
+ {"version":3,"file":"autoConnect.d.ts","sourceRoot":"","sources":["../../src/hub/autoConnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAiL9D,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM,GAAG,CAAC;IAClB,cAAc,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;CACrC,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DhB"}
@@ -1,3 +1,2 @@
1
- export declare const LEGACY_LAST_CONNECTED_WALLETS = "last-connected-wallets";
2
1
  export declare const HUB_LAST_CONNECTED_WALLETS = "hub-v1-last-connected-wallets";
3
2
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/hub/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AACtE,eAAO,MAAM,0BAA0B,kCAAkC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/hub/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,kCAAkC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { AllProxiedNamespaces } from './types.js';
2
+ import type { ProviderProps } from '../types.js';
2
3
  import type { Accounts, AccountsWithActiveChain } from '@hub3js/std/types';
3
4
  import type { Result } from 'ts-results';
4
5
  import { type ChainIdParams } from 'caip';
@@ -29,4 +30,5 @@ export declare function createQueue(options?: {
29
30
  removeCurrentKeyFromQueue: () => void;
30
31
  }) => void;
31
32
  }): <T>(task: () => Promise<T>, key: string) => Promise<Result<T, unknown>>;
33
+ export declare function shouldTryAutoConnect(props: Pick<ProviderProps, 'allBlockChains' | 'autoConnect'>): boolean;
32
34
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/hub/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAYzC,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGrD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,aAAa,GAAG,MAAM,GAC9B,MAAM,CAmCR;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;GAEG;AAEH,wBAAsB,6BAA6B,CAAC,CAAC,EACnD,QAAQ,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAU/B;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAC3D,MAAM,IAAI,uBAAuB,CAEnC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAC3D,MAAM,IAAI,QAAQ,CAEpB;AAOD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IACpC,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,yBAAyB,EAAE,MAAM,IAAI,CAAC;KACvC,KACE,IAAI,CAAC;CACX,IAgD0B,CAAC,QAClB,MAAM,OAAO,CAAC,CAAC,CAAC,OACjB,MAAM,KACV,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAW/B"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/hub/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAYzC,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGrD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,aAAa,GAAG,MAAM,GAC9B,MAAM,CAmCR;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;GAEG;AAEH,wBAAsB,6BAA6B,CAAC,CAAC,EACnD,QAAQ,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAU/B;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAC3D,MAAM,IAAI,uBAAuB,CAEnC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAC3D,MAAM,IAAI,QAAQ,CAEpB;AAOD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IACpC,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,yBAAyB,EAAE,MAAM,IAAI,CAAC;KACvC,KACE,IAAI,CAAC;CACX,IAgD0B,CAAC,QAClB,MAAM,OAAO,CAAC,CAAC,CAAC,OACjB,MAAM,KACV,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAW/B;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,aAAa,CAAC,GAC3D,OAAO,CAET"}
@@ -6,10 +6,9 @@ export interface NamespaceInput {
6
6
  export interface LastConnectedWalletsStorage {
7
7
  [providerId: string]: NamespaceInput[];
8
8
  }
9
- export type LegacyLastConnectedWalletsStorage = string[];
10
9
  /**
11
10
  * We are doing some certain actions on storage for `last-connected-wallets` key.
12
- * This class helps us to define them in one place and also it has support for both legacy and hub.
11
+ * This class helps us to define them in one place.
13
12
  */
14
13
  export declare class LastConnectedWalletsFromStorage {
15
14
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"lastConnectedWallets.d.ts","sourceRoot":"","sources":["../../src/hub/lastConnectedWallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AASpD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACxC;AAED,MAAM,MAAM,iCAAiC,GAAG,MAAM,EAAE,CAAC;AAEzD;;;GAGG;AACH,qBAAa,+BAA+B;;gBAG9B,UAAU,EAAE,MAAM;IAI9B,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI;IAQjE,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ3C,IAAI,IAAI,2BAA2B;IAQnC,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE;CA8GtE"}
1
+ {"version":3,"file":"lastConnectedWallets.d.ts","sourceRoot":"","sources":["../../src/hub/lastConnectedWallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACxC;AAED;;;GAGG;AACH,qBAAa,+BAA+B;;gBAG9B,UAAU,EAAE,MAAM;IAI9B,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI;IAMjE,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAM3C,IAAI,IAAI,2BAA2B;IAMnC,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE;CA0EtE"}
package/dist/hub/mod.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { separateLegacyAndHubProviders, getAllLegacyProviders, findProviderByType, } from './utils.js';
1
+ export { getHubProviders, findProviderByType } from './utils.js';
2
2
  export { useHubAdapter } from './useHubAdapter.js';
3
3
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/hub/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/hub/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface PersistStorage<T> {
2
+ getItem: (name: string) => T | null;
3
+ setItem: (name: string, value: T) => void;
4
+ removeItem: (name: string) => void;
5
+ }
6
+ export declare class Persistor<T> implements PersistStorage<T> {
7
+ getItem(name: string): T | null;
8
+ setItem(name: string, value: T): void;
9
+ removeItem(name: string): void;
10
+ }
11
+ //# sourceMappingURL=persistor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistor.d.ts","sourceRoot":"","sources":["../../src/hub/persistor.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,qBAAa,SAAS,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,EAAE,MAAM;IAKpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAG9B,UAAU,CAAC,IAAI,EAAE,MAAM;CAGxB"}
@@ -1,4 +1,4 @@
1
- import type { ProviderProps } from './types.js';
1
+ import type { ProviderProps } from '../types.js';
2
2
  export declare function useAutoConnect(props: Pick<ProviderProps, 'allBlockChains' | 'autoConnect'> & {
3
3
  /**
4
4
  * A function to run autoConnect on instances
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAutoConnect.d.ts","sourceRoot":"","sources":["../../src/hub/useAutoConnect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,aAAa,CAAC,GAAG;IAC7D;;OAEG;IACH,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC,QAUF"}
@@ -1,11 +1,7 @@
1
- import type { ProviderContext } from '../index.js';
1
+ import type { ProviderContext, ProviderProps } from '../types.js';
2
2
  import type { Provider } from '@hub3js/core';
3
- import type { VersionedProviders } from '@hub3js/core/utils';
4
- import { type ProviderProps } from '../legacy/mod.js';
5
3
  export type UseAdapterParams = Omit<ProviderProps, 'providers'> & {
6
4
  providers: Provider[];
7
- /** This is only will be used to access some parts of the legacy provider that doesn't exists in Hub. */
8
- allVersionedProviders: VersionedProviders[];
9
5
  };
10
6
  export declare function useHubAdapter(params: UseAdapterParams): ProviderContext;
11
7
  //# sourceMappingURL=useHubAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHubAdapter.d.ts","sourceRoot":"","sources":["../../src/hub/useHubAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAS7D,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAgB1B,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;IAChE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,wGAAwG;IACxG,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;CAC7C,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CA4dvE"}
1
+ {"version":3,"file":"useHubAdapter.d.ts","sourceRoot":"","sources":["../../src/hub/useHubAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AA6BzD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;IAChE,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CA4dvE"}
@@ -1,35 +1,31 @@
1
1
  import type { AllProxiedNamespaces } from './types.js';
2
- import type { Hub, Provider, ProxiedNamespace } from '@hub3js/core';
2
+ import type { ConnectResult, NamespaceInputForConnect, EventHandler as WalletEventHandler } from '../legacy/mod.js';
3
+ import type { ProviderProps } from '../types.js';
4
+ import type { UtxoActions } from '@hub3js/bip122';
5
+ import type { Hub, Provider, ProxiedNamespace, WalletType } from '@hub3js/core';
3
6
  import type { Event } from '@hub3js/core/store';
4
- import type { EvmActions } from '@hub3js/evm';
7
+ import type { Chain as AddEthereumChainParameter, EvmActions } from '@hub3js/evm';
5
8
  import type { SolanaActions } from '@hub3js/solana';
6
- import type { LegacyNamespaceInputForConnect, LegacyProviderInterface, LegacyEventHandler as WalletEventHandler } from '@rango-dev/wallets-core/legacy';
7
- import type { SuiActions } from '@rango-dev/wallets-core/namespaces/sui';
8
- import type { UtxoActions } from '@rango-dev/wallets-core/namespaces/utxo';
9
9
  import { type VersionedProviders } from '@hub3js/core/utils';
10
- import { type AddEthereumChainParameter, type WalletType } from '@rango-dev/wallets-shared';
11
10
  import { type BlockchainMeta } from 'rango-types';
12
- import { type ConnectResult, type ProviderProps } from '../legacy/mod.js';
13
- export declare function separateLegacyAndHubProviders(providers: VersionedProviders[]): [LegacyProviderInterface[], Provider[]];
11
+ export declare function getHubProviders(providers: VersionedProviders[]): Provider[];
14
12
  export declare function findProviderByType(providers: Provider[], type: string): Provider | undefined;
15
- export declare function getSupportedChainsFromProvider(provider: Provider, allBlockChains: ProviderProps['allBlockChains']): BlockchainMeta[];
16
13
  export declare function mapHubEventsToLegacy(hub: Hub, event: Event, onUpdateState: WalletEventHandler, metadata: {
17
14
  allBlockChains: ProviderProps['allBlockChains'];
18
15
  lastConnectAttemptParams: {
19
- [type: WalletType]: LegacyNamespaceInputForConnect[];
16
+ [type: WalletType]: NamespaceInputForConnect[];
20
17
  };
21
18
  }): void;
22
- export declare function getAllLegacyProviders(allProviders: VersionedProviders[]): LegacyProviderInterface[];
23
19
  /**
24
20
  * In legacy mode, for those who have switch network functionality (like evm), we are using an enum for network names
25
21
  * this enum only has meaning for us, and when we are going to connect an instance (e.g. window.ethereum) we should pass chain id.
26
22
  */
27
- export declare function convertNamespaceNetworkToEvmChainId(namespace: LegacyNamespaceInputForConnect, meta: BlockchainMeta[]): AddEthereumChainParameter | undefined;
23
+ export declare function convertNamespaceNetworkToEvmChainId(namespace: NamespaceInputForConnect, meta: BlockchainMeta[]): AddEthereumChainParameter | undefined;
28
24
  /**
29
25
  * We are passing an string for chain id (e.g. ETH, POLYGON), but wallet's instances (e.g. window.ethereum) needs chainId (e.g. 0x1).
30
26
  * This function will help us to map these strings to proper hex ids.
31
27
  */
32
- export declare function tryConvertNamespaceNetworkToChainInfo(namespace: LegacyNamespaceInputForConnect, meta: BlockchainMeta[]): string | AddEthereumChainParameter | undefined;
28
+ export declare function tryConvertNamespaceNetworkToChainInfo(namespace: NamespaceInputForConnect, meta: BlockchainMeta[]): string | AddEthereumChainParameter | undefined;
33
29
  export declare function transformHubResultToLegacyResult(res: Awaited<ReturnType<AllProxiedNamespaces['connect']>>): ConnectResult;
34
30
  /**
35
31
  * Synchronizes providers in the hub with the configuration providers.
@@ -37,10 +33,13 @@ export declare function transformHubResultToLegacyResult(res: Awaited<ReturnType
37
33
  * - Removes providers from the hub that aren't in the configuration
38
34
  */
39
35
  export declare function synchronizeHubWithConfigProviders(hub: Hub, configurationProviders: Provider[]): void;
40
- export declare function isSolanaNamespace(ns: ProxiedNamespace<EvmActions | SolanaActions | SuiActions | UtxoActions>): ns is ProxiedNamespace<SolanaActions> & {
36
+ export declare function isSolanaNamespace(ns: AllProxiedNamespaces): ns is AllProxiedNamespaces & ProxiedNamespace<SolanaActions> & {
41
37
  namespaceId: 'Solana';
42
38
  };
43
- export declare function isEvmNamespace(ns: ProxiedNamespace<EvmActions | SolanaActions | SuiActions | UtxoActions>): ns is ProxiedNamespace<EvmActions> & {
39
+ export declare function isEvmNamespace(ns: AllProxiedNamespaces): ns is AllProxiedNamespaces & ProxiedNamespace<EvmActions> & {
44
40
  namespaceId: 'EVM';
45
41
  };
42
+ export declare function isUtxoNamespace(ns: AllProxiedNamespaces): ns is AllProxiedNamespaces & ProxiedNamespace<UtxoActions> & {
43
+ namespaceId: 'UTXO';
44
+ };
46
45
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/hub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,kBAAkB,IAAI,kBAAkB,EACzC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK1E,OAAO,EACL,KAAK,yBAAyB,EAG9B,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,aAAa,CAAC;AAEnE,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAU1B,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,kBAAkB,EAAE,GAC9B,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAkBzC;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,QAAQ,GAAG,SAAS,CAEtB;AAWD,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,oBAYhD;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,kBAAkB,EACjC,QAAQ,EAAE;IACR,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAChD,wBAAwB,EAAE;QACxB,CAAC,IAAI,EAAE,UAAU,GAAG,8BAA8B,EAAE,CAAC;KACtD,CAAC;CACH,GACA,IAAI,CAqLN;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,kBAAkB,EAAE,GACjC,uBAAuB,EAAE,CAW3B;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,8BAA8B,EACzC,IAAI,EAAE,cAAc,EAAE,yCAUvB;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,8BAA8B,EACzC,IAAI,EAAE,cAAc,EAAE,GACrB,MAAM,GAAG,yBAAyB,GAAG,SAAS,CAMhD;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GACxD,aAAa,CAoBf;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,sBAAsB,EAAE,QAAQ,EAAE,QAwBnC;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,gBAAgB,CAAC,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC,GAC1E,EAAE,IAAI,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,CAEnE;AACD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,gBAAgB,CAAC,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC,GAC1E,EAAE,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG;IAAE,WAAW,EAAE,KAAK,CAAA;CAAE,CAE7D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/hub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,EACxB,YAAY,IAAI,kBAAkB,EACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EACV,KAAK,IAAI,yBAAyB,EAClC,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ1E,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,aAAa,CAAC;AAYnE,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,QAAQ,EAAE,CAU3E;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,QAAQ,GAAG,SAAS,CAEtB;AAWD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,kBAAkB,EACjC,QAAQ,EAAE;IACR,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAChD,wBAAwB,EAAE;QACxB,CAAC,IAAI,EAAE,UAAU,GAAG,wBAAwB,EAAE,CAAC;KAChD,CAAC;CACH,GACA,IAAI,CAqLN;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,wBAAwB,EACnC,IAAI,EAAE,cAAc,EAAE,GACrB,yBAAyB,GAAG,SAAS,CASvC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,wBAAwB,EACnC,IAAI,EAAE,cAAc,EAAE,GACrB,MAAM,GAAG,yBAAyB,GAAG,SAAS,CAMhD;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GACxD,aAAa,CAiBf;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,sBAAsB,EAAE,QAAQ,EAAE,QAwBnC;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,oBAAoB,GACvB,EAAE,IAAI,oBAAoB,GAC3B,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,CAE5D;AACD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,oBAAoB,GACvB,EAAE,IAAI,oBAAoB,GAC3B,gBAAgB,CAAC,UAAU,CAAC,GAAG;IAAE,WAAW,EAAE,KAAK,CAAA;CAAE,CAEtD;AACD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,oBAAoB,GACvB,EAAE,IAAI,oBAAoB,GAC3B,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAExD"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './legacy/helpers.js';
2
1
  export { default as Provider } from './provider.js';
3
- export { useWallets } from './legacy/hooks.js';
2
+ export { useWallets } from './hooks.js';
3
+ export type * from './types.js';
4
4
  export * from './legacy/types.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,mBAAmB,YAAY,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Ee=Object.defineProperty;var c=(e,t)=>Ee(e,"name",{value:t,configurable:!0});import{Persistor as We}from"@rango-dev/wallets-core/legacy";var P="last-connected-wallets",W="hub-v1-last-connected-wallets";import{Persistor as T}from"@rango-dev/wallets-core/legacy";var N=class{static{c(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,r){if(this.#e===W)return this.#t(t,r);if(this.#e===P)return this.#a(t);throw new Error("Not implemented")}removeWallets(t){if(this.#e===W)return this.#r(t);if(this.#e===P)return this.#c(t);throw new Error("Not implemented")}list(){if(this.#e===W)return this.#n();if(this.#e===P)return this.#o();throw new Error("Not implemented")}removeNamespacesFromWallet(t,r){if(this.#e===W)return this.#s(t,r);throw new Error("Not implemented")}#o(){let r=new T().getItem(P)||[],s={};return r.forEach(n=>{s[n]=[]}),s}#n(){return new T().getItem(W)||{}}#t(t,r){let s=new T,n=s.getItem(this.#e)||{},d=r;if(n[t]){let u=n[t];d=u.concat(r.filter(p=>!u.some(o=>o.namespace===p.namespace)))}s.setItem(this.#e,{...n,[t]:d})}#a(t){let r=new T,s=r.getItem(this.#e)||[];r.setItem(P,s.concat(t))}#r(t){let r=new T,s=r.getItem(this.#e)||{};if(!t){r.setItem(this.#e,{});return}t.forEach(n=>{s[n]&&delete s[n]}),r.setItem(this.#e,s)}#s(t,r){let u=(new T().getItem(this.#e)||{})[t]?.filter(p=>!r.includes(p.namespace));this.#r([t]),u?.length>0&&this.#t(t,u)}#c(t){let r=new T,s=r.getItem(this.#e)||[];if(!t){r.setItem(this.#e,[]);return}r.setItem(P,s.filter(n=>!t.includes(n)))}};function Ct(e,t){return e.find(r=>r.type===t)||null}c(Ct,"choose");var _={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function Q(e,t){if(t.type==="new_state"){let r=e[t.wallet];return r?{...e,[t.wallet]:{...r,[t.name]:t.value}}:{...e,[t.wallet]:{..._,[t.name]:t.value}}}return e}c(Q,"stateReducer");function K(e){return Object.entries(e).filter(([,t])=>t?.connected).map(([t])=>t)}c(K,"connectedWallets");function z(e){return Object.entries(e).map(([t])=>t)}c(z,"availableWallets");function Z(e){let t=new Map;return e.forEach(r=>{let{config:s,...n}=r;t.set(s.type,{actions:n,config:s})}),t}c(Z,"checkWalletProviders");function Pt(e){return e?.constructor?.name==="AsyncFunction"}c(Pt,"isAsync");function Et(e){let{checkInstallation:t=!0}=e.config;return t}c(Et,"needsCheckInstallation");async function J({type:e,walletActions:t,getState:r}){if(t.canEagerConnect){let s=new N(P),d=!!s.list()[e];d&&!r(e).connected&&F(),d||s.addWallet(e,[])}}c(J,"tryPersistWallet");function X({type:e,walletActions:t}){t.canEagerConnect&&new N(P).removeWallets([e])}c(X,"tryRemoveWalletFromPersistance");function F(){let e=new We;e.getItem(P)&&e.removeItem(P)}c(F,"clearPersistance");function O(e,t){return c((s,n,d,u,p)=>{e({type:"new_state",wallet:s,name:n,value:d}),t&&t(s,n,d,u,p)},"handler")}c(O,"makeEventHandler");import it from"react";import{createContext as Ne}from"react";var A="Context hasn't been initialized yet.",ke={async connect(){throw new Error(A)},async disconnect(){throw new Error(A)},async disconnectAll(){throw new Error(A)},async suggestAndConnect(){throw new Error(A)},state(){throw new Error(A)},canSwitchNetworkTo(){throw new Error(A)},providers(){throw new Error(A)},getWalletInfo(){throw new Error(A)},getSigners(){throw new Error(A)},hubProvider(){throw new Error(A)}},x=Ne(ke);import{debug as Ae}from"@rango-dev/logging-core";function ee(e,t,r){let s=r instanceof Error?r:new Error(String(r));Ae(s,{context:{method:e,args:t},tags:{type:"wallet-error"}})}c(ee,"logError");function Ie(e,t){return(...r)=>{try{let s=t(...r);return s instanceof Promise?s.catch(n=>{throw ee(e,r,n),n}):s}catch(s){throw ee(e,r,s),s}}}c(Ie,"withErrorLogging");function te(e){let t=Object.entries(e).map(([r,s])=>[r,Ie(r,s.bind(e))]);return Object.fromEntries(t)}c(te,"withErrorLoggingApi");import{pickVersion as le}from"@hub3js/core/utils";import{LegacyEvents as I,legacyFormatAddressWithNetwork as qe}from"@rango-dev/wallets-core/legacy";import{convertEvmBlockchainMetaToEvmChainInfo as Ve,getBlockChainNameFromId as Ge}from"@rango-dev/wallets-shared";import{AccountId as Qe}from"caip";import{isEvmBlockchain as Ke}from"rango-types";import{useEffect as j,useReducer as Re}from"react";async function re(e,t){let r=new N(P),s=r.list(),n=Object.keys(s);if(n.length){let d=[];n.forEach(o=>{let i=e.get(o);if(i){let a=t(i);d.push({walletType:o,eagerConnect:a.eagerConnect.bind(a)})}});let u=await Promise.allSettled(d.map(async({eagerConnect:o})=>o())),p=[];u.forEach((o,i)=>{let{status:a}=o;a==="rejected"&&p.push(d[i].walletType)}),p.length&&r.removeWallets(p)}}c(re,"autoConnect");import{LegacyWallet as Se}from"@rango-dev/wallets-core/legacy";import{useContext as Te,useRef as Le}from"react";function oe(e){let t=Le({});function r(s){let n=s.config.type;return typeof t.current[n]>"u"&&(t.current[n]=new Se({config:s.config,handler:e},s.actions)),t.current[n]}return c(r,"updater"),r}c(oe,"useInitializers");function xe(){let e=Te(x);if(!e)throw Error("useWallet can only be used within the Provider component");return e}c(xe,"useWallets");import{useEffect as be,useRef as Be}from"react";function ne(e){return!!e.allBlockChains?.length&&!!e.autoConnect}c(ne,"shouldTryAutoConnect");function B(e){let t=Be(!1);be(()=>{ne(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}c(B,"useAutoConnect");function D(e){let[t,r]=Re(Q,{}),s=oe(O(r,e.onUpdateState)),n=e.providers,d=Z(n);B({allBlockChains:e.allBlockChains,autoConnect:e.autoConnect,autoConnectHandler:async()=>re(d,s)});let u={async connect(p,o){let i=d.get(p);if(!i)throw new Error(`You should add ${p} to provider first.`);let a;o&&o.length>0&&(a=o.find(m=>!!m.network)?.network);let f=await s(i).connect(a,o);return e.autoConnect&&J({type:p,walletActions:i.actions,getState:u.state}),[f]},async disconnect(p){let o=d.get(p);if(!o)throw new Error(`You should add ${p} to provider first.`);await s(o).disconnect(),e.autoConnect&&X({type:p,walletActions:o.actions})},async disconnectAll(){let p=[];return K(t).forEach(o=>{let i=d.get(o);if(i){let a=s(i);p.push(a.disconnect())}}),e.autoConnect&&F(),await Promise.allSettled(p)},async suggestAndConnect(p,o){let i=d.get(p);if(!i)throw new Error(`You should add ${p} to provider first.`);let a=s(i);if(!o.network)throw new Error("You should pass network to the suggestAndConnect");return await a.suggestAndConnect(o.network)},state(p){return t[p]||_},canSwitchNetworkTo(p,o){let i=d.get(p);if(!i)return!1;let a=s(i);return a.canSwitchNetworkTo?a.canSwitchNetworkTo(o,a.provider):!1},providers(){let p={};return z(t).forEach(o=>{let i=d.get(o);if(i){let a=s(i);p[o]=a.provider}}),p},getWalletInfo(p){let o=d.get(p);if(!o)throw new Error(`You should add ${p} to provider first.`);return o.actions.getWalletInfo(e.allBlockChains||[])},async getSigners(p){let o=d.get(p);if(!o)throw new Error(`You should add ${p} to provider first.`);let i=s(o),a=i.provider;return i.getSigners(a)},hubProvider(){throw new Error("This method is not available on legacy providers.")}};return j(()=>{d.forEach(p=>{let o=s(p),i=c(()=>{o.onInit&&o.onInit()},"runOnInit"),a=c(l=>{l.target&&l.target.readyState==="complete"&&(i(),document.removeEventListener("readystatechange",a))},"initWhenPageIsReady");i(),document.addEventListener("readystatechange",a)})},[]),j(()=>{e.allBlockChains&&d.forEach(o=>{let i=s(o),a=i.getWalletInfo(e.allBlockChains||[]);i.setInfo({supportedBlockchains:a.supportedChains,isContractWallet:!!a.isContractWallet})})},[e.allBlockChains]),j(()=>{d.forEach(p=>{s(p).setHandler(O(r,e.onUpdateState))})},[e.onUpdateState]),u}c(D,"useLegacyProviders");import{legacyFormatAddressWithNetwork as He}from"@rango-dev/wallets-core/legacy";import{CAIP_NAMESPACE as _e}from"@rango-dev/wallets-core/namespaces/ton";import{CAIP_TRON_CHAIN_ID as Fe}from"@rango-dev/wallets-core/namespaces/tron";import{CAIP_BITCOIN_CHAIN_ID as Oe,CAIP_BITCOINCASH_CHAIN_ID as je,CAIP_DOGECOIN_CHAIN_ID as De,CAIP_LITECOIN_CHAIN_ID as Me,CAIP_ZCASH_CHAIN_ID as Ue}from"@rango-dev/wallets-core/namespaces/utxo";import{AccountId as Ye}from"caip";import{Err as M,Ok as ae}from"ts-results";function $e(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===Oe?"BTC":e.reference===Ue?"ZCASH":e.reference===Me?"LTC":e.reference===De?"DOGE":e.reference===je?"BCH":e.namespace.toLowerCase()===_e?"TON":e.namespace==="sui"||e.reference===Fe?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}c($e,"mapCaipNamespaceToLegacyNetworkName");function b(e){let{chainId:t,address:r}=Ye.parse(e),s=$e(t);return He(r,s)}c(b,"fromAccountIdToLegacyAddressFormat");async function U(e){return e.reduce(async(t,r)=>{let s=await t;try{let n=await r();return[...s,new ae(n)]}catch(n){return[...s,new M(n)]}},Promise.resolve([]))}c(U,"runSequentiallyWithoutFailure");function se(e){return typeof e=="object"&&!Array.isArray(e)}c(se,"isConnectResultEvm");function ce(e){return Array.isArray(e)}c(ce,"isConnectResultSolana");function ie(e){let t=new Set,r=[],s=c((u,p)=>{r=r.filter(o=>o.key!==u?!0:(o.resolve(p),!1))},"removeKeyFromQueue"),n=c(async()=>{let u=r.find(a=>!t.has(a.key));if(!u)return;let{task:p,resolve:o,key:i}=u;t.add(i);try{let a=await p();o(new ae(a))}catch(a){e?.onError&&e.onError(a,{removeCurrentKeyFromQueue:()=>s(i,new M(a))}),o(new M(a))}finally{let a=r.findIndex(l=>l.key===i);a>=0&&r.splice(a,1),t.delete(i),n()}},"processQueue");return c(async(u,p)=>new Promise(o=>{r.push({task:u,resolve:o,key:p}),n()}),"queueTask")}c(ie,"createQueue");function Y(e){let t="0.0.0",r="1.0.0",s=[],n=[];return e.forEach(d=>{try{let u=le(d,r);n.push(u[1])}catch{let u=le(d,t);s.push(u[1])}}),[s,n]}c(Y,"separateLegacyAndHubProviders");function S(e,t){return e.find(r=>r.id===t)}c(S,"findProviderByType");var ze=new N(W);function $(e,t){return e.info()?.metadata.properties?.find(n=>n.name==="namespaces")?.value.data.flatMap(n=>n.getSupportedChains(t||[]))||[]}c($,"getSupportedChainsFromProvider");function pe(e,t,r,s){let n=e.get(t.provider);if(!n)throw new Error("Currently all the events have assigned to a provider. The event doesn't include one.",{cause:t});let d=t.namespace,u=d?n.findByNamespace(d):void 0,p=null,o=null,i;if(u){let[g]=u.state();p=g().accounts,o=g().network,s.lastConnectAttemptParams[t.provider]&&(i=s.lastConnectAttemptParams[t.provider].find(h=>h.namespace===d)?.derivationPath)}let[a]=n.state(),l={connected:a().connected,connecting:a().connecting,installed:a().installed,accounts:p,network:o,reachable:!0,derivationPath:i},f=n.info()?.metadata.properties?.find(g=>g.name==="details"),m={supportedBlockchains:$(n,s.allBlockChains),isContractWallet:f?.value?.isContractWallet??!1,isHub:!0,namespace:d};switch(t.type){case"provider_detected":r(t.provider,I.INSTALLED,!0,l,m);break;case"provider_connecting":r(t.provider,I.CONNECTING,t.value,l,m);break;case"provider_connected":r(t.provider,I.CONNECTED,!0,l,m);break;case"provider_disconnected":r(t.provider,I.PROVIDER_DISCONNECTED,t.provider,l,m),r(t.provider,I.CONNECTED,!1,l,m),r(t.provider,I.ACCOUNTS,null,l,m);break;case"namespace_disconnected":ze.removeNamespacesFromWallet(t.provider,[t.namespace]),r(t.provider,I.NAMESPACE_DISCONNECTED,t.namespace,l,{...m,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&r(t.provider,I.NAMESPACE_DISCONNECTED,t.namespace,l,m);let g=[];m.isContractWallet?g=t.accounts.map(h=>{let{chainId:v,address:C}=Qe.parse(h);if(typeof v=="string")throw new Error("Should be in CAIP format");let E=Ge(v.reference,m.supportedBlockchains);return E?qe(C,E):b(h)}):g=t.accounts.map(h=>b(h)),r(t.provider,I.ACCOUNTS,g,l,{...m,namespace:t.namespace})}break;case"namespace_network_switched":r(t.provider,I.NETWORK,t.network,l,{...m,namespace:t.namespace});break}}c(pe,"mapHubEventsToLegacy");function q(e,t){if(!e.network)return;let r=t.filter(Ke);return Ve(r)[e.network]}c(q,"convertNamespaceNetworkToEvmChainId");function de(e,t){return q(e,t)||e.network}c(de,"tryConvertNamespaceNetworkToChainInfo");function ue(e){return se(e)?{accounts:e.accounts,network:e.network,provider:void 0}:ce(e)?{accounts:e,network:null,provider:void 0}:{accounts:[e],network:null,provider:void 0}}c(ue,"transformHubResultToLegacyResult");function me(e,t){let r=e.getAll();t.filter(n=>!r.get(n.id)).forEach(n=>{e.add(n.id,n),n.init()}),r.forEach(n=>{t.some(u=>u.id===n.id)||e.remove(n.id)})}c(me,"synchronizeHubWithConfigProviders");function fe(e){return e.namespaceId==="Solana"}c(fe,"isSolanaNamespace");function R(e){return e.namespaceId==="EVM"}c(R,"isEvmNamespace");import{utils as nt}from"@hub3js/evm";import"@rango-dev/wallets-shared";import{useEffect as we,useRef as ve,useState as at}from"react";import{Ok as st,Result as ct}from"ts-results";import{Provider as Ze}from"@hub3js/core";import{legacyIsEvmNamespace as Je}from"@rango-dev/wallets-core/legacy";import{Result as Xe}from"ts-results";var H=new N(W);async function et(e,t,r){let{getHub:s,allBlockChains:n}=r,d=s().get(e);if(!d)throw new Error(`You should add ${e} to provider first then call 'connect'.`);if(!t)throw new Error("Passing namespace to `connect` is required. ");let u=[];t.forEach(l=>{let f=l.namespace,m=d.findByNamespace(f);if(!m)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${l.namespace})`);u.push([l,m])});let p=u.map(([l,f])=>{let g=(Je(l)?q(l,n||[]):void 0)||l.network;return async()=>{let h;R(f)?h=c(async()=>f.connect(g),"connectNamespacePromise"):h=c(async()=>f.connect(),"connectNamespacePromise");try{await h()}catch(v){throw v instanceof Error?v:new Error(v)}}}),o=await U(p),i=u.filter((l,f)=>o[f].err).map(l=>l[0]);if(i.length>0&&H.removeNamespacesFromWallet(e,i.map(l=>l.namespace)),!o.some(l=>l.ok))throw new Error(`No namespace connected for ${e}`);return Xe.all(...o.filter(l=>l.ok)).unwrap()}c(et,"eagerConnect");async function tt(e,t){let r=[],s=[],n=[],d=[];e.forEach(p=>{let o=t.findByNamespace(p.namespace);o?(r.push(p),d.push(async()=>await o.canEagerConnect())):n.push(p)});let u=await U(d);return r.forEach((p,o)=>{u[o].ok&&u[o].val?s.push(p):n.push(p)}),{successNamespaces:s,failedNamespaces:n}}c(tt,"tryRunCanEagerConnect");async function ge(e){let{getHub:t,allBlockChains:r,wallets:s}=e,n=H.list(),d=Object.keys(n),u=[];if(d.length){let p=[],o=s?.map(i=>typeof i=="string"?i:i instanceof Ze?i.id:i.config.type);d.forEach(async i=>{if(o&&!o.includes(i)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",i),u.push(i);return}let a=t().get(i),l=n[i].map(g=>({namespace:g.namespace,network:g.network}));if(!l.length||!a){u.push(i);return}let{successNamespaces:f,failedNamespaces:m}=await tt(l,a);if(f.length)m.length&&H.removeNamespacesFromWallet(a.id,m.map(g=>g.namespace));else{u.push(i);return}p.push(et(i,f,{allBlockChains:r,getHub:t}).catch(g=>console.warn(g)))}),H.removeWallets(u),await Promise.all(p)}}c(ge,"autoConnect");import{createStore as rt,Hub as ot}from"@hub3js/core";import{useRef as he}from"react";function ye(e){let t=he(null),r=he(null);function s(){let u=new ot({store:n()});return e.forEach(p=>{u.add(p.id,p)}),r.current=u,u}c(s,"createHub");function n(){if(t.current!==null)return t.current;let u=rt();return t.current=u,u}c(n,"getStore");function d(){let u=r.current?.getAll();return!r.current||!u?s():(me(r.current,e),r.current)}return c(d,"getHub"),{getStore:n,getHub:d}}c(ye,"useHubRefs");function V(e){let{getStore:t,getHub:r}=ye(e.providers),[,s]=at(0),n=ve({onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}),d=ve({}),u=c((a,l)=>{d.current[a]=l||[]},"updateLastConnectAttemptParams"),p=ie({onError:(a,l)=>{nt.isUserRejectionError(a)&&l.removeCurrentKeyFromQueue()}});we(()=>{n.current={onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}},[e]),we(()=>{let a=c(()=>{r().init(e.configs?.walletOptions),s(f=>f+1)},"runOnInit"),l=c(f=>{f.target&&f.target.readyState==="complete"&&(a(),document.removeEventListener("readystatechange",l))},"initHubWhenPageIsReady");a(),document.addEventListener("readystatechange",l),t().subscribe(f=>{if(n.current.onUpdateState)try{pe(r(),f,n.current.onUpdateState,{allBlockChains:n.current.allBlockChains,lastConnectAttemptParams:d.current})}catch(m){console.error(m)}s(m=>m+1)}).flushEvents()},[]),B({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{ge({allBlockChains:e.allBlockChains,getHub:r,wallets:e.configs?.wallets})}});let o=new N(W);return{canSwitchNetworkTo(a,l,f){let m=r().get(a);if(!m)throw new Error(`You should add ${a} to provider first then call 'canSwitchNetworkTo'.`);if(!f)throw new Error("Passing namespace to `canSwitchNetworkTo` is required.");let g=m.findByNamespace(f.namespace);if(!g)throw new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${f.namespace})`);if(!("canSwitchNetwork"in g))return!1;let h=m.info()?.metadata?.properties?.find(C=>C.name==="namespaces");if(!n.current.allBlockChains)throw new Error("Blockchains are not available");let v=h?.value.data.find(C=>C.value===f.namespace)?.getSupportedChains(n.current.allBlockChains);if(!v)throw new Error(`NamespaceMeta is not defined for requested namespace: ${f.namespace}`);return g.canSwitchNetwork({network:l,supportedChains:v})},async connect(a,l){let f=r().get(a);if(!f)throw new Error(`You should add ${a} to provider first then call 'connect'.`);if(!l)throw new Error("Passing namespace to `connect` is required.");u(a,l);let m=[];l.forEach(y=>{let w=y.namespace,k=f.findByNamespace(w);if(!k)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${y.namespace})`);m.push([y,k])});let g=m.map(async([y,w])=>{let k=de(y,e.allBlockChains||[]),L;return fe(w)?L=c(async()=>w.connect({derivationPath:y.derivationPath}),"connectNamespacePromise"):R(w)?L=c(async()=>w.connect(k,{derivationPath:y.derivationPath}),"connectNamespacePromise"):L=c(async()=>w.connect(),"connectNamespacePromise"),p(c(async()=>L().then(ue).then(Pe=>({response:Pe,input:{namespace:y.namespace,network:y.network,supportsEagerConnect:"canEagerConnect"in w}})),"connectNamespaceProcess"),a)}),h=await Promise.all(g),v=h.filter(y=>y.ok).filter(y=>y.val.input.supportsEagerConnect).map(y=>({namespace:y.val.input.namespace,network:y.val.input.network}));v.length>0&&o.addWallet(a,v);let C=h.map(y=>y.andThen(w=>new st(w.response))),E=ct.all(...C);if(E.err)throw E.val;return E.unwrap()},async disconnect(a,l){let f=r().get(a);if(!f)throw new Error(`You should add ${a} to provider first then call 'disconnect'.`);f.getAll().forEach(m=>{let g=!l||l.includes(m.namespaceId),h=m.state()[0]().connected;if(g&&h)return m.disconnect()}),e.autoConnect&&(l?o.removeNamespacesFromWallet(a,l):o.removeWallets([a]))},async disconnectAll(){let a=Array.from(r().getAll().values()).map(async l=>this.disconnect(l.id));return await Promise.allSettled(a)},async getSigners(a){let l=r().get(a);if(!l)throw new Error(`You should add ${a} to provider first.`);let f=l.info();if(!f)throw new Error("Your provider should have required `info`.");let g=f.metadata.properties?.find(h=>h.name==="signers");if(!g)throw new Error("Your provider should contain signers property.");return g.value.getSigners()},getWalletInfo(a){let l=r().get(a);if(!l)throw new Error(`You should add ${a} to provider first.`);let f=l.info();if(!f)throw new Error("Your provider should have required `info`.");let m={DEFAULT:""},{metadata:g}=f,{extensions:h}=g;Object.keys(h).forEach(w=>{let k=w;if(k==="homepage"&&(m.DEFAULT=h[k]||""),["firefox","chrome","brave","edge"].includes(k)){let G=k.toUpperCase();m[G]=h[k]||""}});let v=g.properties,C=v?.find(w=>w.name==="namespaces"),E=v?.find(w=>w.name==="derivationPath"),y=v?.find(w=>w.name==="details");return{name:g.name,img:g.icon,installLink:m,color:"red",supportedChains:$(l,n.current.allBlockChains),isContractWallet:y?.value?.isContractWallet,mobileWallet:y?.value?.mobileWallet,showOnMobile:y?.value?.showOnMobile,needsNamespace:C?.value,needsDerivationPath:E?.value,isHub:!0,properties:g.properties}},providers(){throw new Error("This method is not available on hub providers.")},state(a){let l=r().state(),f=r().get(a),m=l[a];if(!m||!f)throw new Error(`It seems your requested provider doesn't exist in hub. Provider Id: ${a}`);let g=m.namespaces.filter(C=>C.connected).flatMap(C=>C.accounts?.map(E=>b(E))).filter(C=>!!C),h=new Map(Array.from(f.getAll(),([C,E])=>[E.namespaceId,E.state()[0]()]));return{connected:m.connected,connecting:m.connecting,installed:m.installed,reachable:!0,accounts:g,network:null,namespaces:h}},async suggestAndConnect(a,l){let f=r().get(a);if(!f)throw new Error(`You should add ${a} to provider first then call 'suggestAndConnect'.`);let m=f.findByNamespace(l.namespace);throw m?"suggest"in m?l.network?new Error(`Suggest has not been implemented for given chain: ${l.network}`):new Error("You should pass network to the suggest and connect"):new Error("Suggest is not implemented on the provider"):new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${l.namespace})`)},hubProvider(){throw new Error("Unreachable code. the method has been implemented in main adapter instance.")}}}c(V,"useHubAdapter");function Ce(e){let{providers:t,...r}=e,[s,n]=Y(t),d=D({...r,providers:s}),u=V({...r,providers:n,allVersionedProviders:t});return te({canSwitchNetworkTo(o,i,a){return S(n,o)?u.canSwitchNetworkTo(o,i,a):d.canSwitchNetworkTo(o,i)},async connect(o,i){return S(n,o)?await u.connect(o,i):await d.connect(o,i)},async disconnect(o,i){return S(n,o)?await u.disconnect(o,i):await d.disconnect(o)},async disconnectAll(){return await Promise.allSettled([u.disconnectAll(),d.disconnectAll()])},async getSigners(o){return S(n,o)?u.getSigners(o):d.getSigners(o)},getWalletInfo(o){return S(n,o)?u.getWalletInfo(o):d.getWalletInfo(o)},providers(){return d.providers()},state(o){return S(n,o)?u.state(o):d.state(o)},async suggestAndConnect(o,i){return S(n,o)?u.suggestAndConnect(o,i):await d.suggestAndConnect(o,i)},hubProvider(o){let i=S(n,o);if(i)return i;throw new Error(`You're trying to access ${o} provider which is not found in hub providers. you may try to access a legacy provider or it's not been registered yet.`)}})}c(Ce,"useProviders");function lt(e){let t=Ce(e);return it.createElement(x.Provider,{value:t},e.children)}c(lt,"Provider");var pt=lt;import{LegacyEvents as io}from"@rango-dev/wallets-core/legacy";export{io as Events,pt as Provider,z as availableWallets,Z as checkWalletProviders,Ct as choose,F as clearPersistance,K as connectedWallets,_ as defaultWalletState,Pt as isAsync,O as makeEventHandler,Et as needsCheckInstallation,Q as stateReducer,J as tryPersistWallet,X as tryRemoveWalletFromPersistance,xe as useWallets};
1
+ var ce=Object.defineProperty;var o=(e,t)=>ce(e,"name",{value:t,configurable:!0});import Ke from"react";import{createContext as ie}from"react";var A="Context hasn't been initialized yet.",le={async connect(){throw new Error(A)},async disconnect(){throw new Error(A)},async disconnectAll(){throw new Error(A)},async suggestAndConnect(){throw new Error(A)},state(){throw new Error(A)},canSwitchNetworkTo(){throw new Error(A)},getWalletInfo(){throw new Error(A)},getSigners(){throw new Error(A)},hubProvider(){throw new Error(A)}},x=ie(le);import{pickVersion as ve}from"@hub3js/core/utils";import{convertEvmBlockchainMetaToEvmChainInfo as Ne,formatAddressWithNetwork as Pe,getBlockChainNameFromId as ke,getSupportedChainsFromProvider as Ee}from"@rango-dev/internal-blockchains";import{AccountId as Ae}from"caip";import{isEvmBlockchain as Ie}from"rango-types";var R=(u=>(u.CONNECTED="connected",u.CONNECTING="connecting",u.REACHABLE="reachable",u.INSTALLED="installed",u.ACCOUNTS="accounts",u.NETWORK="network",u.NAMESPACE_DISCONNECTED="namespace_disconnected",u.PROVIDER_DISCONNECTED="provider_disconnected",u))(R||{});var k="hub-v1-last-connected-wallets";import{CAIP_BITCOIN_CHAIN_ID as pe,CAIP_BITCOINCASH_CHAIN_ID as ue,CAIP_DOGECOIN_CHAIN_ID as me,CAIP_LITECOIN_CHAIN_ID as de,CAIP_ZCASH_CHAIN_ID as fe}from"@hub3js/bip122";import{CAIP_NAMESPACE as he}from"@hub3js/tvm";import{formatAddressWithNetwork as Ce}from"@rango-dev/internal-blockchains";import{CAIP_TRON_CHAIN_ID as we}from"@rango-dev/wallets-core/namespaces/tron";import{AccountId as ge}from"caip";import{Err as H,Ok as q}from"ts-results";function ye(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===pe?"BTC":e.reference===fe?"ZCASH":e.reference===de?"LTC":e.reference===me?"DOGE":e.reference===ue?"BCH":e.namespace.toLowerCase()===he?"TON":e.namespace==="sui"||e.reference===we?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}o(ye,"mapCaipNamespaceToLegacyNetworkName");function S(e){let{chainId:t,address:n}=ge.parse(e),c=ye(t);return Ce(n,c)}o(S,"fromAccountIdToLegacyAddressFormat");async function L(e){return e.reduce(async(t,n)=>{let c=await t;try{let s=await n();return[...c,new q(s)]}catch(s){return[...c,new H(s)]}},Promise.resolve([]))}o(L,"runSequentiallyWithoutFailure");function $(e){return typeof e=="object"&&!Array.isArray(e)}o($,"isConnectResultEvm");function K(e){return Array.isArray(e)}o(K,"isConnectResultSolana");function Y(e){let t=new Set,n=[],c=o((p,m)=>{n=n.filter(u=>u.key!==p?!0:(u.resolve(m),!1))},"removeKeyFromQueue"),s=o(async()=>{let p=n.find(g=>!t.has(g.key));if(!p)return;let{task:m,resolve:u,key:f}=p;t.add(f);try{let g=await m();u(new q(g))}catch(g){e?.onError&&e.onError(g,{removeCurrentKeyFromQueue:()=>c(f,new H(g))}),u(new H(g))}finally{let g=n.findIndex(r=>r.key===f);g>=0&&n.splice(g,1),t.delete(f),s()}},"processQueue");return o(async(p,m)=>new Promise(u=>{n.push({task:p,resolve:u,key:m}),s()}),"queueTask")}o(Y,"createQueue");function Q(e){return!!e.allBlockChains?.length&&!!e.autoConnect}o(Q,"shouldTryAutoConnect");var T=class{static{o(this,"Persistor")}getItem(t){let n=localStorage.getItem(t);return n?JSON.parse(n):null}setItem(t,n){localStorage.setItem(t,JSON.stringify(n))}removeItem(t){localStorage.removeItem(t)}};var I=class{static{o(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,n){if(this.#e===k)return this.#t(t,n);throw new Error("Not implemented")}removeWallets(t){if(this.#e===k)return this.#n(t);throw new Error("Not implemented")}list(){if(this.#e===k)return this.#r();throw new Error("Not implemented")}removeNamespacesFromWallet(t,n){if(this.#e===k)return this.#o(t,n);throw new Error("Not implemented")}#r(){return new T().getItem(k)||{}}#t(t,n){let c=new T,s=c.getItem(this.#e)||{},h=n;if(s[t]){let p=s[t];h=p.concat(n.filter(m=>!p.some(u=>u.namespace===m.namespace)))}c.setItem(this.#e,{...s,[t]:h})}#n(t){let n=new T,c=n.getItem(this.#e)||{};if(!t){n.setItem(this.#e,{});return}t.forEach(s=>{c[s]&&delete c[s]}),n.setItem(this.#e,c)}#o(t,n){let p=(new T().getItem(this.#e)||{})[t]?.filter(m=>!n.includes(m.namespace));this.#n([t]),p?.length>0&&this.#t(t,p)}};function F(e){return e.map(t=>{try{return ve(t,"1.0.0")[1]}catch{throw new Error("Legacy providers aren't supported anymore. Expected a provider with version '1.0.0'.")}})}o(F,"getHubProviders");function O(e,t){return e.find(n=>n.id===t)}o(O,"findProviderByType");var Te=new I(k);function V(e,t,n,c){let s=e.get(t.provider);if(!s)throw new Error("Currently all the events have assigned to a provider. The event doesn't include one.",{cause:t});let h=t.namespace,p=h?s.findByNamespace(h):void 0,m=null,u=null,f;if(p){let[l]=p.state();m=l().accounts,u=l().network,c.lastConnectAttemptParams[t.provider]&&(f=c.lastConnectAttemptParams[t.provider].find(d=>d.namespace===h)?.derivationPath)}let[g]=s.state(),r={connected:g().connected,connecting:g().connecting,installed:g().installed,accounts:m,network:u,reachable:!0,derivationPath:f},a=s.info()?.metadata.properties?.find(l=>l.name==="details"),i={supportedBlockchains:Ee(s,c.allBlockChains),isContractWallet:a?.value?.isContractWallet??!1,isHub:!0,namespace:h};switch(t.type){case"provider_detected":n(t.provider,"installed",!0,r,i);break;case"provider_connecting":n(t.provider,"connecting",t.value,r,i);break;case"provider_connected":n(t.provider,"connected",!0,r,i);break;case"provider_disconnected":n(t.provider,"provider_disconnected",t.provider,r,i),n(t.provider,"connected",!1,r,i),n(t.provider,"accounts",null,r,i);break;case"namespace_disconnected":Te.removeNamespacesFromWallet(t.provider,[t.namespace]),n(t.provider,"namespace_disconnected",t.namespace,r,{...i,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&n(t.provider,"namespace_disconnected",t.namespace,r,i);let l=[];i.isContractWallet?l=t.accounts.map(d=>{let{chainId:w,address:P}=Ae.parse(d);if(typeof w=="string")throw new Error("Should be in CAIP format");let v=ke(w.reference,i.supportedBlockchains);return v?Pe(P,v):S(d)}):l=t.accounts.map(d=>S(d)),n(t.provider,"accounts",l,r,{...i,namespace:t.namespace})}break;case"namespace_network_switched":n(t.provider,"network",t.network,r,{...i,namespace:t.namespace});break}}o(V,"mapHubEventsToLegacy");function _(e,t){if(!e.network)return;let n=t.filter(Ie);return Ne(n)[e.network]}o(_,"convertNamespaceNetworkToEvmChainId");function G(e,t){return _(e,t)||e.network}o(G,"tryConvertNamespaceNetworkToChainInfo");function z(e){return $(e)?{accounts:e.accounts,network:e.network}:K(e)?{accounts:e,network:null}:{accounts:[e],network:null}}o(z,"transformHubResultToLegacyResult");function X(e,t){let n=e.getAll();t.filter(s=>!n.get(s.id)).forEach(s=>{e.add(s.id,s),s.init()}),n.forEach(s=>{t.some(p=>p.id===s.id)||e.remove(s.id)})}o(X,"synchronizeHubWithConfigProviders");function J(e){return e.namespaceId==="Solana"}o(J,"isSolanaNamespace");function W(e){return e.namespaceId==="EVM"}o(W,"isEvmNamespace");function Z(e){return e.namespaceId==="UTXO"}o(Z,"isUtxoNamespace");import{isUserRejectionError as _e,WalletConnectionError as De}from"@hub3js/std/utils";import{getSupportedChainsFromNamespace as je,getSupportedChainsFromProvider as Me}from"@rango-dev/internal-blockchains";import{useEffect as D,useRef as j,useState as Ue}from"react";import{Ok as qe,Result as $e}from"ts-results";import{debug as be}from"@rango-dev/logging-core";function ee(e,t,n){let c=n instanceof Error?n:new Error(String(n));be(c,{context:{method:e,args:t},tags:{type:"wallet-error"}})}o(ee,"logError");function Se(e,t){return(...n)=>{try{let c=t(...n);return c instanceof Promise?c.catch(s=>{throw ee(e,n,s),s}):c}catch(c){throw ee(e,n,c),c}}}o(Se,"withErrorLogging");function te(e){let t=Object.entries(e).map(([n,c])=>[n,Se(n,c.bind(e))]);return Object.fromEntries(t)}o(te,"withErrorLoggingApi");import{Result as xe}from"ts-results";function We(e){return e.namespace==="EVM"}o(We,"isEvmNamespaceInput");var B=new I(k);async function Be(e,t,n){let{getHub:c,allBlockChains:s}=n,h=c().get(e);if(!h)throw new Error(`You should add ${e} to provider first then call 'connect'.`);if(!t)throw new Error("Passing namespace to `connect` is required. ");let p=[];t.forEach(r=>{let a=r.namespace,i=h.findByNamespace(a);if(!i)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${r.namespace})`);p.push([r,i])});let m=p.map(([r,a])=>{let l=(We(r)?_(r,s||[]):void 0)||r.network;return async()=>{let d;W(a)?d=o(async()=>a.connect(l),"connectNamespacePromise"):d=o(async()=>a.connect(),"connectNamespacePromise");try{await d()}catch(w){throw w instanceof Error?w:new Error(w)}}}),u=await L(m),f=p.filter((r,a)=>u[a].err).map(r=>r[0]);if(f.length>0&&B.removeNamespacesFromWallet(e,f.map(r=>r.namespace)),!u.some(r=>r.ok))throw new Error(`No namespace connected for ${e}`);return xe.all(...u.filter(r=>r.ok)).unwrap()}o(Be,"eagerConnect");async function Re(e,t){let n=[],c=[],s=[],h=[];e.forEach(m=>{let u=t.findByNamespace(m.namespace);u?(n.push(m),h.push(async()=>await u.canEagerConnect())):s.push(m)});let p=await L(h);return n.forEach((m,u)=>{p[u].ok&&p[u].val?c.push(m):s.push(m)}),{successNamespaces:c,failedNamespaces:s}}o(Re,"tryRunCanEagerConnect");async function ne(e){let{getHub:t,allBlockChains:n,wallets:c}=e,s=B.list(),h=Object.keys(s),p=[];if(h.length){let m=[],u=c?.map(f=>typeof f=="string"?f:f.id);h.forEach(async f=>{if(u&&!u.includes(f)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",f),p.push(f);return}let g=t().get(f),r=s[f].map(l=>({namespace:l.namespace,network:l.network}));if(!r.length||!g){p.push(f);return}let{successNamespaces:a,failedNamespaces:i}=await Re(r,g);if(a.length)i.length&&B.removeNamespacesFromWallet(g.id,i.map(l=>l.namespace));else{p.push(f);return}m.push(Be(f,a,{allBlockChains:n,getHub:t}).catch(l=>console.warn(l)))}),B.removeWallets(p),await Promise.all(m)}}o(ne,"autoConnect");import{useEffect as He,useRef as Le}from"react";function re(e){let t=Le(!1);He(()=>{Q(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}o(re,"useAutoConnect");import{createStore as Fe,Hub as Oe}from"@hub3js/core";import{useRef as oe}from"react";function se(e){let t=oe(null),n=oe(null);function c(){let p=new Oe({store:s()});return e.forEach(m=>{p.add(m.id,m)}),n.current=p,p}o(c,"createHub");function s(){if(t.current!==null)return t.current;let p=Fe();return t.current=p,p}o(s,"getStore");function h(){let p=n.current?.getAll();return!n.current||!p?c():(X(n.current,e),n.current)}return o(h,"getHub"),{getStore:s,getHub:h}}o(se,"useHubRefs");function M(e){let{getStore:t,getHub:n}=se(e.providers),[,c]=Ue(0),s=j({onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}),h=j(!1),p=j({}),m=o((r,a)=>{p.current[r]=a||[]},"updateLastConnectAttemptParams"),u=Y({onError:(r,a)=>{let i=r instanceof De?r.cause:r;_e(i)&&a.removeCurrentKeyFromQueue()}});D(()=>{s.current={onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}},[e]),D(()=>{t().subscribe(r=>{if(s.current.onUpdateState)try{V(n(),r,s.current.onUpdateState,{allBlockChains:s.current.allBlockChains,lastConnectAttemptParams:p.current})}catch(a){console.error(a)}c(a=>a+1)}).flushEvents()},[]),D(()=>{h.current||!e.allBlockChains?.length||(n().init(e.configs?.walletOptions),c(r=>r+1),h.current=!0)},[e.allBlockChains,e.configs?.walletOptions]),re({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{ne({allBlockChains:e.allBlockChains,getHub:n,wallets:e.configs?.wallets})}});let f=new I(k);return te({canSwitchNetworkTo(r,a,i){let l=n().get(r);if(!l)return!1;if(!i)throw new Error("Passing namespace to `canSwitchNetworkTo` is required.");let d=l.findByNamespace(i.namespace);if(!d)throw new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${i.namespace})`);if(!("canSwitchNetwork"in d))return!1;let w=l.info()?.metadata?.properties?.find(N=>N.name==="namespaces");if(!s.current.allBlockChains)throw new Error("Blockchains are not available");let P=w?.value.data.find(N=>N.value===i.namespace);if(!P)throw new Error(`NamespaceMeta is not defined for requested namespace: ${i.namespace}`);let v=je(P,s.current.allBlockChains);return d.canSwitchNetwork({network:a,supportedChains:v})},async connect(r,a){let i=n().get(r);if(!i)throw new Error(`You should add ${r} to provider first then call 'connect'.`);if(!a)throw new Error("Passing namespace to `connect` is required.");m(r,a);let l=[];a.forEach(C=>{let y=C.namespace,E=i.findByNamespace(y);if(!E)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${C.namespace})`);l.push([C,E])});let d=l.map(async([C,y])=>{let E=G(C,e.allBlockChains||[]),b;return J(y)?b=o(async()=>y.connect({derivationPath:C.derivationPath}),"connectNamespacePromise"):W(y)?b=o(async()=>y.connect(E,{derivationPath:C.derivationPath}),"connectNamespacePromise"):Z(y)?b=o(async()=>y.connect({derivationPath:C.derivationPath}),"connectNamespacePromise"):b=o(async()=>y.connect(),"connectNamespacePromise"),u(o(async()=>b().then(z).then(ae=>({response:ae,input:{namespace:C.namespace,network:C.network,supportsEagerConnect:"canEagerConnect"in y}})),"connectNamespaceProcess"),r)}),w=await Promise.all(d),P=w.filter(C=>C.ok).filter(C=>C.val.input.supportsEagerConnect).map(C=>({namespace:C.val.input.namespace,network:C.val.input.network}));P.length>0&&f.addWallet(r,P);let v=w.map(C=>C.andThen(y=>new qe(y.response))),N=$e.all(...v);if(N.err)throw N.val;return N.unwrap()},async disconnect(r,a){let i=n().get(r);if(!i)throw new Error(`You should add ${r} to provider first then call 'disconnect'.`);i.getAll().forEach(l=>{let d=!a||a.includes(l.namespaceId),w=l.state()[0]().connected;if(d&&w)return l.disconnect()}),e.autoConnect&&(a?f.removeNamespacesFromWallet(r,a):f.removeWallets([r]))},async disconnectAll(){let r=Array.from(n().getAll().values()).map(async a=>this.disconnect(a.id));return await Promise.allSettled(r)},async getSigners(r){let a=n().get(r);if(!a)throw new Error(`You should add ${r} to provider first.`);let i=a.info();if(!i)throw new Error("Your provider should have required `info`.");let d=i.metadata.properties?.find(w=>w.name==="signers");if(!d)throw new Error("Your provider should contain signers property.");return d.value.getSigners()},getWalletInfo(r){let a=n().get(r);if(!a)throw new Error(`You should add ${r} to provider first.`);let i=a.info();if(!i)throw new Error("Your provider should have required `info`.");let l={DEFAULT:""},{metadata:d}=i,{extensions:w}=d;Object.keys(w).forEach(y=>{let E=y;if(E==="homepage"&&(l.DEFAULT=w[E]||""),["firefox","chrome","brave","edge"].includes(E)){let U=E.toUpperCase();l[U]=w[E]||""}});let P=d.properties,v=P?.find(y=>y.name==="namespaces"),N=P?.find(y=>y.name==="derivationPath"),C=P?.find(y=>y.name==="details");return{name:d.name,img:d.icon,installLink:l,color:"red",supportedChains:Me(a,s.current.allBlockChains),isContractWallet:C?.value?.isContractWallet,mobileWallet:C?.value?.mobileWallet,showOnMobile:C?.value?.showOnMobile,needsNamespace:v?.value,needsDerivationPath:N?.value,isHub:!0,properties:d.properties}},state(r){let a=n().state(),i=n().get(r),l=a[r];if(!l||!i)return{connected:!1,connecting:!1,installed:!1,reachable:!1,accounts:null,network:null,namespaces:new Map};let d=l.namespaces.filter(v=>v.connected).flatMap(v=>v.accounts?.map(N=>S(N))).filter(v=>!!v),w=new Map(Array.from(i.getAll(),([v,N])=>[N.namespaceId,N.state()[0]()]));return{connected:l.connected,connecting:l.connecting,installed:l.installed,reachable:!0,accounts:d,network:null,namespaces:w}},async suggestAndConnect(r,a){let i=n().get(r);if(!i)throw new Error(`You should add ${r} to provider first then call 'suggestAndConnect'.`);let l=i.findByNamespace(a.namespace);throw l?"suggest"in l?a.network?new Error(`Suggest has not been implemented for given chain: ${a.network}`):new Error("You should pass network to the suggest and connect"):new Error("Suggest is not implemented on the provider"):new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${a.namespace})`)},hubProvider(r){let a=O(e.providers,r);if(!a)throw new Error(`You're trying to access ${r} provider which is not found in hub providers. it may not be registered yet.`);return a}})}o(M,"useHubAdapter");function Ye(e){let t=M({...e,providers:F(e.providers)});return Ke.createElement(x.Provider,{value:t},e.children)}o(Ye,"Provider");var Qe=Ye;import{useContext as Ve}from"react";function Ge(){let e=Ve(x);if(!e)throw Error("useWallet can only be used within the Provider component");return e}o(Ge,"useWallets");export{R as Events,Qe as Provider,Ge as useWallets};
2
2
  //# sourceMappingURL=index.js.map