@getpara/solana-wallet-connectors 2.0.0-alpha.6 → 2.0.0-alpha.61

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,6 +1,7 @@
1
1
  export { SolanaExternalWalletContext } from './providers/SolanaExternalWalletContext.js';
2
- export type { SolanaExternalWalletContextType } from './providers/SolanaExternalWalletContext.js';
2
+ export { type SolanaExternalWalletContextType } from './providers/SolanaExternalWalletContext.js';
3
3
  export { ParaSolanaProvider } from './providers/ParaSolanaProvider.js';
4
4
  export type { ParaSolanaProviderConfig, ParaSolanaProviderProps } from './providers/ParaSolanaProvider.js';
5
5
  export * from './wallets/connectors/index.js';
6
6
  export type { WalletList } from './types/Wallet.js';
7
+ export type { Adapter } from '@solana/wallet-adapter-base';
@@ -1,31 +1,10 @@
1
1
  import { PropsWithChildren } from 'react';
2
- import ParaWeb from '@getpara/web-sdk';
3
- import { WalletList } from '../types/Wallet.js';
4
- import { TExternalWallet, type CommonWallet } from '@getpara/react-common';
5
- export type SolanaExternalWalletContextType = {
6
- wallets: CommonWallet[];
7
- disconnect: () => Promise<void>;
8
- signMessage: (message: string) => Promise<{
9
- signature?: string;
10
- error?: string;
11
- }>;
12
- signVerificationMessage: () => Promise<{
13
- address?: string;
14
- signature?: string;
15
- error?: string;
16
- }>;
17
- };
2
+ import { CreateWalletFn } from '../types/Wallet.js';
3
+ import { ExternalWalletContextType, ExternalWalletProviderConfig, ExternalWalletProviderConfigBase, FarcasterMiniAppManagement } from '@getpara/react-common';
4
+ import { TExternalHooks } from './externalHooks.js';
5
+ export type SolanaExternalWalletContextType = ExternalWalletContextType & TExternalHooks & FarcasterMiniAppManagement;
18
6
  export declare const SolanaExternalWalletContext: import("react").Context<SolanaExternalWalletContextType>;
19
- export type SolanaExternalWalletProviderConfig = {
20
- onSwitchWallet?: (args: {
21
- address?: string;
22
- error?: string;
23
- }) => void;
24
- para: ParaWeb;
25
- walletsWithFullAuth: TExternalWallet[];
26
- };
27
- type SolanaExternalWalletProviderConfigFull = {
28
- wallets: WalletList;
29
- } & SolanaExternalWalletProviderConfig;
30
- export declare function SolanaExternalWalletProvider({ children, wallets: walletFns, onSwitchWallet, para, walletsWithFullAuth, }: SolanaExternalWalletProviderConfigFull & PropsWithChildren): import("react/jsx-runtime").JSX.Element;
7
+ export type SolanaExternalWalletProviderConfig = ExternalWalletProviderConfigBase;
8
+ type SolanaExternalWalletProviderConfigFull = ExternalWalletProviderConfig<CreateWalletFn>;
9
+ export declare function SolanaExternalWalletProvider({ children, wallets: walletFns, onSwitchWallet, para, walletsWithFullAuth, includeWalletVerification, connectionOnly, }: SolanaExternalWalletProviderConfigFull & PropsWithChildren): import("react/jsx-runtime").JSX.Element;
31
10
  export {};
@@ -1,5 +1,7 @@
1
1
  "use client";
2
2
  var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3
5
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -15,6 +17,7 @@ var __spreadValues = (a, b) => {
15
17
  }
16
18
  return a;
17
19
  };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
