@rango-dev/wallets-react 0.0.0-experimental-c6bea4d8-20260930 → 0.0.0-experimental-2938686c-20261012

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.
@@ -0,0 +1,49 @@
1
+ import type { WalletType } from '@hub3js/core';
2
+ import type { Namespace } from '@hub3js/namespaces';
3
+ import type { BlockchainMeta } from 'rango-types';
4
+ export declare const WalletEventChannel = "walletEvent";
5
+ export declare enum WalletEventTypes {
6
+ WALLET_DETECTED = "walletDetected",
7
+ WALLET_CONNECT_INITIATED = "walletConnectInitiated",
8
+ WALLET_CONNECTED = "walletConnected",
9
+ WALLET_CONNECT_FAILED = "walletConnectFailed",
10
+ WALLET_DISCONNECTED = "walletDisconnected"
11
+ }
12
+ export type WalletConnectOrigin = 'manual' | 'auto';
13
+ type WalletConnectEventPayload = {
14
+ /** Wallet type id, e.g. `metamask`. */
15
+ walletName: WalletType;
16
+ namespace: Namespace;
17
+ /** Rango blockchain name (e.g. `ETH`), or `null` when it isn't known. */
18
+ chain: string | null;
19
+ origin: WalletConnectOrigin;
20
+ };
21
+ export type WalletDetectedEventPayload = {
22
+ walletName: WalletType;
23
+ };
24
+ export type WalletConnectInitiatedEventPayload = WalletConnectEventPayload;
25
+ export type WalletConnectedEventPayload = WalletConnectEventPayload;
26
+ export type WalletConnectFailedEventPayload = WalletConnectEventPayload;
27
+ export type WalletDisconnectedEventPayload = {
28
+ walletName: WalletType;
29
+ namespace: Namespace;
30
+ };
31
+ type EventData<T extends WalletEventTypes, U> = {
32
+ type: T;
33
+ payload: U;
34
+ };
35
+ export type WalletEventData = EventData<WalletEventTypes.WALLET_DETECTED, WalletDetectedEventPayload> | EventData<WalletEventTypes.WALLET_CONNECT_INITIATED, WalletConnectInitiatedEventPayload> | EventData<WalletEventTypes.WALLET_CONNECTED, WalletConnectedEventPayload> | EventData<WalletEventTypes.WALLET_CONNECT_FAILED, WalletConnectFailedEventPayload> | EventData<WalletEventTypes.WALLET_DISCONNECTED, WalletDisconnectedEventPayload>;
36
+ export type WalletEvents = {
37
+ [WalletEventChannel]: WalletEventData;
38
+ };
39
+ export interface Emitter<Events extends Record<string, unknown>> {
40
+ emit<K extends keyof Events>(type: K, event: Events[K]): void;
41
+ }
42
+ export type WalletEventEmitter = Emitter<WalletEvents>;
43
+ export declare function emitWalletDetectedOnce(walletName: WalletType, emitter?: WalletEventEmitter): void;
44
+ /**
45
+ * Connect results may carry an EVM chain id (e.g. `0x1`); events always carry a Rango blockchain name.
46
+ */
47
+ export declare function toBlockchainName(network: string | null | undefined, allBlockChains: BlockchainMeta[] | undefined): string | null;
48
+ export {};
49
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,oBAAY,gBAAgB;IAC1B,eAAe,mBAAmB;IAClC,wBAAwB,2BAA2B;IACnD,gBAAgB,oBAAoB;IACpC,qBAAqB,wBAAwB;IAC7C,mBAAmB,uBAAuB;CAC3C;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpD,KAAK,yBAAyB,GAAG;IAC/B,uCAAuC;IACvC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,yEAAyE;IACzE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,kCAAkC,GAAG,yBAAyB,CAAC;AAC3E,MAAM,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AACpE,MAAM,MAAM,+BAA+B,GAAG,yBAAyB,CAAC;AACxE,MAAM,MAAM,8BAA8B,GAAG;IAC3C,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,KAAK,SAAS,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,eAAe,GACvB,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,0BAA0B,CAAC,GACvE,SAAS,CACP,gBAAgB,CAAC,wBAAwB,EACzC,kCAAkC,CACnC,GACD,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,GACzE,SAAS,CACP,gBAAgB,CAAC,qBAAqB,EACtC,+BAA+B,CAChC,GACD,SAAS,CACP,gBAAgB,CAAC,mBAAmB,EACpC,8BAA8B,CAC/B,CAAC;AAEN,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,kBAAkB,CAAC,EAAE,eAAe,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,OAAO,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAIvD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,cAAc,EAAE,cAAc,EAAE,GAAG,SAAS,GAC3C,MAAM,GAAG,IAAI,CAKf"}
@@ -1,8 +1,10 @@
1
1
  import type { UseAdapterParams } from './useHubAdapter.js';
2
2
  import type { Hub, Provider, WalletType } from '@hub3js/core';
3
+ import { type WalletEventEmitter } from '../events.js';
3
4
  export declare function autoConnect(deps: {
4
5
  getHub: () => Hub;
5
6
  allBlockChains: UseAdapterParams['allBlockChains'];
6
7
  wallets?: (WalletType | Provider)[];
8
+ emitter?: WalletEventEmitter;
7
9
  }): Promise<void>;
8
10
  //# 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;AAE3D,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAuL9D,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
+ {"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;AAM9D,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,cAAc,CAAC;AAgNtB,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;IACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhB"}
@@ -1,2 +1,3 @@
1
1
  export declare const HUB_LAST_CONNECTED_WALLETS = "hub-v1-last-connected-wallets";
2
+ export declare const WALLET_DETECTED_SKIPPED_IDS: string[];
2
3
  //# 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,0BAA0B,kCAAkC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/hub/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAG1E,eAAO,MAAM,2BAA2B,EAAE,MAAM,EAO/C,CAAC"}
