@rango-dev/wallets-core 0.1.16-next.5 → 0.1.16-next.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["src/provider.tsx"],"names":[],"mappings":";AAgBA,OAAO,EACL,aAAa,EACb,eAAe,EAGhB,MAAM,SAAS,CAAC;AAgEjB,iBAAS,QAAQ,CAAC,KAAK,EAAE,aAAa,eAgKrC;AAED,wBAAgB,UAAU,IAAI,eAAe,CAK5C;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["src/provider.tsx"],"names":[],"mappings":";AAgBA,OAAO,EACL,aAAa,EACb,eAAe,EAGhB,MAAM,SAAS,CAAC;AAgEjB,iBAAS,QAAQ,CAAC,KAAK,EAAE,aAAa,eAmKrC;AAED,wBAAgB,UAAU,IAAI,eAAe,CAK5C;AAED,eAAe,QAAQ,CAAC"}
package/dist/types.d.ts CHANGED
@@ -45,6 +45,7 @@ export declare type GetInstanceOptions = {
45
45
  currentProvider: any;
46
46
  meta: BlockchainMeta[];
47
47
  force?: boolean;
48
+ updateChainId: (chainId: number | string) => void;
48
49
  };
49
50
  export declare type GetInstance = (() => any) | ((options: GetInstanceOptions) => Promise<any>);
50
51
  export declare type TryGetInstance = (() => any) | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);