18
21
  var __async = (__this, __arguments, generator) => {
19
22
  return new Promise((resolve, reject) => {
20
23
  var fulfilled = (value) => {
@@ -36,50 +39,62 @@ var __async = (__this, __arguments, generator) => {
36
39
  });
37
40
  };
38
41
  import { jsx } from "react/jsx-runtime";
39
- import { createContext, useEffect, useMemo, useRef } from "react";
42
+ import { createContext, useEffect, useMemo, useRef, useState } from "react";
40
43
  import { useWallet } from "@solana/wallet-adapter-react";
41
- import { WalletReadyState } from "@solana/wallet-adapter-base";
44
+ import { isIosAndRedirectable, WalletReadyState } from "@solana/wallet-adapter-base";
45
+ import {
46
+ defaultSolanaExternalWallet
47
+ } from "@getpara/react-common";
42
48
  import bs58 from "bs58";
43
- const defaultSolanaExternalWallet = {
44
- wallets: [],
45
- disconnect: () => Promise.resolve(),
46
- signMessage: () => Promise.resolve({}),
47
- signVerificationMessage: () => Promise.resolve({})
48
- };
49
- const SolanaExternalWalletContext = createContext(defaultSolanaExternalWallet);
49
+ import { externalHooks } from "./externalHooks.js";
50
+ import { farcasterWallet } from "../wallets/connectors/index.js";
51
+ const SolanaExternalWalletContext = createContext(__spreadProps(__spreadValues({}, defaultSolanaExternalWallet), {
52
+ farcasterStatus: void 0
53
+ }));
50
54
  function SolanaExternalWalletProvider({
51
55
  children,
52
56
  wallets: walletFns,
53
57
  onSwitchWallet,
54
58
  para,
55
- walletsWithFullAuth
59
+ walletsWithFullAuth,
60
+ includeWalletVerification,
61
+ connectionOnly
56
62
  }) {
57
63
  const {
58
64
  wallets: adapters,
59
65
  select: selectWallet,
60
- disconnect: _disconnect,
66
+ disconnect,
61
67
  publicKey: solanaAddress,
62
68
  wallet,
63
69
  connecting,
64
- connected,
65
70
  signMessage: solanaSignMessage
66
71
  } = useWallet();
72
+ const isLinkingAccount = useRef(false);
73
+ const solanaSignMessageRef = useRef(solanaSignMessage);
74
+ const solanaAddressRef = useRef(solanaAddress);
67
75
  const verificationMessage = useRef();
76
+ const [isFarcasterSetup, setIsFarcasterSetup] = useState(false);
68
77
  const reset = () => __async(this, null, function* () {
69
- yield _disconnect();
78
+ yield disconnect();
70
79
  yield para.logout();
71
80
  });
72
- const login = (_0) => __async(this, [_0], function* ({ address, providerName }) {
81
+ const login = (_0) => __async(this, [_0], function* ({
82
+ address,
83
+ providerId,
84
+ providerName
85
+ }) {
73
86
  var _a, _b;
74
87
  try {
75
88
  return yield para.loginExternalWallet({
76
89
  externalWallet: {
90
+ partnerId: para.partnerId,
77
91
  address,
78
92
  type: "SOLANA",
79
93
  provider: providerName,
80
- withFullParaAuth: walletsWithFullAuth == null ? void 0 : walletsWithFullAuth.includes(
81
- (_b = (_a = getWallet(providerName != null ? providerName : "")) == null ? void 0 : _a.id.toUpperCase()) != null ? _b : ""
82
- )
94
+ providerId,
95
+ withFullParaAuth: walletsWithFullAuth === "ALL" || (walletsWithFullAuth == null ? void 0 : walletsWithFullAuth.includes((_b = (_a = getWallet(providerName != null ? providerName : "")) == null ? void 0 : _a.id.toUpperCase()) != null ? _b : "")),
96
+ withVerification: includeWalletVerification,
97
+ isConnectionOnly: connectionOnly
83
98
  }
84
99
  });
85
100
  } catch (err) {
@@ -88,15 +103,23 @@ function SolanaExternalWalletProvider({
88
103
  }
89
104
  });
90
105
  const switchWallet = (address) => __async(this, null, function* () {
91
- var _a;
106
+ var _a, _b, _c, _d;
92
107
  let error;
93
108
  if (!address) {
94
109
  yield para.logout();
95
110
  } else {
96
- try {
97
- yield login({ address, providerName: (_a = wallet == null ? void 0 : wallet.adapter) == null ? void 0 : _a.name });
98
- } catch (err) {
99
- error = err;
111
+ if (para.isExternalWalletAuth || para.isExternalWalletWithVerification) {
112
+ yield reset();
113
+ } else {
114
+ try {
115
+ yield login({
116
+ address,
117
+ providerId: (_c = getWallet((_b = (_a = wallet == null ? void 0 : wallet.adapter) == null ? void 0 : _a.name) != null ? _b : "")) == null ? void 0 : _c.id,
118
+ providerName: (_d = wallet == null ? void 0 : wallet.adapter) == null ? void 0 : _d.name
119
+ });
120
+ } catch (err) {
121
+ error = err;
122
+ }
100
123
  }
101
124
  }
102
125
  onSwitchWallet({ address, error });
@@ -104,59 +127,108 @@ function SolanaExternalWalletProvider({
104
127
  useEffect(() => {
105
128
  var _a;
106
129
  const storedExternalWallet = para.externalWallets[(_a = solanaAddress == null ? void 0 : solanaAddress.toString()) != null ? _a : ""];
107
- if (!!solanaAddress && !storedExternalWallet) {
130
+ if (!!solanaAddress && !storedExternalWallet && !isLinkingAccount.current) {
108
131
  reset();
109
132
  }
110
133
  }, []);
134
+ useEffect(() => {
135
+ solanaSignMessageRef.current = solanaSignMessage;
136
+ }, [solanaSignMessage]);
137
+ useEffect(() => {
138
+ solanaAddressRef.current = solanaAddress;
139
+ }, [solanaAddress]);
111
140
  useEffect(() => {
112
141
  const storedExternalWallet = Object.values(para.externalWallets || {})[0];
113
- if (!connecting && (!wallet || (wallet == null ? void 0 : wallet.adapter.connected)) && (storedExternalWallet == null ? void 0 : storedExternalWallet.type) === "SOLANA" && (storedExternalWallet == null ? void 0 : storedExternalWallet.address) !== (solanaAddress == null ? void 0 : solanaAddress.toString())) {
142
+ if (!connecting && (!wallet || (wallet == null ? void 0 : wallet.adapter.connected)) && (storedExternalWallet == null ? void 0 : storedExternalWallet.type) === "SOLANA" && (storedExternalWallet == null ? void 0 : storedExternalWallet.address) !== (solanaAddress == null ? void 0 : solanaAddress.toString()) && !isLinkingAccount.current) {
114
143
  switchWallet(solanaAddress == null ? void 0 : solanaAddress.toString());
115
144
  }
116
145
  }, [solanaAddress, connecting, wallet]);
117
- const signMessage = (message) => __async(this, null, function* () {
118
- var _a;
146
+ const signMessage = (_0) => __async(this, [_0], function* ({ message }) {
147
+ var _a, _b, _c, _d;
119
148
  try {
149
+ let solanaAddressNow = (_a = solanaAddressRef.current) != null ? _a : solanaAddress, solanaSignMessageNow = (_b = solanaSignMessageRef.current) != null ? _b : solanaSignMessage;
150
+ while (!solanaAddressNow || !solanaSignMessageNow) {
151
+ yield new Promise((resolve) => setTimeout(resolve, 100));
152
+ solanaAddressNow = (_c = solanaAddressRef.current) != null ? _c : solanaAddress;
153
+ solanaSignMessageNow = (_d = solanaSignMessageRef.current) != null ? _d : solanaSignMessage;
154
+ }
120
155
  const encodedMessage = new TextEncoder().encode(message);
121
- const signature = yield solanaSignMessage(encodedMessage);
156
+ const signature = yield solanaSignMessageNow(encodedMessage);
157
+ solanaAddressRef.current = void 0;
158
+ solanaSignMessageRef.current = void 0;
122
159
  return {
123
- externalWallet: {
124
- address: solanaAddress.toString(),
125
- type: "SOLANA",
126
- provider: (_a = wallet == null ? void 0 : wallet.adapter) == null ? void 0 : _a.name
127
- },
160
+ address: solanaAddressNow.toString(),
128
161
  signature: bs58.encode(signature)
129
162
  };
130
163
  } catch (e) {
164
+ console.error(e);
131
165
  if (e.message.includes("User rejected the request")) {
132
166
  return { error: "Signature request rejected" };
133
167
  }
168
+ console.error("Solana signature error:", e.message);
134
169
  return { error: "An unknown error occurred" };
135
170
  }
136
171
  });
137
172
  const signVerificationMessage = () => __async(this, null, function* () {
138
- const signature = yield signMessage(verificationMessage.current);
173
+ const signature = yield signMessage({ message: verificationMessage.current });
139
174
  return signature;
140
175
  });
141
- const connect = (adapter) => __async(this, null, function* () {
142
- yield _disconnect();
176
+ const connectBase = (adapter, _switchWallet = false) => __async(this, null, function* () {
143
177
  if (!adapter) {
144
- return { error: "Adapter not found." };
178
+ throw new Error("Adapter not found.");
145
179
  }
146
180
  selectWallet(adapter.name);
147
181
  yield new Promise((resolve) => setTimeout(resolve, 100));
148
182
  let address;
149
183
  let error;
150
- let authState;
151
184
  try {
152
185
  yield adapter.connect();
153
- address = adapter.publicKey.toString();
186
+ if (adapter.publicKey) {
187
+ address = adapter.publicKey.toString();
188
+ } else {
189
+ yield new Promise((resolve, reject) => {
190
+ adapter.once("connect", () => __async(this, null, function* () {
191
+ try {
192
+ address = adapter.publicKey.toString();
193
+ resolve();
194
+ } catch (err) {
195
+ reject(err);
196
+ }
197
+ }));
198
+ adapter.once("error", (err) => {
199
+ error = (err == null ? void 0 : err.message) || "An unknown error occurred";
200
+ reject(err);
201
+ });
202
+ adapter.once("disconnect", () => {
203
+ error = "Disconnected before connect event";
204
+ reject(new Error(error));
205
+ });
206
+ });
207
+ }
208
+ return address;
209
+ } catch (e) {
210
+ console.error(e);
211
+ yield adapter.disconnect();
212
+ throw e;
213
+ }
214
+ });
215
+ const connect = (adapter) => __async(this, null, function* () {
216
+ var _a;
217
+ if (isIosAndRedirectable()) {
218
+ return;
219
+ }
220
+ yield disconnect();
221
+ let address;
222
+ let error;
223
+ let authState;
224
+ try {
225
+ address = yield connectBase(adapter, true);
154
226
  if (address) {
155
227
  try {
156
- authState = yield login({ address, providerName: adapter.name });
228
+ authState = yield login({ address, providerId: (_a = getWallet(adapter.name)) == null ? void 0 : _a.id, providerName: adapter.name });
157
229
  verificationMessage.current = authState.stage === "verify" ? authState.signatureVerificationMessage : void 0;
158
230
  } catch (err) {
159
- yield _disconnect();
231
+ yield disconnect();
160
232
  address = void 0;
161
233
  error = err;
162
234
  }
@@ -170,6 +242,7 @@ function SolanaExternalWalletProvider({
170
242
  break;
171
243
  }
172
244
  default: {
245
+ console.error("Solana connection error:", err.message);
173
246
  error = "An unknown error occurred";
174
247
  break;
175
248
  }
@@ -177,34 +250,145 @@ function SolanaExternalWalletProvider({
177
250
  }
178
251
  return { address, error, authState };
179
252
  });
253
+ const requestInfo = (providerId) => __async(this, null, function* () {
254
+ var _a, _b;
255
+ const wallet2 = wallets.find((w) => w.id === providerId);
256
+ const adapter = getAdapter((_a = wallet2.name) != null ? _a : "");
257
+ isLinkingAccount.current = true;
258
+ try {
259
+ const address = yield connectBase(adapter);
260
+ const externalWallet = {
261
+ partnerId: para.partnerId,
262
+ address,
263
+ type: "SOLANA",
264
+ providerId: wallet2.id,
265
+ provider: wallet2.name
266
+ };
267
+ return externalWallet;
268
+ } catch (e) {
269
+ console.error("Error linking account:", e);
270
+ throw new Error((_b = e == null ? void 0 : e.message) != null ? _b : e);
271
+ }
272
+ });
273
+ const disconnectBase = (providerId) => __async(this, null, function* () {
274
+ var _a;
275
+ const wallet2 = wallets.find((w) => w.id === providerId);
276
+ if (!wallet2) {
277
+ return;
278
+ }
279
+ const adapter = getAdapter((_a = wallet2.name) != null ? _a : "");
280
+ if (!(adapter == null ? void 0 : adapter.connected)) {
281
+ return;
282
+ }
283
+ isLinkingAccount.current = true;
284
+ try {
285
+ yield adapter.disconnect();
286
+ } catch (e) {
287
+ console.error("Error disconnecting Solana wallet:", e);
288
+ } finally {
289
+ isLinkingAccount.current = false;
290
+ }
291
+ });
180
292
  const getAdapter = (name) => {
181
293
  var _a;
182
294
  return (_a = adapters.find((a) => a.adapter.name === "Mobile Wallet Adapter" ? a : a.adapter.name === name ? a : false)) == null ? void 0 : _a.adapter;
183
295
  };
184
296
  const getWallet = (name) => wallets.find((w) => w.name === name);
185
- const wallets = walletFns.map((walletFn) => {
297
+ const createWallet = (walletFn) => {
186
298
  const metaData = walletFn();
187
299
  const adapter = getAdapter(metaData.name);
188
- return __spreadValues({
300
+ return __spreadProps(__spreadValues({
189
301
  connect: () => connect(adapter),
190
302
  connectMobile: () => connect(adapter),
191
- getQrUri: () => "",
192
303
  type: "SOLANA",
193
304
  installed: adapter && ((adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Installed || (adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Loadable)
194
- }, metaData);
195
- });
196
- const disconnect = () => __async(this, null, function* () {
197
- yield _disconnect();
198
- if (connected) {
199
- typeof window !== void 0 && (window == null ? void 0 : window.location.reload());
305
+ }, metaData), {
306
+ // Using name here since that's the only common id across the networks
307
+ id: metaData.name
308
+ });
309
+ };
310
+ const [wallets, setWallets] = useState(() => walletFns.map(createWallet));
311
+ const farcasterStatus = useMemo(() => {
312
+ if (!isFarcasterSetup) {
313
+ return void 0;
314
+ }
315
+ const farcasterAdapter = getAdapter("Farcaster");
316
+ if (!farcasterAdapter) {
317
+ return {
318
+ isPresent: false
319
+ };
200
320
  }
321
+ return farcasterAdapter.connected && farcasterAdapter.publicKey ? {
322
+ isPresent: true,
323
+ isConnected: true,
324
+ address: farcasterAdapter.publicKey.toString()
325
+ } : {
326
+ isPresent: true,
327
+ isConnected: false
328
+ };
329
+ }, [isFarcasterSetup, adapters]);
330
+ useEffect(() => {
331
+ const detectFarcaster = () => __async(this, null, function* () {
332
+ if (para.isFarcasterMiniApp) {
333
+ try {
334
+ yield import("@farcaster/mini-app-solana");
335
+ } catch (e) {
336
+ }
337
+ }
338
+ });
339
+ detectFarcaster();
340
+ }, [para.isFarcasterMiniApp]);
341
+ useEffect(() => {
342
+ const setupFarcaster = () => __async(this, null, function* () {
343
+ const adapter = getAdapter("Farcaster");
344
+ if (para.isFarcasterMiniApp && !wallets.some((w) => w.internalId === "FARCASTER") && !!adapter) {
345
+ const wallet2 = createWallet(farcasterWallet);
346
+ setWallets((prev) => [...prev, wallet2]);
347
+ if (para.supportedWalletTypes.some(({ type }) => type === "SOLANA")) {
348
+ yield connectBase(adapter, true);
349
+ }
350
+ setIsFarcasterSetup(true);
351
+ }
352
+ });
353
+ setupFarcaster();
354
+ }, [para.isFarcasterMiniApp, wallets, adapters]);
355
+ const injectedWallets = adapters.filter((wallet2) => wallet2.adapter.name !== "Mobile Wallet Adapter" && !wallets.some((w) => w.name === wallet2.adapter.name)).map((wallet2) => {
356
+ const adapter = wallet2.adapter;
357
+ return {
358
+ connect: () => connect(adapter),
359
+ connectMobile: () => connect(adapter),
360
+ type: "SOLANA",
361
+ installed: adapter && ((adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Installed || (adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Loadable),
362
+ name: adapter.name,
363
+ iconUrl: adapter.icon,
364
+ // Using name here since that's the only common id across the networks
365
+ id: adapter.name,
366
+ internalId: adapter.name
367
+ };
201
368
  });
369
+ const walletsWithInjected = [...wallets, ...injectedWallets];
202
370
  return /* @__PURE__ */ jsx(
203
371
  SolanaExternalWalletContext.Provider,
204
372
  {
205
373
  value: useMemo(
206
- () => ({ wallets, disconnect, signMessage, signVerificationMessage }),
207
- [wallets, disconnect, signMessage, signVerificationMessage]
374
+ () => __spreadValues({
375
+ wallets: walletsWithInjected,
376
+ disconnect,
377
+ signMessage,
378
+ signVerificationMessage,
379
+ requestInfo,
380
+ disconnectBase,
381
+ farcasterStatus
382
+ }, externalHooks),
383
+ [
384
+ walletsWithInjected,
385
+ disconnect,
386
+ signMessage,
387
+ signVerificationMessage,
388
+ requestInfo,
389
+ farcasterStatus,
390
+ disconnectBase
391
+ ]
208
392
  ),
209
393
  children
210
394
  }
@@ -0,0 +1,7 @@
1
+ import { useWallet } from '@solana/wallet-adapter-react';
2
+ export type TExternalHooks = {
3
+ useWallet: typeof useWallet;
4
+ };
5
+ export declare const externalHooks: {
6
+ useWallet: typeof useWallet;
7
+ };
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import { useWallet } from "@solana/wallet-adapter-react";
3
+ const externalHooks = { useWallet };
4
+ export {
5
+ externalHooks
6
+ };
@@ -1,6 +1,4 @@
1
1
  import { type WalletMetadata } from '@getpara/react-common';
2
- export type Wallet = {
3
- getUri?: (uri: string) => string;
4
- } & WalletMetadata;
2
+ export type Wallet = WalletMetadata;
5
3
  export type CreateWalletFn = () => Wallet;
6
4
  export type WalletList = CreateWalletFn[];
@@ -1,13 +1,43 @@
1
1
  "use client";
2
+ var __async = (__this, __arguments, generator) => {
3
+ return new Promise((resolve, reject) => {
4
+ var fulfilled = (value) => {
5
+ try {
6
+ step(generator.next(value));
7
+ } catch (e) {
8
+ reject(e);
9
+ }
10
+ };
11
+ var rejected = (value) => {
12
+ try {
13
+ step(generator.throw(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ };
18
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
19
+ step((generator = generator.apply(__this, __arguments)).next());
20
+ });
21
+ };
22
+ import { isIosAndRedirectable } from "@solana/wallet-adapter-base";
2
23
  import { icon } from "./backpackIcon.js";
3
24
  const backpackWallet = () => {
4
25
  return {
5
26
  id: "backpack",
27
+ internalId: "BACKPACK",
6
28
  name: "Backpack",
7
29
  iconUrl: icon,
8
30
  isExtension: true,
9
31
  isMobile: true,
10
- getUri: () => "",
32
+ hasIosSafariExtension: false,
33
+ getQrUri: () => __async(void 0, null, function* () {
34
+ if (typeof window !== "undefined" && isIosAndRedirectable()) {
35
+ const url = encodeURIComponent(window.location.href);
36
+ const ref = encodeURIComponent(window.location.origin);
37
+ return `https://backpack.app/ul/v1/browse/${url}?ref=${ref}`;
38
+ }
39
+ return "";
40
+ }),
11
41
  downloadUrl: "https://backpack.app/download"
12
42
  };
13
43
  };
@@ -0,0 +1,2 @@
1
+ import { Wallet } from '../../../types/Wallet.js';
2
+ export declare const farcasterWallet: () => Wallet;
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { icon } from "./farcasterIcon.js";
3
+ const farcasterWallet = () => {
4
+ return {
5
+ id: "farcaster",
6
+ internalId: "FARCASTER",
7
+ name: "Farcaster",
8
+ iconUrl: icon,
9
+ isExtension: true,
10
+ hasIosSafariExtension: false,
11
+ downloadUrl: "https://farcaster.xyz"
12
+ };
13
+ };
14
+ export {
15
+ farcasterWallet
16
+ };
@@ -0,0 +1 @@
1
+ export declare const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzEzNDFfMzQiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSI0IiB5PSIwIiB3aWR0aD0iMTciIGhlaWdodD0iMjQiPgo8cGF0aCBkPSJNMjAuNSAwSDRWMjRIMjAuNVYwWiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzEzNDFfMzQpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44MTMgMS44ODcwOEMxNC42ODUzIDEuODg3MDggMTUuNTAzNSAyLjAwNDAyIDE2LjI2MTIgMi4yMjA4OUMxNS41MTk1IDAuNDkyMjU0IDEzLjk3OTUgMCAxMi4yNjU2IDBDMTAuNTQ4MyAwIDkuMDA1NjUgMC40OTQxODggOC4yNjU2MiAyLjIzMTA3QzkuMDE3NjUgMi4wMDY1NyA5LjgzMjM2IDEuODg3MDggMTAuNzAxNyAxLjg4NzA4SDEzLjgxM1pNMTAuNTAyMiAzLjYyMjU2QzYuMzYwMDMgMy42MjI1NiA0IDYuODgxMTQgNCAxMC45MDA4VjE1LjAzQzQgMTUuNDMyIDQuMzM1NzkgMTUuNzUgNC43NSAxNS43NUgxOS43NUMyMC4xNjQyIDE1Ljc1IDIwLjUgMTUuNDMyIDIwLjUgMTUuMDNWMTAuOTAwOEMyMC41IDYuODgxMTQgMTcuNzU1NiAzLjYyMjU2IDEzLjYxMzUgMy42MjI1NkgxMC41MDIyWk0xMi4yNDQxIDEwLjkzNjVDMTMuNjkzOSAxMC45MzY1IDE0Ljg2OTIgOS43NjEyMyAxNC44NjkyIDguMzExNTNDMTQuODY5MiA2Ljg2MTc4IDEzLjY5MzkgNS42ODY1MyAxMi4yNDQxIDUuNjg2NTNDMTAuNzk0NCA1LjY4NjUzIDkuNjE5MTQgNi44NjE3OCA5LjYxOTE0IDguMzExNTNDOS42MTkxNCA5Ljc2MTIzIDEwLjc5NDQgMTAuOTM2NSAxMi4yNDQxIDEwLjkzNjVaTTQgMTguMTc3MUM0IDE3Ljc3NTEgNC4zMzU3OSAxNy40NDkyIDQuNzUgMTcuNDQ5MkgxOS43NUMyMC4xNjQyIDE3LjQ0OTIgMjAuNSAxNy43NzUxIDIwLjUgMTguMTc3MVYyMi41NDRDMjAuNSAyMy4zNDc5IDE5LjgyODQgMjMuOTk5NyAxOSAyMy45OTk3SDUuNUM0LjY3MTU3IDIzLjk5OTcgNCAyMy4zNDc5IDQgMjIuNTQ0VjE4LjE3NzFaIiBmaWxsPSIjRTMzRTNGIi8+CjwvZz4KPC9zdmc+Cg==";
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzEzNDFfMzQiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSI0IiB5PSIwIiB3aWR0aD0iMTciIGhlaWdodD0iMjQiPgo8cGF0aCBkPSJNMjAuNSAwSDRWMjRIMjAuNVYwWiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzEzNDFfMzQpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44MTMgMS44ODcwOEMxNC42ODUzIDEuODg3MDggMTUuNTAzNSAyLjAwNDAyIDE2LjI2MTIgMi4yMjA4OUMxNS41MTk1IDAuNDkyMjU0IDEzLjk3OTUgMCAxMi4yNjU2IDBDMTAuNTQ4MyAwIDkuMDA1NjUgMC40OTQxODggOC4yNjU2MiAyLjIzMTA3QzkuMDE3NjUgMi4wMDY1NyA5LjgzMjM2IDEuODg3MDggMTAuNzAxNyAxLjg4NzA4SDEzLjgxM1pNMTAuNTAyMiAzLjYyMjU2QzYuMzYwMDMgMy42MjI1NiA0IDYuODgxMTQgNCAxMC45MDA4VjE1LjAzQzQgMTUuNDMyIDQuMzM1NzkgMTUuNzUgNC43NSAxNS43NUgxOS43NUMyMC4xNjQyIDE1Ljc1IDIwLjUgMTUuNDMyIDIwLjUgMTUuMDNWMTAuOTAwOEMyMC41IDYuODgxMTQgMTcuNzU1NiAzLjYyMjU2IDEzLjYxMzUgMy42MjI1NkgxMC41MDIyWk0xMi4yNDQxIDEwLjkzNjVDMTMuNjkzOSAxMC45MzY1IDE0Ljg2OTIgOS43NjEyMyAxNC44NjkyIDguMzExNTNDMTQuODY5MiA2Ljg2MTc4IDEzLjY5MzkgNS42ODY1MyAxMi4yNDQxIDUuNjg2NTNDMTAuNzk0NCA1LjY4NjUzIDkuNjE5MTQgNi44NjE3OCA5LjYxOTE0IDguMzExNTNDOS42MTkxNCA5Ljc2MTIzIDEwLjc5NDQgMTAuOTM2NSAxMi4yNDQxIDEwLjkzNjVaTTQgMTguMTc3MUM0IDE3Ljc3NTEgNC4zMzU3OSAxNy40NDkyIDQuNzUgMTcuNDQ5MkgxOS43NUMyMC4xNjQyIDE3LjQ0OTIgMjAuNSAxNy43NzUxIDIwLjUgMTguMTc3MVYyMi41NDRDMjAuNSAyMy4zNDc5IDE5LjgyODQgMjMuOTk5NyAxOSAyMy45OTk3SDUuNUM0LjY3MTU3IDIzLjk5OTcgNCAyMy4zNDc5IDQgMjIuNTQ0VjE4LjE3NzFaIiBmaWxsPSIjRTMzRTNGIi8+CjwvZz4KPC9zdmc+Cg==";
3
+ export {
4
+ icon
5
+ };
@@ -1,13 +1,15 @@
1
1
  "use client";
2
2
  import { icon } from "./glowIcon.js";
3
+ import { isIosAndRedirectable } from "@solana/wallet-adapter-base";
3
4
  const glowWallet = () => {
4
5
  return {
5
6
  id: "glow",
7
+ internalId: "GLOW",
6
8
  name: "Glow",
7
9
  iconUrl: icon,
8
10
  isExtension: true,
9
11
  isMobile: true,
10
- getUri: () => "",
12
+ hasIosSafariExtension: isIosAndRedirectable(),
11
13
  downloadUrl: "https://glow.app"
12
14
  };
13
15
  };
@@ -1,5 +1,8 @@
1
+ import { farcasterWallet } from './farcaster/farcaster.js';
1
2
  import { phantomWallet } from './phantom/phantom.js';
2
3
  import { glowWallet } from './glow/glow.js';
3
4
  import { backpackWallet } from './backpack/backpack.js';
4
- export { phantomWallet, glowWallet, backpackWallet };
5
+ import { solflareWallet } from './solflare/solflare.js';
6
+ import { metaMaskWallet } from './metaMask/metaMask.js';
7
+ export { farcasterWallet, phantomWallet, glowWallet, backpackWallet, solflareWallet, metaMaskWallet };
5
8
  export declare const allWallets: (() => import("../../types/Wallet.js").Wallet)[];
@@ -1,11 +1,17 @@
1
1
  "use client";
2
+ import { farcasterWallet } from "./farcaster/farcaster.js";
2
3
  import { phantomWallet } from "./phantom/phantom.js";
3
4
  import { glowWallet } from "./glow/glow.js";
4
5
  import { backpackWallet } from "./backpack/backpack.js";
5
- const allWallets = [phantomWallet, glowWallet, backpackWallet];
6
+ import { solflareWallet } from "./solflare/solflare.js";
7
+ import { metaMaskWallet } from "./metaMask/metaMask.js";
8
+ const allWallets = [phantomWallet, glowWallet, backpackWallet, solflareWallet, metaMaskWallet];
6
9
  export {
7
10
  allWallets,
8
11
  backpackWallet,
12
+ farcasterWallet,
9
13
  glowWallet,
10
- phantomWallet
14
+ metaMaskWallet,
15
+ phantomWallet,
16
+ solflareWallet
11
17
  };
@@ -0,0 +1,2 @@
1
+ import { Wallet } from '../../../types/Wallet.js';
2
+ export declare const metaMaskWallet: () => Wallet;
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { icon } from "./metaMaskIcon.js";
3
+ const metaMaskWallet = () => {
4
+ return {
5
+ id: "metaMask",
6
+ internalId: "METAMASK",
7
+ name: "MetaMask",
8
+ iconUrl: icon,
9
+ isExtension: true,
10
+ isMobile: true,
11
+ hasIosSafariExtension: false,
12
+ // Metamask deep linking doesn't seem to work as expected currently.
13
+ // getQrUri: async () => {
14
+ // if (typeof window !== 'undefined' && isIosAndRedirectable()) {
15
+ // const url = encodeURIComponent(window.location.href);
16
+ // return `https://link.metamask.io/dapp/${url}`;
17
+ // }
18
+ // return '';
19
+ // },
20
+ downloadUrl: "https://metamask.io/download/"
21
+ };
22
+ };
23
+ export {
24
+ metaMaskWallet
25
+ };
@@ -0,0 +1 @@
1
+ export declare const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5MDMxXzE3MTgwOSkiPgo8cGF0aCBkPSJNMjIuNDI4MSAyMi4zNDUzTDE3LjI1ODUgMjAuODA2MUwxMy4zNiAyMy4xMzY2TDEwLjYzOTggMjMuMTM1NEw2LjczODk5IDIwLjgwNjFMMS41NzE3IDIyLjM0NTNMMCAxNy4wMzkxTDEuNTcxODcgMTEuMTVMMCA2LjE3MTAyTDEuNTcxODcgMEw5LjY0NjA4IDQuODIzOTdIMTQuMzUzOEwyMi40MjgxIDBMMjQgNi4xNzEwMkwyMi40MjgxIDExLjE1TDI0IDE3LjAzOTFMMjIuNDI4MSAyMi4zNDUzWiIgZmlsbD0iI0ZGNUMxNiIvPgo8cGF0aCBkPSJNMS41NzI4OCAwTDkuNjQ3MjUgNC44MjczNUw5LjMyNjI1IDguMTQwM0wxLjU3Mjg4IDBaTTYuNzQwMzMgMTcuMDQxM0wxMC4yOTMgMTkuNzQ3NUw2Ljc0MDMzIDIwLjgwNTlWMTcuMDQxM1pNMTAuMDA5IDEyLjU2N0w5LjMyNjI1IDguMTQyNjdMNC45NTU2NCAxMS4xNTE0TDQuOTUzMjcgMTEuMTUwMlYxMS4xNTI0TDQuOTY2NzkgMTQuMjQ5M0w2LjczOTE0IDEyLjU2NzJMMTAuMDA5IDEyLjU2N1pNMjIuNDI4MSAwTDE0LjM1MzcgNC44MjczNUwxNC42NzM3IDguMTQwM0wyMi40MjgxIDBaTTE3LjI2MDggMTcuMDQxM0wxMy43MDggMTkuNzQ3NUwxNy4yNjA4IDIwLjgwNTlWMTcuMDQxM1pNMTkuMDQ2NyAxMS4xNTIyVjExLjE1TDE5LjA0NTcgMTEuMTUxMkwxNC42NzQ5IDguMTQyNjdMMTMuOTkyMiAxMi41NjdIMTcuMjYwN0wxOS4wMzQyIDE0LjI0ODlMMTkuMDQ2NyAxMS4xNTIyWiIgZmlsbD0iI0ZGNUMxNiIvPgo8cGF0aCBkPSJNNi43MzkxNiAyMC44MDU5TDEuNTcxODcgMjIuMzQ1MUwwIDE3LjA0MTNINi43MzkxNlYyMC44MDU5Wk0xMC4wMDc4IDEyLjU2NThMMTAuOTk0OCAxOC45NjIyTDkuNjI2ODEgMTUuNDA1N0w0Ljk2NDYxIDE0LjI0ODlMNi43Mzc5NyAxMi41NjZMMTAuMDA3OCAxMi41NjU4Wk0xNy4yNjA3IDIwLjgwNTlMMjIuNDI4MSAyMi4zNDUxTDI0IDE3LjA0MTFIMTcuMjYwN0MxNy4yNjA3IDE3LjA0MTMgMTcuMjYwNyAyMC44MDU5IDE3LjI2MDcgMjAuODA1OVpNMTMuOTkyMiAxMi41NjU4TDEzLjAwNTIgMTguOTYyMkwxNC4zNzMgMTUuNDA1N0wxOS4wMzU2IDE0LjI0ODlMMTcuMjYxIDEyLjU2NkwxMy45OTIyIDEyLjU2NThaIiBmaWxsPSIjRTM0ODA3Ii8+CjxwYXRoIGQ9Ik0wIDE3LjAzOTFMMS41NzE4NyAxMS4xNUg0Ljk1MjFMNC45NjQ0NCAxNC4yNDc5TDkuNjI3MTUgMTUuNDA0N0wxMC45OTUgMTguOTYxTDEwLjI5MTggMTkuNzQ0Mkw2LjczOTE2IDE3LjAzNzlIMFYxNy4wMzkxWk0yNCAxNy4wMzkxTDIyLjQyODEgMTEuMTVIMTkuMDQ3N0wxOS4wMzU0IDE0LjI0NzlMMTQuMzczIDE1LjQwNDdMMTMuMDA1IDE4Ljk2MUwxMy43MDggMTkuNzQ0MkwxNy4yNjA4IDE3LjAzNzlIMjRWMTcuMDM5MVpNMTQuMzUzOCA0LjgyMzk3SDkuNjQ2MDhMOS4zMjY0MyA4LjEzNjkyTDEwLjk5NTIgMTguOTU3NUgxMy4wMDUyTDE0LjY3NDkgOC4xMzY5MkwxNC4zNTM4IDQuODIzOTdaIiBmaWxsPSIjRkY4RDVEIi8+CjxwYXRoIGQ9Ik0xLjU3MTg3IDBMMCA2LjE3MTAyTDEuNTcxODcgMTEuMTVINC45NTIxTDkuMzI1MDggOC4xNDA0N0wxLjU3MTg3IDBaTTkuMDMwOTUgMTMuODUwNUg3LjQ5OTY1TDYuNjY1OTYgMTQuNjY3OEw5LjYyODE2IDE1LjQwMjFMOS4wMzA5NSAxMy44NDkzVjEzLjg1MDVaTTIyLjQyODEgMEwyNCA2LjE3MTAyTDIyLjQyODEgMTEuMTVIMTkuMDQ3N0wxNC42NzQ5IDguMTQwNDdMMjIuNDI4MSAwWk0xNC45NzEyIDEzLjg1MDVIMTYuNTA0N0wxNy4zMzg0IDE0LjY2ODhMMTQuMzcyOSAxNS40MDQ3TDE0Ljk3MTIgMTMuODQ5M1YxMy44NTA1Wk0xMy4zNTg4IDIxLjAyNTZMMTMuNzA4MiAxOS43NDY1TDEzLjAwNSAxOC45NjM0SDEwLjk5MzVMMTAuMjkwNCAxOS43NDY1TDEwLjYzOTcgMjEuMDI1NiIgZmlsbD0iIzY2MTgwMCIvPgo8cGF0aCBkPSJNMTMuMzU4OSAyMS4wMjU1VjIzLjEzNzZIMTAuNjQwMVYyMS4wMjU1SDEzLjM1ODlaIiBmaWxsPSIjQzBDNENEIi8+CjxwYXRoIGQ9Ik02Ljc0MDM2IDIwLjgwMzdMMTAuNjQyMiAyMy4xMzY0VjIxLjAyNDNMMTAuMjkyOCAxOS43NDUzTDYuNzQwMzYgMjAuODAzN1pNMTcuMjYwOSAyMC44MDM3TDEzLjM1ODggMjMuMTM2NFYyMS4wMjQzTDEzLjcwODIgMTkuNzQ1M0wxNy4yNjA5IDIwLjgwMzdaIiBmaWxsPSIjRTdFQkY2Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTkwMzFfMTcxODA5Ij4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5MDMxXzE3MTgwOSkiPgo8cGF0aCBkPSJNMjIuNDI4MSAyMi4zNDUzTDE3LjI1ODUgMjAuODA2MUwxMy4zNiAyMy4xMzY2TDEwLjYzOTggMjMuMTM1NEw2LjczODk5IDIwLjgwNjFMMS41NzE3IDIyLjM0NTNMMCAxNy4wMzkxTDEuNTcxODcgMTEuMTVMMCA2LjE3MTAyTDEuNTcxODcgMEw5LjY0NjA4IDQuODIzOTdIMTQuMzUzOEwyMi40MjgxIDBMMjQgNi4xNzEwMkwyMi40MjgxIDExLjE1TDI0IDE3LjAzOTFMMjIuNDI4MSAyMi4zNDUzWiIgZmlsbD0iI0ZGNUMxNiIvPgo8cGF0aCBkPSJNMS41NzI4OCAwTDkuNjQ3MjUgNC44MjczNUw5LjMyNjI1IDguMTQwM0wxLjU3Mjg4IDBaTTYuNzQwMzMgMTcuMDQxM0wxMC4yOTMgMTkuNzQ3NUw2Ljc0MDMzIDIwLjgwNTlWMTcuMDQxM1pNMTAuMDA5IDEyLjU2N0w5LjMyNjI1IDguMTQyNjdMNC45NTU2NCAxMS4xNTE0TDQuOTUzMjcgMTEuMTUwMlYxMS4xNTI0TDQuOTY2NzkgMTQuMjQ5M0w2LjczOTE0IDEyLjU2NzJMMTAuMDA5IDEyLjU2N1pNMjIuNDI4MSAwTDE0LjM1MzcgNC44MjczNUwxNC42NzM3IDguMTQwM0wyMi40MjgxIDBaTTE3LjI2MDggMTcuMDQxM0wxMy43MDggMTkuNzQ3NUwxNy4yNjA4IDIwLjgwNTlWMTcuMDQxM1pNMTkuMDQ2NyAxMS4xNTIyVjExLjE1TDE5LjA0NTcgMTEuMTUxMkwxNC42NzQ5IDguMTQyNjdMMTMuOTkyMiAxMi41NjdIMTcuMjYwN0wxOS4wMzQyIDE0LjI0ODlMMTkuMDQ2NyAxMS4xNTIyWiIgZmlsbD0iI0ZGNUMxNiIvPgo8cGF0aCBkPSJNNi43MzkxNiAyMC44MDU5TDEuNTcxODcgMjIuMzQ1MUwwIDE3LjA0MTNINi43MzkxNlYyMC44MDU5Wk0xMC4wMDc4IDEyLjU2NThMMTAuOTk0OCAxOC45NjIyTDkuNjI2ODEgMTUuNDA1N0w0Ljk2NDYxIDE0LjI0ODlMNi43Mzc5NyAxMi41NjZMMTAuMDA3OCAxMi41NjU4Wk0xNy4yNjA3IDIwLjgwNTlMMjIuNDI4MSAyMi4zNDUxTDI0IDE3LjA0MTFIMTcuMjYwN0MxNy4yNjA3IDE3LjA0MTMgMTcuMjYwNyAyMC44MDU5IDE3LjI2MDcgMjAuODA1OVpNMTMuOTkyMiAxMi41NjU4TDEzLjAwNTIgMTguOTYyMkwxNC4zNzMgMTUuNDA1N0wxOS4wMzU2IDE0LjI0ODlMMTcuMjYxIDEyLjU2NkwxMy45OTIyIDEyLjU2NThaIiBmaWxsPSIjRTM0ODA3Ii8+CjxwYXRoIGQ9Ik0wIDE3LjAzOTFMMS41NzE4NyAxMS4xNUg0Ljk1MjFMNC45NjQ0NCAxNC4yNDc5TDkuNjI3MTUgMTUuNDA0N0wxMC45OTUgMTguOTYxTDEwLjI5MTggMTkuNzQ0Mkw2LjczOTE2IDE3LjAzNzlIMFYxNy4wMzkxWk0yNCAxNy4wMzkxTDIyLjQyODEgMTEuMTVIMTkuMDQ3N0wxOS4wMzU0IDE0LjI0NzlMMTQuMzczIDE1LjQwNDdMMTMuMDA1IDE4Ljk2MUwxMy43MDggMTkuNzQ0MkwxNy4yNjA4IDE3LjAzNzlIMjRWMTcuMDM5MVpNMTQuMzUzOCA0LjgyMzk3SDkuNjQ2MDhMOS4zMjY0MyA4LjEzNjkyTDEwLjk5NTIgMTguOTU3NUgxMy4wMDUyTDE0LjY3NDkgOC4xMzY5MkwxNC4zNTM4IDQuODIzOTdaIiBmaWxsPSIjRkY4RDVEIi8+CjxwYXRoIGQ9Ik0xLjU3MTg3IDBMMCA2LjE3MTAyTDEuNTcxODcgMTEuMTVINC45NTIxTDkuMzI1MDggOC4xNDA0N0wxLjU3MTg3IDBaTTkuMDMwOTUgMTMuODUwNUg3LjQ5OTY1TDYuNjY1OTYgMTQuNjY3OEw5LjYyODE2IDE1LjQwMjFMOS4wMzA5NSAxMy44NDkzVjEzLjg1MDVaTTIyLjQyODEgMEwyNCA2LjE3MTAyTDIyLjQyODEgMTEuMTVIMTkuMDQ3N0wxNC42NzQ5IDguMTQwNDdMMjIuNDI4MSAwWk0xNC45NzEyIDEzLjg1MDVIMTYuNTA0N0wxNy4zMzg0IDE0LjY2ODhMMTQuMzcyOSAxNS40MDQ3TDE0Ljk3MTIgMTMuODQ5M1YxMy44NTA1Wk0xMy4zNTg4IDIxLjAyNTZMMTMuNzA4MiAxOS43NDY1TDEzLjAwNSAxOC45NjM0SDEwLjk5MzVMMTAuMjkwNCAxOS43NDY1TDEwLjYzOTcgMjEuMDI1NiIgZmlsbD0iIzY2MTgwMCIvPgo8cGF0aCBkPSJNMTMuMzU4OSAyMS4wMjU1VjIzLjEzNzZIMTAuNjQwMVYyMS4wMjU1SDEzLjM1ODlaIiBmaWxsPSIjQzBDNENEIi8+CjxwYXRoIGQ9Ik02Ljc0MDM2IDIwLjgwMzdMMTAuNjQyMiAyMy4xMzY0VjIxLjAyNDNMMTAuMjkyOCAxOS43NDUzTDYuNzQwMzYgMjAuODAzN1pNMTcuMjYwOSAyMC44MDM3TDEzLjM1ODggMjMuMTM2NFYyMS4wMjQzTDEzLjcwODIgMTkuNzQ1M0wxNy4yNjA5IDIwLjgwMzdaIiBmaWxsPSIjRTdFQkY2Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTkwMzFfMTcxODA5Ij4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
3
+ export {
4
+ icon
5
+ };
@@ -1,13 +1,43 @@
1
1
  "use client";
2
+ var __async = (__this, __arguments, generator) => {
3
+ return new Promise((resolve, reject) => {
4
+ var fulfilled = (value) => {
5
+ try {
6
+ step(generator.next(value));
7
+ } catch (e) {
8
+ reject(e);
9
+ }
10
+ };
11
+ var rejected = (value) => {
12
+ try {
13
+ step(generator.throw(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ };
18
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
19
+ step((generator = generator.apply(__this, __arguments)).next());
20
+ });
21
+ };
22
+ import { isIosAndRedirectable } from "@solana/wallet-adapter-base";
2
23
  import { icon } from "./phantomIcon.js";
3
24
  const phantomWallet = () => {
4
25
  return {
5
26
  id: "phantom",
27
+ internalId: "PHANTOM",
6
28
  name: "Phantom",
7
29
  iconUrl: icon,
8
30
  isExtension: true,
9
31
  isMobile: true,
10
- getUri: () => "",
32
+ hasIosSafariExtension: false,
33
+ getQrUri: () => __async(void 0, null, function* () {
34
+ if (typeof window !== "undefined" && isIosAndRedirectable()) {
35
+ const url = encodeURIComponent(window.location.href);
36
+ const ref = encodeURIComponent(window.location.origin);
37
+ return `https://phantom.app/ul/browse/${url}?ref=${ref}`;
38
+ }
39
+ return "";
40
+ }),
11
41
  downloadUrl: "https://phantom.app/download"
12
42
  };
13
43
  };
@@ -0,0 +1,2 @@
1
+ import { Wallet } from '../../../types/Wallet.js';
2
+ export declare const solflareWallet: () => Wallet;
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ var __async = (__this, __arguments, generator) => {
3
+ return new Promise((resolve, reject) => {
4
+ var fulfilled = (value) => {
5
+ try {
6
+ step(generator.next(value));
7
+ } catch (e) {
8
+ reject(e);
9
+ }
10
+ };
11
+ var rejected = (value) => {
12
+ try {
13
+ step(generator.throw(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ };
18
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
19
+ step((generator = generator.apply(__this, __arguments)).next());
20
+ });
21
+ };
22
+ import { isIosAndRedirectable } from "@solana/wallet-adapter-base";
23
+ import { icon } from "./solflareIcon.js";
24
+ const solflareWallet = () => {
25
+ return {
26
+ id: "solflare",
27
+ internalId: "SOLFLARE",
28
+ name: "Solflare",
29
+ iconUrl: icon,
30
+ isExtension: true,
31
+ isMobile: true,
32
+ hasIosSafariExtension: false,
33
+ getQrUri: () => __async(void 0, null, function* () {
34
+ if (typeof window !== "undefined" && isIosAndRedirectable()) {
35
+ const url = encodeURIComponent(window.location.href);
36
+ const ref = encodeURIComponent(window.location.origin);
37
+ return `https://solflare.com/ul/v1/browse/${url}?ref=${ref}`;
38
+ }
39
+ return "";
40
+ }),
41
+ downloadUrl: "https://www.solflare.com/download/"
42
+ };
43
+ };
44
+ export {
45
+ solflareWallet
46
+ };
@@ -0,0 +1 @@
1
+ export declare const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5NDc3XzMyMTMpIj4KPHBhdGggZD0iTTUuMTkxNDEgMC41SDE4LjgwODZDMjEuMzk5NSAwLjUgMjMuNSAyLjYwMDUgMjMuNSA1LjE5MTQxVjE4LjgwODZDMjMuNSAyMS4zOTk1IDIxLjM5OTUgMjMuNSAxOC44MDg2IDIzLjVINS4xOTE0MUMyLjYwMDUgMjMuNSAwLjUgMjEuMzk5NSAwLjUgMTguODA4NlY1LjE5MTQxQzAuNSAyLjYwMDUgMi42MDA1IDAuNSA1LjE5MTQxIDAuNVoiIGZpbGw9IiNGRkVGNDYiIHN0cm9rZT0iI0VFREEwRiIvPgo8cGF0aCBkPSJNMTEuNTU1OSAxMi42MzU1TDEyLjY1MzkgMTEuNTcwMUwxNC43MDEgMTIuMjQzQzE2LjA0MDkgMTIuNjkxNiAxNi43MTA5IDEzLjUxNCAxNi43MTA5IDE0LjY3MjlDMTYuNzEwOSAxNS41NTE0IDE2LjM3NTkgMTYuMTMwOSAxNS43MDYgMTYuODc4NUwxNS41MDEzIDE3LjEwMjhMMTUuNTc1NyAxNi41Nzk0QzE1Ljg3MzQgMTQuNjcyOSAxNS4zMTUyIDEzLjg1MDUgMTMuNDcyNyAxMy4yNTIzTDExLjU1NTkgMTIuNjM1NVpNOC44MDE0NyA2LjExMjE2TDE0LjM4NDYgNy45ODEzMUwxMy4xNzQ5IDkuMTQwMkwxMC4yNzE3IDguMTY4MjNDOS4yNjY3NyA3LjgzMTc4IDguOTMxNzcgNy4yODk3MiA4LjgwMTQ3IDYuMTQ5NTRWNi4xMTIxNlpNOC40NjY0NyAxNS42MDc1TDkuNzMyIDE0LjM5MjVMMTIuMTE0MiAxNS4xNzc2QzEzLjM2MSAxNS41ODg4IDEzLjc4OSAxNi4xMzA5IDEzLjY1ODggMTcuNDk1M0w4LjQ2NjQ3IDE1LjYwNzVaTTYuODY2IDEwLjE4NjlDNi44NjYgOS44MzE4MiA3LjA1MjEgOS40OTUzNSA3LjM2ODQ4IDkuMjE0OTNDNy43MDM0NyA5LjcwMDk1IDguMjgwMzkgMTAuMTMwOCA5LjE5MjI5IDEwLjQyOTlMMTEuMTY1IDExLjA4NDFMMTAuMDY3IDEyLjE0OTZMOC4xMzE1MSAxMS41MTRDNy4yMzgyMSAxMS4yMTUgNi44NjYgMTAuNzY2MyA2Ljg2NiAxMC4xODY5Wk0xMi43MDk3IDIwQzE2LjgwMzkgMTcuMjcxMSAxOSAxNS40MjA2IDE5IDEzLjE0MDJDMTkgMTEuNjI2MiAxOC4xMDY3IDEwLjc4NSAxNi4xMzQgMTAuMTMwOEwxNC42NDUyIDkuNjI2MTRMMTguNzIwOSA1LjcwMDk0TDE3LjkwMiA0LjgyMjQ0TDE2LjY5MjMgNS44ODc4NUwxMC45Nzg5IDRDOS4yMTA4OSA0LjU3OTQ0IDYuOTc3NjcgNi4yODAzNyA2Ljk3NzY3IDcuOTgxM0M2Ljk3NzY3IDguMTY4MjIgNi45OTYyOCA4LjM1NTE0IDcuMDUyMTEgOC41NjA3NkM1LjU4MTg4IDkuNDAxODUgNC45ODYzNSAxMC4xODY5IDQuOTg2MzUgMTEuMTU4OEM0Ljk4NjM1IDEyLjA3NDcgNS40NzAyMiAxMi45OTA2IDcuMDE0ODkgMTMuNDk1M0w4LjI0MzE3IDEzLjkwNjVMNCAxOEw0LjgxODg2IDE4Ljg3ODVMNi4xNDAyIDE3LjY2MzZMMTIuNzA5NyAyMFoiIGZpbGw9IiMwMjA1MEEiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xOTQ3N18zMjEzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPg==";
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5NDc3XzMyMTMpIj4KPHBhdGggZD0iTTUuMTkxNDEgMC41SDE4LjgwODZDMjEuMzk5NSAwLjUgMjMuNSAyLjYwMDUgMjMuNSA1LjE5MTQxVjE4LjgwODZDMjMuNSAyMS4zOTk1IDIxLjM5OTUgMjMuNSAxOC44MDg2IDIzLjVINS4xOTE0MUMyLjYwMDUgMjMuNSAwLjUgMjEuMzk5NSAwLjUgMTguODA4NlY1LjE5MTQxQzAuNSAyLjYwMDUgMi42MDA1IDAuNSA1LjE5MTQxIDAuNVoiIGZpbGw9IiNGRkVGNDYiIHN0cm9rZT0iI0VFREEwRiIvPgo8cGF0aCBkPSJNMTEuNTU1OSAxMi42MzU1TDEyLjY1MzkgMTEuNTcwMUwxNC43MDEgMTIuMjQzQzE2LjA0MDkgMTIuNjkxNiAxNi43MTA5IDEzLjUxNCAxNi43MTA5IDE0LjY3MjlDMTYuNzEwOSAxNS41NTE0IDE2LjM3NTkgMTYuMTMwOSAxNS43MDYgMTYuODc4NUwxNS41MDEzIDE3LjEwMjhMMTUuNTc1NyAxNi41Nzk0QzE1Ljg3MzQgMTQuNjcyOSAxNS4zMTUyIDEzLjg1MDUgMTMuNDcyNyAxMy4yNTIzTDExLjU1NTkgMTIuNjM1NVpNOC44MDE0NyA2LjExMjE2TDE0LjM4NDYgNy45ODEzMUwxMy4xNzQ5IDkuMTQwMkwxMC4yNzE3IDguMTY4MjNDOS4yNjY3NyA3LjgzMTc4IDguOTMxNzcgNy4yODk3MiA4LjgwMTQ3IDYuMTQ5NTRWNi4xMTIxNlpNOC40NjY0NyAxNS42MDc1TDkuNzMyIDE0LjM5MjVMMTIuMTE0MiAxNS4xNzc2QzEzLjM2MSAxNS41ODg4IDEzLjc4OSAxNi4xMzA5IDEzLjY1ODggMTcuNDk1M0w4LjQ2NjQ3IDE1LjYwNzVaTTYuODY2IDEwLjE4NjlDNi44NjYgOS44MzE4MiA3LjA1MjEgOS40OTUzNSA3LjM2ODQ4IDkuMjE0OTNDNy43MDM0NyA5LjcwMDk1IDguMjgwMzkgMTAuMTMwOCA5LjE5MjI5IDEwLjQyOTlMMTEuMTY1IDExLjA4NDFMMTAuMDY3IDEyLjE0OTZMOC4xMzE1MSAxMS41MTRDNy4yMzgyMSAxMS4yMTUgNi44NjYgMTAuNzY2MyA2Ljg2NiAxMC4xODY5Wk0xMi43MDk3IDIwQzE2LjgwMzkgMTcuMjcxMSAxOSAxNS40MjA2IDE5IDEzLjE0MDJDMTkgMTEuNjI2MiAxOC4xMDY3IDEwLjc4NSAxNi4xMzQgMTAuMTMwOEwxNC42NDUyIDkuNjI2MTRMMTguNzIwOSA1LjcwMDk0TDE3LjkwMiA0LjgyMjQ0TDE2LjY5MjMgNS44ODc4NUwxMC45Nzg5IDRDOS4yMTA4OSA0LjU3OTQ0IDYuOTc3NjcgNi4yODAzNyA2Ljk3NzY3IDcuOTgxM0M2Ljk3NzY3IDguMTY4MjIgNi45OTYyOCA4LjM1NTE0IDcuMDUyMTEgOC41NjA3NkM1LjU4MTg4IDkuNDAxODUgNC45ODYzNSAxMC4xODY5IDQuOTg2MzUgMTEuMTU4OEM0Ljk4NjM1IDEyLjA3NDcgNS40NzAyMiAxMi45OTA2IDcuMDE0ODkgMTMuNDk1M0w4LjI0MzE3IDEzLjkwNjVMNCAxOEw0LjgxODg2IDE4Ljg3ODVMNi4xNDAyIDE3LjY2MzZMMTIuNzA5NyAyMFoiIGZpbGw9IiMwMjA1MEEiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xOTQ3N18zMjEzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPg==";
3
+ export {
4
+ icon
5
+ };
package/package.json CHANGED
@@ -1,39 +1,49 @@
1
1
  {
2
2
  "name": "@getpara/solana-wallet-connectors",
3
- "version": "2.0.0-alpha.6",
4
- "type": "module",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "exports": {
8
- ".": "./dist/index.js",
9
- "./connectors": "./dist/wallets/connectors/index.js"
10
- },
11
- "scripts": {
12
- "build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
13
- "typegen": "tsc --emitDeclarationOnly",
14
- "test": "vitest run --coverage"
15
- },
3
+ "version": "2.0.0-alpha.61",
16
4
  "dependencies": {
17
- "@getpara/web-sdk": "2.0.0-alpha.6",
18
- "@solana-mobile/wallet-adapter-mobile": "2.1.3",
19
- "@solana/wallet-adapter-base": "0.9.23",
20
- "@solana/wallet-adapter-react": "0.15.35",
21
- "@solana/wallet-adapter-walletconnect": "0.1.16",
5
+ "@getpara/react-common": "2.0.0-alpha.61",
6
+ "@getpara/web-sdk": "2.0.0-alpha.61",
22
7
  "bs58": "6.0.0"
23
8
  },
24
9
  "devDependencies": {
25
- "@getpara/react-common": "2.0.0-alpha.6",
10
+ "@solana-mobile/wallet-adapter-mobile": "^2.2.0",
11
+ "@solana/wallet-adapter-base": "^0.9.27",
12
+ "@solana/wallet-adapter-react": "^0.15.39",
13
+ "@solana/wallet-adapter-walletconnect": "^0.1.21",
26
14
  "@types/react": "^18.0.31",
27
15
  "@types/react-dom": "^18.2.7",
28
- "typescript": "^5.4.3"
16
+ "typescript": "^5.8.3"
29
17
  },
30
- "peerDependencies": {
31
- "react": ">=18",
32
- "react-dom": ">=18"
18
+ "exports": {
19
+ ".": "./dist/index.js",
20
+ "./connectors": "./dist/wallets/connectors/index.js"
33
21
  },
34
22
  "files": [
35
23
  "dist",
36
24
  "package.json"
37
25
  ],
38
- "gitHead": "d3b01a8fb475c2af9bf255800bc10d05e011b2eb"
26
+ "gitHead": "3a84954ff65c95d95fa96794bf0b0d4dc646c624",
27
+ "main": "dist/index.js",
28
+ "peerDependencies": {
29
+ "@farcaster/mini-app-solana": "^1.0.0",
30
+ "@solana-mobile/wallet-adapter-mobile": "2.x",
31
+ "@solana/wallet-adapter-base": "0.x",
32
+ "@solana/wallet-adapter-react": "0.x",
33
+ "@solana/wallet-adapter-walletconnect": "0.x",
34
+ "react": ">=18",
35
+ "react-dom": ">=18"
36
+ },
37
+ "peerDependenciesMeta": {
38
+ "@farcaster/mini-app-solana": {
39
+ "optional": true
40
+ }
41
+ },
42
+ "scripts": {
43
+ "build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
44
+ "test": "vitest run --coverage",
45
+ "typegen": "tsc --emitDeclarationOnly"
46
+ },
47
+ "type": "module",
48
+ "types": "dist/index.d.ts"
39
49
  }