@interchain-kit/react 0.0.1-beta.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +173 -24
  3. package/esm/hooks/index.js +0 -4
  4. package/esm/hooks/useChain.js +28 -30
  5. package/esm/hooks/useChainWallet.js +25 -12
  6. package/esm/hooks/useWalletManager.js +4 -3
  7. package/esm/index.js +1 -0
  8. package/esm/modal/modal.js +96 -24
  9. package/esm/modal/provider.js +2 -2
  10. package/esm/modal/views/Connected.js +16 -17
  11. package/esm/modal/views/Connecting.js +14 -23
  12. package/esm/modal/views/NotExist.js +44 -0
  13. package/esm/modal/views/QRCode.js +19 -0
  14. package/esm/modal/views/Reject.js +4 -9
  15. package/esm/modal/views/WalletList.js +27 -19
  16. package/esm/modal/views/index.js +2 -0
  17. package/esm/provider.js +13 -13
  18. package/esm/store/chain-wallet.js +59 -0
  19. package/esm/store/index.js +191 -0
  20. package/esm/types/index.js +1 -1
  21. package/esm/utils/index.js +1 -8
  22. package/esm/utils/wallet.js +8 -1
  23. package/hooks/index.d.ts +0 -4
  24. package/hooks/index.js +0 -4
  25. package/hooks/useChain.d.ts +2 -2
  26. package/hooks/useChain.js +28 -30
  27. package/hooks/useChainWallet.d.ts +2 -2
  28. package/hooks/useChainWallet.js +25 -12
  29. package/hooks/useWalletManager.d.ts +1 -2
  30. package/hooks/useWalletManager.js +3 -2
  31. package/index.d.ts +1 -0
  32. package/index.js +1 -0
  33. package/modal/modal.js +95 -23
  34. package/modal/provider.d.ts +1 -1
  35. package/modal/provider.js +2 -2
  36. package/modal/views/Astronaut.js +1 -2
  37. package/modal/views/Connected.d.ts +6 -2
  38. package/modal/views/Connected.js +15 -16
  39. package/modal/views/Connecting.d.ts +6 -2
  40. package/modal/views/Connecting.js +12 -21
  41. package/modal/views/NotExist.d.ts +8 -0
  42. package/modal/views/NotExist.js +49 -0
  43. package/modal/views/QRCode.d.ts +4 -0
  44. package/modal/views/QRCode.js +24 -0
  45. package/modal/views/Reject.d.ts +7 -2
  46. package/modal/views/Reject.js +4 -9
  47. package/modal/views/WalletList.d.ts +4 -1
  48. package/modal/views/WalletList.js +27 -19
  49. package/modal/views/index.d.ts +2 -0
  50. package/modal/views/index.js +2 -0
  51. package/package.json +15 -9
  52. package/provider.d.ts +11 -11
  53. package/provider.js +13 -13
  54. package/store/chain-wallet.d.ts +26 -0
  55. package/store/chain-wallet.js +63 -0
  56. package/store/index.d.ts +45 -0
  57. package/store/index.js +195 -0
  58. package/types/chain.d.ts +12 -13
  59. package/types/index.d.ts +1 -1
  60. package/types/index.js +1 -1
  61. package/types/sign-client.d.ts +2 -0
  62. package/utils/index.d.ts +1 -7
  63. package/utils/index.js +15 -10
  64. package/utils/wallet.d.ts +7 -1
  65. package/utils/wallet.js +10 -15
  66. package/esm/hooks/useAccount.js +0 -28
  67. package/esm/hooks/useActiveWallet.js +0 -13
  68. package/esm/hooks/useConfig.js +0 -10
  69. package/esm/hooks/useConnect.js +0 -11
  70. package/esm/hooks/useInterchainClient.js +0 -52
  71. package/esm/hooks/useOfflineSigner.js +0 -15
  72. package/hooks/useAccount.d.ts +0 -2
  73. package/hooks/useAccount.js +0 -32
  74. package/hooks/useActiveWallet.d.ts +0 -1
  75. package/hooks/useActiveWallet.js +0 -17
  76. package/hooks/useConfig.d.ts +0 -8
  77. package/hooks/useConfig.js +0 -14
  78. package/hooks/useConnect.d.ts +0 -1
  79. package/hooks/useConnect.js +0 -15
  80. package/hooks/useInterchainClient.d.ts +0 -14
  81. package/hooks/useInterchainClient.js +0 -56
  82. package/hooks/useOfflineSigner.d.ts +0 -4
  83. package/hooks/useOfflineSigner.js +0 -19
  84. package/types/wallet.d.ts +0 -11
  85. /package/esm/types/{wallet.js → sign-client.js} +0 -0
  86. /package/types/{wallet.js → sign-client.js} +0 -0