@@ -1,10 +1,9 @@
1
+ import type { WalletConnectOrigin } from '../events.js';
1
2
  import type { WalletType } from '@hub3js/core';
2
3
  import type { Namespace } from '@hub3js/namespaces';
3
- type ConnectionOrigin = 'manual' | 'auto';
4
4
  export declare function reportConnectionFailure(error: unknown, options: {
5
5
  walletType: WalletType;
6
6
  namespace: Namespace;
7
- origin: ConnectionOrigin;
7
+ origin: WalletConnectOrigin;
8
8
  }): void;
9
- export {};
10
9
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/hub/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,KAAK,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAQ1C,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GACA,IAAI,CAiBN"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/hub/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAsBpD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,GACA,IAAI,CAaN"}
@@ -30,8 +30,5 @@ export declare function createQueue(options?: {
30
30
  removeCurrentKeyFromQueue: () => void;
31
31
  }) => void;
32
32
  }): <T>(task: () => Promise<T>, key: string) => Promise<Result<T, unknown>>;
33
- export declare function removeQueuedNamespacesOnRejection(error: unknown, actions: {
34
- removeCurrentKeyFromQueue: () => void;
35
- }): void;
36
33
  export declare function shouldTryAutoConnect(props: Pick<ProviderProps, 'allBlockChains' | 'autoConnect'>): boolean;
