@getpara/cosmos-wallet-connectors 1.8.0 → 2.0.0-alpha.3

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.
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
- export { CosmosExternalWalletContext, CosmosExternalWalletProvider } from './providers/CosmosExternalWalletContext.js';
2
- export { ParaCosmosProvider, useParaCosmos } from './providers/ParaCosmosContext.js';
1
+ export { CosmosExternalWalletContext } from './providers/CosmosExternalWalletContext.js';
2
+ export type { CosmosExternalWalletContextType } from './providers/CosmosExternalWalletContext.js';
3
+ export { ParaCosmosProvider } from './providers/ParaCosmosContext.js';
4
+ export type { ParaCosmosProviderProps, ParaGrazProviderProps, ParaCosmosProviderConfig, } from './providers/ParaCosmosContext.js';
3
5
  export * from './wallets/connectors/index.js';
6
+ export type { WalletList } from './types/Wallet.js';
package/dist/index.js CHANGED
@@ -1,11 +1,426 @@
1
1
  "use client";
2
- import "./chunk-MMUBH76A.js";
3
- import { CosmosExternalWalletContext, CosmosExternalWalletProvider } from "./providers/CosmosExternalWalletContext.js";
4
- import { ParaCosmosProvider, useParaCosmos } from "./providers/ParaCosmosContext.js";
5
- export * from "./wallets/connectors/index.js";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __async = (__this, __arguments, generator) => {
22
+ return new Promise((resolve, reject) => {
23
+ var fulfilled = (value) => {
24
+ try {
25
+ step(generator.next(value));
26
+ } catch (e) {
27
+ reject(e);
28
+ }
29
+ };
30
+ var rejected = (value) => {
31
+ try {
32
+ step(generator.throw(value));
33
+ } catch (e) {
34
+ reject(e);
35
+ }
36
+ };
37
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
38
+ step((generator = generator.apply(__this, __arguments)).next());
39
+ });
40
+ };
41
+
42
+ // src/providers/CosmosExternalWalletContext.tsx
43
+ import { createContext, useCallback, useEffect, useMemo, useRef } from "react";
44
+ import {
45
+ checkWallet,
46
+ WalletType as GrazWalletType,
47
+ useAccount,
48
+ useActiveWalletType,
49
+ useConnect,
50
+ useDisconnect,
51
+ useSuggestChainAndConnect,
52
+ getChainInfo,
53
+ getWallet as grazGetWallet
54
+ } from "@getpara/graz";
55
+
56
+ // src/stores/useStore.ts
57
+ import { create } from "zustand";
58
+ import { syncTabs } from "zustand-sync-tabs";
59
+ var useExternalWalletStore = create(
60
+ syncTabs(
61
+ (set) => ({
62
+ isConnecting: false,
63
+ updateState: (state) => {
64
+ set(__spreadValues({}, state));
65
+ }
66
+ }),
67
+ {
68
+ name: "para-cosmos-external-wallet-state"
69
+ }
70
+ )
71
+ );
72
+
73
+ // src/providers/CosmosExternalWalletContext.tsx
74
+ import { WalletType } from "@getpara/web-sdk";
75
+ import { jsx } from "react/jsx-runtime";
76
+ var defaultCosmosExternalWallet = {
77
+ wallets: [],
78
+ chains: [],
79
+ chainId: void 0,
80
+ disconnect: () => Promise.resolve(),
81
+ switchChain: () => Promise.resolve({}),
82
+ connectParaEmbedded: () => Promise.resolve({}),
83
+ signMessage: () => Promise.resolve({}),
84
+ signVerificationMessage: () => Promise.resolve({})
85
+ };
86
+ var CosmosExternalWalletContext = createContext(defaultCosmosExternalWallet);
87
+ function CosmosExternalWalletProvider({
88
+ children,
89
+ onSwitchWallet,
90
+ selectedChainId,
91
+ wallets: incompleteWallets,
92
+ chains,
93
+ multiChain,
94
+ shouldUseSuggestChainAndConnect,
95
+ onSwitchChain,
96
+ para,
97
+ walletsWithFullAuth,
98
+ connectedWallet
99
+ }) {
100
+ var _a, _b;
101
+ const { suggestAndConnectAsync } = useSuggestChainAndConnect();
102
+ const {
103
+ data: account,
104
+ isConnecting,
105
+ isReconnecting,
106
+ isConnected
107
+ } = useAccount({
108
+ chainId: multiChain ? chains.map((c) => c.chainId) : selectedChainId,
109
+ multiChain
110
+ });
111
+ const { connectAsync } = useConnect();
112
+ const { disconnectAsync } = useDisconnect();
113
+ const { walletType } = useActiveWalletType();
114
+ const isLocalConnecting = useExternalWalletStore((state) => state.isConnecting);
115
+ const updateExternalWalletState = useExternalWalletStore((state) => state.updateState);
116
+ const verificationMessage = useRef();
117
+ const bufferAddress = multiChain ? (_a = account == null ? void 0 : account[selectedChainId]) == null ? void 0 : _a.address.toString() : account == null ? void 0 : account.address.toString();
118
+ const address = multiChain ? (_b = account == null ? void 0 : account[selectedChainId]) == null ? void 0 : _b.bech32Address : account == null ? void 0 : account.bech32Address;
119
+ const reset = () => __async(this, null, function* () {
120
+ yield disconnectAsync();
121
+ yield para.logout();
122
+ });
123
+ const switchChain = (chainId) => __async(this, null, function* () {
124
+ var _a2;
125
+ let error;
126
+ let changeResp = {};
127
+ try {
128
+ let chainInfo;
129
+ if (shouldUseSuggestChainAndConnect) {
130
+ chainInfo = getChainInfo({ chainId });
131
+ if (!chainInfo) {
132
+ console.error("Chain not found.");
133
+ return;
134
+ }
135
+ }
136
+ const connectedWallet2 = yield shouldUseSuggestChainAndConnect ? suggestAndConnectAsync({ walletType, chainInfo }) : connectAsync({ walletType, chainId });
137
+ changeResp.address = connectedWallet2.accounts[chainId].bech32Address;
138
+ changeResp.bufferAddress = connectedWallet2.accounts[chainId].address.toString();
139
+ } catch (err) {
140
+ if (err.message === "No wallet exists") {
141
+ changeResp.error = err.message;
142
+ } else {
143
+ console.error("Graz connection error:", err);
144
+ changeResp.error = "An unknown error occurred.";
145
+ }
146
+ }
147
+ onSwitchWallet(changeResp);
148
+ if (!changeResp.error) {
149
+ onSwitchChain(chainId);
150
+ const storedExternalWallet = para.externalWallets[(_a2 = changeResp.bufferAddress) != null ? _a2 : ""];
151
+ para.setExternalWallet({
152
+ address: changeResp.bufferAddress,
153
+ type: WalletType.COSMOS,
154
+ provider: getProviderName(walletType),
155
+ addressBech32: changeResp.address,
156
+ withFullParaAuth: storedExternalWallet.isExternalWithParaAuth
157
+ });
158
+ }
159
+ return { error };
160
+ });
161
+ const login = (bufferAddress2, address2, isFullAuthWallet, providerName) => __async(this, null, function* () {
162
+ try {
163
+ return yield para.loginExternalWallet({
164
+ externalWallet: {
165
+ address: bufferAddress2,
166
+ type: WalletType.COSMOS,
167
+ provider: providerName,
168
+ addressBech32: address2,
169
+ withFullParaAuth: isFullAuthWallet
170
+ }
171
+ });
172
+ } catch (err) {
173
+ yield reset();
174
+ throw "Error logging you in. Please try again.";
175
+ }
176
+ });
177
+ useEffect(() => {
178
+ const storedExternalWallet = para.externalWallets[bufferAddress != null ? bufferAddress : ""];
179
+ if (isConnected && !isConnecting && !isReconnecting && !isLocalConnecting && !!bufferAddress && !storedExternalWallet && walletType !== GrazWalletType.PARA) {
180
+ reset();
181
+ }
182
+ }, [isConnecting, isLocalConnecting, isReconnecting, isConnected]);
183
+ useEffect(() => {
184
+ const connect2 = () => __async(this, null, function* () {
185
+ var _a2;
186
+ if (!isLocalConnecting && !isConnecting && !isReconnecting && connectedWallet && connectedWallet.type === WalletType.COSMOS && (connectedWallet.isExternal ? walletType !== ((_a2 = connectedWallet.name) == null ? void 0 : _a2.toLowerCase()) : walletType !== "para")) {
187
+ const isLoggedIn = yield para.isFullyLoggedIn();
188
+ if (!isLoggedIn) {
189
+ return;
190
+ }
191
+ const chainId = multiChain ? chains.map((c) => c.chainId) : selectedChainId;
192
+ yield connectAsync({
193
+ walletType: connectedWallet.isExternal ? connectedWallet.name.toLowerCase() : GrazWalletType.PARA,
194
+ chainId
195
+ });
196
+ }
197
+ });
198
+ connect2();
199
+ }, [isLocalConnecting, isConnecting, isReconnecting, walletType, connectedWallet]);
200
+ const signMessage = (message) => __async(this, null, function* () {
201
+ const wallet = grazGetWallet(walletType);
202
+ if (!wallet) {
203
+ return { error: "Connected wallet not found" };
204
+ }
205
+ try {
206
+ const publicKey = (yield wallet.getKey(selectedChainId)).pubKey;
207
+ const signature = yield wallet.signArbitrary(selectedChainId, address, message);
208
+ return {
209
+ address: bufferAddress,
210
+ signature: signature.signature,
211
+ cosmosPublicKeyHex: Buffer.from(publicKey).toString("hex"),
212
+ cosmosSigner: address
213
+ };
214
+ } catch (e) {
215
+ if (e.message.includes("Request rejected")) {
216
+ return { error: "Signature request rejected" };
217
+ }
218
+ return { error: "An unknown error occurred" };
219
+ }
220
+ });
221
+ const signVerificationMessage = () => __async(this, null, function* () {
222
+ const signature = yield signMessage(verificationMessage.current);
223
+ return signature;
224
+ });
225
+ const connect = (walletType2, chainId) => __async(this, null, function* () {
226
+ var _a2;
227
+ updateExternalWalletState({ isConnecting: true });
228
+ const walletId = (_a2 = getWallet(walletType2)) == null ? void 0 : _a2.id;
229
+ const isFullAuthWallet = walletsWithFullAuth.includes(walletId.toUpperCase());
230
+ if (!chainId) {
231
+ yield disconnectAsync();
232
+ }
233
+ const _chainId = chainId != null ? chainId : multiChain ? chains.map((c) => c.chainId) : selectedChainId;
234
+ if (!_chainId) {
235
+ console.error("Chain id not provided.");
236
+ return;
237
+ }
238
+ let address2;
239
+ let bufferAddress2;
240
+ let error;
241
+ let authState;
242
+ if (!walletType2) {
243
+ console.error("Graz wallet type not provided.");
244
+ return;
245
+ } else {
246
+ try {
247
+ let chainInfo;
248
+ if (shouldUseSuggestChainAndConnect) {
249
+ if (typeof _chainId !== "string") {
250
+ console.error("multiChain is not compatible with shouldUseSuggestChainAndConnect.");
251
+ return;
252
+ }
253
+ chainInfo = getChainInfo({ chainId: _chainId });
254
+ if (!chainInfo) {
255
+ console.error("Chain not found.");
256
+ return;
257
+ }
258
+ }
259
+ const connectedWallet2 = yield shouldUseSuggestChainAndConnect ? suggestAndConnectAsync({ walletType: walletType2, chainInfo }) : connectAsync({ walletType: walletType2, chainId: _chainId });
260
+ const firstChain = !chainId ? selectedChainId : typeof _chainId === "string" ? _chainId : _chainId[0];
261
+ address2 = connectedWallet2.accounts[firstChain].bech32Address;
262
+ bufferAddress2 = connectedWallet2.accounts[firstChain].address.toString();
263
+ if (connectedWallet2.accounts[firstChain]) {
264
+ try {
265
+ authState = yield login(bufferAddress2, address2, isFullAuthWallet, getProviderName(walletType2));
266
+ verificationMessage.current = authState.stage === "verify" ? authState.signatureVerificationMessage : void 0;
267
+ } catch (err) {
268
+ authState = void 0;
269
+ bufferAddress2 = void 0;
270
+ address2 = void 0;
271
+ error = err;
272
+ }
273
+ }
274
+ } catch (err) {
275
+ if (err.message === "No wallet exists") {
276
+ error = err.message;
277
+ } else {
278
+ console.error("Graz connection error:", err);
279
+ error = "An unknown error occurred.";
280
+ }
281
+ }
282
+ }
283
+ updateExternalWalletState({ isConnecting: false });
284
+ return { authState, address: address2, bufferAddress: bufferAddress2, error };
285
+ });
286
+ const getWallet = (walletType2) => incompleteWallets.find((w) => w.grazType === walletType2 || w.grazMobileType === walletType2);
287
+ const getProviderName = (walletType2) => {
288
+ var _a2;
289
+ return (_a2 = getWallet(walletType2)) == null ? void 0 : _a2.name;
290
+ };
291
+ const wallets = incompleteWallets.map((wallet) => {
292
+ return __spreadProps(__spreadValues({
293
+ connect: () => connect(wallet.grazType),
294
+ connectMobile: () => connect(wallet.grazType),
295
+ getQrUri: () => "",
296
+ type: WalletType.COSMOS
297
+ }, wallet), {
298
+ installed: checkWallet(wallet.grazType)
299
+ });
300
+ }).filter((w) => !!w);
301
+ const formattedChains = chains.map((c) => {
302
+ return {
303
+ id: c.chainId,
304
+ name: c.chainName
305
+ };
306
+ });
307
+ const connectParaEmbedded = useCallback(() => __async(this, null, function* () {
308
+ if (!para) {
309
+ return { error: "No para instance available" };
310
+ }
311
+ try {
312
+ const chainId = multiChain ? chains.map((c) => c.chainId) : selectedChainId;
313
+ const result = yield connectAsync({ walletType: GrazWalletType.PARA, chainId });
314
+ return { result };
315
+ } catch (err) {
316
+ const error = err instanceof Error ? err.message : "Unknown error";
317
+ return { error };
318
+ }
319
+ }), [para, multiChain, chains, selectedChainId]);
320
+ return /* @__PURE__ */ jsx(
321
+ CosmosExternalWalletContext.Provider,
322
+ {
323
+ value: useMemo(
324
+ () => ({
325
+ wallets,
326
+ chains: formattedChains,
327
+ chainId: selectedChainId,
328
+ disconnect: disconnectAsync,
329
+ switchChain,
330
+ connectParaEmbedded,
331
+ signMessage,
332
+ signVerificationMessage
333
+ }),
334
+ [
335
+ wallets,
336
+ formattedChains,
337
+ selectedChainId,
338
+ disconnectAsync,
339
+ switchChain,
340
+ connectParaEmbedded,
341
+ signMessage,
342
+ signVerificationMessage
343
+ ]
344
+ ),
345
+ children
346
+ }
347
+ );
348
+ }
349
+
350
+ // src/providers/ParaCosmosContext.tsx
351
+ import { useMemo as useMemo2 } from "react";
352
+ import { GrazProvider } from "@getpara/graz";
353
+ import { jsx as jsx2 } from "react/jsx-runtime";
354
+ function ParaCosmosProvider({
355
+ children,
356
+ config,
357
+ internalConfig,
358
+ grazProviderProps
359
+ }) {
360
+ const para = internalConfig.para;
361
+ const { chains, wallets } = config;
362
+ const walletsWithType = [];
363
+ wallets.forEach((w) => {
364
+ const wallet = w();
365
+ walletsWithType.push(wallet);
366
+ });
367
+ const cosmosExternalWalletProviderProps = useMemo2(
368
+ () => __spreadProps(__spreadValues(__spreadValues({}, config), internalConfig), {
369
+ wallets: walletsWithType
370
+ }),
371
+ [walletsWithType, config, internalConfig]
372
+ );
373
+ return (
374
+ // Casting Para as any here to avoid ts errors due to the graz version being behind.
375
+ // TODO: update graz para sdk to current version
376
+ /* @__PURE__ */ jsx2(GrazProvider, { grazOptions: __spreadValues({ chains, autoReconnect: true, para }, grazProviderProps), children: /* @__PURE__ */ jsx2(CosmosExternalWalletProvider, __spreadProps(__spreadValues({}, cosmosExternalWalletProviderProps), { children })) })
377
+ );
378
+ }
379
+
380
+ // src/wallets/connectors/keplr/keplrIcon.ts
381
+ var icon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzNl8xMTU0KSI+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik0wIDEwLjJDMCA2LjI3MTg2IDcuMTUyNTZlLTA4IDQuMzA3ODQgMC44ODQxNiAyLjg2NTAxQzEuMzc4OSAyLjA1NzY4IDIuMDU3NjcgMS4zNzg5IDIuODY1MDEgMC44ODQxNTRDNC4zMDc4MyAtMS40MzA1MWUtMDcgNi4yNzE4NiAwIDEwLjIgMEgxMy44QzE3LjcyODEgMCAxOS42OTIyIC0xLjQzMDUxZS0wNyAyMS4xMzUgMC44ODQxNTRDMjEuOTQyMyAxLjM3ODkgMjIuNjIxMSAyLjA1NzY4IDIzLjExNTggMi44NjUwMUMyNCA0LjMwNzg0IDI0IDYuMjcxODYgMjQgMTAuMlYxMy44QzI0IDE3LjcyODEgMjQgMTkuNjkyMiAyMy4xMTU4IDIxLjEzNUMyMi42MjExIDIxLjk0MjQgMjEuOTQyMyAyMi42MjExIDIxLjEzNSAyMy4xMTU4QzE5LjY5MjIgMjQgMTcuNzI4MSAyNCAxMy44IDI0SDEwLjJDNi4yNzE4NiAyNCA0LjMwNzgzIDI0IDIuODY1MDEgMjMuMTE1OEMyLjA1NzY3IDIyLjYyMTEgMS4zNzg5IDIxLjk0MjQgMC44ODQxNiAyMS4xMzVDNy4xNTI1NmUtMDggMTkuNjkyMiAwIDE3LjcyODEgMCAxMy44VjEwLjJaIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfMTAzNl8xMTU0KSIvPgogICAgPHBhdGggZD0iTTAgMTAuMkMwIDYuMjcxODYgNy4xNTI1NmUtMDggNC4zMDc4NCAwLjg4NDE2IDIuODY1MDFDMS4zNzg5IDIuMDU3NjggMi4wNTc2NyAxLjM3ODkgMi44NjUwMSAwLjg4NDE1NEM0LjMwNzgzIC0xLjQzMDUxZS0wNyA2LjI3MTg2IDAgMTAuMiAwSDEzLjhDMTcuNzI4MSAwIDE5LjY5MjIgLTEuNDMwNTFlLTA3IDIxLjEzNSAwLjg4NDE1NEMyMS45NDIzIDEuMzc4OSAyMi42MjExIDIuMDU3NjggMjMuMTE1OCAyLjg2NTAxQzI0IDQuMzA3ODQgMjQgNi4yNzE4NiAyNCAxMC4yVjEzLjhDMjQgMTcuNzI4MSAyNCAxOS42OTIyIDIzLjExNTggMjEuMTM1QzIyLjYyMTEgMjEuOTQyNCAyMS45NDIzIDIyLjYyMTEgMjEuMTM1IDIzLjExNThDMTkuNjkyMiAyNCAxNy43MjgxIDI0IDEzLjggMjRIMTAuMkM2LjI3MTg2IDI0IDQuMzA3ODMgMjQgMi44NjUwMSAyMy4xMTU4QzIuMDU3NjcgMjIuNjIxMSAxLjM3ODkgMjEuOTQyNCAwLjg4NDE2IDIxLjEzNUM3LjE1MjU2ZS0wOCAxOS42OTIyIDAgMTcuNzI4MSAwIDEzLjhWMTAuMloiIGZpbGw9InVybCgjcGFpbnQyX3JhZGlhbF8xMDM2XzExNTQpIi8+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDNfcmFkaWFsXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik05LjE1OTM0IDE4LjZWMTIuNzUzN0wxNC44NDAyIDE4LjZIMTguMDAwMVYxOC40NDgzTDExLjQ2NjYgMTEuNzkyM0wxNy40OTYxIDUuNDc1ODlWNS40MDAwMkgxNC4zMTU5TDkuMTU5MzQgMTAuOTgxNVY1LjQwMDAySDYuNjAwMVYxOC42SDkuMTU5MzRaIiBmaWxsPSJ3aGl0ZSIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMDM2XzExNTQiIHgxPSIxMiIgeTE9IjAiIHgyPSIxMiIgeTI9IjI0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxRkQxRkYiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMUJCOEZGIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzEwMzZfMTE1NCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjE0NjQyIDIzLjA5MDYpIHJvdGF0ZSgtNDUuMTU1Nikgc2NhbGUoMzguNDg4NCAzOS4wNjQyKSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMzJERTMiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjMyREUzIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50Ml9yYWRpYWxfMTAzNl8xMTU0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDIyLjcwNzQgMjMuODYzKSByb3RhdGUoLTEzOC40NSkgc2NhbGUoMjQuMDY1IDM2LjY5MjMpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzhCNERGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4QjRERkYiIHN0b3Atb3BhY2l0eT0iMCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQzX3JhZGlhbF8xMDM2XzExNTQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEuODAwMSAwLjE3Nzk5OSkgcm90YXRlKDkwKSBzY2FsZSgxOC45MjIgNDUuOTA5OCkiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjRENUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFCQjhGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8L3JhZGlhbEdyYWRpZW50PgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDM2XzExNTQiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+";
382
+
383
+ // src/wallets/connectors/keplr/keplr.ts
384
+ import { WalletType as WalletType2 } from "@getpara/graz";
385
+ import { isMobile } from "@getpara/web-sdk";
386
+ var keplrWallet = () => {
387
+ return {
388
+ id: "keplr",
389
+ name: "Keplr",
390
+ iconUrl: icon,
391
+ isExtension: true,
392
+ isMobile: isMobile() && true,
393
+ downloadUrl: "https://www.keplr.app/get",
394
+ grazType: WalletType2.KEPLR,
395
+ grazMobileType: WalletType2.WC_KEPLR_MOBILE
396
+ };
397
+ };
398
+
399
+ // src/wallets/connectors/leap/leapIcon.ts
400
+ var icon2 = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzN18xMTY5KSI+CiAgICA8cGF0aCBkPSJNMjEuNjE4NyAxNC43NTAzQzIxLjYxODcgMTYuNDYyNiAyMC41NzQyIDE3LjY2NzIgMTguODc4MyAxOC40NDQzQzE3LjE4MjEgMTkuMjIxNCAxNC44MzU0IDE5LjU3MDIgMTIuMjM0OCAxOS41NzAyQzkuNjM0MjcgMTkuNTcwMiA3LjI3MjM0IDE5LjIyMTUgNS41NjA4NyAxOC40NDQzQzMuODQ5NjggMTcuNjY3MiAyLjc5MDA0IDE2LjQ2MjUgMi43OTAwNCAxNC43NTAzQzIuNzkwMDQgMTMuMDM3NCAzLjg0Mjg3IDExLjQ4NjkgNS41NDY3NSAxMC4zNjQyQzcuMjUwNiA5LjI0MTYzIDkuNjA0NjEgOC41NDc0OSAxMi4yMDQ0IDguNTQ3NDlDMTQuODA0MSA4LjU0NzQ5IDE3LjE1ODEgOS4yNDMxMyAxOC44NjE5IDEwLjM2NjVDMjAuNTY1OCAxMS40OSAyMS42MTg3IDEzLjA0MDUgMjEuNjE4NyAxNC43NTAzWiIgZmlsbD0iIzI0QTk1QSIgc3Ryb2tlPSIjMTM4RDNFIiBzdHJva2Utd2lkdGg9IjAuMDE2NTY3Ii8+CiAgICA8cGF0aCBkPSJNMTQuODMxNyA1LjE5NDcyTDE0LjgzNjYgNS4xOTU4MUwxNC44Mzk4IDUuMTkxOTJDMTUuNDQyMSA0LjQ2NTg2IDE2LjM1NDYgNCAxNy4zNzY2IDRDMTkuMTg5NSA0IDIwLjY2MTcgNS40NjQxOSAyMC42NjE3IDcuMjY3MTFDMjAuNjYxNyA3Ljg2MDAzIDIwLjUwMzUgOC40MTA2IDIwLjIyOTggOC44ODg1N0wyMC4yMjc2IDguODkyM0wyMC4yMjk1IDguODk2MTlDMjAuNDkxMiA5LjQ1MzE3IDIwLjYzMTIgMTAuMDQ2NCAyMC42MzEyIDEwLjY2MzhDMjAuNjMxMiAxMi4yNTI1IDE5LjY5MSAxMy42OTA4IDE4LjE2OTQgMTQuNzMyM0MxNi42NDc4IDE1Ljc3MzcgMTQuNTQ1MyAxNi40MTc4IDEyLjIyMzIgMTYuNDE3OEM5LjkwMTAyIDE2LjQxNzggNy43OTg2MyAxNS43NzM3IDYuMjc2OTcgMTQuNzMyM0M0Ljc1NTMxIDEzLjY5MDggMy44MTUxNiAxMi4yNTI1IDMuODE1MTYgMTAuNjYzOEMzLjgxNTE2IDEwLjA0NjQgMy45NTUxNCA5LjQ1MzE3IDQuMjE2ODkgOC44OTYxOUw0LjIxODczIDguODkyM0w0LjIxNjU5IDguODg4NTdDMy45NDI4MyA4LjQxMDYgMy43ODQ2NyA3Ljg2MDAzIDMuNzg0NjcgNy4yNjcxMUMzLjc4NDY3IDUuNDY0MTkgNS4yNTY4MiA0IDcuMDY5NzIgNEM4LjA4NTYzIDQgOC45OTgxOCA0LjQ2NTg1IDkuNjA2NTYgNS4xOTE5NUw5LjYwOTgyIDUuMTk1ODNMOS42MTQ3NCA1LjE5NDdDMTAuNDM3NSA1LjAwNjgyIDExLjMxNSA0LjkwOTgzIDEyLjIyMzIgNC45MDk4M0MxMy4xMzEzIDQuOTA5ODMgMTQuMDA4OSA1LjAxMjg4IDE0LjgzMTcgNS4xOTQ3MloiIGZpbGw9IiMzMkRBNkQiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODAxMTcgOS4wODQzOEM3LjkxMjY5IDkuMDg0MzggOC44MTM3MyA4LjE4ODIyIDguODEzNzMgNy4wODI3NUM4LjgxMzczIDUuOTc3MjggNy45MTI2OSA1LjA4MTEyIDYuODAxMTcgNS4wODExMkM1LjY4OTYxIDUuMDgxMTIgNC43ODg1NyA1Ljk3NzI4IDQuNzg4NTcgNy4wODI3NUM0Ljc4ODU3IDguMTg4MjIgNS42ODk2MSA5LjA4NDM4IDYuODAxMTcgOS4wODQzOFoiIGZpbGw9IndoaXRlIi8+CiAgICA8cGF0aCBkPSJNMTcuNTM3NyA5LjA4NDM4QzE4LjY0OTMgOS4wODQzOCAxOS41NTAzIDguMTg4MjIgMTkuNTUwMyA3LjA4Mjc1QzE5LjU1MDMgNS45NzcyOCAxOC42NDkzIDUuMDgxMTIgMTcuNTM3NyA1LjA4MTEyQzE2LjQyNjIgNS4wODExMiAxNS41MjUxIDUuOTc3MjggMTUuNTI1MSA3LjA4Mjc1QzE1LjUyNTEgOC4xODgyMiAxNi40MjYyIDkuMDg0MzggMTcuNTM3NyA5LjA4NDM4WiIgZmlsbD0id2hpdGUiLz4KICAgIDxwYXRoIGQ9Ik0xLjMxNzM3IDE4LjE3ODhDMS4zMjUwOSAxOC4xNzU4IDEuMzI1MDcgMTguMTc1OCAxLjMyNTA1IDE4LjE3NThMMS4zMjQ0NiAxOC4xNzQyTDEuMzIyNTkgMTguMTY5NEwxLjMxNTI2IDE4LjE1MDJDMS4zMDg4MyAxOC4xMzMzIDEuMjk5MzQgMTguMTA4MyAxLjI4NzE1IDE4LjA3NTdDMS4yNjI3OCAxOC4wMTA3IDEuMjI3NTkgMTcuOTE1NSAxLjE4NDM2IDE3Ljc5NTRDMS4wOTc5MSAxNy41NTUxIDAuOTc5MzAxIDE3LjIxNDcgMC44NTA2OTEgMTYuODE0NEMwLjU5MzQ0NiAxNi4wMTM3IDAuMjk2MjcxIDE0Ljk3MzUgMC4xMzYyNzUgMTQuMDE1QzAuMDU2Mjc1OCAxMy41MzU3IDAuMDEwNjE3OCAxMy4wNzcxIDAuMDIxMzE4NiAxMi42NzkyQzAuMDMyMDI0NiAxMi4yODExIDAuMDk5MTI3NCAxMS45NDQ3IDAuMjQzNzk3IDExLjcwOTJDMC4zODgwNjkgMTEuNDc0MiAwLjYwOTc2MSAxMS4zMzkgMC45MzIwMzQgMTEuMzQzMUMxLjI1NTA3IDExLjM0NzMgMS42Nzk1MiAxMS40OTE0IDIuMjI3OTUgMTEuODE3MUM1LjUyNDA4IDEzLjc3NDQgNi4yNzM2NiAxNy4wMjgzIDYuNDUwNDEgMTguNTMxNkM2LjQ5ODYxIDE4Ljk1MTEgNi4xNjExIDE5LjMyMyA1LjczMjg1IDE5LjMyM0gwLjU3OTQxM0MwLjIzOTk2MiAxOS4zMjMgMC4xMTU0NDkgMTguODc5MiAwLjQxMjc4NyAxOC43MDc3TDEuMzIxNDkgMTguMTg2TDEuMzI3NjYgMTguMTgyNUwxLjMyNTA1IDE4LjE3NThMMS4zMTczNyAxOC4xNzg4WiIgZmlsbD0iIzMyREE2RCIvPgogICAgPHBhdGggZD0iTTEuMzI1MDUgMTguMTc1OEMxLjMyNTA3IDE4LjE3NTggMS4zMjUwOSAxOC4xNzU4IDEuMzE3MzcgMTguMTc4OEwxLjMyNTA1IDE4LjE3NThaTTEuMzI1MDUgMTguMTc1OEwxLjMyNDQ2IDE4LjE3NDJMMS4zMjI1OSAxOC4xNjk0TDEuMzE1MjYgMTguMTUwMkMxLjMwODgzIDE4LjEzMzMgMS4yOTkzNCAxOC4xMDgzIDEuMjg3MTUgMTguMDc1N0MxLjI2Mjc4IDE4LjAxMDcgMS4yMjc1OSAxNy45MTU1IDEuMTg0MzYgMTcuNzk1NEMxLjA5NzkxIDE3LjU1NTEgMC45NzkzMDEgMTcuMjE0NyAwLjg1MDY5MSAxNi44MTQ0QzAuNTkzNDQ2IDE2LjAxMzcgMC4yOTYyNzEgMTQuOTczNSAwLjEzNjI3NSAxNC4wMTVDMC4wNTYyNzU4IDEzLjUzNTcgMC4wMTA2MTc4IDEzLjA3NzEgMC4wMjEzMTg2IDEyLjY3OTJDMC4wMzIwMjQ2IDEyLjI4MTEgMC4wOTkxMjc0IDExLjk0NDcgMC4yNDM3OTcgMTEuNzA5MkMwLjM4ODA2OSAxMS40NzQyIDAuNjA5NzYxIDExLjMzOSAwLjkzMjAzNCAxMS4zNDMxQzEuMjU1MDcgMTEuMzQ3MyAxLjY3OTUyIDExLjQ5MTQgMi4yMjc5NSAxMS44MTcxQzUuNTI0MDggMTMuNzc0NCA2LjI3MzY2IDE3LjAyODMgNi40NTA0MSAxOC41MzE2QzYuNDk4NjEgMTguOTUxMSA2LjE2MTEgMTkuMzIzIDUuNzMyODUgMTkuMzIzSDAuNTc5NDEzQzAuMjM5OTYyIDE5LjMyMyAwLjExNTQ0OSAxOC44NzkyIDAuNDEyNzg3IDE4LjcwNzdMMS4zMjE0OSAxOC4xODZMMS4zMjc2NiAxOC4xODI1TDEuMzI1MDUgMTguMTc1OFoiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTIyLjgyMTIgMTguMTc2MUwyMi44MjkgMTguMTc4OEMyMi44MjQzIDE4LjE3NzIgMjIuODIyNCAxOC4xNzY1IDIyLjgyMTcgMTguMTc2MkMyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxIDIyLjgyMTIgMTguMTc2MUwyMi44MjEzIDE4LjE3NTdMMjIuODIxOCAxOC4xNzQ1TDIyLjgyMzQgMTguMTY5NkwyMi44MzAxIDE4LjE1MDVDMjIuODM1OSAxOC4xMzM2IDIyLjg0NDQgMTguMTA4NSAyMi44NTU1IDE4LjA3NkMyMi44Nzc1IDE4LjAxMDkgMjIuOTA5MyAxNy45MTU4IDIyLjk0ODMgMTcuNzk1NkMyMy4wMjY0IDE3LjU1NTQgMjMuMTMzNiAxNy4yMTQ5IDIzLjI0OTggMTYuODE0NkMyMy40ODIxIDE2LjAxMzkgMjMuNzUwNiAxNC45NzM3IDIzLjg5NSAxNC4wMTUxQzIzLjk2NzIgMTMuNTM1OCAyNC4wMDgzIDEzLjA3NzIgMjMuOTk4NSAxMi42NzkyQzIzLjk4ODcgMTIuMjgxIDIzLjkyNzggMTEuOTQ0NSAyMy43OTY5IDExLjcwODlDMjMuNzMxNSAxMS41OTExIDIzLjY0ODcgMTEuNDk4OCAyMy41NDYxIDExLjQzNjNDMjMuNDQzNiAxMS4zNzM5IDIzLjMyMDkgMTEuMzQxMSAyMy4xNzUyIDExLjM0MzFDMjIuODgzNSAxMS4zNDczIDIyLjUgMTEuNDkxMiAyMi4wMDQxIDExLjgxNjlDMTkuMDMxMSAxMy43NzQgMTguMzQ4NSAxNy4wMzQxIDE4LjE5NjEgMTguNTMxNUMxOC4xNTM4IDE4Ljk1MiAxOC40NTU4IDE5LjMyMyAxOC44NDA0IDE5LjMyM0gyMy40OTk5QzIzLjY1MDYgMTkuMzIzIDIzLjc1NDggMTkuMjEyOSAyMy43ODc2IDE5LjA3OThDMjMuODIwNSAxOC45NDY5IDIzLjc4MTYgMTguNzkzMSAyMy42NDc5IDE4LjcwNzVMMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODE5IDE4LjE4MjNMMjIuODI0NiAxOC4xODU4TDIzLjY0NzkgMTguNzA3NUwyMi44MjEyIDE4LjE3NjFaIiBmaWxsPSIjMzJEQTZEIi8+CiAgICA8cGF0aCBkPSJNMjIuODIxMiAxOC4xNzYxTDIyLjgyOSAxOC4xNzg4QzIyLjgyNDMgMTguMTc3MiAyMi44MjI0IDE4LjE3NjUgMjIuODIxNyAxOC4xNzYyQzIyLjgyMTIgMTguMTc2MSAyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODIxMyAxOC4xNzU3TDIyLjgyMTggMTguMTc0NUwyMi44MjM0IDE4LjE2OTZMMjIuODMwMSAxOC4xNTA1QzIyLjgzNTkgMTguMTMzNiAyMi44NDQ0IDE4LjEwODUgMjIuODU1NSAxOC4wNzZDMjIuODc3NSAxOC4wMTA5IDIyLjkwOTMgMTcuOTE1OCAyMi45NDgzIDE3Ljc5NTZDMjMuMDI2NCAxNy41NTU0IDIzLjEzMzYgMTcuMjE0OSAyMy4yNDk4IDE2LjgxNDZDMjMuNDgyMSAxNi4wMTM5IDIzLjc1MDYgMTQuOTczNyAyMy44OTUgMTQuMDE1MUMyMy45NjcyIDEzLjUzNTggMjQuMDA4MyAxMy4wNzcyIDIzLjk5ODUgMTIuNjc5MkMyMy45ODg3IDEyLjI4MSAyMy45Mjc4IDExLjk0NDUgMjMuNzk2OSAxMS43MDg5QzIzLjczMTUgMTEuNTkxMSAyMy42NDg3IDExLjQ5ODggMjMuNTQ2MSAxMS40MzYzQzIzLjQ0MzYgMTEuMzczOSAyMy4zMjA5IDExLjM0MTEgMjMuMTc1MiAxMS4zNDMxQzIyLjg4MzUgMTEuMzQ3MyAyMi41IDExLjQ5MTIgMjIuMDA0MSAxMS44MTY5QzE5LjAzMTEgMTMuNzc0IDE4LjM0ODUgMTcuMDM0MSAxOC4xOTYxIDE4LjUzMTVDMTguMTUzOCAxOC45NTIgMTguNDU1OCAxOS4zMjMgMTguODQwNCAxOS4zMjNIMjMuNDk5OUMyMy42NTA2IDE5LjMyMyAyMy43NTQ4IDE5LjIxMjkgMjMuNzg3NiAxOS4wNzk4QzIzLjgyMDUgMTguOTQ2OSAyMy43ODE2IDE4Ljc5MzEgMjMuNjQ3OSAxOC43MDc1TTIyLjgyMTIgMTguMTc2MUwyMy42NDc5IDE4LjcwNzVNMjIuODIxMiAxOC4xNzYxTDIyLjgxOSAxOC4xODIzTDIyLjgyNDYgMTguMTg1OEwyMy42NDc5IDE4LjcwNzUiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODIxNzIgOC4yODg4MUM3LjQ4NDggOC4yODg4MSA4LjAyMjM1IDcuNzUxMjkgOC4wMjIzNSA3LjA4ODJDOC4wMjIzNSA2LjQyNTExIDcuNDg0OCA1Ljg4NzU3IDYuODIxNzIgNS44ODc1N0M2LjE1ODY0IDUuODg3NTcgNS42MjEwOSA2LjQyNTExIDUuNjIxMDkgNy4wODgyQzUuNjIxMDkgNy43NTEyOSA2LjE1ODY0IDguMjg4ODEgNi44MjE3MiA4LjI4ODgxWiIgZmlsbD0iIzA5MjUxMSIvPgogICAgPHBhdGggZD0iTTE3LjU1ODMgOC4yODg4MUMxOC4yMjE0IDguMjg4ODEgMTguNzU4OSA3Ljc1MTI5IDE4Ljc1ODkgNy4wODgyQzE4Ljc1ODkgNi40MjUxMSAxOC4yMjE0IDUuODg3NTcgMTcuNTU4MyA1Ljg4NzU3QzE2Ljg5NTIgNS44ODc1NyAxNi4zNTc3IDYuNDI1MTEgMTYuMzU3NyA3LjA4ODJDMTYuMzU3NyA3Ljc1MTI5IDE2Ljg5NTIgOC4yODg4MSAxNy41NTgzIDguMjg4ODFaIiBmaWxsPSIjMDkyNTExIi8+CiAgICA8cGF0aCBkPSJNMTUuNDI2MiAxMS45MTI1QzE1LjM4OTkgMTIuMzM0NSAxNS4yNzA5IDEyLjc0NTEgMTUuMDc1OSAxMy4xMjFDMTQuODgwOSAxMy40OTY5IDE0LjYxMzggMTMuODMwNiAxNC4yODk4IDE0LjEwMzNDMTMuOTY1OCAxNC4zNzYgMTMuNTkxMyAxNC41ODIxIDEzLjE4NzYgMTQuNzEwMUMxMi43ODQgMTQuODM4IDEyLjM1OTEgMTQuODg1MiAxMS45MzcyIDE0Ljg0ODlDMTEuNTE1MyAxNC44MTI2IDExLjEwNDYgMTQuNjkzNSAxMC43Mjg3IDE0LjQ5ODVDMTAuMzUyOSAxNC4zMDM2IDEwLjAxOTEgMTQuMDM2NCA5Ljc0NjM5IDEzLjcxMjRDOS40NzM3NiAxMy4zODg1IDkuMjY3NTYgMTMuMDEzOSA5LjEzOTY0IDEyLjYxMDNDOS4wMTE3MSAxMi4yMDY2IDguOTY0NTkgMTEuNzgxNyA5LjAwMDg4IDExLjM1OThMMTIuMjEzNiAxMS42MzYyTDE1LjQyNjIgMTEuOTEyNVoiIGZpbGw9IiMwOTI1MTEiLz4KICA8L2c+CiAgPGRlZnM+CiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzEwMzdfMTE2OSI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=";
401
+
402
+ // src/wallets/connectors/leap/leap.ts
403
+ import { WalletType as WalletType3 } from "@getpara/graz";
404
+ import { isMobile as isMobile2 } from "@getpara/web-sdk";
405
+ var leapWallet = () => {
406
+ return {
407
+ id: "leap",
408
+ name: "Leap",
409
+ iconUrl: icon2,
410
+ isExtension: true,
411
+ isMobile: isMobile2() && true,
412
+ downloadUrl: "https://www.leapwallet.io/download",
413
+ grazType: WalletType3.LEAP,
414
+ grazMobileType: WalletType3.WC_LEAP_MOBILE
415
+ };
416
+ };
417
+
418
+ // src/wallets/connectors/index.ts
419
+ var allWallets = [keplrWallet, leapWallet];
6
420
  export {
7
421
  CosmosExternalWalletContext,
8
- CosmosExternalWalletProvider,
9
422
  ParaCosmosProvider,
10
- useParaCosmos
423
+ allWallets,
424
+ keplrWallet,
425
+ leapWallet
11
426
  };