package/provider.js CHANGED
@@ -1,28 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useInterChainWalletContext = exports.ChainProvider = void 0;
3
+ exports.useInterchainWalletContext = exports.ChainProvider = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const react_2 = require("react");
7
- const core_1 = require("@interChain-kit/core");
7
+ const core_1 = require("@interchain-kit/core");
8
8
  const modal_1 = require("./modal");
9
- const InterChainWalletContext = (0, react_2.createContext)(null);
10
- const ChainProvider = ({ chains, assetLists, wallets, signerOptions, endpointOptions, children }) => {
11
- const [_, forceRender] = (0, react_1.useState)({});
12
- const walletManager = (0, react_1.useMemo)(() => {
13
- return new core_1.WalletManager(chains, assetLists, wallets, signerOptions, endpointOptions, () => forceRender({}));
14
- }, []);
9
+ const store_1 = require("./store");
10
+ const InterchainWalletContext = (0, react_2.createContext)(null);
11
+ const ChainProvider = ({ chains, assetLists, wallets, signerOptions, endpointOptions, children, }) => {
12
+ // const [_, forceRender] = useState({});
13
+ const walletManager = new core_1.WalletManager(chains, assetLists, wallets, signerOptions, endpointOptions);
14
+ const store = (0, react_1.useRef)((0, store_1.createInterchainStore)(walletManager));
15
15
  (0, react_1.useEffect)(() => {
16
16
  walletManager.init();
17
17
  }, []);
18
- return ((0, jsx_runtime_1.jsx)(InterChainWalletContext.Provider, { value: { walletManager }, children: (0, jsx_runtime_1.jsx)(modal_1.WalletModalProvider, { children: children }) }));
18
+ return ((0, jsx_runtime_1.jsx)(InterchainWalletContext.Provider, { value: store.current, children: (0, jsx_runtime_1.jsx)(modal_1.WalletModalProvider, { children: children }) }));
19
19
  };
20
20
  exports.ChainProvider = ChainProvider;
21
- const useInterChainWalletContext = () => {
22
- const context = (0, react_2.useContext)(InterChainWalletContext);
21
+ const useInterchainWalletContext = () => {
22
+ const context = (0, react_2.useContext)(InterchainWalletContext);
23
23
  if (!context) {
24
- throw new Error('useInterChainWalletContext must be used within a InterChainProvider');
24
+ throw new Error("useInterChainWalletContext must be used within a InterChainProvider");
25
25
  }
26
26
  return context;
27
27
  };
28
- exports.useInterChainWalletContext = useInterChainWalletContext;
28
+ exports.useInterchainWalletContext = useInterchainWalletContext;
@@ -0,0 +1,26 @@
1
+ import { Chain, AssetList } from "@chain-registry/v2-types";
2
+ import { BaseWallet, BroadcastMode, DirectSignDoc, SignOptions, SimpleAccount, WalletAccount } from "@interchain-kit/core";
3
+ import { OfflineSigner, OfflineAminoSigner, OfflineDirectSigner, AminoSignResponse, StdSignature, DirectSignResponse } from "@interchainjs/cosmos/types/wallet";
4
+ import { StdSignDoc } from "@interchainjs/types";
5
+ export declare class ChainWallet<TWallet extends BaseWallet> extends BaseWallet {
6
+ originalWallet: TWallet;
7
+ connectWithState: TWallet['connect'];
8
+ disconnectWithState: TWallet['disconnect'];
9
+ getAccountWithState: TWallet['getAccount'];
10
+ constructor(originalWallet: TWallet, connectWithState: TWallet['connect'], disconnectWithState: TWallet['disconnect'], getAccountWithState: TWallet['getAccount']);
11
+ init(meta?: unknown): Promise<void>;
12
+ connect(chainId: string | string[]): Promise<void>;
13
+ disconnect(chainId: string | string[]): Promise<void>;
14
+ getAccount(chainId: string): Promise<WalletAccount>;
15
+ getAccounts(chainIds: string[]): Promise<WalletAccount[]>;
16
+ getSimpleAccount(chainId: string): Promise<SimpleAccount>;
17
+ getOfflineSigner(chainId: string): OfflineSigner;
18
+ getOfflineSignerAmino(chainId: string): OfflineAminoSigner;
19
+ getOfflineSignerDirect(chainId: string): OfflineDirectSigner;
20
+ signAmino(chainId: string, signer: string, signDoc: StdSignDoc, signOptions?: SignOptions): Promise<AminoSignResponse>;
21
+ signArbitrary(chainId: string, signer: string, data: string | Uint8Array): Promise<StdSignature>;
22
+ verifyArbitrary(chainId: string, signer: string, data: string | Uint8Array): Promise<boolean>;
23
+ signDirect(chainId: string, signer: string, signDoc: DirectSignDoc, signOptions?: SignOptions): Promise<DirectSignResponse>;
24
+ sendTx(chainId: string, tx: Uint8Array, mode: BroadcastMode): Promise<Uint8Array>;
25
+ addSuggestChain(chain: Chain, assetLists: AssetList[]): Promise<void>;
26
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainWallet = void 0;
4
+ const core_1 = require("@interchain-kit/core");
5
+ class ChainWallet extends core_1.BaseWallet {
6
+ originalWallet;
7
+ connectWithState;
8
+ disconnectWithState;
9
+ getAccountWithState;
10
+ constructor(originalWallet, connectWithState, disconnectWithState, getAccountWithState) {
11
+ super(originalWallet?.info);
12
+ this.originalWallet = originalWallet;
13
+ this.connectWithState = connectWithState;
14
+ this.disconnectWithState = disconnectWithState;
15
+ this.getAccountWithState = getAccountWithState;
16
+ }
17
+ async init(meta) {
18
+ return this.originalWallet.init(meta);
19
+ }
20
+ async connect(chainId) {
21
+ return this.connectWithState(chainId);
22
+ }
23
+ async disconnect(chainId) {
24
+ return this.disconnectWithState(chainId);
25
+ }
26
+ async getAccount(chainId) {
27
+ return this.getAccountWithState(chainId);
28
+ }
29
+ async getAccounts(chainIds) {
30
+ return this.originalWallet.getAccounts(chainIds);
31
+ }
32
+ async getSimpleAccount(chainId) {
33
+ return this.originalWallet.getSimpleAccount(chainId);
34
+ }
35
+ getOfflineSigner(chainId) {
36
+ return this.originalWallet.getOfflineSigner(chainId);
37
+ }
38
+ getOfflineSignerAmino(chainId) {
39
+ return this.originalWallet.getOfflineSignerAmino(chainId);
40
+ }
41
+ getOfflineSignerDirect(chainId) {
42
+ return this.originalWallet.getOfflineSignerDirect(chainId);
43
+ }
44
+ async signAmino(chainId, signer, signDoc, signOptions) {
45
+ return this.originalWallet.signAmino(chainId, signer, signDoc, signOptions);
46
+ }
47
+ async signArbitrary(chainId, signer, data) {
48
+ return this.originalWallet.signArbitrary(chainId, signer, data);
49
+ }
50
+ async verifyArbitrary(chainId, signer, data) {
51
+ return this.originalWallet.verifyArbitrary(chainId, signer, data);
52
+ }
53
+ async signDirect(chainId, signer, signDoc, signOptions) {
54
+ return this.originalWallet.signDirect(chainId, signer, signDoc, signOptions);
55
+ }
56
+ async sendTx(chainId, tx, mode) {
57
+ return this.originalWallet.sendTx(chainId, tx, mode);
58
+ }
59
+ async addSuggestChain(chain, assetLists) {
60
+ return this.originalWallet.addSuggestChain(chain, assetLists);
61
+ }
62
+ }
63
+ exports.ChainWallet = ChainWallet;
@@ -0,0 +1,45 @@
1
+ import { AssetList, Chain } from "@chain-registry/v2-types";
2
+ import { BaseWallet, EndpointOptions, SignerOptions, WalletAccount, WalletManager, WalletState } from "@interchain-kit/core";
3
+ import { SignerOptions as InterchainSignerOptions } from '@interchainjs/cosmos/types/signing-client';
4
+ import { HttpEndpoint } from '@interchainjs/types';
5
+ type ChainWalletState = {
6
+ chainName: string;
7
+ walletName: string;
8
+ walletState: WalletState;
9
+ rpcEndpoint: string | HttpEndpoint;
10
+ errorMessage: string;
11
+ signerOption: InterchainSignerOptions;
12
+ account: WalletAccount;
13
+ };
14
+ export interface InterchainStore extends WalletManager {
15
+ chainWalletState: ChainWalletState[];
16
+ currentWalletName: string;
17
+ currentChainName: string;
18
+ setCurrentChainName: (chainName: string) => void;
19
+ setCurrentWalletName: (walletName: string) => void;
20
+ getDraftChainWalletState: (state: InterchainStore, walletName: string, chainName: string) => ChainWalletState;
21
+ getChainWalletState: (walletName: string, chainName: string) => ChainWalletState | undefined;
22
+ updateChainWalletState: (walletName: string, chainName: string, data: Partial<ChainWalletState>) => void;
23
+ }
24
+ export type InterchainStoreData = {
25
+ chains: Chain[];
26
+ assetLists: AssetList[];
27
+ wallets: BaseWallet[];
28
+ signerOptions: SignerOptions;
29
+ endpointOptions: EndpointOptions;
30
+ };
31
+ export declare const createInterchainStore: (walletManager: WalletManager) => Omit<Omit<import("zustand").StoreApi<InterchainStore>, "persist"> & {
32
+ persist: {
33
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<InterchainStore, unknown>>) => void;
34
+ clearStorage: () => void;
35
+ rehydrate: () => Promise<void> | void;
36
+ hasHydrated: () => boolean;
37
+ onHydrate: (fn: (state: InterchainStore) => void) => () => void;
38
+ onFinishHydration: (fn: (state: InterchainStore) => void) => () => void;
39
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<InterchainStore, unknown>>;
40
+ };
41
+ }, "setState"> & {
42
+ setState(nextStateOrUpdater: InterchainStore | Partial<InterchainStore> | ((state: import("immer").WritableDraft<InterchainStore>) => void), shouldReplace?: false): void;
43
+ setState(nextStateOrUpdater: InterchainStore | ((state: import("immer").WritableDraft<InterchainStore>) => void), shouldReplace: true): void;
44
+ };
45
+ export {};
package/store/index.js ADDED
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createInterchainStore = void 0;
4
+ const core_1 = require("@interchain-kit/core");
5
+ const zustand_1 = require("zustand");
6
+ const immer_1 = require("zustand/middleware/immer");
7
+ const middleware_1 = require("zustand/middleware");
8
+ const immerSyncUp = (newWalletManager) => {
9
+ return (draft) => {
10
+ draft.chains = newWalletManager.chains;
11
+ draft.assetLists = newWalletManager.assetLists;
12
+ draft.wallets = newWalletManager.wallets;
13
+ draft.signerOptions = newWalletManager.signerOptions;
14
+ draft.endpointOptions = newWalletManager.endpointOptions;
15
+ draft.signerOptionMap = newWalletManager.signerOptionMap;
16
+ draft.endpointOptionsMap = newWalletManager.endpointOptionsMap;
17
+ draft.preferredSignTypeMap = newWalletManager.preferredSignTypeMap;
18
+ };
19
+ };
20
+ const createInterchainStore = (walletManager) => {
21
+ const { chains, assetLists, wallets, signerOptions, endpointOptions } = walletManager;
22
+ // const walletManager = new WalletManager(chains, assetLists, wallets, signerOptions, endpointOptions)
23
+ const chainWalletState = [];
24
+ wallets.forEach(wallet => {
25
+ chains.forEach(chain => {
26
+ chainWalletState.push({
27
+ chainName: chain.chainName,
28
+ walletName: wallet.info.name,
29
+ walletState: core_1.WalletState.Disconnected,
30
+ rpcEndpoint: "",
31
+ errorMessage: "",
32
+ signerOption: undefined,
33
+ account: undefined
34
+ });
35
+ });
36
+ });
37
+ return (0, zustand_1.createStore)((0, middleware_1.persist)((0, immer_1.immer)((set, get) => ({
38
+ chainWalletState,
39
+ currentWalletName: '',
40
+ currentChainName: '',
41
+ chains: [...walletManager.chains],
42
+ assetLists: [...walletManager.assetLists],
43
+ wallets: walletManager.wallets,
44
+ signerOptions: walletManager.signerOptions,
45
+ endpointOptions: walletManager.endpointOptions,
46
+ preferredSignTypeMap: { ...walletManager.preferredSignTypeMap },
47
+ signerOptionMap: { ...walletManager.signerOptionMap },
48
+ endpointOptionsMap: { ...walletManager.endpointOptionsMap },
49
+ updateChainWalletState: (walletName, chainName, data) => {
50
+ set(draft => {
51
+ let targetIndex = draft.chainWalletState.findIndex(cws => cws.walletName === walletName && cws.chainName === chainName);
52
+ draft.chainWalletState[targetIndex] = { ...draft.chainWalletState[targetIndex], ...data };
53
+ });
54
+ },
55
+ init: () => walletManager.init(),
56
+ setCurrentChainName: (chainName) => {
57
+ set(draft => { draft.currentChainName = chainName; });
58
+ },
59
+ setCurrentWalletName: (walletName) => {
60
+ set(draft => { draft.currentWalletName = walletName; });
61
+ },
62
+ getDraftChainWalletState: (state, walletName, chainName) => {
63
+ const targetIndex = state.chainWalletState.findIndex(cws => cws.walletName === walletName && cws.chainName === chainName);
64
+ return state.chainWalletState[targetIndex];
65
+ },
66
+ getChainWalletState: (walletName, chainName) => {
67
+ return get().chainWalletState.find(cws => cws.walletName === walletName && cws.chainName === chainName);
68
+ },
69
+ addChains: (chains, assetLists, signerOptions, endpointOptions) => {
70
+ walletManager.addChains(chains, assetLists, signerOptions, endpointOptions);
71
+ // console.log(walletManager.chains, walletManager.assetLists)
72
+ // set(immerSyncUp(walletManager))
73
+ // set(draft => {
74
+ // draft.chains = walletManager.chains
75
+ // })
76
+ set(draft => {
77
+ chains.forEach(newChain => {
78
+ const existChain = draft.chains.find(c => c.chainId === newChain.chainId);
79
+ if (!existChain) {
80
+ draft.chains.push(newChain);
81
+ const assetList = assetLists.find(a => a.chainName === newChain.chainName);
82
+ draft.assetLists.push(assetList);
83
+ draft.wallets.forEach(w => {
84
+ draft.chainWalletState.push({
85
+ chainName: newChain.chainName,
86
+ walletName: w.info.name,
87
+ walletState: core_1.WalletState.Disconnected,
88
+ rpcEndpoint: "",
89
+ errorMessage: "",
90
+ signerOption: signerOptions?.signing?.(newChain.chainName),
91
+ account: undefined
92
+ });
93
+ });
94
+ }
95
+ draft.signerOptionMap[newChain.chainName] = signerOptions?.signing?.(newChain.chainName);
96
+ draft.endpointOptionsMap[newChain.chainName] = endpointOptions?.endpoints?.[newChain.chainName];
97
+ });
98
+ });
99
+ },
100
+ connect: async (walletName, chainName) => {
101
+ get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Connecting });
102
+ try {
103
+ await walletManager.connect(walletName, chainName);
104
+ set(draft => {
105
+ draft.currentChainName = chainName;
106
+ draft.currentWalletName = walletName;
107
+ });
108
+ get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Connected });
109
+ }
110
+ catch (error) {
111
+ if (error.message === 'Request rejected') {
112
+ get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Rejected, errorMessage: error.message });
113
+ return;
114
+ }
115
+ get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Disconnected, errorMessage: error.message });
116
+ }
117
+ },
118
+ disconnect: async (walletName, chainName) => {
119
+ try {
120
+ await walletManager.disconnect(walletName, chainName);
121
+ get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Disconnected, account: null });
122
+ }
123
+ catch (error) {
124
+ }
125
+ },
126
+ getAccount: async (walletName, chainName) => {
127
+ const account = await walletManager.getAccount(walletName, chainName);
128
+ get().updateChainWalletState(walletName, chainName, { account });
129
+ return account;
130
+ },
131
+ getRpcEndpoint: async (walletName, chainName) => {
132
+ const exist = get().getChainWalletState(walletName, chainName).rpcEndpoint;
133
+ if (exist)
134
+ return exist;
135
+ const rpcEndpoint = await walletManager.getRpcEndpoint(walletName, chainName);
136
+ get().updateChainWalletState(walletName, chainName, { rpcEndpoint });
137
+ return rpcEndpoint;
138
+ },
139
+ getChainLogoUrl(chainName) {
140
+ return walletManager.getChainLogoUrl(chainName);
141
+ },
142
+ getChainByName(chainName) {
143
+ return walletManager.getChainByName(chainName);
144
+ },
145
+ getAssetListByName(chainName) {
146
+ return walletManager.getAssetListByName(chainName);
147
+ },
148
+ getDownloadLink(walletName) {
149
+ return walletManager.getDownloadLink(walletName);
150
+ },
151
+ getOfflineSigner(walletName, chainName) {
152
+ return walletManager.getOfflineSigner(walletName, chainName);
153
+ },
154
+ getPreferSignType(chainName) {
155
+ const result = walletManager.getPreferSignType(chainName);
156
+ set(immerSyncUp(walletManager));
157
+ return result;
158
+ },
159
+ getSignerOptions(chainName) {
160
+ const result = walletManager.getSignerOptions(chainName);
161
+ set(immerSyncUp(walletManager));
162
+ return result;
163
+ },
164
+ getWalletByName(walletName) {
165
+ return walletManager.getWalletByName(walletName);
166
+ },
167
+ getSigningClient(walletName, chainName) {
168
+ return walletManager.getSigningClient(walletName, chainName);
169
+ },
170
+ getEnv() {
171
+ return walletManager.getEnv();
172
+ },
173
+ })), {
174
+ name: 'interchain-kit-store',
175
+ storage: (0, middleware_1.createJSONStorage)(() => localStorage),
176
+ partialize: state => ({
177
+ chainWalletState: state.chainWalletState,
178
+ currentWalletName: state.currentWalletName,
179
+ currentChainName: state.currentChainName
180
+ }),
181
+ onRehydrateStorage: (state) => {
182
+ console.log('interchain-kit store hydration starts');
183
+ // optional
184
+ return (state, error) => {
185
+ if (error) {
186
+ console.log('an error happened during hydration', error);
187
+ }
188
+ else {
189
+ console.log('interchain-kit store hydration finished');
190
+ }
191
+ };
192
+ },
193
+ }));
194
+ };
195
+ exports.createInterchainStore = createInterchainStore;
package/types/chain.d.ts CHANGED
@@ -1,31 +1,30 @@
1
1
  import { HttpEndpoint } from '@interchainjs/types';