@@ -75,6 +76,7 @@ export declare type SwitchNetwork = (options: {
75
76
  export declare type CanSwitchNetwork = (options: {
76
77
  network: Network;
77
78
  meta: BlockchainMeta[];
79
+ provider: any;
78
80
  }) => boolean;
79
81
  export interface WalletActions {
80
82
  connect: Connect;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"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"}
package/dist/wallet.d.ts CHANGED
@@ -38,7 +38,7 @@ declare class Wallet<InstanceType = any> {
38
38
  disconnect(): Promise<void>;
39
39
  getSigners(provider: any): import("rango-types/lib").SignerFactory;
40
40
  getWalletInfo(allBlockChains: BlockchainMeta[]): import("@rango-dev/wallets-shared").WalletInfo;
41
- canSwitchNetworkTo(network: Network): boolean;
41
+ canSwitchNetworkTo(network: Network, provider: any): boolean;
42
42
  onInit(): void;
43
43
  setProvider(value: any): void;
44
44
  setMeta(value: BlockchainMeta[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,MAAM,EAEN,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,oBAAY,YAAY,GAAG,CACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,KAAK,EAChB,eAAe,EAAE,cAAc,EAAE,KAC9B,IAAI,CAAC;AAEV,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,cAAM,MAAM,CAAC,YAAY,GAAG,GAAG;IAC7B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAmB;IACxB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;gBAEzB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa;IAoB9C,eAAe;;;;;IAiBf,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;;;;;;;;;IAsHzB,UAAU;IAchB,UAAU,CAAC,QAAQ,EAAE,GAAG;IAGxB,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE;IAG9C,kBAAkB,CAAC,OAAO,EAAE,OAAO;IAUnC,MAAM;IASN,WAAW,CAAC,KAAK,EAAE,GAAG;IAoCtB,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE;IAI/B,UAAU,CAAC,OAAO,EAAE,YAAY;IAIhC,QAAQ,IAAI,KAAK;IAGjB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;IA0ClC,UAAU;IAUV,OAAO,CAAC,cAAc;YAOR,cAAc;CAyC7B;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,UAAU,EACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,MAAM,EAEN,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,oBAAY,YAAY,GAAG,CACzB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,KAAK,EAChB,eAAe,EAAE,cAAc,EAAE,KAC9B,IAAI,CAAC;AAEV,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,cAAM,MAAM,CAAC,YAAY,GAAG,GAAG;IAC7B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAmB;IACxB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;gBAEzB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa;IAoB9C,eAAe;;;;;IAiBf,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;;;;;;;;;IAuHzB,UAAU;IAchB,UAAU,CAAC,QAAQ,EAAE,GAAG;IAGxB,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE;IAG9C,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG;IAWlD,MAAM;IASN,WAAW,CAAC,KAAK,EAAE,GAAG;IAmCtB,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE;IAI/B,UAAU,CAAC,OAAO,EAAE,YAAY;IAIhC,QAAQ,IAAI,KAAK;IAGjB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;IA0ClC,UAAU;IAUV,OAAO,CAAC,cAAc;YAOR,cAAc;CA+C7B;AAED,eAAe,MAAM,CAAC"}
@@ -570,6 +570,7 @@ var Wallet = /*#__PURE__*/function () {
570
570
  instance: this.provider,
571
571
  meta: this.meta,
572
572
  // TODO: Fix type error
573
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
573
574
  // @ts-ignore
574
575
  network: requestedNetwork,
575
576
  newInstance: this.tryGetInstance.bind(this)
@@ -690,12 +691,13 @@ var Wallet = /*#__PURE__*/function () {
690
691
  _proto.getWalletInfo = function getWalletInfo(allBlockChains) {
691
692
  return this.actions.getWalletInfo(allBlockChains);
692
693
  };
693
- _proto.canSwitchNetworkTo = function canSwitchNetworkTo(network) {
694
+ _proto.canSwitchNetworkTo = function canSwitchNetworkTo(network, provider) {
694
695
  var switchTo = this.actions.canSwitchNetworkTo;
695
696
  if (!switchTo) return false;
696
697
  return switchTo({
697
698
  network: network,
698
- meta: this.meta
699
+ meta: this.meta,
700
+ provider: provider
699
701
  });
700
702
  };
701
703
  _proto.onInit = function onInit() {
@@ -729,7 +731,7 @@ var Wallet = /*#__PURE__*/function () {
729
731
  }
730
732
  },
731
733
  updateChainId: function updateChainId(chainId) {
732
- var network = !!chainId ? walletsShared.getBlockChainNameFromId(chainId, _this3.meta) : walletsShared.Network.Unknown;
734
+ var network = chainId ? walletsShared.getBlockChainNameFromId(chainId, _this3.meta) : walletsShared.Network.Unknown;
733
735
  _this3.updateState({
734
736
  network: network
735
737
  });
@@ -799,6 +801,7 @@ var Wallet = /*#__PURE__*/function () {
799
801
  };
800
802
  _proto.tryGetInstance = /*#__PURE__*/function () {
801
803
  var _tryGetInstance = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref2) {
804
+ var _this5 = this;
802
805
  var network, force, instance, instanceOptions, error_message;
803
806
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
804
807
  while (1) switch (_context4.prev = _context4.next) {
@@ -816,7 +819,13 @@ var Wallet = /*#__PURE__*/function () {
816
819
  instanceOptions = {
817
820
  currentProvider: this.provider,
818
821
  meta: this.meta,
819
- force: force || false
822
+ force: force || false,
823
+ updateChainId: function updateChainId(chainId) {
824
+ var network = chainId ? walletsShared.getBlockChainNameFromId(chainId, _this5.meta) : walletsShared.Network.Unknown;
825
+ _this5.updateState({
826
+ network: network
827
+ });
828
+ }
820
829
  };
821
830
  if (network) {
822
831
  instanceOptions.network = network;
@@ -907,6 +916,7 @@ function Provider(props) {
907
916
  var wallets = checkWalletProviders(listOfProviders);
908
917
  var api = {
909
918
  // TODO: Fix type error
919
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
910
920
  // @ts-ignore
911
921
  connect: function connect(type, network) {
912
922
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -968,7 +978,7 @@ function Provider(props) {
968
978
  // filter connected wallets only.
969
979
  connectedWallets(providersState).forEach(function (type) {
970
980
  var wallet = wallets.get(type);
971
- if (!!wallet) {
981
+ if (wallet) {
972
982
  var ref = addWalletRef(wallet);
973
983
  disconnect_promises.push(ref.disconnect());
974
984
  }
@@ -993,13 +1003,13 @@ function Provider(props) {
993
1003
  return false;
994
1004
  }
995
1005
  var ref = addWalletRef(wallet);
996
- return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;
1006
+ return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network, ref.provider) : false;
997
1007
  },
998
1008
  providers: function providers() {
999
1009
  var providers = {};
1000
1010
  availableWallets(providersState).forEach(function (type) {
1001
1011
  var wallet = wallets.get(type);
1002
- if (!!wallet) {
1012
+ if (wallet) {
1003
1013
  var ref = addWalletRef(wallet);
1004
1014
  providers[type] = ref.provider;
1005
1015
  }
@@ -1031,7 +1041,7 @@ function Provider(props) {
1031
1041
  wallets.forEach(function (wallet) {
1032
1042
  var ref = addWalletRef(wallet);
1033
1043
  var runOnInit = function runOnInit() {
1034
- if (!!ref.onInit) {
1044
+ if (ref.onInit) {
1035
1045
  ref.onInit();
1036
1046
  }
1037
1047
  };
@@ -1050,7 +1060,7 @@ function Provider(props) {
1050
1060
  }, []);
1051
1061
  React.useEffect(function () {
1052
1062
  var allBlockChains = props.allBlockChains;
1053
- if (!!allBlockChains) {
1063
+ if (allBlockChains) {
1054
1064
  wallets.forEach(function (wallet) {
1055
1065
  var ref = addWalletRef(wallet);
1056
1066
  var supportedChains = ref.getWalletInfo(props.allBlockChains || []).supportedChains;
@@ -1 +1 @@
1
- {"version":3,"file":"wallets-core.cjs.development.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletTypes.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n supportedChains: BlockchainMeta[]\n) => void;\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private meta: BlockchainMeta[];\n public provider: InstanceType | null;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.meta = [];\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\n\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n // TODO: call actions.eagerConnection\n return null;\n }\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\n // If a network hasn't been provided and also we have `lastNetwork`\n // We will use lastNetwork to make sure we will not\n // Ask the user to switch his network wrongly.\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.meta || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as Network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n });\n }\n }\n\n setMeta(value: BlockchainMeta[]) {\n this.meta = value;\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n updateState(states: Partial<State>) {\n // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\n\n this.updateState({\n installed: value,\n });\n }\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n this.setProvider(null);\n\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key: string]: Wallet | undefined;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers;\n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","_extends4","_extends5","target_wallet","_extends2","_extends3","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","_addressWithNetwork$s","split","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","isAsync","fn","_fn$constructor","constructor","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletTypes","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","_this","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_callee2$","_context2","Error","sent","defaultNetwork","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_callee3$","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","error_message","_callee4$","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","_useReducer","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"wallets-core.cjs.development.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletTypes.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n};\n\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: any;\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n supportedChains: BlockchainMeta[]\n) => void;\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private meta: BlockchainMeta[];\n public provider: InstanceType | null;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.meta = [];\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\n\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n // TODO: call actions.eagerConnection\n return null;\n }\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\n // If a network hasn't been provided and also we have `lastNetwork`\n // We will use lastNetwork to make sure we will not\n // Ask the user to switch his network wrongly.\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (eagerConnection) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.meta || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as Network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n });\n }\n }\n\n setMeta(value: BlockchainMeta[]) {\n this.meta = value;\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n updateState(states: Partial<State>) {\n // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\n\n this.updateState({\n installed: value,\n });\n }\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n this.setProvider(null);\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key: string]: Wallet | undefined;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers;\n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo\n ? ref.canSwitchNetworkTo(network, ref.provider)\n : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","_extends4","_extends5","target_wallet","_extends2","_extends3","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","_addressWithNetwork$s","split","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","isAsync","fn","_fn$constructor","constructor","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletTypes","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","_this","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_callee2$","_context2","Error","sent","defaultNetwork","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_callee3$","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","_this5","force","instanceOptions","error_message","_callee4$","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","_useReducer","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("@walletconnect/ethereum-provider")),n=require("@rango-dev/wallets-shared"),r=require("rango-types"),o=require("react"),i=t(o);function a(){a=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function l(t,e,n,o){var i=Object.create((e&&e.prototype instanceof d?e:d).prototype),a=new S(o||[]);return r(i,"_invoke",{value:b(t,n,a)}),i}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f={};function d(){}function p(){}function v(){}var w={};u(w,i,(function(){return this}));var g=Object.getPrototypeOf,y=g&&g(g(C([])));y&&y!==e&&n.call(y,i)&&(w=y);var m=v.prototype=d.prototype=Object.create(w);function k(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){var o;r(this,"_invoke",{value:function(r,i){function a(){return new e((function(o,a){!function r(o,i,a,c){var s=h(t[o],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,c)}))}c(s.arg)}(r,i,o,a)}))}return o=o?o.then(a,a):a()}})}function b(t,e,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=E(a,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=h(t,e,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(t,e){var n=e.method,r=t.iterator[n];if(void 0===r)return e.delegate=null,"throw"===n&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=h(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function N(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(N,this),this.reset(!0)}function C(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=v,r(m,"constructor",{value:v,configurable:!0}),r(v,"constructor",{value:p,configurable:!0}),p.displayName=u(v,s,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,u(t,s,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},k(x.prototype),u(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,n,r,o,i){void 0===i&&(i=Promise);var a=new x(l(e,n,r,o),i);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(m),u(m,s,"Generator"),u(m,i,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},t.values=C,S.prototype={constructor:S,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(I),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return a.type="throw",a.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;I(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:C(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}function c(t,e,n,r,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void n(t)}c.done?e(s):Promise.resolve(s).then(r,o)}function s(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function a(t){c(i,r,o,a,s,"next",t)}function s(t){c(i,r,o,a,s,"throw",t)}a(void 0)}))}}function u(){return(u=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var l,h=["config"],f={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function d(t,e){if("new_state"===e.type){var n,r,o,i,a=t[e.wallet];return u({},t,a?((r={})[e.wallet]=u({},a,((n={})[e.name]=e.value,n)),r):((i={})[e.wallet]=u({},f,((o={})[e.name]=e.value,o)),i))}return t}function p(t,e){return(e||"")+":"+t}function v(t,e){return t?t.map((function(t){return p(t,e)})):[]}function w(t){return Object.entries(t).filter((function(t){var e=t[1];return null==e?void 0:e.connected})).map((function(t){return t[0]}))}function g(t){return Object.entries(t).map((function(t){return t[0]}))}function y(t){var e=new Map;return t.forEach((function(t){var n=t.config,r=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)e.indexOf(n=i[r])>=0||(o[n]=t[n]);return o}(t,h);e.set(n.type,{actions:r,config:n})})),e}function m(t){var e=t.config.checkInstallation;return void 0===e||e}function k(t){return t===n.WalletTypes.WALLET_CONNECT}function x(t,o,i){if(k(i)){var a=t.filter(r.isEvmBlockchain),c=n.evmChainsToRpcMap(n.convertEvmBlockchainMetaToEvmChainInfo(a));return new e({qrcode:!1,rpc:c,connector:o,chainId:o.chainId})}return o}(l=exports.Events||(exports.Events={})).CONNECTED="connected",l.CONNECTING="connecting",l.REACHABLE="reachable",l.INSTALLED="installed",l.ACCOUNTS="accounts",l.NETWORK="network";var b=function(){function t(t,e){this.actions=e,this.options=t,this.provider=null,this.meta=[],this.state={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null},m(t)||this.setInstalledAs(!0)}var e=t.prototype;return e.eagerConnection=function(){var t=s(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connected||!this.provider){t.next=2;break}return t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 2:return t.abrupt("return",null);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.connect=function(){var t=s(a().mark((function t(e){var r,o,i,c,s,u,l,h,f,d,p=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connecting){t.next=2;break}throw new Error("Connecting...");case 2:return t.next=4,this.eagerConnection();case 4:if(o=this.state.network,i=e||o||this.options.config.defaultNetwork,!(r=t.sent)){t.next=15;break}if(c=o!==i&&!!i,o!==i){t.next=11;break}return t.abrupt("return",r);case 11:if(!c||!this.actions.switchNetwork){t.next=15;break}return t.next=14,this.actions.switchNetwork({instance:this.provider,meta:this.meta,network:i,newInstance:this.tryGetInstance.bind(this)});case 14:return t.abrupt("return",{accounts:r.accounts,network:i,provider:this.provider});case 15:return t.next=17,this.tryGetInstance({network:e});case 17:return s=t.sent,this.updateState({connecting:!0}),this.setInstalledAs(!0),t.prev=20,t.next=23,this.actions.connect({instance:s,network:i||void 0,meta:this.meta||[]});case 23:u=t.sent,t.next=30;break;case 26:throw t.prev=26,t.t0=t.catch(20),this.resetState(),t.t0;case 30:return this.updateState({connected:!0,reachable:!0,connecting:!1}),l=[],h=null,Array.isArray(u)?(f=u.flatMap((function(t){var e=n.getBlockChainNameFromId(t.chainId||n.Network.Unknown,p.meta)||n.Network.Unknown;return v(t.accounts,e)})),l=f.filter(Boolean),h=i||this.options.config.defaultNetwork):(d=n.getBlockChainNameFromId(u.chainId||n.Network.Unknown,this.meta)||n.Network.Unknown,l=v(u.accounts,d),h=d),l.length>0&&this.updateState({accounts:l,network:h}),t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 36:case"end":return t.stop()}}),t,this,[[20,26]])})));return function(e){return t.apply(this,arguments)}}(),e.disconnect=function(){var t=s(a().mark((function t(){var e=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.resetState(),this.actions.disconnect&&this.actions.disconnect({instance:this.provider,destroyInstance:function(){e.setProvider(null)}});case 2:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getSigners=function(t){return this.actions.getSigners(t)},e.getWalletInfo=function(t){return this.actions.getWalletInfo(t)},e.canSwitchNetworkTo=function(t){var e=this.actions.canSwitchNetworkTo;return!!e&&e({network:t,meta:this.meta})},e.onInit=function(){this.options.config.isAsyncInstance||this.actions.getInstance()&&!this.state.installed&&this.setInstalledAs(!0)},e.setProvider=function(t){var e=this;this.provider=t,t&&this.actions.subscribe&&this.actions.subscribe({instance:t,state:this.state,meta:this.meta,connect:this.connect.bind(this),disconnect:this.disconnect.bind(this),updateAccounts:function(t,r){var o=e.state.network;r&&(o=n.getBlockChainNameFromId(r,e.meta)||n.Network.Unknown);var i=v(t,o);i.length>0&&e.updateState({accounts:i})},updateChainId:function(t){var r=t?n.getBlockChainNameFromId(t,e.meta):n.Network.Unknown;e.updateState({network:r})}})},e.setMeta=function(t){this.meta=t},e.setHandler=function(t){this.options.handler=t},e.getState=function(){return this.state},e.updateState=function(t){var e=this,n=[];void 0!==t.connected&&(this.state.connected=t.connected,n.push([exports.Events.CONNECTED,t.connected])),void 0!==t.connecting&&(this.state.connecting=t.connecting,n.push([exports.Events.CONNECTING,t.connecting])),void 0!==t.reachable&&(this.state.reachable=t.reachable,n.push([exports.Events.REACHABLE,t.reachable])),void 0!==t.installed&&(this.state.installed=t.installed,n.push([exports.Events.INSTALLED,t.installed])),void 0!==t.accounts&&(this.state.accounts=t.accounts,n.push([exports.Events.ACCOUNTS,t.accounts])),void 0!==t.network&&(this.state.network=t.network,n.push([exports.Events.NETWORK,t.network]));var r=this.getState();n.forEach((function(t){e.options.handler(e.options.config.type,t[0],t[1],r,e.meta)}))},e.resetState=function(){this.updateState({connected:!1,connecting:!1,reachable:!1,accounts:null,network:null})},e.setInstalledAs=function(t){(m(this.options)||!1!==t)&&this.updateState({installed:t})},e.tryGetInstance=function(){var t=s(a().mark((function t(e){var n,r,o,i;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.network,r=e.force,o=null,this.setProvider(null),!this.options.config.isAsyncInstance){t.next=11;break}return i={currentProvider:this.provider,meta:this.meta,force:r||!1},n&&(i.network=n),t.next=8,this.actions.getInstance(i);case 8:o=t.sent,t.next=12;break;case 11:o=this.actions.getInstance();case 12:if(o){t.next=17;break}throw this.setInstalledAs(!1),this.resetState(),new Error("It seems your selected wallet ("+this.options.config.type+") isn't installed.");case 17:return this.setProvider(o),t.abrupt("return",o);case 19:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}(),E=o.createContext({});function N(t,e){return function(n,r,o,i,a){t({type:"new_state",wallet:n,name:r,value:o}),e&&e(n,r,o,i,a)}}exports.Provider=function(t){var e=o.useReducer(d,{}),n=e[0],r=e[1],c=function(t){var e=o.useRef({});return function(n){var r=n.config.type;return void 0===e.current[r]&&(e.current[r]=new b({config:n.config,handler:t},n.actions)),e.current[r]}}(N(r,t.onUpdateState)),u=y(t.providers),l={connect:function(t,e){return s(a().mark((function n(){var r,o;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=u.get(t)){n.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return o=c(r),n.next=6,o.connect(e);case 6:return n.abrupt("return",n.sent);case 8:case"end":return n.stop()}}),n)})))()},disconnect:function(t){return s(a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=u.get(t)){e.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return r=c(n),e.next=6,r.disconnect();case 6:case"end":return e.stop()}}),e)})))()},disconnectAll:function(){return s(a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=[],w(n).forEach((function(t){var n=u.get(t);if(n){var r=c(n);e.push(r.disconnect())}})),t.next=4,Promise.allSettled(e);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})))()},state:function(t){return n[t]||f},canSwitchNetworkTo:function(t,e){var n=u.get(t);if(!n)return!1;var r=c(n);return!!r.canSwitchNetworkTo&&r.canSwitchNetworkTo(e)},providers:function(){var t={};return g(n).forEach((function(e){var n=u.get(e);if(n){var r=c(n);t[e]=r.provider}})),t},getWalletInfo:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");return n.actions.getWalletInfo(t.allBlockChains||[])},getSigners:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");var r=c(n),o=x(r.getWalletInfo(t.allBlockChains||[]).supportedChains,r.provider,e);return r.getSigners(o)}};return o.useEffect((function(){u.forEach((function(t){var e=c(t),n=function(){e.onInit&&e.onInit()};n(),document.addEventListener("readystatechange",(function t(e){e.target&&"complete"===e.target.readyState&&(n(),document.removeEventListener("readystatechange",t))}))}))}),[]),o.useEffect((function(){t.allBlockChains&&u.forEach((function(e){var n=c(e),r=n.getWalletInfo(t.allBlockChains||[]).supportedChains;n.setMeta(r)}))}),[t.allBlockChains]),o.useEffect((function(){u.forEach((function(e){c(e).setHandler(N(r,t.onUpdateState))}))}),[t.onUpdateState]),i.createElement(E.Provider,{value:l},t.children)},exports.accountAddressesWithNetwork=v,exports.availableWallets=g,exports.checkWalletProviders=y,exports.choose=function(t,e){return t.find((function(t){return t.type===e}))||null},exports.connectedWallets=w,exports.defaultWalletState=f,exports.formatAddressWithNetwork=p,exports.getComptaibleProvider=x,exports.isAsync=function(t){var e;return"AsyncFunction"===(null==t||null==(e=t.constructor)?void 0:e.name)},exports.isWalletDerivedFromWalletConnect=k,exports.needsCheckInstallation=m,exports.readAccountAddress=function(t){var e=t.split(":");return{network:e[0],address:e[1]}},exports.state_reducer=d,exports.useWallets=function(){var t=o.useContext(E);if(!t)throw Error("useWallet can only be used within the Provider component");return t};
1
+ "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("@walletconnect/ethereum-provider")),n=require("@rango-dev/wallets-shared"),r=require("rango-types"),o=require("react"),i=t(o);function a(){a=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function l(t,e,n,o){var i=Object.create((e&&e.prototype instanceof d?e:d).prototype),a=new S(o||[]);return r(i,"_invoke",{value:b(t,n,a)}),i}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f={};function d(){}function p(){}function v(){}var w={};u(w,i,(function(){return this}));var g=Object.getPrototypeOf,y=g&&g(g(C([])));y&&y!==e&&n.call(y,i)&&(w=y);var m=v.prototype=d.prototype=Object.create(w);function k(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){var o;r(this,"_invoke",{value:function(r,i){function a(){return new e((function(o,a){!function r(o,i,a,c){var s=h(t[o],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,c)}))}c(s.arg)}(r,i,o,a)}))}return o=o?o.then(a,a):a()}})}function b(t,e,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=E(a,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=h(t,e,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(t,e){var n=e.method,r=t.iterator[n];if(void 0===r)return e.delegate=null,"throw"===n&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=h(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function N(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(N,this),this.reset(!0)}function C(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=v,r(m,"constructor",{value:v,configurable:!0}),r(v,"constructor",{value:p,configurable:!0}),p.displayName=u(v,s,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,u(t,s,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},k(x.prototype),u(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,n,r,o,i){void 0===i&&(i=Promise);var a=new x(l(e,n,r,o),i);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(m),u(m,s,"Generator"),u(m,i,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},t.values=C,S.prototype={constructor:S,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(I),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return a.type="throw",a.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;I(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:C(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}function c(t,e,n,r,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void n(t)}c.done?e(s):Promise.resolve(s).then(r,o)}function s(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function a(t){c(i,r,o,a,s,"next",t)}function s(t){c(i,r,o,a,s,"throw",t)}a(void 0)}))}}function u(){return(u=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var l,h=["config"],f={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function d(t,e){if("new_state"===e.type){var n,r,o,i,a=t[e.wallet];return u({},t,a?((r={})[e.wallet]=u({},a,((n={})[e.name]=e.value,n)),r):((i={})[e.wallet]=u({},f,((o={})[e.name]=e.value,o)),i))}return t}function p(t,e){return(e||"")+":"+t}function v(t,e){return t?t.map((function(t){return p(t,e)})):[]}function w(t){return Object.entries(t).filter((function(t){var e=t[1];return null==e?void 0:e.connected})).map((function(t){return t[0]}))}function g(t){return Object.entries(t).map((function(t){return t[0]}))}function y(t){var e=new Map;return t.forEach((function(t){var n=t.config,r=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)e.indexOf(n=i[r])>=0||(o[n]=t[n]);return o}(t,h);e.set(n.type,{actions:r,config:n})})),e}function m(t){var e=t.config.checkInstallation;return void 0===e||e}function k(t){return t===n.WalletTypes.WALLET_CONNECT}function x(t,o,i){if(k(i)){var a=t.filter(r.isEvmBlockchain),c=n.evmChainsToRpcMap(n.convertEvmBlockchainMetaToEvmChainInfo(a));return new e({qrcode:!1,rpc:c,connector:o,chainId:o.chainId})}return o}(l=exports.Events||(exports.Events={})).CONNECTED="connected",l.CONNECTING="connecting",l.REACHABLE="reachable",l.INSTALLED="installed",l.ACCOUNTS="accounts",l.NETWORK="network";var b=function(){function t(t,e){this.actions=e,this.options=t,this.provider=null,this.meta=[],this.state={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null},m(t)||this.setInstalledAs(!0)}var e=t.prototype;return e.eagerConnection=function(){var t=s(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connected||!this.provider){t.next=2;break}return t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 2:return t.abrupt("return",null);case 3:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.connect=function(){var t=s(a().mark((function t(e){var r,o,i,c,s,u,l,h,f,d,p=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.state.connecting){t.next=2;break}throw new Error("Connecting...");case 2:return t.next=4,this.eagerConnection();case 4:if(o=this.state.network,i=e||o||this.options.config.defaultNetwork,!(r=t.sent)){t.next=15;break}if(c=o!==i&&!!i,o!==i){t.next=11;break}return t.abrupt("return",r);case 11:if(!c||!this.actions.switchNetwork){t.next=15;break}return t.next=14,this.actions.switchNetwork({instance:this.provider,meta:this.meta,network:i,newInstance:this.tryGetInstance.bind(this)});case 14:return t.abrupt("return",{accounts:r.accounts,network:i,provider:this.provider});case 15:return t.next=17,this.tryGetInstance({network:e});case 17:return s=t.sent,this.updateState({connecting:!0}),this.setInstalledAs(!0),t.prev=20,t.next=23,this.actions.connect({instance:s,network:i||void 0,meta:this.meta||[]});case 23:u=t.sent,t.next=30;break;case 26:throw t.prev=26,t.t0=t.catch(20),this.resetState(),t.t0;case 30:return this.updateState({connected:!0,reachable:!0,connecting:!1}),l=[],h=null,Array.isArray(u)?(f=u.flatMap((function(t){var e=n.getBlockChainNameFromId(t.chainId||n.Network.Unknown,p.meta)||n.Network.Unknown;return v(t.accounts,e)})),l=f.filter(Boolean),h=i||this.options.config.defaultNetwork):(d=n.getBlockChainNameFromId(u.chainId||n.Network.Unknown,this.meta)||n.Network.Unknown,l=v(u.accounts,d),h=d),l.length>0&&this.updateState({accounts:l,network:h}),t.abrupt("return",{accounts:this.state.accounts,network:this.state.network,provider:this.provider});case 36:case"end":return t.stop()}}),t,this,[[20,26]])})));return function(e){return t.apply(this,arguments)}}(),e.disconnect=function(){var t=s(a().mark((function t(){var e=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.resetState(),this.actions.disconnect&&this.actions.disconnect({instance:this.provider,destroyInstance:function(){e.setProvider(null)}});case 2:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),e.getSigners=function(t){return this.actions.getSigners(t)},e.getWalletInfo=function(t){return this.actions.getWalletInfo(t)},e.canSwitchNetworkTo=function(t,e){var n=this.actions.canSwitchNetworkTo;return!!n&&n({network:t,meta:this.meta,provider:e})},e.onInit=function(){this.options.config.isAsyncInstance||this.actions.getInstance()&&!this.state.installed&&this.setInstalledAs(!0)},e.setProvider=function(t){var e=this;this.provider=t,t&&this.actions.subscribe&&this.actions.subscribe({instance:t,state:this.state,meta:this.meta,connect:this.connect.bind(this),disconnect:this.disconnect.bind(this),updateAccounts:function(t,r){var o=e.state.network;r&&(o=n.getBlockChainNameFromId(r,e.meta)||n.Network.Unknown);var i=v(t,o);i.length>0&&e.updateState({accounts:i})},updateChainId:function(t){var r=t?n.getBlockChainNameFromId(t,e.meta):n.Network.Unknown;e.updateState({network:r})}})},e.setMeta=function(t){this.meta=t},e.setHandler=function(t){this.options.handler=t},e.getState=function(){return this.state},e.updateState=function(t){var e=this,n=[];void 0!==t.connected&&(this.state.connected=t.connected,n.push([exports.Events.CONNECTED,t.connected])),void 0!==t.connecting&&(this.state.connecting=t.connecting,n.push([exports.Events.CONNECTING,t.connecting])),void 0!==t.reachable&&(this.state.reachable=t.reachable,n.push([exports.Events.REACHABLE,t.reachable])),void 0!==t.installed&&(this.state.installed=t.installed,n.push([exports.Events.INSTALLED,t.installed])),void 0!==t.accounts&&(this.state.accounts=t.accounts,n.push([exports.Events.ACCOUNTS,t.accounts])),void 0!==t.network&&(this.state.network=t.network,n.push([exports.Events.NETWORK,t.network]));var r=this.getState();n.forEach((function(t){e.options.handler(e.options.config.type,t[0],t[1],r,e.meta)}))},e.resetState=function(){this.updateState({connected:!1,connecting:!1,reachable:!1,accounts:null,network:null})},e.setInstalledAs=function(t){(m(this.options)||!1!==t)&&this.updateState({installed:t})},e.tryGetInstance=function(){var t=s(a().mark((function t(e){var r,o,i,c,s=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.network,o=e.force,i=null,this.setProvider(null),!this.options.config.isAsyncInstance){t.next=11;break}return c={currentProvider:this.provider,meta:this.meta,force:o||!1,updateChainId:function(t){var e=t?n.getBlockChainNameFromId(t,s.meta):n.Network.Unknown;s.updateState({network:e})}},r&&(c.network=r),t.next=8,this.actions.getInstance(c);case 8:i=t.sent,t.next=12;break;case 11:i=this.actions.getInstance();case 12:if(i){t.next=17;break}throw this.setInstalledAs(!1),this.resetState(),new Error("It seems your selected wallet ("+this.options.config.type+") isn't installed.");case 17:return this.setProvider(i),t.abrupt("return",i);case 19:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}(),E=o.createContext({});function N(t,e){return function(n,r,o,i,a){t({type:"new_state",wallet:n,name:r,value:o}),e&&e(n,r,o,i,a)}}exports.Provider=function(t){var e=o.useReducer(d,{}),n=e[0],r=e[1],c=function(t){var e=o.useRef({});return function(n){var r=n.config.type;return void 0===e.current[r]&&(e.current[r]=new b({config:n.config,handler:t},n.actions)),e.current[r]}}(N(r,t.onUpdateState)),u=y(t.providers),l={connect:function(t,e){return s(a().mark((function n(){var r,o;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=u.get(t)){n.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return o=c(r),n.next=6,o.connect(e);case 6:return n.abrupt("return",n.sent);case 8:case"end":return n.stop()}}),n)})))()},disconnect:function(t){return s(a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=u.get(t)){e.next=3;break}throw new Error("You should add "+t+" to provider first.");case 3:return r=c(n),e.next=6,r.disconnect();case 6:case"end":return e.stop()}}),e)})))()},disconnectAll:function(){return s(a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=[],w(n).forEach((function(t){var n=u.get(t);if(n){var r=c(n);e.push(r.disconnect())}})),t.next=4,Promise.allSettled(e);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})))()},state:function(t){return n[t]||f},canSwitchNetworkTo:function(t,e){var n=u.get(t);if(!n)return!1;var r=c(n);return!!r.canSwitchNetworkTo&&r.canSwitchNetworkTo(e,r.provider)},providers:function(){var t={};return g(n).forEach((function(e){var n=u.get(e);if(n){var r=c(n);t[e]=r.provider}})),t},getWalletInfo:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");return n.actions.getWalletInfo(t.allBlockChains||[])},getSigners:function(e){var n=u.get(e);if(!n)throw new Error("You should add "+e+" to provider first.");var r=c(n),o=x(r.getWalletInfo(t.allBlockChains||[]).supportedChains,r.provider,e);return r.getSigners(o)}};return o.useEffect((function(){u.forEach((function(t){var e=c(t),n=function(){e.onInit&&e.onInit()};n(),document.addEventListener("readystatechange",(function t(e){e.target&&"complete"===e.target.readyState&&(n(),document.removeEventListener("readystatechange",t))}))}))}),[]),o.useEffect((function(){t.allBlockChains&&u.forEach((function(e){var n=c(e),r=n.getWalletInfo(t.allBlockChains||[]).supportedChains;n.setMeta(r)}))}),[t.allBlockChains]),o.useEffect((function(){u.forEach((function(e){c(e).setHandler(N(r,t.onUpdateState))}))}),[t.onUpdateState]),i.createElement(E.Provider,{value:l},t.children)},exports.accountAddressesWithNetwork=v,exports.availableWallets=g,exports.checkWalletProviders=y,exports.choose=function(t,e){return t.find((function(t){return t.type===e}))||null},exports.connectedWallets=w,exports.defaultWalletState=f,exports.formatAddressWithNetwork=p,exports.getComptaibleProvider=x,exports.isAsync=function(t){var e;return"AsyncFunction"===(null==t||null==(e=t.constructor)?void 0:e.name)},exports.isWalletDerivedFromWalletConnect=k,exports.needsCheckInstallation=m,exports.readAccountAddress=function(t){var e=t.split(":");return{network:e[0],address:e[1]}},exports.state_reducer=d,exports.useWallets=function(){var t=o.useContext(E);if(!t)throw Error("useWallet can only be used within the Provider component");return t};
2
2
  //# sourceMappingURL=wallets-core.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallets-core.cjs.production.min.js","sources":["../src/types.ts","../src/helpers.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type WalletProvider = { config: WalletConfig } & WalletActions;\n","import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletTypes.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n supportedChains: BlockchainMeta[]\n) => void;\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private meta: BlockchainMeta[];\n public provider: InstanceType | null;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.meta = [];\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\n\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n // TODO: call actions.eagerConnection\n return null;\n }\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\n // If a network hasn't been provided and also we have `lastNetwork`\n // We will use lastNetwork to make sure we will not\n // Ask the user to switch his network wrongly.\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.meta || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as Network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n });\n }\n }\n\n setMeta(value: BlockchainMeta[]) {\n this.meta = value;\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n updateState(states: Partial<State>) {\n // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\n\n this.updateState({\n installed: value,\n });\n }\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n this.setProvider(null);\n\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key: string]: Wallet | undefined;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers;\n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["Events","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","type","_extends4","_extends5","_extends2","_extends3","target_wallet","wallet","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","wallets","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletTypes","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Wallet","this","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_this","_context2","Error","defaultNetwork","sent","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","getBlockChainNameFromId","Network","Unknown","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","props","_useReducer","useReducer","dispatch","addWalletRef","onChangeState","useRef","current","useInitializers","providers","api","get","ref","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","document","addEventListener","initWhenPageIsReady","event","target","readyState","removeEventListener","React","Provider","children","find","fn","_fn$constructor","constructor","addressWithNetwork","_addressWithNetwork$s","split","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"wallets-core.cjs.production.min.js","sources":["../src/types.ts","../src/helpers.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n};\n\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: any;\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type WalletProvider = { config: WalletConfig } & WalletActions;\n","import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletTypes.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n supportedChains: BlockchainMeta[]\n) => void;\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private meta: BlockchainMeta[];\n public provider: InstanceType | null;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.meta = [];\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\n\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n // TODO: call actions.eagerConnection\n return null;\n }\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\n // If a network hasn't been provided and also we have `lastNetwork`\n // We will use lastNetwork to make sure we will not\n // Ask the user to switch his network wrongly.\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (eagerConnection) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.meta || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as Network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n });\n }\n }\n\n setMeta(value: BlockchainMeta[]) {\n this.meta = value;\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n updateState(states: Partial<State>) {\n // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\n\n this.updateState({\n installed: value,\n });\n }\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n this.setProvider(null);\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key: string]: Wallet | undefined;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers;\n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo\n ? ref.canSwitchNetworkTo(network, ref.provider)\n : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["Events","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","type","_extends4","_extends5","_extends2","_extends3","target_wallet","wallet","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","wallets","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletTypes","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Wallet","this","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_this","_context2","Error","defaultNetwork","sent","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","getBlockChainNameFromId","Network","Unknown","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","_this5","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","props","_useReducer","useReducer","dispatch","addWalletRef","onChangeState","useRef","current","useInitializers","providers","api","get","ref","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","document","addEventListener","initWhenPageIsReady","event","target","readyState","removeEventListener","React","Provider","children","find","fn","_fn$constructor","constructor","addressWithNetwork","_addressWithNetwork$s","split","context","useContext"],"mappings":"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"}
@@ -564,6 +564,7 @@ var Wallet = /*#__PURE__*/function () {
564
564
  instance: this.provider,
565
565
  meta: this.meta,
566
566
  // TODO: Fix type error
567
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
567
568
  // @ts-ignore
568
569
  network: requestedNetwork,
569
570
  newInstance: this.tryGetInstance.bind(this)
@@ -684,12 +685,13 @@ var Wallet = /*#__PURE__*/function () {
684
685
  _proto.getWalletInfo = function getWalletInfo(allBlockChains) {
685
686
  return this.actions.getWalletInfo(allBlockChains);
686
687
  };
687
- _proto.canSwitchNetworkTo = function canSwitchNetworkTo(network) {
688
+ _proto.canSwitchNetworkTo = function canSwitchNetworkTo(network, provider) {
688
689
  var switchTo = this.actions.canSwitchNetworkTo;
689
690
  if (!switchTo) return false;
690
691
  return switchTo({
691
692
  network: network,
692
- meta: this.meta
693
+ meta: this.meta,
694
+ provider: provider
693
695
  });
694
696
  };
695
697
  _proto.onInit = function onInit() {
@@ -723,7 +725,7 @@ var Wallet = /*#__PURE__*/function () {
723
725
  }
724
726
  },
725
727
  updateChainId: function updateChainId(chainId) {
726
- var network = !!chainId ? getBlockChainNameFromId(chainId, _this3.meta) : Network.Unknown;
728
+ var network = chainId ? getBlockChainNameFromId(chainId, _this3.meta) : Network.Unknown;
727
729
  _this3.updateState({
728
730
  network: network
729
731
  });
@@ -793,6 +795,7 @@ var Wallet = /*#__PURE__*/function () {
793
795
  };
794
796
  _proto.tryGetInstance = /*#__PURE__*/function () {
795
797
  var _tryGetInstance = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref2) {
798
+ var _this5 = this;
796
799
  var network, force, instance, instanceOptions, error_message;
797
800
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
798
801
  while (1) switch (_context4.prev = _context4.next) {
@@ -810,7 +813,13 @@ var Wallet = /*#__PURE__*/function () {
810
813
  instanceOptions = {
811
814
  currentProvider: this.provider,
812
815
  meta: this.meta,
813
- force: force || false
816
+ force: force || false,
817
+ updateChainId: function updateChainId(chainId) {
818
+ var network = chainId ? getBlockChainNameFromId(chainId, _this5.meta) : Network.Unknown;
819
+ _this5.updateState({
820
+ network: network
821
+ });
822
+ }
814
823
  };
815
824
  if (network) {
816
825
  instanceOptions.network = network;
@@ -901,6 +910,7 @@ function Provider(props) {
901
910
  var wallets = checkWalletProviders(listOfProviders);
902
911
  var api = {
903
912
  // TODO: Fix type error
913
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
904
914
  // @ts-ignore
905
915
  connect: function connect(type, network) {
906
916
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -962,7 +972,7 @@ function Provider(props) {
962
972
  // filter connected wallets only.
963
973
  connectedWallets(providersState).forEach(function (type) {
964
974
  var wallet = wallets.get(type);
965
- if (!!wallet) {
975
+ if (wallet) {
966
976
  var ref = addWalletRef(wallet);
967
977
  disconnect_promises.push(ref.disconnect());
968
978
  }
@@ -987,13 +997,13 @@ function Provider(props) {
987
997
  return false;
988
998
  }
989
999
  var ref = addWalletRef(wallet);
990
- return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;
1000
+ return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network, ref.provider) : false;
991
1001
  },
992
1002
  providers: function providers() {
993
1003
  var providers = {};
994
1004
  availableWallets(providersState).forEach(function (type) {
995
1005
  var wallet = wallets.get(type);
996
- if (!!wallet) {
1006
+ if (wallet) {
997
1007
  var ref = addWalletRef(wallet);
998
1008
  providers[type] = ref.provider;
999
1009
  }
@@ -1025,7 +1035,7 @@ function Provider(props) {
1025
1035
  wallets.forEach(function (wallet) {
1026
1036
  var ref = addWalletRef(wallet);
1027
1037
  var runOnInit = function runOnInit() {
1028
- if (!!ref.onInit) {
1038
+ if (ref.onInit) {
1029
1039
  ref.onInit();
1030
1040
  }
1031
1041
  };
@@ -1044,7 +1054,7 @@ function Provider(props) {
1044
1054
  }, []);
1045
1055
  useEffect(function () {
1046
1056
  var allBlockChains = props.allBlockChains;
1047
- if (!!allBlockChains) {
1057
+ if (allBlockChains) {
1048
1058
  wallets.forEach(function (wallet) {
1049
1059
  var ref = addWalletRef(wallet);
1050
1060
  var supportedChains = ref.getWalletInfo(props.allBlockChains || []).supportedChains;
@@ -1 +1 @@
1
- {"version":3,"file":"wallets-core.esm.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletTypes.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n};\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n supportedChains: BlockchainMeta[]\n) => void;\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private meta: BlockchainMeta[];\n public provider: InstanceType | null;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.meta = [];\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\n\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n // TODO: call actions.eagerConnection\n return null;\n }\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\n // If a network hasn't been provided and also we have `lastNetwork`\n // We will use lastNetwork to make sure we will not\n // Ask the user to switch his network wrongly.\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (!!eagerConnection) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.meta || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as Network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: (chainId) => {\n const network = !!chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n });\n }\n }\n\n setMeta(value: BlockchainMeta[]) {\n this.meta = value;\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n updateState(states: Partial<State>) {\n // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\n\n this.updateState({\n installed: value,\n });\n }\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n this.setProvider(null);\n\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key: string]: Wallet | undefined;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers;\n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (!!wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (!!ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (!!allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","_extends4","_extends5","target_wallet","_extends2","_extends3","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","_addressWithNetwork$s","split","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","isAsync","fn","_fn$constructor","constructor","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletTypes","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","_this","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_callee2$","_context2","Error","sent","defaultNetwork","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_callee3$","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","force","instanceOptions","error_message","_callee4$","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","_useReducer","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"wallets-core.esm.js","sources":["../src/helpers.ts","../src/types.ts","../src/wallet.ts","../src/provider.tsx"],"sourcesContent":["import WalletConnectProvider from '@walletconnect/ethereum-provider';\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n evmChainsToRpcMap,\n Network,\n WalletType,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { State, WalletProvider, WalletProviders } from './types';\nimport { Options, State as WalletState } from './wallet';\nimport { BlockchainMeta, isEvmBlockchain } from 'rango-types';\n\nexport function choose(wallets: any[], type: WalletType): any | null {\n return wallets.find((wallet) => wallet.type === type) || null;\n}\n\nexport const defaultWalletState: WalletState = {\n connected: false,\n connecting: false,\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n};\n\nexport function state_reducer(state: State, action: any) {\n if (action.type === 'new_state') {\n // TODO fix problem and remove ts-ignore\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const target_wallet = state[action.wallet];\n if (!target_wallet) {\n return {\n ...state,\n [action.wallet]: {\n ...defaultWalletState,\n [action.name]: action.value,\n },\n };\n }\n\n return {\n ...state,\n [action.wallet]: {\n ...target_wallet,\n [action.name]: action.value,\n },\n };\n }\n\n return state;\n}\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) return [];\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network: network as Network,\n address,\n };\n}\n\nexport function connectedWallets(providersState: State): WalletType[] {\n return Object.entries(providersState)\n .filter(([, wallet_state]) => {\n return wallet_state?.connected;\n })\n .map(([type]) => {\n return type;\n });\n}\n\nexport function availableWallets(providersState: State): WalletType[] {\n return Object.entries(providersState).map(([type]) => {\n return type;\n });\n}\n\nexport function checkWalletProviders(list: WalletProvider[]): WalletProviders {\n const wallets: WalletProviders = new Map();\n\n list.forEach((provider) => {\n const { config, ...actions } = provider;\n wallets.set(config.type, {\n actions,\n config,\n });\n });\n\n return wallets;\n}\n\n/* eslint-disable @typescript-eslint/ban-types */\nexport function isAsync(fn: Function) {\n return fn?.constructor?.name === 'AsyncFunction';\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\n/*\n WalletConnect instance is not compatible with ethers.providers.Web3Provider,\n Here we are returning a comptable instance, instead of the original one. \n*/\n\nexport function isWalletDerivedFromWalletConnect(wallet_type: WalletType) {\n return wallet_type === WalletTypes.WALLET_CONNECT;\n}\n\nexport function getComptaibleProvider(\n supportedChains: BlockchainMeta[],\n provider: any,\n type: WalletType\n) {\n if (isWalletDerivedFromWalletConnect(type)) {\n const evmBlockchains = supportedChains.filter(isEvmBlockchain);\n const rpcUrls = evmChainsToRpcMap(\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n return new WalletConnectProvider({\n qrcode: false,\n rpc: rpcUrls,\n connector: provider,\n chainId: provider.chainId,\n });\n }\n return provider;\n}\n","import { PropsWithChildren } from 'react';\nimport { Network, WalletType, WalletInfo } from '@rango-dev/wallets-shared';\nimport {\n EventHandler as WalletEventHandler,\n State as WalletState,\n} from './wallet';\nimport { SignerFactory, BlockchainMeta } from 'rango-types';\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: any;\n};\n\nexport type Providers = { [type in WalletType]?: any };\n\nexport type ProviderContext = {\n connect(type: WalletType, network?: Network): Promise<ConnectResult>;\n disconnect(type: WalletType): Promise<void>;\n disconnectAll(): Promise<PromiseSettledResult<any>[]>;\n state(type: WalletType): WalletState;\n canSwitchNetworkTo(type: WalletType, network: Network): boolean;\n providers(): Providers;\n getSigners(type: WalletType): SignerFactory;\n getWalletInfo(type: WalletType): WalletInfo;\n};\n\nexport type ProviderProps = PropsWithChildren<{\n onUpdateState?: WalletEventHandler;\n allBlockChains?: BlockchainMeta[];\n providers: WalletProvider[];\n}>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n};\n\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: any;\n}) => boolean;\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: any;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // eagerConnect, // optional?\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: any) => SignerFactory;\n canSwitchNetworkTo?: CanSwitchNetwork;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type WalletProvider = { config: WalletConfig } & WalletActions;\n","import {\n getBlockChainNameFromId,\n Network,\n WalletType,\n} from '@rango-dev/wallets-shared';\nimport { accountAddressesWithNetwork, needsCheckInstallation } from './helpers';\nimport {\n Events,\n GetInstanceOptions,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { BlockchainMeta } from 'rango-types';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n value: any,\n coreState: State,\n supportedChains: BlockchainMeta[]\n) => void;\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\nclass Wallet<InstanceType = any> {\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private meta: BlockchainMeta[];\n public provider: InstanceType | null;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.meta = [];\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async eagerConnection() {\n // Already connected, so we return provider that we have in memory.\n\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n // TODO: call actions.eagerConnection\n return null;\n }\n async connect(network?: Network) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const eagerConnection = await this.eagerConnection();\n const currentNetwork = this.state.network;\n // If a network hasn't been provided and also we have `lastNetwork`\n // We will use lastNetwork to make sure we will not\n // Ask the user to switch his network wrongly.\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (eagerConnection) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return eagerConnection;\n }\n if (networkChanged && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.meta,\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n });\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: eagerConnection.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.meta || [],\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n if (Array.isArray(connectResult)) {\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Network.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(\n blockchain.accounts,\n network as Network\n );\n });\n // Typescript can not detect we are filtering out null values:(\n nextAccounts = accounts.filter(Boolean) as string[];\n nextNetwork = requestedNetwork || this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Network.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network as Network\n );\n nextNetwork = network as Network;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n getSigners(provider: any) {\n return this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network, provider: any) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) return false;\n\n return switchTo({\n network,\n meta: this.meta,\n provider,\n });\n }\n\n onInit() {\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n }\n }\n\n setProvider(value: any) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.meta,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(chainId, this.meta) || Network.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n });\n }\n }\n\n setMeta(value: BlockchainMeta[]) {\n this.meta = value;\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n updateState(states: Partial<State>) {\n // We will notify handler after updating all the states.\n // Because when we call `handler` it will has latest states.\n const updates: [Events, any][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n this.meta\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) return;\n\n this.updateState({\n installed: value,\n });\n }\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n // For switching network on Trust Wallet (WalletConnect),\n // We only kill the session (and not restting the whole state)\n // So we are relying on this.provider for achieving this functionality.\n this.setProvider(null);\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.meta,\n force: force || false,\n updateChainId: (chainId) => {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.meta)\n : Network.Unknown;\n this.updateState({\n network,\n });\n },\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n","import React, {\n createContext,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n availableWallets,\n checkWalletProviders,\n connectedWallets,\n defaultWalletState,\n getComptaibleProvider,\n state_reducer,\n} from './helpers';\nimport {\n ProviderProps,\n ProviderContext,\n WalletActions,\n WalletConfig,\n} from './types';\nimport { WalletType } from '@rango-dev/wallets-shared';\n\nimport Wallet, { EventHandler as WalletEventHandler } from './wallet';\n\n// TODO fix lint problem\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst WalletContext = createContext<ProviderContext>({});\n\n/*\n Our event handler includes an internal state updater, and a notifier\n for the outside listener.\n On creating first wallet refrence, and on chaning `props.onUpdateState`\n we are using this function.\n*/\nfunction makeEventHandler(dispatcher: any, onUpdateState?: WalletEventHandler) {\n const handler: WalletEventHandler = (\n type,\n name,\n value,\n coreState,\n supportedChains\n ) => {\n const action = { type: 'new_state', wallet: type, name, value };\n // Update state\n dispatcher(action);\n\n // Giving the event to the outside listener\n if (onUpdateState) {\n onUpdateState(type, name, value, coreState, supportedChains);\n }\n };\n\n return handler;\n}\n\nfunction useInitializers(onChangeState: WalletEventHandler) {\n const availableWallets = useRef<{\n [key: string]: Wallet | undefined;\n }>({});\n\n function updater(wallet: {\n actions: WalletActions;\n config: WalletConfig;\n }): Wallet {\n const type = wallet.config.type;\n // We only update, if there is no instance available.\n if (typeof availableWallets.current[type] === 'undefined') {\n availableWallets.current[type] = new Wallet(\n {\n config: wallet.config,\n handler: onChangeState,\n },\n wallet.actions\n );\n }\n\n return availableWallets.current[type]!;\n }\n\n return updater;\n}\n\nfunction Provider(props: ProviderProps) {\n const [providersState, dispatch] = useReducer(state_reducer, {});\n\n const addWalletRef = useInitializers(\n makeEventHandler(dispatch, props.onUpdateState)\n );\n // const providersRef = useRef<{ [type in WalletType]?: any }>({});\n\n const listOfProviders = props.providers;\n const wallets = checkWalletProviders(listOfProviders);\n const api: ProviderContext = {\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n async connect(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n const result = await ref.connect(network);\n\n return result;\n },\n async disconnect(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n const ref = addWalletRef(wallet);\n await ref.disconnect();\n },\n async disconnectAll() {\n const disconnect_promises: Promise<any>[] = [];\n\n // When a wallet is initializing, a record will be added to `providersState`\n // So we use them to know what wallet has been initialized then we need to\n // filter connected wallets only.\n connectedWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n\n if (wallet) {\n const ref = addWalletRef(wallet);\n disconnect_promises.push(ref.disconnect());\n }\n });\n\n return await Promise.allSettled(disconnect_promises);\n },\n state(type) {\n return providersState[type] || defaultWalletState;\n },\n canSwitchNetworkTo(type, network) {\n const wallet = wallets.get(type);\n if (!wallet) {\n return false;\n }\n\n const ref = addWalletRef(wallet);\n return ref.canSwitchNetworkTo\n ? ref.canSwitchNetworkTo(network, ref.provider)\n : false;\n },\n providers() {\n const providers: { [type in WalletType]?: any } = {};\n availableWallets(providersState).forEach((type) => {\n const wallet = wallets.get(type);\n if (wallet) {\n const ref = addWalletRef(wallet);\n providers[type] = ref.provider;\n }\n });\n\n return providers;\n },\n getWalletInfo(type) {\n const wallet = wallets.get(type);\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n\n // Get wallet info could be used in render methods to show wallets data\n // So, addWalletRef method shouldn't be called in this method\n\n return wallet.actions.getWalletInfo(props.allBlockChains || []);\n },\n getSigners(type) {\n const wallet = wallets.get(type);\n\n if (!wallet) {\n throw new Error(`You should add ${type} to provider first.`);\n }\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n const provider = getComptaibleProvider(\n supportedChains,\n ref.provider,\n type\n );\n const result = ref.getSigners(provider);\n\n return result;\n },\n };\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const runOnInit = () => {\n if (ref.onInit) {\n ref.onInit();\n }\n };\n\n const initWhenPageIsReady = (event: Event) => {\n if (\n event.target &&\n (event.target as Document).readyState === 'complete'\n ) {\n runOnInit();\n\n document.removeEventListener('readystatechange', initWhenPageIsReady);\n }\n };\n\n // Try to run, maybe it's ready.\n runOnInit();\n\n // Try again when the page has been completely loaded.\n // Some of wallets, take some time to be fully injected and loaded.\n document.addEventListener('readystatechange', initWhenPageIsReady);\n });\n }, []);\n\n useEffect(() => {\n const allBlockChains = props.allBlockChains;\n if (allBlockChains) {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n const supportedChains = ref.getWalletInfo(\n props.allBlockChains || []\n ).supportedChains;\n ref.setMeta(supportedChains);\n });\n }\n }, [props.allBlockChains]);\n\n useEffect(() => {\n wallets.forEach((wallet) => {\n const ref = addWalletRef(wallet);\n ref.setHandler(makeEventHandler(dispatch, props.onUpdateState));\n });\n }, [props.onUpdateState]);\n\n return (\n <WalletContext.Provider value={api}>\n {props.children}\n </WalletContext.Provider>\n );\n}\n\nexport function useWallets(): ProviderContext {\n const context = useContext(WalletContext);\n if (!context)\n throw Error('useWallet can only be used within the Provider component');\n return context;\n}\n\nexport default Provider;\n"],"names":["choose","wallets","type","find","wallet","defaultWalletState","connected","connecting","reachable","installed","accounts","network","state_reducer","state","action","_extends4","_extends5","target_wallet","_extends2","_extends3","_extends","name","value","formatAddressWithNetwork","address","accountAddressesWithNetwork","addresses","map","readAccountAddress","addressWithNetwork","_addressWithNetwork$s","split","connectedWallets","providersState","Object","entries","filter","_ref","wallet_state","_ref2","availableWallets","_ref3","checkWalletProviders","list","Map","forEach","provider","config","actions","_objectWithoutPropertiesLoose","_excluded","set","isAsync","fn","_fn$constructor","constructor","needsCheckInstallation","options","_options$config$check","checkInstallation","isWalletDerivedFromWalletConnect","wallet_type","WalletTypes","WALLET_CONNECT","getComptaibleProvider","supportedChains","evmBlockchains","isEvmBlockchain","rpcUrls","evmChainsToRpcMap","convertEvmBlockchainMetaToEvmChainInfo","WalletConnectProvider","qrcode","rpc","connector","chainId","Events","Wallet","meta","setInstalledAs","_proto","prototype","eagerConnection","_eagerConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","apply","arguments","connect","_connect","_callee2","_this","currentNetwork","requestedNetwork","networkChanged","instance","connectResult","nextAccounts","nextNetwork","_network","_callee2$","_context2","Error","sent","defaultNetwork","switchNetwork","newInstance","tryGetInstance","bind","updateState","undefined","t0","resetState","Array","isArray","flatMap","blockchain","Network","Unknown","getBlockChainNameFromId","Boolean","length","_x","disconnect","_disconnect","_callee3","_this2","_callee3$","_context3","destroyInstance","setProvider","getSigners","getWalletInfo","allBlockChains","canSwitchNetworkTo","switchTo","onInit","isAsyncInstance","getInstance","subscribe","updateAccounts","_this3","updateChainId","setMeta","setHandler","handler","getState","states","updates","push","CONNECTED","CONNECTING","REACHABLE","INSTALLED","ACCOUNTS","NETWORK","_this4","_tryGetInstance","_callee4","_this5","force","instanceOptions","error_message","_callee4$","_context4","currentProvider","_x2","WalletContext","createContext","makeEventHandler","dispatcher","onUpdateState","coreState","useInitializers","onChangeState","useRef","updater","current","Provider","props","_useReducer","useReducer","dispatch","addWalletRef","listOfProviders","providers","api","get","ref","result","disconnectAll","disconnect_promises","Promise","allSettled","useEffect","runOnInit","initWhenPageIsReady","event","target","readyState","document","removeEventListener","addEventListener","React","children","useWallets","context","useContext"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/wallets-core",
3
- "version": "0.1.16-next.5",
3
+ "version": "0.1.16-next.7",
4
4
  "license": "MIT",
5
5
  "module": "dist/wallets-core.esm.js",
6
6
  "main": "dist/index.js",
@@ -23,9 +23,9 @@
23
23
  "react-dom": "^17.0.0 || ^18.0.0"
24
24
  },
25
25
  "dependencies": {
26
- "@rango-dev/wallets-shared": "^0.1.15-next.4",
26
+ "@rango-dev/wallets-shared": "^0.1.15-next.5",
27
27
  "@walletconnect/ethereum-provider": "1.8.0",
28
- "rango-types": "^0.1.37"
28
+ "rango-types": "^0.1.38"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"
package/src/provider.tsx CHANGED
@@ -95,6 +95,7 @@ function Provider(props: ProviderProps) {
95
95
  const wallets = checkWalletProviders(listOfProviders);
96
96
  const api: ProviderContext = {
97
97
  // TODO: Fix type error
98
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
98
99
  // @ts-ignore
99
100
  async connect(type, network) {
100
101
  const wallet = wallets.get(type);
@@ -125,7 +126,7 @@ function Provider(props: ProviderProps) {
125
126
  connectedWallets(providersState).forEach((type) => {
126
127
  const wallet = wallets.get(type);
127
128
 
128
- if (!!wallet) {
129
+ if (wallet) {
129
130
  const ref = addWalletRef(wallet);
130
131
  disconnect_promises.push(ref.disconnect());
131
132
  }
@@ -143,13 +144,15 @@ function Provider(props: ProviderProps) {
143
144
  }
144
145
 
145
146
  const ref = addWalletRef(wallet);
146
- return ref.canSwitchNetworkTo ? ref.canSwitchNetworkTo(network) : false;
147
+ return ref.canSwitchNetworkTo
148
+ ? ref.canSwitchNetworkTo(network, ref.provider)
149
+ : false;
147
150
  },
148
151
  providers() {
149
152
  const providers: { [type in WalletType]?: any } = {};
150
153
  availableWallets(providersState).forEach((type) => {
151
154
  const wallet = wallets.get(type);
152
- if (!!wallet) {
155
+ if (wallet) {
153
156
  const ref = addWalletRef(wallet);
154
157
  providers[type] = ref.provider;
155
158
  }
@@ -193,7 +196,7 @@ function Provider(props: ProviderProps) {
193
196
  wallets.forEach((wallet) => {
194
197
  const ref = addWalletRef(wallet);
195
198
  const runOnInit = () => {
196
- if (!!ref.onInit) {
199
+ if (ref.onInit) {
197
200
  ref.onInit();
198
201
  }
199
202
  };
@@ -220,7 +223,7 @@ function Provider(props: ProviderProps) {
220
223
 
221
224
  useEffect(() => {
222
225
  const allBlockChains = props.allBlockChains;
223
- if (!!allBlockChains) {
226
+ if (allBlockChains) {
224
227
  wallets.forEach((wallet) => {
225
228
  const ref = addWalletRef(wallet);
226
229
  const supportedChains = ref.getWalletInfo(
package/src/types.ts CHANGED
@@ -54,7 +54,9 @@ export type GetInstanceOptions = {
54
54
  currentProvider: any;
55
55
  meta: BlockchainMeta[];
56
56
  force?: boolean;
57
+ updateChainId: (chainId: number | string) => void;
57
58
  };
59
+
58
60
  export type GetInstance =
59
61
  | (() => any)
60
62
  | ((options: GetInstanceOptions) => Promise<any>);
@@ -91,6 +93,7 @@ export type SwitchNetwork = (options: {
91
93
  export type CanSwitchNetwork = (options: {
92
94
  network: Network;
93
95
  meta: BlockchainMeta[];
96
+ provider: any;
94
97
  }) => boolean;
95
98
 
96
99
  export interface WalletActions {
package/src/wallet.ts CHANGED
@@ -92,7 +92,7 @@ class Wallet<InstanceType = any> {
92
92
  const requestedNetwork =
93
93
  network || currentNetwork || this.options.config.defaultNetwork;
94
94
 
95
- if (!!eagerConnection) {
95
+ if (eagerConnection) {
96
96
  const networkChanged =
97
97
  currentNetwork !== requestedNetwork && !!requestedNetwork;
98
98
 
@@ -105,6 +105,7 @@ class Wallet<InstanceType = any> {
105
105
  instance: this.provider,
106
106
  meta: this.meta,
107
107
  // TODO: Fix type error
108
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
108
109
  // @ts-ignore
109
110
  network: requestedNetwork,
110
111
  newInstance: this.tryGetInstance.bind(this),
@@ -216,13 +217,14 @@ class Wallet<InstanceType = any> {
216
217
  getWalletInfo(allBlockChains: BlockchainMeta[]) {
217
218
  return this.actions.getWalletInfo(allBlockChains);
218
219
  }
219
- canSwitchNetworkTo(network: Network) {
220
+ canSwitchNetworkTo(network: Network, provider: any) {
220
221
  const switchTo = this.actions.canSwitchNetworkTo;
221
222
  if (!switchTo) return false;
222
223
 
223
224
  return switchTo({
224
225
  network,
225
226
  meta: this.meta,
227
+ provider,
226
228
  });
227
229
  }
228
230
 
@@ -237,7 +239,6 @@ class Wallet<InstanceType = any> {
237
239
 
238
240
  setProvider(value: any) {
239
241
  this.provider = value;
240
-
241
242
  if (!!value && !!this.actions.subscribe) {
242
243
  this.actions.subscribe({
243
244
  instance: value,
@@ -260,7 +261,7 @@ class Wallet<InstanceType = any> {
260
261
  }
261
262
  },
262
263
  updateChainId: (chainId) => {
263
- const network = !!chainId
264
+ const network = chainId
264
265
  ? getBlockChainNameFromId(chainId, this.meta)
265
266
  : Network.Unknown;
266
267
  this.updateState({
@@ -353,19 +354,25 @@ class Wallet<InstanceType = any> {
353
354
  // We only kill the session (and not restting the whole state)
354
355
  // So we are relying on this.provider for achieving this functionality.
355
356
  this.setProvider(null);
356
-
357
357
  if (this.options.config.isAsyncInstance) {
358
358
  // Trying to connect
359
359
  const instanceOptions: GetInstanceOptions = {
360
360
  currentProvider: this.provider,
361
361
  meta: this.meta,
362
362
  force: force || false,
363
+ updateChainId: (chainId) => {
364
+ const network = chainId
365
+ ? getBlockChainNameFromId(chainId, this.meta)
366
+ : Network.Unknown;
367
+ this.updateState({
368
+ network,
369
+ });
370
+ },
363
371
  };
364
372
 
365
373
  if (network) {
366
374
  instanceOptions.network = network;
367
375
  }
368
-
369
376
  instance = await this.actions.getInstance(instanceOptions);
370
377
  } else {
371
378
  instance = this.actions.getInstance();