Binary file
Binary file
@@ -1,22 +1,20 @@
1
- import { ReactNode } from 'react';
2
- import ParaWeb, { CommonChain, CommonWallet } from '@getpara/react-sdk';
3
- export declare const defaultCosmosExternalWallet: {
4
- wallets: any[];
5
- chains: any[];
6
- chainId: any;
7
- disconnect: () => Promise<void>;
8
- switchChain: () => Promise<{}>;
9
- signMessage: () => Promise<{}>;
10
- signVerificationMessage: () => Promise<{}>;
11
- };
12
- export declare const CosmosExternalWalletContext: import("react").Context<{
1
+ import { PropsWithChildren } from 'react';
2
+ import { ParaCosmosProviderConfig } from './ParaCosmosContext.js';
3
+ import { WalletWithType } from '../types/Wallet.js';
4
+ import ParaWeb, { Wallet } from '@getpara/web-sdk';
5
+ import type { CommonChain, CommonWallet, TExternalWallet } from '@getpara/react-common';
6
+ export type CosmosExternalWalletContextType = {
13
7
  wallets: CommonWallet[];
14
8
  chains: CommonChain[];
15
- chainId: string;
9
+ chainId?: string;
16
10
  disconnect: () => Promise<void>;
17
11
  switchChain: (chainId: string) => Promise<{
18
12
  error?: string[];
19
13
  }>;
14
+ connectParaEmbedded: () => Promise<{
15
+ result?: unknown;
16
+ error?: string;
17
+ }>;
20
18
  signMessage: (message: string) => Promise<{
21
19
  signature?: string;
22
20
  error?: string;
@@ -28,14 +26,18 @@ export declare const CosmosExternalWalletContext: import("react").Context<{
28
26
  cosmosSigner?: string;
29
27
  error?: string;
30
28
  }>;
31
- }>;
32
- interface CosmosExternalWalletProviderProps {
33
- children: ReactNode;
34
- para: ParaWeb;
35
- onSwitchWallet: (args: {
29
+ };
30
+ export type CosmosExternalWalletProviderConfig = {
31
+ onSwitchWallet?: (args: {
36
32
  address?: string;
37
33
  error?: string;
38
34
  }) => void;
39
- }
40
- export declare function CosmosExternalWalletProvider({ children, para, onSwitchWallet }: CosmosExternalWalletProviderProps): import("react/jsx-runtime").JSX.Element;
41
- export {};
35
+ para: ParaWeb;
36
+ walletsWithFullAuth: TExternalWallet[];
37
+ connectedWallet?: Omit<Wallet, 'signer'> | null;
38
+ };
39
+ export type CosmosExternalWalletProviderConfigFull = {
40
+ wallets: WalletWithType[];
41
+ } & Omit<ParaCosmosProviderConfig, 'wallets'> & CosmosExternalWalletProviderConfig;
42
+ export declare const CosmosExternalWalletContext: import("react").Context<CosmosExternalWalletContextType>;
43
+ export declare function CosmosExternalWalletProvider({ children, onSwitchWallet, selectedChainId, wallets: incompleteWallets, chains, multiChain, shouldUseSuggestChainAndConnect, onSwitchChain, para, walletsWithFullAuth, connectedWallet, }: CosmosExternalWalletProviderConfigFull & PropsWithChildren): import("react/jsx-runtime").JSX.Element;
@@ -1,17 +1,9 @@
1
- import { ReactNode } from 'react';
2
- import { WalletList, WalletWithType } from '../types/Wallet.js';
1
+ import { PropsWithChildren } from 'react';
2
+ import { WalletList } from '../types/Wallet.js';
3
+ import { CosmosExternalWalletProviderConfig } from './CosmosExternalWalletContext.js';
3
4
  import { ChainInfo } from '@keplr-wallet/types';
4
5
  import { ConfigureGrazArgs } from '@getpara/graz';
5
- export declare const ParaCosmosContext: import("react").Context<{
6
- selectedChainId?: string;
7
- wallets: WalletWithType[];
8
- chains: ChainInfo[];
9
- multiChain?: boolean;
10
- shouldUseSuggestChainAndConnect?: boolean;
11
- onSwitchChain: (chainId: string) => void;
12
- }>;
13
- interface ParaCosmosProviderProps extends Omit<ConfigureGrazArgs, 'chains'> {
14
- children: ReactNode;
6
+ export type ParaCosmosProviderConfig = {
15
7
  wallets: WalletList;
16
8
  chains: ChainInfo[];
17
9
  /**
@@ -33,14 +25,11 @@ interface ParaCosmosProviderProps extends Omit<ConfigureGrazArgs, 'chains'> {
33
25
  */
34
26
  shouldUseSuggestChainAndConnect?: boolean;
35
27
  onSwitchChain: (chainId: string) => void;
36
- }
37
- export declare function ParaCosmosProvider({ children, wallets, chains, selectedChainId, multiChain, shouldUseSuggestChainAndConnect, onSwitchChain, ...grazOpts }: ParaCosmosProviderProps): import("react/jsx-runtime").JSX.Element;
38
- export declare const useParaCosmos: () => {
39
- selectedChainId?: string;
40
- wallets: WalletWithType[];
41
- chains: ChainInfo[];
42
- multiChain?: boolean;
43
- shouldUseSuggestChainAndConnect?: boolean;
44
- onSwitchChain: (chainId: string) => void;
45
28
  };
46
- export {};
29
+ export type ParaGrazProviderProps = Omit<ConfigureGrazArgs, 'config' | 'chains'>;
30
+ export type ParaCosmosProviderProps = {
31
+ config: ParaCosmosProviderConfig;
32
+ internalConfig: CosmosExternalWalletProviderConfig;
33
+ grazProviderProps: ParaGrazProviderProps;
34
+ };
35
+ export declare function ParaCosmosProvider({ children, config, internalConfig, grazProviderProps, }: ParaCosmosProviderProps & PropsWithChildren): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { WalletType } from '@getpara/graz';
2
- import { WalletMetadata } from '@getpara/react-sdk';
2
+ import { type WalletMetadata } from '@getpara/react-common';
3
3
  export type WalletList = (() => WalletWithType)[];
4
4
  export type WalletWithType = {
5
5
  grazType: WalletType;
@@ -1,3 +1,4 @@
1
1
  import { keplrWallet } from './keplr/keplr.js';
2
2
  import { leapWallet } from './leap/leap.js';
3
3
  export { keplrWallet, leapWallet };
4
+ export declare const allWallets: (() => import("../../types/Wallet.js").WalletWithType)[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getpara/cosmos-wallet-connectors",
3
- "version": "1.8.0",
3
+ "version": "2.0.0-alpha.3",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,30 +8,30 @@
8
8
  ".": "./dist/index.js",
9
9
  "./connectors": "./dist/wallets/connectors/index.js"
10
10
  },
11
- "dependencies": {
12
- "@getpara/react-sdk": "1.8.0",
13
- "zustand": "^4.5.2",
14
- "zustand-sync-tabs": "^0.2.2"
15
- },
16
11
  "scripts": {
17
12
  "build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
18
13
  "typegen": "tsc --emitDeclarationOnly",
19
14
  "test": "vitest run --coverage"
20
15
  },
21
- "devDependencies": {
22
- "@getpara/graz": "^0.1.0",
16
+ "dependencies": {
17
+ "@cosmjs/cosmwasm-stargate": "<=0.31.3",
18
+ "@cosmjs/launchpad": "*",
19
+ "@cosmjs/proto-signing": "<=0.31.3",
20
+ "@cosmjs/stargate": "<=0.31.3",
21
+ "@cosmjs/tendermint-rpc": "<=0.31.3",
22
+ "@getpara/graz": "^1.0.0-dev.1",
23
+ "@getpara/web-sdk": "2.0.0-alpha.3",
23
24
  "@leapwallet/cosmos-social-login-capsule-provider": "^0.0.41",
25
+ "zustand": "^4.5.2",
26
+ "zustand-sync-tabs": "^0.2.2"
27
+ },
28
+ "devDependencies": {
29
+ "@getpara/react-common": "2.0.0-alpha.3",
24
30
  "@types/react": "^18.0.31",
25
31
  "@types/react-dom": "^18.2.7",
26
32
  "typescript": "^5.4.3"
27
33
  },
28
34
  "peerDependencies": {
29
- "@cosmjs/cosmwasm-stargate": "<=0.31.3",
30
- "@cosmjs/launchpad": "*",
31
- "@cosmjs/proto-signing": "<=0.31.3",
32
- "@cosmjs/stargate": "<=0.33.1",
33
- "@cosmjs/tendermint-rpc": "<=0.31.3",
34
- "@getpara/graz": "^0.1.0",
35
35
  "react": ">=18",
36
36
  "react-dom": ">=18"
37
37
  },
@@ -39,5 +39,5 @@
39
39
  "dist",
40
40
  "package.json"
41
41
  ],
42
- "gitHead": "ef96e79558695ccbe148d25a8e3611c4596d1954"
42
+ "gitHead": "77a1e04b06258842ca9c81e3db2a2b0092517659"
43
43
  }
@@ -1,59 +0,0 @@
1
- "use client";
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __spreadValues = (a, b) => {
10
- for (var prop in b || (b = {}))
11
- if (__hasOwnProp.call(b, prop))
12
- __defNormalProp(a, prop, b[prop]);
13
- if (__getOwnPropSymbols)
14
- for (var prop of __getOwnPropSymbols(b)) {
15
- if (__propIsEnum.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- }
18
- return a;
19
- };
20
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
- var __objRest = (source, exclude) => {
22
- var target = {};
23
- for (var prop in source)
24
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
- target[prop] = source[prop];
26
- if (source != null && __getOwnPropSymbols)
27
- for (var prop of __getOwnPropSymbols(source)) {
28
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
- target[prop] = source[prop];
30
- }
31
- return target;
32
- };
33
- var __async = (__this, __arguments, generator) => {
34
- return new Promise((resolve, reject) => {
35
- var fulfilled = (value) => {
36
- try {
37
- step(generator.next(value));
38
- } catch (e) {
39
- reject(e);
40
- }
41
- };
42
- var rejected = (value) => {
43
- try {
44
- step(generator.throw(value));
45
- } catch (e) {
46
- reject(e);
47
- }
48
- };
49
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
50
- step((generator = generator.apply(__this, __arguments)).next());
51
- });
52
- };
53
-
54
- export {
55
- __spreadValues,
56
- __spreadProps,
57
- __objRest,
58
- __async
59
- };
package/dist/package.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
@@ -1,253 +0,0 @@
1
- "use client";
2
- import {
3
- __async,
4
- __spreadProps,
5
- __spreadValues
6
- } from "../chunk-MMUBH76A.js";
7
- import { jsx } from "react/jsx-runtime";
8
- import { createContext, useEffect, useMemo, useRef } from "react";
9
- import { useParaCosmos } from "./ParaCosmosContext.js";
10
- import {
11
- useExternalWalletProviderStore,
12
- WalletType
13
- } from "@getpara/react-sdk";
14
- import {
15
- checkWallet,
16
- WalletType as GrazWalletType,
17
- useAccount,
18
- useActiveChainIds,
19
- useActiveWalletType,
20
- useConnect,
21
- useDisconnect,
22
- useSuggestChainAndConnect,
23
- getChainInfo,
24
- getWallet as grazGetWallet
25
- } from "@getpara/graz";
26
- import { useExternalWalletStore } from "../stores/useStore.js";
27
- const defaultCosmosExternalWallet = {
28
- wallets: [],
29
- chains: [],
30
- chainId: void 0,
31
- disconnect: () => Promise.resolve(),
32
- switchChain: () => Promise.resolve({}),
33
- signMessage: () => Promise.resolve({}),
34
- signVerificationMessage: () => Promise.resolve({})
35
- };
36
- const CosmosExternalWalletContext = createContext(defaultCosmosExternalWallet);
37
- function CosmosExternalWalletProvider({ children, para, onSwitchWallet }) {
38
- var _a, _b;
39
- const {
40
- selectedChainId,
41
- wallets: incompleteWallets,
42
- chains,
43
- multiChain,
44
- shouldUseSuggestChainAndConnect,
45
- onSwitchChain
46
- } = useParaCosmos();
47
- const { suggestAndConnectAsync } = useSuggestChainAndConnect();
48
- const {
49
- data: account,
50
- isConnecting,
51
- isReconnecting
52
- } = useAccount({
53
- chainId: multiChain ? chains.map((c) => c.chainId) : selectedChainId,
54
- multiChain
55
- });
56
- const activeChainIds = useActiveChainIds();
57
- const { connectAsync } = useConnect();
58
- const { disconnectAsync } = useDisconnect();
59
- const { walletType } = useActiveWalletType();
60
- const isLocalConnecting = useExternalWalletStore((state) => state.isConnecting);
61
- const updateExternalWalletState = useExternalWalletStore((state) => state.updateState);
62
- const fullAuthWallets = useExternalWalletProviderStore((state) => state.fullAuthWallets);
63
- const bufferAddress = multiChain ? (_a = account == null ? void 0 : account[selectedChainId]) == null ? void 0 : _a.address.toString() : account == null ? void 0 : account.address.toString();
64
- const address = multiChain ? (_b = account == null ? void 0 : account[selectedChainId]) == null ? void 0 : _b.bech32Address : account == null ? void 0 : account.bech32Address;
65
- const verificationMessage = useRef();
66
- const reset = () => __async(this, null, function* () {
67
- yield disconnectAsync();
68
- yield para.logout();
69
- });
70
- const switchChain = (chainId) => __async(this, null, function* () {
71
- let error;
72
- const hasActiveChain = activeChainIds.includes(chainId);
73
- if (!hasActiveChain) {
74
- updateExternalWalletState({ isConnecting: true });
75
- let changeResp;
76
- changeResp = yield connect(walletType, chainId);
77
- onSwitchWallet(changeResp);
78
- updateExternalWalletState({ isConnecting: false });
79
- if (changeResp.error) {
80
- error = [changeResp == null ? void 0 : changeResp.error];
81
- }
82
- }
83
- if (!error) {
84
- onSwitchChain(chainId);
85
- }
86
- return { error };
87
- });
88
- const login = (bufferAddress2, address2, grazWalletType, providerName) => __async(this, null, function* () {
89
- try {
90
- return yield para.externalWalletLogin({
91
- address: bufferAddress2,
92
- type: WalletType.COSMOS,
93
- provider: providerName,
94
- addressBech32: address2,
95
- withFullParaAuth: fullAuthWallets == null ? void 0 : fullAuthWallets.includes(getWalletId(grazWalletType).toUpperCase())
96
- });
97
- } catch (err) {
98
- yield reset();
99
- throw "Error logging you in. Please try again.";
100
- }
101
- });
102
- useEffect(() => {
103
- const storedExternalWallet = para.externalWallets[bufferAddress != null ? bufferAddress : ""];
104
- if (!isConnecting && !isReconnecting && !isLocalConnecting && address && storedExternalWallet && storedExternalWallet.address !== address && walletType !== GrazWalletType.PARA) {
105
- para.setExternalWallet({
106
- address: bufferAddress,
107
- type: WalletType.COSMOS,
108
- provider: getProviderName(walletType),
109
- addressBech32: address,
110
- withFullParaAuth: fullAuthWallets == null ? void 0 : fullAuthWallets.includes(getWalletId(walletType).toUpperCase())
111
- });
112
- }
113
- }, [isConnecting, isReconnecting, address]);
114
- useEffect(() => {
115
- const storedExternalWallet = para.externalWallets[bufferAddress != null ? bufferAddress : ""];
116
- if (!isConnecting && !isReconnecting && !isLocalConnecting && !!bufferAddress && !storedExternalWallet && walletType !== GrazWalletType.PARA) {
117
- reset();
118
- }
119
- }, [isConnecting, isReconnecting]);
120
- const signMessage = (message) => __async(this, null, function* () {
121
- const wallet = grazGetWallet(walletType);
122
- if (!wallet) {
123
- return { error: "Connected wallet not found" };
124
- }
125
- try {
126
- const publicKey = (yield wallet.getKey(selectedChainId)).pubKey;
127
- const signature = yield wallet.signArbitrary(selectedChainId, address, message);
128
- return {
129
- address: bufferAddress,
130
- signature: signature.signature,
131
- cosmosPublicKeyHex: Buffer.from(publicKey).toString("hex"),
132
- cosmosSigner: address
133
- };
134
- } catch (e) {
135
- if (e.message.includes("Request rejected")) {
136
- return { error: "Signature request rejected" };
137
- }
138
- return { error: "An unknown error occurred" };
139
- }
140
- });
141
- const signVerificationMessage = () => __async(this, null, function* () {
142
- const signature = yield signMessage(verificationMessage.current);
143
- return signature;
144
- });
145
- const connect = (walletType2, chainId) => __async(this, null, function* () {
146
- updateExternalWalletState({ isConnecting: true });
147
- if (!chainId) {
148
- yield disconnectAsync();
149
- }
150
- const _chainId = chainId != null ? chainId : multiChain ? chains.map((c) => c.chainId) : selectedChainId;
151
- if (!_chainId) {
152
- console.error("Chain id not provided.");
153
- return;
154
- }
155
- let address2;
156
- let bufferAddress2;
157
- let error;
158
- let userExists = false;
159
- let isVerified = false;
160
- if (!walletType2) {
161
- console.error("Graz wallet type not provided.");
162
- return;
163
- } else {
164
- try {
165
- let chainInfo;
166
- if (shouldUseSuggestChainAndConnect) {
167
- if (typeof _chainId !== "string") {
168
- console.error("multiChain is not compatible with shouldUseSuggestChainAndConnect.");
169
- return;
170
- }
171
- chainInfo = getChainInfo({ chainId: _chainId });
172
- if (!chainInfo) {
173
- console.error("Chain not found.");
174
- return;
175
- }
176
- }
177
- const connectedWallet = yield shouldUseSuggestChainAndConnect ? suggestAndConnectAsync({ walletType: walletType2, chainInfo }) : connectAsync({ walletType: walletType2, chainId: _chainId });
178
- const firstChain = typeof _chainId === "string" ? _chainId : _chainId[0];
179
- address2 = connectedWallet.accounts[firstChain].bech32Address;
180
- bufferAddress2 = connectedWallet.accounts[firstChain].address.toString();
181
- if (connectedWallet.accounts[firstChain]) {
182
- try {
183
- const loginResp = yield login(bufferAddress2, address2, walletType2, getProviderName(walletType2));
184
- userExists = loginResp.userExists;
185
- isVerified = loginResp.isVerified;
186
- verificationMessage.current = loginResp.signatureVerificationMessage;
187
- } catch (err) {
188
- bufferAddress2 = void 0;
189
- address2 = void 0;
190
- error = err;
191
- }
192
- }
193
- } catch (err) {
194
- if (err.message === "No wallet exists") {
195
- error = err.message;
196
- } else {
197
- console.error("Graz connection error:", err);
198
- error = "An unknown error occurred.";
199
- }
200
- }
201
- }
202
- updateExternalWalletState({ isConnecting: false });
203
- return { address: address2, bufferAddress: bufferAddress2, error, userExists, isVerified };
204
- });
205
- const getWallet = (walletType2) => incompleteWallets.find((w) => w.grazType === walletType2 || w.grazMobileType === walletType2);
206
- const getProviderName = (walletType2) => {
207
- var _a2;
208
- return (_a2 = getWallet(walletType2)) == null ? void 0 : _a2.name;
209
- };
210
- const getWalletId = (walletType2) => {
211
- var _a2;
212
- return (_a2 = getWallet(walletType2)) == null ? void 0 : _a2.id;
213
- };
214
- const wallets = incompleteWallets.map((wallet) => {
215
- return __spreadProps(__spreadValues({
216
- connect: () => connect(wallet.grazType),
217
- connectMobile: () => connect(wallet.grazType),
218
- getQrUri: () => "",
219
- type: WalletType.COSMOS
220
- }, wallet), {
221
- installed: checkWallet(wallet.grazType)
222
- });
223
- }).filter((w) => !!w);
224
- const formattedChains = chains.map((c) => {
225
- return {
226
- id: c.chainId,
227
- name: c.chainName
228
- };
229
- });
230
- return /* @__PURE__ */ jsx(
231
- CosmosExternalWalletContext.Provider,
232
- {
233
- value: useMemo(
234
- () => ({
235
- wallets,
236
- chains: formattedChains,
237
- chainId: selectedChainId,
238
- disconnect: disconnectAsync,
239
- switchChain,
240
- signMessage,
241
- signVerificationMessage
242
- }),
243
- [wallets, formattedChains, selectedChainId, disconnectAsync, switchChain, signMessage, signVerificationMessage]
244
- ),
245
- children
246
- }
247
- );
248
- }
249
- export {
250
- CosmosExternalWalletContext,
251
- CosmosExternalWalletProvider,
252
- defaultCosmosExternalWallet
253
- };
@@ -1,90 +0,0 @@
1
- "use client";
2
- import {
3
- __async,
4
- __objRest,
5
- __spreadProps,
6
- __spreadValues
7
- } from "../chunk-MMUBH76A.js";
8
- import { jsx } from "react/jsx-runtime";
9
- import { createContext, useCallback, useContext, useEffect, useMemo } from "react";
10
- import { useClient, useExternalWalletProviderStore } from "@getpara/react-sdk";
11
- import { CosmosExternalWalletContext, CosmosExternalWalletProvider } from "./CosmosExternalWalletContext.js";
12
- import { GrazProvider, WalletType, connect } from "@getpara/graz";
13
- const ParaCosmosContext = createContext({ wallets: [], chains: [], onSwitchChain: () => {
14
- } });
15
- function ParaCosmosProvider(_a) {
16
- var _b = _a, {
17
- children,
18
- wallets,
19
- chains,
20
- selectedChainId,
21
- multiChain,
22
- shouldUseSuggestChainAndConnect,
23
- onSwitchChain
24
- } = _b, grazOpts = __objRest(_b, [
25
- "children",
26
- "wallets",
27
- "chains",
28
- "selectedChainId",
29
- "multiChain",
30
- "shouldUseSuggestChainAndConnect",
31
- "onSwitchChain"
32
- ]);
33
- var _a2;
34
- const updateExternalWalletProviderState = useExternalWalletProviderStore((state) => state.updateState);
35
- const CosmosProvider = useExternalWalletProviderStore((state) => state.CosmosProvider);
36
- const cosmosContext = useExternalWalletProviderStore((state) => state.cosmosContext);
37
- const para = (_a2 = grazOpts.para) != null ? _a2 : useClient();
38
- const connectParaCosmosWallet = useCallback(() => __async(this, null, function* () {
39
- if (!para) {
40
- return { error: "No para instance available" };
41
- }
42
- try {
43
- const chainId = multiChain ? chains.map((c) => c.chainId) : selectedChainId;
44
- const result = yield connect({ walletType: WalletType.PARA, chainId });
45
- return { result };
46
- } catch (err) {
47
- const error = err instanceof Error ? err.message : "Unknown error";
48
- return { error };
49
- }
50
- }), [para, connect]);
51
- useEffect(() => {
52
- if (!cosmosContext || !CosmosProvider) {
53
- updateExternalWalletProviderState({
54
- CosmosProvider: CosmosExternalWalletProvider,
55
- cosmosContext: CosmosExternalWalletContext
56
- });
57
- }
58
- }, []);
59
- useEffect(() => {
60
- updateExternalWalletProviderState({
61
- connectParaCosmosWallet
62
- });
63
- }, [para]);
64
- const walletsWithType = [];
65
- wallets.forEach((w) => {
66
- const wallet = w();
67
- walletsWithType.push(wallet);
68
- });
69
- const value = useMemo(
70
- () => ({
71
- selectedChainId,
72
- wallets: walletsWithType,
73
- chains,
74
- multiChain,
75
- shouldUseSuggestChainAndConnect,
76
- onSwitchChain
77
- }),
78
- [selectedChainId, walletsWithType, chains, multiChain, shouldUseSuggestChainAndConnect, onSwitchChain]
79
- );
80
- if (!cosmosContext || !CosmosProvider) {
81
- return null;
82
- }
83
- return /* @__PURE__ */ jsx(GrazProvider, { grazOptions: __spreadProps(__spreadValues({ chains, autoReconnect: true }, grazOpts), { para }), children: /* @__PURE__ */ jsx(ParaCosmosContext.Provider, { value, children }) });
84
- }
85
- const useParaCosmos = () => useContext(ParaCosmosContext);
86
- export {
87
- ParaCosmosContext,
88
- ParaCosmosProvider,
89
- useParaCosmos
90
- };
@@ -1,22 +0,0 @@
1
- "use client";
2
- import {
3
- __spreadValues
4
- } from "../chunk-MMUBH76A.js";
5
- import { create } from "zustand";
6
- import { syncTabs } from "zustand-sync-tabs";
7
- const useExternalWalletStore = create(
8
- syncTabs(
9
- (set) => ({
10
- isConnecting: false,
11
- updateState: (state) => {
12
- set(__spreadValues({}, state));
13
- }
14
- }),
15
- {
16
- name: "para-cosmos-external-wallet-state"
17
- }
18
- )
19
- );
20
- export {
21
- useExternalWalletStore
22
- };
@@ -1 +0,0 @@
1
- "use client";
@@ -1,6 +0,0 @@
1
- "use client";
2
- import "../chunk-MMUBH76A.js";
3
- const hasInstalledExtension = (id) => !!window[id];
4
- export {
5
- hasInstalledExtension
6
- };
@@ -1,8 +0,0 @@
1
- "use client";
2
- import "../../chunk-MMUBH76A.js";
3
- import { keplrWallet } from "./keplr/keplr.js";
4
- import { leapWallet } from "./leap/leap.js";
5
- export {
6
- keplrWallet,
7
- leapWallet
8
- };
@@ -1,20 +0,0 @@
1
- "use client";
2
- import "../../../chunk-MMUBH76A.js";
3
- import { icon } from "./keplrIcon.js";
4
- import { WalletType } from "@getpara/graz";
5
- import { isMobile } from "@getpara/react-sdk";
6
- const keplrWallet = () => {
7
- return {
8
- id: "keplr",
9
- name: "Keplr",
10
- iconUrl: icon,
11
- isExtension: true,
12
- isMobile: isMobile() && true,
13
- downloadUrl: "https://www.keplr.app/get",
14
- grazType: WalletType.KEPLR,
15
- grazMobileType: WalletType.WC_KEPLR_MOBILE
16
- };
17
- };
18
- export {
19
- keplrWallet
20
- };
@@ -1,6 +0,0 @@
1
- "use client";
2
- import "../../../chunk-MMUBH76A.js";
3
- const icon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzNl8xMTU0KSI+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik0wIDEwLjJDMCA2LjI3MTg2IDcuMTUyNTZlLTA4IDQuMzA3ODQgMC44ODQxNiAyLjg2NTAxQzEuMzc4OSAyLjA1NzY4IDIuMDU3NjcgMS4zNzg5IDIuODY1MDEgMC44ODQxNTRDNC4zMDc4MyAtMS40MzA1MWUtMDcgNi4yNzE4NiAwIDEwLjIgMEgxMy44QzE3LjcyODEgMCAxOS42OTIyIC0xLjQzMDUxZS0wNyAyMS4xMzUgMC44ODQxNTRDMjEuOTQyMyAxLjM3ODkgMjIuNjIxMSAyLjA1NzY4IDIzLjExNTggMi44NjUwMUMyNCA0LjMwNzg0IDI0IDYuMjcxODYgMjQgMTAuMlYxMy44QzI0IDE3LjcyODEgMjQgMTkuNjkyMiAyMy4xMTU4IDIxLjEzNUMyMi42MjExIDIxLjk0MjQgMjEuOTQyMyAyMi42MjExIDIxLjEzNSAyMy4xMTU4QzE5LjY5MjIgMjQgMTcuNzI4MSAyNCAxMy44IDI0SDEwLjJDNi4yNzE4NiAyNCA0LjMwNzgzIDI0IDIuODY1MDEgMjMuMTE1OEMyLjA1NzY3IDIyLjYyMTEgMS4zNzg5IDIxLjk0MjQgMC44ODQxNiAyMS4xMzVDNy4xNTI1NmUtMDggMTkuNjkyMiAwIDE3LjcyODEgMCAxMy44VjEwLjJaIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfMTAzNl8xMTU0KSIvPgogICAgPHBhdGggZD0iTTAgMTAuMkMwIDYuMjcxODYgNy4xNTI1NmUtMDggNC4zMDc4NCAwLjg4NDE2IDIuODY1MDFDMS4zNzg5IDIuMDU3NjggMi4wNTc2NyAxLjM3ODkgMi44NjUwMSAwLjg4NDE1NEM0LjMwNzgzIC0xLjQzMDUxZS0wNyA2LjI3MTg2IDAgMTAuMiAwSDEzLjhDMTcuNzI4MSAwIDE5LjY5MjIgLTEuNDMwNTFlLTA3IDIxLjEzNSAwLjg4NDE1NEMyMS45NDIzIDEuMzc4OSAyMi42MjExIDIuMDU3NjggMjMuMTE1OCAyLjg2NTAxQzI0IDQuMzA3ODQgMjQgNi4yNzE4NiAyNCAxMC4yVjEzLjhDMjQgMTcuNzI4MSAyNCAxOS42OTIyIDIzLjExNTggMjEuMTM1QzIyLjYyMTEgMjEuOTQyNCAyMS45NDIzIDIyLjYyMTEgMjEuMTM1IDIzLjExNThDMTkuNjkyMiAyNCAxNy43MjgxIDI0IDEzLjggMjRIMTAuMkM2LjI3MTg2IDI0IDQuMzA3ODMgMjQgMi44NjUwMSAyMy4xMTU4QzIuMDU3NjcgMjIuNjIxMSAxLjM3ODkgMjEuOTQyNCAwLjg4NDE2IDIxLjEzNUM3LjE1MjU2ZS0wOCAxOS42OTIyIDAgMTcuNzI4MSAwIDEzLjhWMTAuMloiIGZpbGw9InVybCgjcGFpbnQyX3JhZGlhbF8xMDM2XzExNTQpIi8+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDNfcmFkaWFsXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik05LjE1OTM0IDE4LjZWMTIuNzUzN0wxNC44NDAyIDE4LjZIMTguMDAwMVYxOC40NDgzTDExLjQ2NjYgMTEuNzkyM0wxNy40OTYxIDUuNDc1ODlWNS40MDAwMkgxNC4zMTU5TDkuMTU5MzQgMTAuOTgxNVY1LjQwMDAySDYuNjAwMVYxOC42SDkuMTU5MzRaIiBmaWxsPSJ3aGl0ZSIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMDM2XzExNTQiIHgxPSIxMiIgeTE9IjAiIHgyPSIxMiIgeTI9IjI0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxRkQxRkYiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMUJCOEZGIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzEwMzZfMTE1NCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjE0NjQyIDIzLjA5MDYpIHJvdGF0ZSgtNDUuMTU1Nikgc2NhbGUoMzguNDg4NCAzOS4wNjQyKSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMzJERTMiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjMyREUzIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50Ml9yYWRpYWxfMTAzNl8xMTU0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDIyLjcwNzQgMjMuODYzKSByb3RhdGUoLTEzOC40NSkgc2NhbGUoMjQuMDY1IDM2LjY5MjMpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzhCNERGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4QjRERkYiIHN0b3Atb3BhY2l0eT0iMCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQzX3JhZGlhbF8xMDM2XzExNTQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEuODAwMSAwLjE3Nzk5OSkgcm90YXRlKDkwKSBzY2FsZSgxOC45MjIgNDUuOTA5OCkiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjRENUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFCQjhGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8L3JhZGlhbEdyYWRpZW50PgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDM2XzExNTQiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+";
4
- export {
5
- icon
6
- };
@@ -1,20 +0,0 @@
1
- "use client";
2
- import "../../../chunk-MMUBH76A.js";
3
- import { icon } from "./leapIcon.js";
4
- import { WalletType } from "@getpara/graz";
5
- import { isMobile } from "@getpara/react-sdk";
6
- const leapWallet = () => {
7
- return {
8
- id: "leap",
9
- name: "Leap",
10
- iconUrl: icon,
11
- isExtension: true,
12
- isMobile: isMobile() && true,
13
- downloadUrl: "https://www.leapwallet.io/download",
14
- grazType: WalletType.LEAP,
15
- grazMobileType: WalletType.WC_LEAP_MOBILE
16
- };
17
- };
18
- export {
19
- leapWallet
20
- };
@@ -1,6 +0,0 @@
1
- "use client";
2
- import "../../../chunk-MMUBH76A.js";
3
- const icon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzN18xMTY5KSI+CiAgICA8cGF0aCBkPSJNMjEuNjE4NyAxNC43NTAzQzIxLjYxODcgMTYuNDYyNiAyMC41NzQyIDE3LjY2NzIgMTguODc4MyAxOC40NDQzQzE3LjE4MjEgMTkuMjIxNCAxNC44MzU0IDE5LjU3MDIgMTIuMjM0OCAxOS41NzAyQzkuNjM0MjcgMTkuNTcwMiA3LjI3MjM0IDE5LjIyMTUgNS41NjA4NyAxOC40NDQzQzMuODQ5NjggMTcuNjY3MiAyLjc5MDA0IDE2LjQ2MjUgMi43OTAwNCAxNC43NTAzQzIuNzkwMDQgMTMuMDM3NCAzLjg0Mjg3IDExLjQ4NjkgNS41NDY3NSAxMC4zNjQyQzcuMjUwNiA5LjI0MTYzIDkuNjA0NjEgOC41NDc0OSAxMi4yMDQ0IDguNTQ3NDlDMTQuODA0MSA4LjU0NzQ5IDE3LjE1ODEgOS4yNDMxMyAxOC44NjE5IDEwLjM2NjVDMjAuNTY1OCAxMS40OSAyMS42MTg3IDEzLjA0MDUgMjEuNjE4NyAxNC43NTAzWiIgZmlsbD0iIzI0QTk1QSIgc3Ryb2tlPSIjMTM4RDNFIiBzdHJva2Utd2lkdGg9IjAuMDE2NTY3Ii8+CiAgICA8cGF0aCBkPSJNMTQuODMxNyA1LjE5NDcyTDE0LjgzNjYgNS4xOTU4MUwxNC44Mzk4IDUuMTkxOTJDMTUuNDQyMSA0LjQ2NTg2IDE2LjM1NDYgNCAxNy4zNzY2IDRDMTkuMTg5NSA0IDIwLjY2MTcgNS40NjQxOSAyMC42NjE3IDcuMjY3MTFDMjAuNjYxNyA3Ljg2MDAzIDIwLjUwMzUgOC40MTA2IDIwLjIyOTggOC44ODg1N0wyMC4yMjc2IDguODkyM0wyMC4yMjk1IDguODk2MTlDMjAuNDkxMiA5LjQ1MzE3IDIwLjYzMTIgMTAuMDQ2NCAyMC42MzEyIDEwLjY2MzhDMjAuNjMxMiAxMi4yNTI1IDE5LjY5MSAxMy42OTA4IDE4LjE2OTQgMTQuNzMyM0MxNi42NDc4IDE1Ljc3MzcgMTQuNTQ1MyAxNi40MTc4IDEyLjIyMzIgMTYuNDE3OEM5LjkwMTAyIDE2LjQxNzggNy43OTg2MyAxNS43NzM3IDYuMjc2OTcgMTQuNzMyM0M0Ljc1NTMxIDEzLjY5MDggMy44MTUxNiAxMi4yNTI1IDMuODE1MTYgMTAuNjYzOEMzLjgxNTE2IDEwLjA0NjQgMy45NTUxNCA5LjQ1MzE3IDQuMjE2ODkgOC44OTYxOUw0LjIxODczIDguODkyM0w0LjIxNjU5IDguODg4NTdDMy45NDI4MyA4LjQxMDYgMy43ODQ2NyA3Ljg2MDAzIDMuNzg0NjcgNy4yNjcxMUMzLjc4NDY3IDUuNDY0MTkgNS4yNTY4MiA0IDcuMDY5NzIgNEM4LjA4NTYzIDQgOC45OTgxOCA0LjQ2NTg1IDkuNjA2NTYgNS4xOTE5NUw5LjYwOTgyIDUuMTk1ODNMOS42MTQ3NCA1LjE5NDdDMTAuNDM3NSA1LjAwNjgyIDExLjMxNSA0LjkwOTgzIDEyLjIyMzIgNC45MDk4M0MxMy4xMzEzIDQuOTA5ODMgMTQuMDA4OSA1LjAxMjg4IDE0LjgzMTcgNS4xOTQ3MloiIGZpbGw9IiMzMkRBNkQiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODAxMTcgOS4wODQzOEM3LjkxMjY5IDkuMDg0MzggOC44MTM3MyA4LjE4ODIyIDguODEzNzMgNy4wODI3NUM4LjgxMzczIDUuOTc3MjggNy45MTI2OSA1LjA4MTEyIDYuODAxMTcgNS4wODExMkM1LjY4OTYxIDUuMDgxMTIgNC43ODg1NyA1Ljk3NzI4IDQuNzg4NTcgNy4wODI3NUM0Ljc4ODU3IDguMTg4MjIgNS42ODk2MSA5LjA4NDM4IDYuODAxMTcgOS4wODQzOFoiIGZpbGw9IndoaXRlIi8+CiAgICA8cGF0aCBkPSJNMTcuNTM3NyA5LjA4NDM4QzE4LjY0OTMgOS4wODQzOCAxOS41NTAzIDguMTg4MjIgMTkuNTUwMyA3LjA4Mjc1QzE5LjU1MDMgNS45NzcyOCAxOC42NDkzIDUuMDgxMTIgMTcuNTM3NyA1LjA4MTEyQzE2LjQyNjIgNS4wODExMiAxNS41MjUxIDUuOTc3MjggMTUuNTI1MSA3LjA4Mjc1QzE1LjUyNTEgOC4xODgyMiAxNi40MjYyIDkuMDg0MzggMTcuNTM3NyA5LjA4NDM4WiIgZmlsbD0id2hpdGUiLz4KICAgIDxwYXRoIGQ9Ik0xLjMxNzM3IDE4LjE3ODhDMS4zMjUwOSAxOC4xNzU4IDEuMzI1MDcgMTguMTc1OCAxLjMyNTA1IDE4LjE3NThMMS4zMjQ0NiAxOC4xNzQyTDEuMzIyNTkgMTguMTY5NEwxLjMxNTI2IDE4LjE1MDJDMS4zMDg4MyAxOC4xMzMzIDEuMjk5MzQgMTguMTA4MyAxLjI4NzE1IDE4LjA3NTdDMS4yNjI3OCAxOC4wMTA3IDEuMjI3NTkgMTcuOTE1NSAxLjE4NDM2IDE3Ljc5NTRDMS4wOTc5MSAxNy41NTUxIDAuOTc5MzAxIDE3LjIxNDcgMC44NTA2OTEgMTYuODE0NEMwLjU5MzQ0NiAxNi4wMTM3IDAuMjk2MjcxIDE0Ljk3MzUgMC4xMzYyNzUgMTQuMDE1QzAuMDU2Mjc1OCAxMy41MzU3IDAuMDEwNjE3OCAxMy4wNzcxIDAuMDIxMzE4NiAxMi42NzkyQzAuMDMyMDI0NiAxMi4yODExIDAuMDk5MTI3NCAxMS45NDQ3IDAuMjQzNzk3IDExLjcwOTJDMC4zODgwNjkgMTEuNDc0MiAwLjYwOTc2MSAxMS4zMzkgMC45MzIwMzQgMTEuMzQzMUMxLjI1NTA3IDExLjM0NzMgMS42Nzk1MiAxMS40OTE0IDIuMjI3OTUgMTEuODE3MUM1LjUyNDA4IDEzLjc3NDQgNi4yNzM2NiAxNy4wMjgzIDYuNDUwNDEgMTguNTMxNkM2LjQ5ODYxIDE4Ljk1MTEgNi4xNjExIDE5LjMyMyA1LjczMjg1IDE5LjMyM0gwLjU3OTQxM0MwLjIzOTk2MiAxOS4zMjMgMC4xMTU0NDkgMTguODc5MiAwLjQxMjc4NyAxOC43MDc3TDEuMzIxNDkgMTguMTg2TDEuMzI3NjYgMTguMTgyNUwxLjMyNTA1IDE4LjE3NThMMS4zMTczNyAxOC4xNzg4WiIgZmlsbD0iIzMyREE2RCIvPgogICAgPHBhdGggZD0iTTEuMzI1MDUgMTguMTc1OEMxLjMyNTA3IDE4LjE3NTggMS4zMjUwOSAxOC4xNzU4IDEuMzE3MzcgMTguMTc4OEwxLjMyNTA1IDE4LjE3NThaTTEuMzI1MDUgMTguMTc1OEwxLjMyNDQ2IDE4LjE3NDJMMS4zMjI1OSAxOC4xNjk0TDEuMzE1MjYgMTguMTUwMkMxLjMwODgzIDE4LjEzMzMgMS4yOTkzNCAxOC4xMDgzIDEuMjg3MTUgMTguMDc1N0MxLjI2Mjc4IDE4LjAxMDcgMS4yMjc1OSAxNy45MTU1IDEuMTg0MzYgMTcuNzk1NEMxLjA5NzkxIDE3LjU1NTEgMC45NzkzMDEgMTcuMjE0NyAwLjg1MDY5MSAxNi44MTQ0QzAuNTkzNDQ2IDE2LjAxMzcgMC4yOTYyNzEgMTQuOTczNSAwLjEzNjI3NSAxNC4wMTVDMC4wNTYyNzU4IDEzLjUzNTcgMC4wMTA2MTc4IDEzLjA3NzEgMC4wMjEzMTg2IDEyLjY3OTJDMC4wMzIwMjQ2IDEyLjI4MTEgMC4wOTkxMjc0IDExLjk0NDcgMC4yNDM3OTcgMTEuNzA5MkMwLjM4ODA2OSAxMS40NzQyIDAuNjA5NzYxIDExLjMzOSAwLjkzMjAzNCAxMS4zNDMxQzEuMjU1MDcgMTEuMzQ3MyAxLjY3OTUyIDExLjQ5MTQgMi4yMjc5NSAxMS44MTcxQzUuNTI0MDggMTMuNzc0NCA2LjI3MzY2IDE3LjAyODMgNi40NTA0MSAxOC41MzE2QzYuNDk4NjEgMTguOTUxMSA2LjE2MTEgMTkuMzIzIDUuNzMyODUgMTkuMzIzSDAuNTc5NDEzQzAuMjM5OTYyIDE5LjMyMyAwLjExNTQ0OSAxOC44NzkyIDAuNDEyNzg3IDE4LjcwNzdMMS4zMjE0OSAxOC4xODZMMS4zMjc2NiAxOC4xODI1TDEuMzI1MDUgMTguMTc1OFoiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTIyLjgyMTIgMTguMTc2MUwyMi44MjkgMTguMTc4OEMyMi44MjQzIDE4LjE3NzIgMjIuODIyNCAxOC4xNzY1IDIyLjgyMTcgMTguMTc2MkMyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxIDIyLjgyMTIgMTguMTc2MUwyMi44MjEzIDE4LjE3NTdMMjIuODIxOCAxOC4xNzQ1TDIyLjgyMzQgMTguMTY5NkwyMi44MzAxIDE4LjE1MDVDMjIuODM1OSAxOC4xMzM2IDIyLjg0NDQgMTguMTA4NSAyMi44NTU1IDE4LjA3NkMyMi44Nzc1IDE4LjAxMDkgMjIuOTA5MyAxNy45MTU4IDIyLjk0ODMgMTcuNzk1NkMyMy4wMjY0IDE3LjU1NTQgMjMuMTMzNiAxNy4yMTQ5IDIzLjI0OTggMTYuODE0NkMyMy40ODIxIDE2LjAxMzkgMjMuNzUwNiAxNC45NzM3IDIzLjg5NSAxNC4wMTUxQzIzLjk2NzIgMTMuNTM1OCAyNC4wMDgzIDEzLjA3NzIgMjMuOTk4NSAxMi42NzkyQzIzLjk4ODcgMTIuMjgxIDIzLjkyNzggMTEuOTQ0NSAyMy43OTY5IDExLjcwODlDMjMuNzMxNSAxMS41OTExIDIzLjY0ODcgMTEuNDk4OCAyMy41NDYxIDExLjQzNjNDMjMuNDQzNiAxMS4zNzM5IDIzLjMyMDkgMTEuMzQxMSAyMy4xNzUyIDExLjM0MzFDMjIuODgzNSAxMS4zNDczIDIyLjUgMTEuNDkxMiAyMi4wMDQxIDExLjgxNjlDMTkuMDMxMSAxMy43NzQgMTguMzQ4NSAxNy4wMzQxIDE4LjE5NjEgMTguNTMxNUMxOC4xNTM4IDE4Ljk1MiAxOC40NTU4IDE5LjMyMyAxOC44NDA0IDE5LjMyM0gyMy40OTk5QzIzLjY1MDYgMTkuMzIzIDIzLjc1NDggMTkuMjEyOSAyMy43ODc2IDE5LjA3OThDMjMuODIwNSAxOC45NDY5IDIzLjc4MTYgMTguNzkzMSAyMy42NDc5IDE4LjcwNzVMMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODE5IDE4LjE4MjNMMjIuODI0NiAxOC4xODU4TDIzLjY0NzkgMTguNzA3NUwyMi44MjEyIDE4LjE3NjFaIiBmaWxsPSIjMzJEQTZEIi8+CiAgICA8cGF0aCBkPSJNMjIuODIxMiAxOC4xNzYxTDIyLjgyOSAxOC4xNzg4QzIyLjgyNDMgMTguMTc3MiAyMi44MjI0IDE4LjE3NjUgMjIuODIxNyAxOC4xNzYyQzIyLjgyMTIgMTguMTc2MSAyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODIxMyAxOC4xNzU3TDIyLjgyMTggMTguMTc0NUwyMi44MjM0IDE4LjE2OTZMMjIuODMwMSAxOC4xNTA1QzIyLjgzNTkgMTguMTMzNiAyMi44NDQ0IDE4LjEwODUgMjIuODU1NSAxOC4wNzZDMjIuODc3NSAxOC4wMTA5IDIyLjkwOTMgMTcuOTE1OCAyMi45NDgzIDE3Ljc5NTZDMjMuMDI2NCAxNy41NTU0IDIzLjEzMzYgMTcuMjE0OSAyMy4yNDk4IDE2LjgxNDZDMjMuNDgyMSAxNi4wMTM5IDIzLjc1MDYgMTQuOTczNyAyMy44OTUgMTQuMDE1MUMyMy45NjcyIDEzLjUzNTggMjQuMDA4MyAxMy4wNzcyIDIzLjk5ODUgMTIuNjc5MkMyMy45ODg3IDEyLjI4MSAyMy45Mjc4IDExLjk0NDUgMjMuNzk2OSAxMS43MDg5QzIzLjczMTUgMTEuNTkxMSAyMy42NDg3IDExLjQ5ODggMjMuNTQ2MSAxMS40MzYzQzIzLjQ0MzYgMTEuMzczOSAyMy4zMjA5IDExLjM0MTEgMjMuMTc1MiAxMS4zNDMxQzIyLjg4MzUgMTEuMzQ3MyAyMi41IDExLjQ5MTIgMjIuMDA0MSAxMS44MTY5QzE5LjAzMTEgMTMuNzc0IDE4LjM0ODUgMTcuMDM0MSAxOC4xOTYxIDE4LjUzMTVDMTguMTUzOCAxOC45NTIgMTguNDU1OCAxOS4zMjMgMTguODQwNCAxOS4zMjNIMjMuNDk5OUMyMy42NTA2IDE5LjMyMyAyMy43NTQ4IDE5LjIxMjkgMjMuNzg3NiAxOS4wNzk4QzIzLjgyMDUgMTguOTQ2OSAyMy43ODE2IDE4Ljc5MzEgMjMuNjQ3OSAxOC43MDc1TTIyLjgyMTIgMTguMTc2MUwyMy42NDc5IDE4LjcwNzVNMjIuODIxMiAxOC4xNzYxTDIyLjgxOSAxOC4xODIzTDIyLjgyNDYgMTguMTg1OEwyMy42NDc5IDE4LjcwNzUiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODIxNzIgOC4yODg4MUM3LjQ4NDggOC4yODg4MSA4LjAyMjM1IDcuNzUxMjkgOC4wMjIzNSA3LjA4ODJDOC4wMjIzNSA2LjQyNTExIDcuNDg0OCA1Ljg4NzU3IDYuODIxNzIgNS44ODc1N0M2LjE1ODY0IDUuODg3NTcgNS42MjEwOSA2LjQyNTExIDUuNjIxMDkgNy4wODgyQzUuNjIxMDkgNy43NTEyOSA2LjE1ODY0IDguMjg4ODEgNi44MjE3MiA4LjI4ODgxWiIgZmlsbD0iIzA5MjUxMSIvPgogICAgPHBhdGggZD0iTTE3LjU1ODMgOC4yODg4MUMxOC4yMjE0IDguMjg4ODEgMTguNzU4OSA3Ljc1MTI5IDE4Ljc1ODkgNy4wODgyQzE4Ljc1ODkgNi40MjUxMSAxOC4yMjE0IDUuODg3NTcgMTcuNTU4MyA1Ljg4NzU3QzE2Ljg5NTIgNS44ODc1NyAxNi4zNTc3IDYuNDI1MTEgMTYuMzU3NyA3LjA4ODJDMTYuMzU3NyA3Ljc1MTI5IDE2Ljg5NTIgOC4yODg4MSAxNy41NTgzIDguMjg4ODFaIiBmaWxsPSIjMDkyNTExIi8+CiAgICA8cGF0aCBkPSJNMTUuNDI2MiAxMS45MTI1QzE1LjM4OTkgMTIuMzM0NSAxNS4yNzA5IDEyLjc0NTEgMTUuMDc1OSAxMy4xMjFDMTQuODgwOSAxMy40OTY5IDE0LjYxMzggMTMuODMwNiAxNC4yODk4IDE0LjEwMzNDMTMuOTY1OCAxNC4zNzYgMTMuNTkxMyAxNC41ODIxIDEzLjE4NzYgMTQuNzEwMUMxMi43ODQgMTQuODM4IDEyLjM1OTEgMTQuODg1MiAxMS45MzcyIDE0Ljg0ODlDMTEuNTE1MyAxNC44MTI2IDExLjEwNDYgMTQuNjkzNSAxMC43Mjg3IDE0LjQ5ODVDMTAuMzUyOSAxNC4zMDM2IDEwLjAxOTEgMTQuMDM2NCA5Ljc0NjM5IDEzLjcxMjRDOS40NzM3NiAxMy4zODg1IDkuMjY3NTYgMTMuMDEzOSA5LjEzOTY0IDEyLjYxMDNDOS4wMTE3MSAxMi4yMDY2IDguOTY0NTkgMTEuNzgxNyA5LjAwMDg4IDExLjM1OThMMTIuMjEzNiAxMS42MzYyTDE1LjQyNjIgMTEuOTEyNVoiIGZpbGw9IiMwOTI1MTEiLz4KICA8L2c+CiAgPGRlZnM+CiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzEwMzdfMTE2OSI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=";
4
- export {
5
- icon
6
- };