2
- import { CosmWasmSigningClient } from 'interchainjs/cosmwasm-stargate';
3
- import { SigningClient } from 'interchainjs/signing-client';
4
- import { RpcQuery } from 'interchainjs/query/rpc';
5
- import { StargateSigningClient } from 'interchainjs/stargate';
6
2
  import { Chain, AssetList } from '@chain-registry/v2-types';
7
- import { BaseWallet, WalletState } from '@interchain-kit/core';
3
+ import { WalletState } from '@interchain-kit/core';
4
+ import { SigningClient } from './sign-client';
5
+ import { ChainWallet } from '../store/chain-wallet';
8
6
  export type CosmosKitUseChainReturnType = {
9
7
  connect: () => void;
8
+ disconnect: () => void;
10
9
  openView: () => void;
11
10
  closeView: () => void;
12
11
  getRpcEndpoint: () => Promise<string | HttpEndpoint>;
13
12
  status: WalletState;
14
13
  username: string;
15
14
  message: string;
16
- getSigningCosmWasmClient: () => Promise<CosmWasmSigningClient>;
17
- getSigningStargateClient: () => Promise<StargateSigningClient>;
18
15
  };
19
16
  export type UseChainReturnType = {
17
+ logoUrl: string | undefined;
20
18
  chain: Chain;
21
19
  assetList: AssetList;
22
20
  address: string;
23
- wallet: BaseWallet;
21
+ wallet: ChainWallet;
24
22
  rpcEndpoint: string | HttpEndpoint;
25
- queryClient: RpcQuery;
26
- signingClient: SigningClient;
27
- signingStargateClient: StargateSigningClient;
28
- signingCosmWasmClient: CosmWasmSigningClient;
23
+ getSigningClient: () => Promise<SigningClient>;
24
+ } & CosmosKitUseChainReturnType;
25
+ export type UseChainWalletReturnType = Omit<UseChainReturnType, 'openView' | 'closeView'>;
26
+ export type UseInterchainClientReturnType = {
27
+ signingClient: SigningClient | null;
28
+ error: string | unknown | null;
29
29
  isLoading: boolean;
30
- error: unknown;
31
30
  };