37
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,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;AAazC,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;AAGD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IAAE,yBAAyB,EAAE,MAAM,IAAI,CAAA;CAAE,QAQnD;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,aAAa,CAAC,GAC3D,OAAO,CAET"}
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"}
@@ -1 +1 @@
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;AAiCzD,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,CA6dvE"}
1
+ {"version":3,"file":"useHubAdapter.d.ts","sourceRoot":"","sources":["../../src/hub/useHubAdapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AAqCzD,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,CAghBvE"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { default as Provider } from './provider.js';
2
2
  export { useWallets } from './hooks.js';
3
3
  export type * from './types.js';
4
+ export { WalletEventChannel, WalletEventTypes } from './events.js';
5
+ export type { Emitter, WalletConnectedEventPayload, WalletConnectFailedEventPayload, WalletConnectInitiatedEventPayload, WalletConnectOrigin, WalletDetectedEventPayload, WalletDisconnectedEventPayload, WalletEventData, WalletEvents, } from './events.js';
4
6
  export * from './legacy/types.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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"}
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,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EACV,OAAO,EACP,2BAA2B,EAC3B,+BAA+B,EAC/B,kCAAkC,EAClC,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC9B,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var le=Object.defineProperty;var r=(e,t)=>le(e,"name",{value:t,configurable:!0});import Ve from"react";import{createContext as pe}from"react";var A="Context hasn't been initialized yet.",ue={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)}},W=pe(ue);import{convertEvmBlockchainMetaToEvmChainInfo as ke,formatAddressWithNetwork as Ae,getBlockChainNameFromId as Te,getSupportedChainsFromProvider as Ie}from"@rango-dev/internal-blockchains";import{AccountId as be}from"caip";import{isEvmBlockchain as Se}from"rango-types";var O=(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))(O||{});var E="hub-v1-last-connected-wallets";import{CAIP_BITCOIN_CHAIN_ID as me,CAIP_BITCOINCASH_CHAIN_ID as de,CAIP_DOGECOIN_CHAIN_ID as fe,CAIP_LITECOIN_CHAIN_ID as he,CAIP_ZCASH_CHAIN_ID as Ce}from"@hub3js/bip122";import{ConnectionErrorType as we,WalletConnectionError as ge}from"@hub3js/std/utils";import{CAIP_TRON_CHAIN_ID as ye}from"@hub3js/tron";import{CAIP_NAMESPACE as Ne}from"@hub3js/tvm";import{formatAddressWithNetwork as ve}from"@rango-dev/internal-blockchains";import{AccountId as Pe}from"caip";import{Err as H,Ok as $}from"ts-results";function Ee(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===me?"BTC":e.reference===Ce?"ZCASH":e.reference===he?"LTC":e.reference===fe?"DOGE":e.reference===de?"BCH":e.namespace.toLowerCase()===Ne?"TON":e.namespace==="sui"||e.reference===ye?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}r(Ee,"mapCaipNamespaceToLegacyNetworkName");function S(e){let{chainId:t,address:n}=Pe.parse(e),c=Ee(t);return ve(n,c)}r(S,"fromAccountIdToLegacyAddressFormat");async function L(e){return e.reduce(async(t,n)=>{let c=await t;try{let a=await n();return[...c,new $(a)]}catch(a){return[...c,new H(a)]}},Promise.resolve([]))}r(L,"runSequentiallyWithoutFailure");function Q(e){return typeof e=="object"&&!Array.isArray(e)}r(Q,"isConnectResultEvm");function K(e){return Array.isArray(e)}r(K,"isConnectResultSolana");function Y(e){let t=new Set,n=[],c=r((p,m)=>{n=n.filter(u=>u.key!==p?!0:(u.resolve(m),!1))},"removeKeyFromQueue"),a=r(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 $(g))}catch(g){e?.onError&&e.onError(g,{removeCurrentKeyFromQueue:()=>c(f,new H(g))}),u(new H(g))}finally{let g=n.findIndex(o=>o.key===f);g>=0&&n.splice(g,1),t.delete(f),a()}},"processQueue");return r(async(p,m)=>new Promise(u=>{n.push({task:p,resolve:u,key:m}),a()}),"queueTask")}r(Y,"createQueue");function G(e,t){e instanceof ge&&e.type===we.Rejected&&t.removeCurrentKeyFromQueue()}r(G,"removeQueuedNamespacesOnRejection");function V(e){return!!e.allBlockChains?.length&&!!e.autoConnect}r(V,"shouldTryAutoConnect");var I=class{static{r(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 T=class{static{r(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,n){if(this.#e===E)return this.#t(t,n);throw new Error("Not implemented")}removeWallets(t){if(this.#e===E)return this.#n(t);throw new Error("Not implemented")}list(){if(this.#e===E)return this.#o();throw new Error("Not implemented")}removeNamespacesFromWallet(t,n){if(this.#e===E)return this.#r(t,n);throw new Error("Not implemented")}#o(){return new I().getItem(E)||{}}#t(t,n){let c=new I,a=c.getItem(this.#e)||{},h=n;if(a[t]){let p=a[t];h=p.concat(n.filter(m=>!p.some(u=>u.namespace===m.namespace)))}c.setItem(this.#e,{...a,[t]:h})}#n(t){let n=new I,c=n.getItem(this.#e)||{};if(!t){n.setItem(this.#e,{});return}t.forEach(a=>{c[a]&&delete c[a]}),n.setItem(this.#e,c)}#r(t,n){let p=(new I().getItem(this.#e)||{})[t]?.filter(m=>!n.includes(m.namespace));this.#n([t]),p?.length>0&&this.#t(t,p)}};function _(e,t){return e.find(n=>n.id===t)}r(_,"findProviderByType");var xe=new T(E);function z(e,t,n,c){let a=e.get(t.provider);if(!a)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?a.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]=a.state(),o={connected:g().connected,connecting:g().connecting,installed:g().installed,accounts:m,network:u,reachable:!0,derivationPath:f},s=a.info()?.metadata.properties?.find(l=>l.name==="details"),i={supportedBlockchains:Ie(a,c.allBlockChains),isContractWallet:s?.value?.isContractWallet??!1,isHub:!0,namespace:h};switch(t.type){case"provider_detected":n(t.provider,"installed",!0,o,i);break;case"provider_connecting":n(t.provider,"connecting",t.value,o,i);break;case"provider_connected":n(t.provider,"connected",!0,o,i);break;case"provider_disconnected":n(t.provider,"provider_disconnected",t.provider,o,i),n(t.provider,"connected",!1,o,i),n(t.provider,"accounts",null,o,i);break;case"namespace_disconnected":xe.removeNamespacesFromWallet(t.provider,[t.namespace]),n(t.provider,"namespace_disconnected",t.namespace,o,{...i,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&n(t.provider,"namespace_disconnected",t.namespace,o,i);let l=[];i.isContractWallet?l=t.accounts.map(d=>{let{chainId:w,address:P}=be.parse(d);if(typeof w=="string")throw new Error("Should be in CAIP format");let N=Te(w.reference,i.supportedBlockchains);return N?Ae(P,N):S(d)}):l=t.accounts.map(d=>S(d)),n(t.provider,"accounts",l,o,{...i,namespace:t.namespace})}break;case"namespace_network_switched":n(t.provider,"network",t.network,o,{...i,namespace:t.namespace});break}}r(z,"mapHubEventsToLegacy");function D(e,t){if(!e.network)return;let n=t.filter(Se);return ke(n)[e.network]}r(D,"convertNamespaceNetworkToEvmChainId");function X(e,t){return D(e,t)||e.network}r(X,"tryConvertNamespaceNetworkToChainInfo");function J(e){return Q(e)?{accounts:e.accounts,network:e.network}:K(e)?{accounts:e,network:null}:{accounts:[e],network:null}}r(J,"transformHubResultToLegacyResult");function Z(e,t){let n=e.getAll();t.filter(a=>!n.get(a.id)).forEach(a=>{e.add(a.id,a),a.init()}),n.forEach(a=>{t.some(p=>p.id===a.id)||e.remove(a.id)})}r(Z,"synchronizeHubWithConfigProviders");function ee(e){return e.namespaceId==="Solana"}r(ee,"isSolanaNamespace");function R(e){return e.namespaceId==="EVM"}r(R,"isEvmNamespace");function te(e){return e.namespaceId==="UTXO"}r(te,"isUtxoNamespace");import{getSupportedChainsFromNamespace as $e,getSupportedChainsFromProvider as Qe}from"@rango-dev/internal-blockchains";import{useEffect as j,useRef as M,useState as Ke}from"react";import{Ok as Ye,Result as Ge}from"ts-results";import{debug as We}from"@rango-dev/logging-core";function ne(e,t,n){let c=n instanceof Error?n:new Error(String(n));We(c,{context:{method:e,args:t},tags:{type:"wallet-error"}})}r(ne,"logError");function Re(e,t){return(...n)=>{try{let c=t(...n);return c instanceof Promise?c.catch(a=>{throw ne(e,n,a),a}):c}catch(c){throw ne(e,n,c),c}}}r(Re,"withErrorLogging");function oe(e){let t=Object.entries(e).map(([n,c])=>[n,Re(n,c.bind(e))]);return Object.fromEntries(t)}r(oe,"withErrorLoggingApi");import{Result as He}from"ts-results";import{ConnectionErrorType as re,WalletConnectionError as Be}from"@hub3js/std/utils";import{error as Fe}from"@rango-dev/logging-core";var Oe=[re.Rejected,re.Locked];function B(e,t){!(e instanceof Be)||Oe.includes(e.type)||Fe(e,{tags:{name:e.name,type:e.type,walletType:t.walletType,namespace:t.namespace,origin:t.origin}})}r(B,"reportConnectionFailure");function Le(e){return e.namespace==="EVM"}r(Le,"isEvmNamespaceInput");var F=new T(E);async function _e(e,t,n){let{getHub:c,allBlockChains:a}=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(o=>{let s=o.namespace,i=h.findByNamespace(s);if(!i)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${o.namespace})`);p.push([o,i])});let m=p.map(([o,s])=>{let l=(Le(o)?D(o,a||[]):void 0)||o.network;return async()=>{let d;R(s)?d=r(async()=>s.connect(l),"connectNamespacePromise"):d=r(async()=>s.connect(),"connectNamespacePromise");try{await d()}catch(w){throw B(w,{walletType:e,namespace:o.namespace,origin:"auto"}),w instanceof Error?w:new Error(w)}}}),u=await L(m),f=p.filter((o,s)=>u[s].err).map(o=>o[0]);if(f.length>0&&F.removeNamespacesFromWallet(e,f.map(o=>o.namespace)),!u.some(o=>o.ok))throw new Error(`No namespace connected for ${e}`);return He.all(...u.filter(o=>o.ok)).unwrap()}r(_e,"eagerConnect");async function De(e,t){let n=[],c=[],a=[],h=[];e.forEach(m=>{let u=t.findByNamespace(m.namespace);u?(n.push(m),h.push(async()=>await u.canEagerConnect())):a.push(m)});let p=await L(h);return n.forEach((m,u)=>{p[u].ok&&p[u].val?c.push(m):a.push(m)}),{successNamespaces:c,failedNamespaces:a}}r(De,"tryRunCanEagerConnect");async function ae(e){let{getHub:t,allBlockChains:n,wallets:c}=e,a=F.list(),h=Object.keys(a),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),o=a[f].map(l=>({namespace:l.namespace,network:l.network}));if(!o.length||!g){p.push(f);return}let{successNamespaces:s,failedNamespaces:i}=await De(o,g);if(s.length)i.length&&F.removeNamespacesFromWallet(g.id,i.map(l=>l.namespace));else{p.push(f);return}m.push(_e(f,s,{allBlockChains:n,getHub:t}).catch(l=>console.warn(l)))}),F.removeWallets(p),await Promise.all(m)}}r(ae,"autoConnect");import{useEffect as je,useRef as Me}from"react";function se(e){let t=Me(!1);je(()=>{V(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}r(se,"useAutoConnect");import{createStore as Ue,Hub as qe}from"@hub3js/core";import{useRef as ce}from"react";function ie(e){let t=ce(null),n=ce(null);function c(){let p=new qe({store:a()});return e.forEach(m=>{p.add(m.id,m)}),n.current=p,p}r(c,"createHub");function a(){if(t.current!==null)return t.current;let p=Ue();return t.current=p,p}r(a,"getStore");function h(){let p=n.current?.getAll();return!n.current||!p?c():(Z(n.current,e),n.current)}return r(h,"getHub"),{getStore:a,getHub:h}}r(ie,"useHubRefs");function U(e){let{getStore:t,getHub:n}=ie(e.providers),[,c]=Ke(0),a=M({onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}),h=M(!1),p=M({}),m=r((o,s)=>{p.current[o]=s||[]},"updateLastConnectAttemptParams"),u=Y({onError:G});j(()=>{a.current={onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}},[e]),j(()=>{t().subscribe(o=>{if(a.current.onUpdateState)try{z(n(),o,a.current.onUpdateState,{allBlockChains:a.current.allBlockChains,lastConnectAttemptParams:p.current})}catch(s){console.error(s)}c(s=>s+1)}).flushEvents()},[]),j(()=>{h.current||!e.allBlockChains?.length||(n().init(e.configs?.walletOptions),c(o=>o+1),h.current=!0)},[e.allBlockChains,e.configs?.walletOptions]),se({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{ae({allBlockChains:e.allBlockChains,getHub:n,wallets:e.configs?.wallets})}});let f=new T(E);return oe({canSwitchNetworkTo(o,s,i){let l=n().get(o);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(v=>v.name==="namespaces");if(!a.current.allBlockChains)throw new Error("Blockchains are not available");let P=w?.value.data.find(v=>v.value===i.namespace);if(!P)throw new Error(`NamespaceMeta is not defined for requested namespace: ${i.namespace}`);let N=$e(P,a.current.allBlockChains);return d.canSwitchNetwork({network:s,supportedChains:N})},async connect(o,s){let i=n().get(o);if(!i)throw new Error(`You should add ${o} to provider first then call 'connect'.`);if(!s)throw new Error("Passing namespace to `connect` is required.");m(o,s);let l=[];s.forEach(C=>{let y=C.namespace,k=i.findByNamespace(y);if(!k)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${C.namespace})`);l.push([C,k])});let d=l.map(async([C,y])=>{let k=X(C,e.allBlockChains||[]),b;return ee(y)?b=r(async()=>y.connect({derivationPath:C.derivationPath}),"connectNamespacePromise"):R(y)?b=r(async()=>y.connect(k,{derivationPath:C.derivationPath}),"connectNamespacePromise"):te(y)?b=r(async()=>y.connect({derivationPath:C.derivationPath}),"connectNamespacePromise"):b=r(async()=>y.connect(),"connectNamespacePromise"),u(r(async()=>b().catch(x=>{throw B(x,{walletType:o,namespace:C.namespace,origin:"manual"}),x}).then(J).then(x=>({response:x,input:{namespace:C.namespace,network:C.network,supportsEagerConnect:"canEagerConnect"in y}})),"connectNamespaceProcess"),o)}),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(o,P);let N=w.map(C=>C.andThen(y=>new Ye(y.response))),v=Ge.all(...N);if(v.err)throw v.val;return v.unwrap()},async disconnect(o,s){let i=n().get(o);if(!i)throw new Error(`You should add ${o} to provider first then call 'disconnect'.`);i.getAll().forEach(l=>{let d=!s||s.includes(l.namespaceId),w=l.state()[0]().connected;if(d&&w)return l.disconnect()}),e.autoConnect&&(s?f.removeNamespacesFromWallet(o,s):f.removeWallets([o]))},async disconnectAll(){let o=Array.from(n().getAll().values()).map(async s=>this.disconnect(s.id));return await Promise.allSettled(o)},async getSigners(o){let s=n().get(o);if(!s)throw new Error(`You should add ${o} to provider first.`);let i=s.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(o){let s=n().get(o);if(!s)throw new Error(`You should add ${o} to provider first.`);let i=s.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 k=y;if(k==="homepage"&&(l.DEFAULT=w[k]||""),["firefox","chrome","brave","edge"].includes(k)){let q=k.toUpperCase();l[q]=w[k]||""}});let P=d.properties,N=P?.find(y=>y.name==="namespaces"),v=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:Qe(s,a.current.allBlockChains),isContractWallet:C?.value?.isContractWallet,mobileWallet:C?.value?.mobileWallet,showOnMobile:C?.value?.showOnMobile,needsNamespace:N?.value,needsDerivationPath:v?.value,isHub:!0,properties:d.properties}},state(o){let s=n().state(),i=n().get(o),l=s[o];if(!l||!i)return{connected:!1,connecting:!1,installed:!1,reachable:!1,accounts:null,network:null,namespaces:new Map};let d=l.namespaces.filter(N=>N.connected).flatMap(N=>N.accounts?.map(v=>S(v))).filter(N=>!!N),w=new Map(Array.from(i.getAll(),([N,v])=>[v.namespaceId,v.state()[0]()]));return{connected:l.connected,connecting:l.connecting,installed:l.installed,reachable:!0,accounts:d,network:null,namespaces:w}},async suggestAndConnect(o,s){let i=n().get(o);if(!i)throw new Error(`You should add ${o} to provider first then call 'suggestAndConnect'.`);let l=i.findByNamespace(s.namespace);throw l?"suggest"in l?s.network?new Error(`Suggest has not been implemented for given chain: ${s.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: ${s.namespace})`)},hubProvider(o){let s=_(e.providers,o);if(!s)throw new Error(`You're trying to access ${o} provider which is not found in hub providers. it may not be registered yet.`);return s}})}r(U,"useHubAdapter");function ze(e){let t=U(e);return Ve.createElement(W.Provider,{value:t},e.children)}r(ze,"Provider");var Xe=ze;import{useContext as Je}from"react";function Ze(){let e=Je(W);if(!e)throw Error("useWallet can only be used within the Provider component");return e}r(Ze,"useWallets");export{O as Events,Xe as Provider,Ze as useWallets};
1
+ var Ee=Object.defineProperty;var o=(e,t)=>Ee(e,"name",{value:t,configurable:!0});import nt from"react";import{createContext as he}from"react";var W="Context hasn't been initialized yet.",ye={async connect(){throw new Error(W)},async disconnect(){throw new Error(W)},async disconnectAll(){throw new Error(W)},async suggestAndConnect(){throw new Error(W)},state(){throw new Error(W)},canSwitchNetworkTo(){throw new Error(W)},getWalletInfo(){throw new Error(W)},getSigners(){throw new Error(W)},hubProvider(){throw new Error(W)}},O=he(ye);import{convertEvmBlockchainMetaToEvmChainInfo as be,formatAddressWithNetwork as Se,getBlockChainNameFromId as xe,getSupportedChainsFromProvider as Le}from"@rango-dev/internal-blockchains";import{AccountId as De}from"caip";import{isEvmBlockchain as _e}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||{});import{WalletTypes as x}from"@rango-dev/provider-all";var P="hub-v1-last-connected-wallets",Z=[x.LEDGER,x.TREZOR,x.LEDGER_WALLET,x.WALLET_CONNECT_2,x.TON_CONNECT,x.DEFAULT];import{CAIP_BITCOIN_CHAIN_ID as Ne,CAIP_BITCOINCASH_CHAIN_ID as ve,CAIP_DOGECOIN_CHAIN_ID as we,CAIP_LITECOIN_CHAIN_ID as ge,CAIP_ZCASH_CHAIN_ID as Pe}from"@hub3js/bip122";import{CAIP_TRON_CHAIN_ID as Te}from"@hub3js/tron";import{CAIP_NAMESPACE as ke}from"@hub3js/tvm";import{formatAddressWithNetwork as We}from"@rango-dev/internal-blockchains";import{AccountId as Ae}from"caip";import{Err as q,Ok as J}from"ts-results";function Ie(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===Ne?"BTC":e.reference===Pe?"ZCASH":e.reference===ge?"LTC":e.reference===we?"DOGE":e.reference===ve?"BCH":e.namespace.toLowerCase()===ke?"TON":e.namespace==="sui"||e.reference===Te?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}o(Ie,"mapCaipNamespaceToLegacyNetworkName");function L(e){let{chainId:t,address:n}=Ae.parse(e),m=Ie(t);return We(n,m)}o(L,"fromAccountIdToLegacyAddressFormat");async function K(e){return e.reduce(async(t,n)=>{let m=await t;try{let s=await n();return[...m,new J(s)]}catch(s){return[...m,new q(s)]}},Promise.resolve([]))}o(K,"runSequentiallyWithoutFailure");function ee(e){return typeof e=="object"&&!Array.isArray(e)}o(ee,"isConnectResultEvm");function te(e){return Array.isArray(e)}o(te,"isConnectResultSolana");function ne(e){let t=new Set,n=[],m=o((p,d)=>{n=n.filter(u=>u.key!==p?!0:(u.resolve(d),!1))},"removeKeyFromQueue"),s=o(async()=>{let p=n.find(f=>!t.has(f.key));if(!p)return;let{task:d,resolve:u,key:v}=p;t.add(v);try{let f=await d();u(new J(f))}catch(f){e?.onError&&e.onError(f,{removeCurrentKeyFromQueue:()=>m(v,new q(f))}),u(new q(f))}finally{let f=n.findIndex(a=>a.key===v);f>=0&&n.splice(f,1),t.delete(v),s()}},"processQueue");return o(async(p,d)=>new Promise(u=>{n.push({task:p,resolve:u,key:d}),s()}),"queueTask")}o(ne,"createQueue");function oe(e){return!!e.allBlockChains?.length&&!!e.autoConnect}o(oe,"shouldTryAutoConnect");var b=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===P)return this.#t(t,n);throw new Error("Not implemented")}removeWallets(t){if(this.#e===P)return this.#n(t);throw new Error("Not implemented")}list(){if(this.#e===P)return this.#o();throw new Error("Not implemented")}removeNamespacesFromWallet(t,n){if(this.#e===P)return this.#r(t,n);throw new Error("Not implemented")}#o(){return new b().getItem(P)||{}}#t(t,n){let m=new b,s=m.getItem(this.#e)||{},C=n;if(s[t]){let p=s[t];C=p.concat(n.filter(d=>!p.some(u=>u.namespace===d.namespace)))}m.setItem(this.#e,{...s,[t]:C})}#n(t){let n=new b,m=n.getItem(this.#e)||{};if(!t){n.setItem(this.#e,{});return}t.forEach(s=>{m[s]&&delete m[s]}),n.setItem(this.#e,m)}#r(t,n){let p=(new b().getItem(this.#e)||{})[t]?.filter(d=>!n.includes(d.namespace));this.#n([t]),p?.length>0&&this.#t(t,p)}};function $(e,t){return e.find(n=>n.id===t)}o($,"findProviderByType");var Oe=new I(P);function re(e,t,n,m){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 C=t.namespace,p=C?s.findByNamespace(C):void 0,d=null,u=null,v;if(p){let[i]=p.state();d=i().accounts,u=i().network,m.lastConnectAttemptParams[t.provider]&&(v=m.lastConnectAttemptParams[t.provider].find(l=>l.namespace===C)?.derivationPath)}let[f]=s.state(),a={connected:f().connected,connecting:f().connecting,installed:f().installed,accounts:d,network:u,reachable:!0,derivationPath:v},r=s.info()?.metadata.properties?.find(i=>i.name==="details"),c={supportedBlockchains:Le(s,m.allBlockChains),isContractWallet:r?.value?.isContractWallet??!1,isHub:!0,namespace:C};switch(t.type){case"provider_detected":n(t.provider,"installed",!0,a,c);break;case"provider_connecting":n(t.provider,"connecting",t.value,a,c);break;case"provider_connected":n(t.provider,"connected",!0,a,c);break;case"provider_disconnected":n(t.provider,"provider_disconnected",t.provider,a,c),n(t.provider,"connected",!1,a,c),n(t.provider,"accounts",null,a,c);break;case"namespace_disconnected":Oe.removeNamespacesFromWallet(t.provider,[t.namespace]),n(t.provider,"namespace_disconnected",t.namespace,a,{...c,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&n(t.provider,"namespace_disconnected",t.namespace,a,c);let i=[];c.isContractWallet?i=t.accounts.map(l=>{let{chainId:h,address:w}=De.parse(l);if(typeof h=="string")throw new Error("Should be in CAIP format");let y=xe(h.reference,c.supportedBlockchains);return y?Se(w,y):L(l)}):i=t.accounts.map(l=>L(l)),n(t.provider,"accounts",i,a,{...c,namespace:t.namespace})}break;case"namespace_network_switched":n(t.provider,"network",t.network,a,{...c,namespace:t.namespace});break}}o(re,"mapHubEventsToLegacy");function G(e,t){if(!e.network)return;let n=t.filter(_e);return be(n)[e.network]}o(G,"convertNamespaceNetworkToEvmChainId");function ae(e,t){return G(e,t)||e.network}o(ae,"tryConvertNamespaceNetworkToChainInfo");function B(e){return ee(e)?{accounts:e.accounts,network:e.network}:te(e)?{accounts:e,network:null}:{accounts:[e],network:null}}o(B,"transformHubResultToLegacyResult");function se(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(se,"synchronizeHubWithConfigProviders");function ce(e){return e.namespaceId==="Solana"}o(ce,"isSolanaNamespace");function F(e){return e.namespaceId==="EVM"}o(F,"isEvmNamespace");function ie(e){return e.namespaceId==="UTXO"}o(ie,"isUtxoNamespace");import{Hub3Error as Xe}from"@hub3js/core";import{getSupportedChainsFromNamespace as ze,getSupportedChainsFromProvider as Ze}from"@rango-dev/internal-blockchains";import{useEffect as Q,useRef as V,useState as Je}from"react";import{Ok as et,Result as tt}from"ts-results";import{getBlockChainNameFromId as Re}from"@rango-dev/internal-blockchains";var T="walletEvent",H=(C=>(C.WALLET_DETECTED="walletDetected",C.WALLET_CONNECT_INITIATED="walletConnectInitiated",C.WALLET_CONNECTED="walletConnected",C.WALLET_CONNECT_FAILED="walletConnectFailed",C.WALLET_DISCONNECTED="walletDisconnected",C))(H||{}),le=new Set;function pe(e,t){le.has(e)||Z.includes(e)||(le.add(e),t?.emit(T,{type:"walletDetected",payload:{walletName:e}}))}o(pe,"emitWalletDetectedOnce");function j(e,t){return e?Re(e,t||[]):null}o(j,"toBlockchainName");import{Result as Ue}from"ts-results";import{getErrorMessage as Be,Hub3Error as Fe}from"@hub3js/core";import{error as me}from"@rango-dev/logging-core";var He="NonErrorThrown",je="Non-Error value thrown during connect.";function Me(e){let t=typeof e=="string"?e:Be(e)??je,n=new Error(t,{cause:e});return n.name=He,n}o(Me,"wrapNonError");function M(e,t){if(e instanceof Fe){if(e.type!=="PROVIDER_UNEXPECTED")return;me(e,{tags:{name:e.name,type:e.type,...t}});return}let n=e instanceof Error?e:Me(e);me(n,{tags:{name:n.name,...t}})}o(M,"reportConnectionFailure");function Y(e,t){return{walletName:e,namespace:t.namespace,chain:t.network||null,origin:"auto"}}o(Y,"createAutoConnectEventPayload");function qe(e){return e.namespace==="EVM"}o(qe,"isEvmNamespaceInput");var U=new I(P);async function Ke(e,t,n){let{getHub:m,allBlockChains:s,emitter:C}=n,p=m().get(e);if(!p)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 d=[];t.forEach(r=>{let c=r.namespace,i=p.findByNamespace(c);if(!i)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${r.namespace})`);d.push([r,i])});let u=d.map(([r,c])=>{let l=(qe(r)?G(r,s||[]):void 0)||r.network;return async()=>{let h;F(c)?h=o(async()=>c.connect(l),"connectNamespacePromise"):h=o(async()=>c.connect(),"connectNamespacePromise");let w=Y(e,r);try{let y=await h();C?.emit(T,{type:"walletConnected",payload:{...w,chain:j(B(y).network,s)}})}catch(y){throw M(y,{walletType:e,namespace:r.namespace,origin:"auto"}),C?.emit(T,{type:"walletConnectFailed",payload:w}),y instanceof Error?y:new Error(y)}}}),v=await K(u),f=d.filter((r,c)=>v[c].err).map(r=>r[0]);if(f.length>0&&U.removeNamespacesFromWallet(e,f.map(r=>r.namespace)),!v.some(r=>r.ok))throw new Error(`No namespace connected for ${e}`);return Ue.all(...v.filter(r=>r.ok)).unwrap()}o(Ke,"eagerConnect");async function $e(e,t){let n=[],m=[],s=[],C=[];e.forEach(d=>{let u=t.findByNamespace(d.namespace);u?(n.push(d),C.push(async()=>await u.canEagerConnect())):s.push(d)});let p=await K(C);return n.forEach((d,u)=>{p[u].ok&&p[u].val?m.push(d):s.push(d)}),{successNamespaces:m,failedNamespaces:s}}o($e,"tryRunCanEagerConnect");async function ue(e){let{getHub:t,allBlockChains:n,wallets:m,emitter:s}=e,C=U.list(),p=Object.keys(C),d=[];if(p.length){let u=[],v=m?.map(f=>typeof f=="string"?f:f.id);p.forEach(async f=>{if(v&&!v.includes(f)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",f),d.push(f);return}let a=t().get(f),r=C[f].map(l=>({namespace:l.namespace,network:l.network}));if(!r.length||!a){d.push(f);return}r.forEach(l=>{s?.emit(T,{type:"walletConnectInitiated",payload:Y(f,l)})});let{successNamespaces:c,failedNamespaces:i}=await $e(r,a);if(i.forEach(l=>{s?.emit(T,{type:"walletConnectFailed",payload:Y(f,l)})}),c.length)i.length&&U.removeNamespacesFromWallet(a.id,i.map(l=>l.namespace));else{d.push(f);return}u.push(Ke(f,c,{allBlockChains:n,getHub:t,emitter:s}).catch(l=>console.warn(l)))}),U.removeWallets(d),await Promise.all(u)}}o(ue,"autoConnect");import{useEffect as Ge,useRef as Ye}from"react";function de(e){let t=Ye(!1);Ge(()=>{oe(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}o(de,"useAutoConnect");import{createStore as Qe,Hub as Ve}from"@hub3js/core";import{useRef as fe}from"react";function Ce(e){let t=fe(null),n=fe(null);function m(){let p=new Ve({store:s()});return e.forEach(d=>{p.add(d.id,d)}),n.current=p,p}o(m,"createHub");function s(){if(t.current!==null)return t.current;let p=Qe();return t.current=p,p}o(s,"getStore");function C(){let p=n.current?.getAll();return!n.current||!p?m():(se(n.current,e),n.current)}return o(C,"getHub"),{getStore:s,getHub:C}}o(Ce,"useHubRefs");function X(e){let{getStore:t,getHub:n}=Ce(e.providers),[,m]=Je(0),s=V({onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains,emitter:e.emitter}),C=V(!1),p=V({}),d=o((a,r)=>{p.current[a]=r||[]},"updateLastConnectAttemptParams"),u=ne({onError:(a,r)=>{a instanceof Xe&&a.type!=="PROVIDER_UNEXPECTED"&&r.removeCurrentKeyFromQueue()}});Q(()=>{s.current={onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains,emitter:e.emitter}},[e]),Q(()=>{let a=o((c,i,l,h,w)=>{i==="installed"&&h.installed&&pe(c,s.current.emitter),s.current.onUpdateState?.(c,i,l,h,w)},"onUpdateState"),r=o(c=>{try{re(n(),c,a,{allBlockChains:s.current.allBlockChains,lastConnectAttemptParams:p.current})}catch(i){console.error(i)}m(i=>i+1)},"onStoreEvent");t().subscribe(r).flushEvents()},[]),Q(()=>{C.current||!e.allBlockChains?.length||(n().init(e.configs?.walletOptions),m(a=>a+1),C.current=!0)},[e.allBlockChains,e.configs?.walletOptions]),de({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{ue({allBlockChains:e.allBlockChains,getHub:n,wallets:e.configs?.wallets,emitter:s.current.emitter})}});let v=new I(P);return{canSwitchNetworkTo(a,r,c){let i=n().get(a);if(!i)return!1;if(!c)throw new Error("Passing namespace to `canSwitchNetworkTo` is required.");let l=i.findByNamespace(c.namespace);if(!l)throw new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${c.namespace})`);if(!("canSwitchNetwork"in l))return!1;let h=i.info()?.metadata?.properties?.find(g=>g.name==="namespaces");if(!s.current.allBlockChains)throw new Error("Blockchains are not available");let w=h?.value.data.find(g=>g.value===c.namespace);if(!w)throw new Error(`NamespaceMeta is not defined for requested namespace: ${c.namespace}`);let y=ze(w,s.current.allBlockChains);return l.canSwitchNetwork({network:r,supportedChains:y})},async connect(a,r){let c=n().get(a);if(!c)throw new Error(`You should add ${a} to provider first then call 'connect'.`);if(!r)throw new Error("Passing namespace to `connect` is required.");d(a,r);let i=[];r.forEach(E=>{let N=E.namespace,k=c.findByNamespace(N);if(!k)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${E.namespace})`);i.push([E,k])});let l=i.map(async([E,N])=>{let k=ae(E,e.allBlockChains||[]),S;ce(N)?S=o(async()=>N.connect({derivationPath:E.derivationPath}),"connectNamespacePromise"):F(N)?S=o(async()=>N.connect(k,{derivationPath:E.derivationPath}),"connectNamespacePromise"):ie(N)?S=o(async()=>N.connect({derivationPath:E.derivationPath}),"connectNamespacePromise"):S=o(async()=>N.connect(),"connectNamespacePromise");let D=o(async()=>S().catch(A=>{throw M(A,{walletType:a,namespace:E.namespace,origin:"manual"}),A}).then(B).then(A=>({response:A,input:{namespace:E.namespace,network:E.network,supportsEagerConnect:"canEagerConnect"in N}})),"connectNamespaceProcess");return u(o(async()=>{if(N.state()[0]().connected)return D();let A={walletName:a,namespace:E.namespace,origin:"manual"},z=E.network||null;s.current.emitter?.emit(T,{type:"walletConnectInitiated",payload:{...A,chain:z}});try{let _=await D();return s.current.emitter?.emit(T,{type:"walletConnected",payload:{...A,chain:j(_.response.network,e.allBlockChains)}}),_}catch(_){throw s.current.emitter?.emit(T,{type:"walletConnectFailed",payload:{...A,chain:z}}),_}},"connectNamespaceProcessWithEvents"),a)}),h=await Promise.all(l),w=h.filter(E=>E.ok).filter(E=>E.val.input.supportsEagerConnect).map(E=>({namespace:E.val.input.namespace,network:E.val.input.network}));w.length>0&&v.addWallet(a,w);let y=h.map(E=>E.andThen(N=>new et(N.response))),g=tt.all(...y);if(g.err)throw g.val;return g.unwrap()},async disconnect(a,r){let c=n().get(a);if(!c)throw new Error(`You should add ${a} to provider first then call 'disconnect'.`);c.getAll().forEach(i=>{let l=!r||r.includes(i.namespaceId),h=i.state()[0]().connected;if(l&&h)return s.current.emitter?.emit(T,{type:"walletDisconnected",payload:{walletName:a,namespace:i.namespaceId}}),i.disconnect()}),e.autoConnect&&(r?v.removeNamespacesFromWallet(a,r):v.removeWallets([a]))},async disconnectAll(){let a=Array.from(n().getAll().values()).map(async r=>this.disconnect(r.id));return await Promise.allSettled(a)},async getSigners(a){let r=n().get(a);if(!r)throw new Error(`You should add ${a} to provider first.`);let c=r.info();if(!c)throw new Error("Your provider should have required `info`.");let l=c.metadata.properties?.find(h=>h.name==="signers");if(!l)throw new Error("Your provider should contain signers property.");return l.value.getSigners()},getWalletInfo(a){let r=n().get(a);if(!r)throw new Error(`You should add ${a} to provider first.`);let c=r.info();if(!c)throw new Error("Your provider should have required `info`.");let i={DEFAULT:""},{metadata:l}=c,{extensions:h}=l;Object.keys(h).forEach(N=>{let k=N;if(k==="homepage"&&(i.DEFAULT=h[k]||""),["firefox","chrome","brave","edge"].includes(k)){let D=k.toUpperCase();i[D]=h[k]||""}});let w=l.properties,y=w?.find(N=>N.name==="namespaces"),g=w?.find(N=>N.name==="derivationPath"),E=w?.find(N=>N.name==="details");return{name:l.name,img:l.icon,installLink:i,color:"red",supportedChains:Ze(r,s.current.allBlockChains),isContractWallet:E?.value?.isContractWallet,mobileWallet:E?.value?.mobileWallet,showOnMobile:E?.value?.showOnMobile,needsNamespace:y?.value,needsDerivationPath:g?.value,isHub:!0,properties:l.properties}},state(a){let r=n().state(),c=n().get(a),i=r[a];if(!i||!c)return{connected:!1,connecting:!1,installed:!1,reachable:!1,accounts:null,network:null,namespaces:new Map};let l=i.namespaces.filter(y=>y.connected).flatMap(y=>y.accounts?.map(g=>L(g))).filter(y=>!!y),h=new Map(Array.from(c.getAll(),([y,g])=>[g.namespaceId,g.state()[0]()]));return{connected:i.connected,connecting:i.connecting,installed:i.installed,reachable:!0,accounts:l,network:null,namespaces:h}},async suggestAndConnect(a,r){let c=n().get(a);if(!c)throw new Error(`You should add ${a} to provider first then call 'suggestAndConnect'.`);let i=c.findByNamespace(r.namespace);throw i?"suggest"in i?r.network?new Error(`Suggest has not been implemented for given chain: ${r.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: ${r.namespace})`)},hubProvider(a){let r=$(e.providers,a);if(!r)throw new Error(`You're trying to access ${a} provider which is not found in hub providers. it may not be registered yet.`);return r}}}o(X,"useHubAdapter");function ot(e){let t=X(e);return nt.createElement(O.Provider,{value:t},e.children)}o(ot,"Provider");var rt=ot;import{useContext as at}from"react";function st(){let e=at(O);if(!e)throw Error("useWallet can only be used within the Provider component");return e}o(st,"useWallets");export{R as Events,rt as Provider,T as WalletEventChannel,H as WalletEventTypes,st as useWallets};
2
2
  //# sourceMappingURL=index.js.map