package/types/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './wallet';
1
+ export * from './sign-client';
package/types/index.js CHANGED
@@ -14,4 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./wallet"), exports);
17
+ __exportStar(require("./sign-client"), exports);
@@ -0,0 +1,2 @@
1
+ import { WalletManager } from "@interchain-kit/core";
2
+ export type SigningClient = Awaited<ReturnType<WalletManager['getSigningClient']>>;
package/utils/index.d.ts CHANGED
@@ -1,7 +1 @@
1
- import { BaseWallet } from "@interChain-kit/core";
2
- export declare const getWalletInfo: (wallet: BaseWallet) => {
3
- name: string;
4
- prettyName: string;
5
- logo: string;
6
- mobileDisabled: boolean;
7
- };
1
+ export * from './wallet';
package/utils/index.js CHANGED
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWalletInfo = void 0;
4
- const getWalletInfo = (wallet) => {
5
- return {
6
- name: wallet.option.name,
7
- prettyName: wallet.option.prettyName,
8
- logo: wallet.option.logo,
9
- mobileDisabled: true,
10
- };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
- exports.getWalletInfo = getWalletInfo;
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./wallet"), exports);
package/utils/wallet.d.ts CHANGED
@@ -1 +1,7 @@
1
- export * from './wallet';
1
+ import { BaseWallet } from "@interchain-kit/core";
2
+ export declare const getWalletInfo: (wallet: BaseWallet) => {
3
+ name: string;
4
+ prettyName: string;
5
+ logo: string;
6
+ mobileDisabled: boolean;
7
+ };
package/utils/wallet.js CHANGED
@@ -1,17 +1,12 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./wallet"), exports);
3
+ exports.getWalletInfo = void 0;
4
+ const getWalletInfo = (wallet) => {
5
+ return {
6
+ name: wallet?.info?.name,
7
+ prettyName: wallet?.info?.prettyName,
8
+ logo: wallet?.info?.logo,
9
+ mobileDisabled: true,
10
+ };
11
+ };
12
+ exports.getWalletInfo = getWalletInfo;
@@ -1,28 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import { useWalletManager } from './useWalletManager';
3
- export const useAccount = (chainName, walletName) => {
4
- const walletManager = useWalletManager();
5
- const wallet = walletManager.wallets.find(w => w.option.name === walletName);
6
- const [account, setAccount] = useState(null);
7
- const chain = walletManager.chains.find(c => c.chainName === chainName);
8
- const getAccount = async () => {
9
- if (wallet && chain) {
10
- if (wallet.walletState === "Connected" /* WalletState.Connected */) {
11
- const account = await wallet.getAccount(chain.chainId);
12
- setAccount(account);
13
- }
14
- if (wallet.walletState === "Disconnected" /* WalletState.Disconnected */) {
15
- setAccount(null);
16
- }
17
- }
18
- };
19
- useEffect(() => {
20
- if (wallet) {
21
- wallet.events.on('keystoreChange', getAccount);
22
- }
23
- }, [wallet]);
24
- useEffect(() => {
25
- getAccount();
26
- }, [wallet, chainName, wallet?.walletState]);
27
- return account;
28
- };
@@ -1,13 +0,0 @@
1
- import { useEffect } from "react";
2
- import { useWalletManager } from "./useWalletManager";
3
- import { useWalletModal } from "../modal";
4
- export const useActiveWallet = () => {
5
- const walletManager = useWalletManager();
6
- const { open } = useWalletModal();
7
- useEffect(() => {
8
- if (!walletManager.activeWalletName) {
9
- open();
10
- }
11
- }, [walletManager.activeWalletName]);
12
- return walletManager.getActiveWallet();
13
- };
@@ -1,10 +0,0 @@
1
- import { useWalletManager } from "./useWalletManager";
2
- export const useConfig = () => {
3
- const walletManager = useWalletManager();
4
- return {
5
- updateChains: (chains) => walletManager.chains = chains,
6
- updateAssetLists: (assetLists) => walletManager.assetLists = assetLists,
7
- updateSignerOptions: (signerOptions) => walletManager.signerOptions = signerOptions,
8
- updateEndpoints: (endpointOptions) => walletManager.endpointOptions = endpointOptions,
9
- };
10
- };
@@ -1,11 +0,0 @@
1
- export const useConnect = () => {
2
- // const { walletManager } = useInterChainWalletContext()
3
- // const activeWallet = useCurrentWallet()
4
- // const account = useAccount()
5
- // return {
6
- // connect: walletManager.connect,
7
- // isConnected: activeWallet.walletState === WalletState.Connected,
8
- // account
9
- // }
10
- return {};
11
- };
@@ -1,52 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import { useWalletManager } from './useWalletManager';
3
- import { useAccount } from './useAccount';
4
- export const useInterchainClient = (chainName, walletName) => {
5
- const [rpcEndpoint, setRpcEndpoint] = useState();
6
- const [signingClient, setSigningClient] = useState(null);
7
- const [queryClient, setQueryClient] = useState(null);
8
- const [signingStargateClient, setSigningStargateClient] = useState(null);
9
- const [signingCosmWasmClient, setSigningCosmWasmClient] = useState(null);
10
- const [error, setError] = useState(null);
11
- const [isLoading, setIsLoading] = useState(false);
12
- const walletManager = useWalletManager();
13
- const account = useAccount(chainName, walletName);
14
- const wallet = walletManager.wallets.find((w) => w.option.name === walletName);
15
- const chainToShow = walletManager.chains.find((c) => c.chainName === chainName);
16
- const initialize = async () => {
17
- if (wallet && chainToShow && wallet?.walletState === "Connected" /* WalletState.Connected */) {
18
- try {
19
- setIsLoading(true);
20
- const rpcEndpoint = await walletManager.getRpcEndpoint(wallet, chainName);
21
- setRpcEndpoint(rpcEndpoint);
22
- const clientFactory = await walletManager.createClientFactory(wallet, chainName);
23
- const queryClient = await clientFactory.getClient();
24
- setQueryClient(queryClient);
25
- const signingClient = await clientFactory.getSigningClient();
26
- setSigningClient(signingClient);
27
- const signingStargateClient = await clientFactory.getSigningStargateClient(chainToShow.bech32Prefix);
28
- setSigningStargateClient(signingStargateClient);
29
- const signingCosmwasmClient = await clientFactory.getSigningCosmwasmClient();
30
- setSigningCosmWasmClient(signingCosmwasmClient);
31
- }
32
- catch (error) {
33
- setError(error);
34
- }
35
- finally {
36
- setIsLoading(false);
37
- }
38
- }
39
- };
40
- useEffect(() => {
41
- initialize();
42
- }, [chainName, walletName, account, wallet?.walletState]);
43
- return {
44
- rpcEndpoint,
45
- signingClient,
46
- queryClient,
47
- signingStargateClient,
48
- signingCosmWasmClient,
49
- error,
50
- isLoading
51
- };
52
- };
@@ -1,15 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import { useWalletManager } from "./useWalletManager";
3
- export const useOfflineSigner = (chainName, walletName) => {
4
- const walletManager = useWalletManager();
5
- const wallet = walletManager.wallets.find((w) => w.option.name === walletName);
6
- const [offlineSigner, setOfflineSigner] = useState(null);
7
- useEffect(() => {
8
- if (wallet && chainName) {
9
- setOfflineSigner(walletManager.getOfflineSigner(wallet, chainName));
10
- }
11
- }, [wallet, chainName]);
12
- return {
13
- offlineSigner
14
- };
15
- };
@@ -1,2 +0,0 @@
1
- import { WalletAccount } from "@interChain-kit/core";
2
- export declare const useAccount: (chainName: string, walletName: string) => WalletAccount | null;