@dynamic-labs/multi-wallet 0.15.1-minimal.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/package.json +17 -13
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +1 -0
  5. package/src/index.js.map +1 -1
  6. package/src/multi-wallet.d.ts +1 -0
  7. package/src/multi-wallet.js +67 -2
  8. package/src/multi-wallet.js.map +1 -1
  9. package/src/types.d.ts +1 -0
  10. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +3 -0
  11. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js +30 -0
  12. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js.map +1 -0
  13. package/src/utils/assignConfirmationScreenToProvider/index.d.ts +1 -0
  14. package/src/utils/assignConfirmationScreenToProvider/index.js +6 -0
  15. package/src/utils/assignConfirmationScreenToProvider/index.js.map +1 -0
  16. package/src/wallets/algorand/myalgo.d.ts +34 -0
  17. package/src/wallets/algorand/myalgo.js +178 -0
  18. package/src/wallets/algorand/myalgo.js.map +1 -0
  19. package/src/wallets/algorand/myalgoSigner.d.ts +21 -0
  20. package/src/wallets/algorand/myalgoSigner.js +23 -0
  21. package/src/wallets/algorand/myalgoSigner.js.map +1 -0
  22. package/src/wallets/ethereum/BloctoEvm.d.ts +34 -0
  23. package/src/wallets/ethereum/BloctoEvm.js +135 -0
  24. package/src/wallets/ethereum/BloctoEvm.js.map +1 -0
  25. package/src/wallets/ethereum/MagicLink.d.ts +48 -0
  26. package/src/wallets/ethereum/MagicLink.js +178 -0
  27. package/src/wallets/ethereum/MagicLink.js.map +1 -0
  28. package/src/wallets/ethereum/fortmatic.d.ts +34 -0
  29. package/src/wallets/ethereum/fortmatic.js +93 -0
  30. package/src/wallets/ethereum/fortmatic.js.map +1 -0
  31. package/src/wallets/ethereum/injected/BloctoInjected.d.ts +6 -0
  32. package/src/wallets/ethereum/injected/BloctoInjected.js +13 -0
  33. package/src/wallets/ethereum/injected/BloctoInjected.js.map +1 -0
  34. package/src/wallets/flow/blocto.d.ts +13 -0
  35. package/src/wallets/flow/blocto.js +29 -0
  36. package/src/wallets/flow/blocto.js.map +1 -0
  37. package/src/wallets/flow/dapper.d.ts +13 -0
  38. package/src/wallets/flow/dapper.js +29 -0
  39. package/src/wallets/flow/dapper.js.map +1 -0
  40. package/src/wallets/flow/flow-provider.d.ts +34 -0
  41. package/src/wallets/flow/flow-provider.js +184 -0
  42. package/src/wallets/flow/flow-provider.js.map +1 -0
  43. package/src/wallets/flow/lilico.d.ts +15 -0
  44. package/src/wallets/flow/lilico.js +50 -0
  45. package/src/wallets/flow/lilico.js.map +1 -0
  46. package/src/wallets/solana/CoinbaseSolana.d.ts +26 -0
  47. package/src/wallets/solana/CoinbaseSolana.js +76 -0
  48. package/src/wallets/solana/CoinbaseSolana.js.map +1 -0
  49. package/src/wallets/solana/glow.d.ts +25 -0
  50. package/src/wallets/solana/glow.js +73 -0
  51. package/src/wallets/solana/glow.js.map +1 -0
  52. package/src/wallets/solana/injected/BraveSol.d.ts +6 -0
  53. package/src/wallets/solana/injected/BraveSol.js +17 -0
  54. package/src/wallets/solana/injected/BraveSol.js.map +1 -0
  55. package/src/wallets/solana/injected/ExodusSol.d.ts +5 -0
  56. package/src/wallets/solana/injected/ExodusSol.js +12 -0
  57. package/src/wallets/solana/injected/ExodusSol.js.map +1 -0
  58. package/src/wallets/solana/phantom-ledger.d.ts +16 -0
  59. package/src/wallets/solana/phantom-ledger.js +67 -0
  60. package/src/wallets/solana/phantom-ledger.js.map +1 -0
  61. package/src/wallets/solana/phantom.d.ts +26 -0
  62. package/src/wallets/solana/phantom.js +99 -0
  63. package/src/wallets/solana/phantom.js.map +1 -0
  64. package/src/wallets/solana/slope.d.ts +39 -0
  65. package/src/wallets/solana/slope.js +124 -0
  66. package/src/wallets/solana/slope.js.map +1 -0
  67. package/src/wallets/solana/solProvider.d.ts +16 -0
  68. package/src/wallets/solana/solProvider.js +56 -0
  69. package/src/wallets/solana/solProvider.js.map +1 -0
  70. package/src/wallets/solana/solProviderHelper.d.ts +29 -0
  71. package/src/wallets/solana/solProviderHelper.js +144 -0
  72. package/src/wallets/solana/solProviderHelper.js.map +1 -0
  73. package/src/wallets/solana/solflare.d.ts +26 -0
  74. package/src/wallets/solana/solflare.js +93 -0
  75. package/src/wallets/solana/solflare.js.map +1 -0
  76. package/src/wallets/starknet/argentx.d.ts +6 -0
  77. package/src/wallets/starknet/argentx.js +11 -0
  78. package/src/wallets/starknet/argentx.js.map +1 -0
  79. package/src/wallets/starknet/braavos.d.ts +6 -0
  80. package/src/wallets/starknet/braavos.js +11 -0
  81. package/src/wallets/starknet/braavos.js.map +1 -0
  82. package/src/wallets/starknet/ethereumContractAbi.json +340 -0
  83. package/src/wallets/starknet/starknetProvider.d.ts +31 -0
  84. package/src/wallets/starknet/starknetProvider.js +98 -0
  85. package/src/wallets/starknet/starknetProvider.js.map +1 -0
  86. package/src/wallets/starknet/starknetProviderHelper.d.ts +17 -0
  87. package/src/wallets/starknet/starknetProviderHelper.js +159 -0
  88. package/src/wallets/starknet/starknetProviderHelper.js.map +1 -0
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.walletName = exports.MEMO_PROGRAM_ID = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const errors_1 = require("../../errors");
7
+ const extractNonce_1 = require("../../utils/extractNonce");
8
+ const phantom_1 = tslib_1.__importDefault(require("./phantom"));
9
+ exports.MEMO_PROGRAM_ID = new web3_js_1.PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
10
+ /**
11
+ * I'm exporting the walletName to use it for DYN-1447. As we only need the wallet name,
12
+ * exporting it in this way, we avoid to instantiate the whole PhantomLedger class every time.
13
+ */
14
+ exports.walletName = 'Phantom Ledger';
15
+ class PhantomLedger extends phantom_1.default {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.name = exports.walletName;
19
+ this.buildAuthTx = (message) => {
20
+ const transaction = new web3_js_1.Transaction();
21
+ transaction.add(new web3_js_1.TransactionInstruction({
22
+ data: Buffer.from(message, 'utf8'),
23
+ keys: [],
24
+ programId: exports.MEMO_PROGRAM_ID,
25
+ }));
26
+ return transaction;
27
+ };
28
+ }
29
+ signMessage() {
30
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
31
+ throw new errors_1.NotSupportedError(`Message signing is currently not supported on ${exports.walletName}
32
+ You can use signMessageViaTransaction instead to achieve similar functionality
33
+ by signing a transaction with a memo instruction.
34
+ You can read more about it here https://github.com/solana-labs/solana/issues/21366`);
35
+ });
36
+ }
37
+ proveOwnership(messageToSign) {
38
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
39
+ const nonce = (0, extractNonce_1.extractNonce)(messageToSign);
40
+ if (!nonce) {
41
+ throw new errors_1.DynamicError('Nonce missing');
42
+ }
43
+ return this.signMessageViaTransaction(nonce);
44
+ });
45
+ }
46
+ signMessageViaTransaction(messageToSign) {
47
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
48
+ const address = yield this.fetchPublicAddress();
49
+ if (!address) {
50
+ throw new errors_1.DynamicError('Address missing');
51
+ }
52
+ const transaction = this.buildAuthTx(messageToSign);
53
+ transaction.feePayer = new web3_js_1.PublicKey(address);
54
+ transaction.recentBlockhash = (yield this.getWeb3Provider().getLatestBlockhash()).blockhash;
55
+ const signer = yield this.getSigner();
56
+ if (!signer) {
57
+ throw new errors_1.DynamicError('Signer not found');
58
+ }
59
+ const signedTransaction = yield signer.signTransaction(transaction);
60
+ return JSON.stringify({
61
+ signedTransaction: signedTransaction.serialize(),
62
+ });
63
+ });
64
+ }
65
+ }
66
+ exports.default = PhantomLedger;
67
+ //# sourceMappingURL=phantom-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phantom-ledger.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/solana/phantom-ledger.ts"],"names":[],"mappings":";;;;AAAA,6CAIyB;AAEzB,yCAA+D;AAC/D,2DAAwD;AAExD,gEAAgC;AAEnB,QAAA,eAAe,GAAG,IAAI,mBAAS,CAC1C,6CAA6C,CAC9C,CAAC;AAEF;;;GAGG;AACU,QAAA,UAAU,GAAG,gBAAgB,CAAC;AAE3C,MAAM,aAAc,SAAQ,iBAAO;IAAnC;;QACW,SAAI,GAAG,kBAAU,CAAC;QAgDnB,gBAAW,GAAG,CAAC,OAAe,EAAe,EAAE;YACrD,MAAM,WAAW,GAAG,IAAI,qBAAW,EAAE,CAAC;YAEtC,WAAW,CAAC,GAAG,CACb,IAAI,gCAAsB,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;gBAClC,IAAI,EAAE,EAAE;gBACR,SAAS,EAAE,uBAAe;aAC3B,CAAC,CACH,CAAC;YACF,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC;IACJ,CAAC;IA1DgB,WAAW;;YACxB,MAAM,IAAI,0BAAiB,CACzB,iDAAiD,kBAAU;;;yFAGwB,CACpF,CAAC;QACJ,CAAC;KAAA;IAEc,cAAc,CAC3B,aAAqB;;YAErB,MAAM,KAAK,GAAG,IAAA,2BAAY,EAAC,aAAa,CAAC,CAAC;YAE1C,IAAI,CAAC,KAAK,EAAE;gBACV,MAAM,IAAI,qBAAY,CAAC,eAAe,CAAC,CAAC;aACzC;YAED,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;KAAA;IAEK,yBAAyB,CAAC,aAAqB;;YACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhD,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,qBAAY,CAAC,iBAAiB,CAAC,CAAC;aAC3C;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACpD,WAAW,CAAC,QAAQ,GAAG,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC;YAC9C,WAAW,CAAC,eAAe,GAAG,CAC5B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,kBAAkB,EAAE,CAClD,CAAC,SAAS,CAAC;YAEZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEtC,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,qBAAY,CAAC,kBAAkB,CAAC,CAAC;aAC5C;YAED,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;KAAA;CAcF;AAED,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Chain, WalletConnector, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
2
+ import { ISolana } from '../window';
3
+ import { SolProvider } from './solProvider';
4
+ import { SolProviderHelper } from './solProviderHelper';
5
+ declare class Phantom extends SolProvider implements WalletConnector {
6
+ name: string;
7
+ supportedChains: Chain[];
8
+ connectedChain: Chain;
9
+ canConnectViaQrCode: boolean;
10
+ canConnectViaCustodialService: boolean;
11
+ isWalletConnect: boolean;
12
+ solProviderHelper: SolProviderHelper;
13
+ get key(): string;
14
+ setupEventListeners(listeners: WalletEventListeners): Promise<() => void>;
15
+ teardownEventListeners(): void;
16
+ connect(): Promise<void>;
17
+ getSigner(): Promise<ISolana | undefined>;
18
+ isInstalledOnBrowser(): boolean;
19
+ fetchPublicAddress(): Promise<string | undefined>;
20
+ signMessage(messageToSign: string): Promise<string | undefined>;
21
+ proveOwnership(messageToSign: string): Promise<string | undefined>;
22
+ supportsNetworkSwitching(): boolean;
23
+ switchNetwork(): Promise<void>;
24
+ getConnectedAccounts(): Promise<string[]>;
25
+ }
26
+ export default Phantom;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const errors_1 = require("../../errors");
5
+ const isMobile_1 = require("../../utils/isMobile");
6
+ const normalizeWalletName_1 = require("../../utils/normalizeWalletName");
7
+ const solProvider_1 = require("./solProvider");
8
+ const solProviderHelper_1 = require("./solProviderHelper");
9
+ class Phantom extends solProvider_1.SolProvider {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'Phantom';
13
+ this.supportedChains = ['SOL'];
14
+ this.connectedChain = 'SOL';
15
+ this.canConnectViaQrCode = false;
16
+ this.canConnectViaCustodialService = false;
17
+ this.isWalletConnect = false;
18
+ this.solProviderHelper = new solProviderHelper_1.SolProviderHelper();
19
+ }
20
+ get key() {
21
+ return (0, normalizeWalletName_1.normalizeWalletName)(this.name);
22
+ }
23
+ setupEventListeners(listeners) {
24
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
+ return this.solProviderHelper._setupEventListeners(Object.assign(Object.assign({}, listeners), { onDisconnect: () => tslib_1.__awaiter(this, void 0, void 0, function* () {
26
+ // noop for now because phantom sends a disconnect event when the page reloads,
27
+ // resulting in a log out.
28
+ }) }), this.solProviderHelper.findProvider(this.name));
29
+ });
30
+ }
31
+ teardownEventListeners() {
32
+ this.solProviderHelper._teardownEventListeners(this.name);
33
+ }
34
+ connect() {
35
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
36
+ yield this.solProviderHelper.connectWithName(this.name);
37
+ });
38
+ }
39
+ getSigner() {
40
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
41
+ return this.solProviderHelper.connectWithName(this.name);
42
+ });
43
+ }
44
+ isInstalledOnBrowser() {
45
+ var _a;
46
+ /**
47
+ * When Glow wallet is installed and Phantom isn't, isPhantom will
48
+ * still be true. This added check is to return false in that scenario.
49
+ * It relies on the fact that if both Glow and Phantom are enabled,
50
+ * solana.isGlow will return false.
51
+ */
52
+ return (this.solProviderHelper.isInstalledHelper(this.name) &&
53
+ !((_a = window.solana) === null || _a === void 0 ? void 0 : _a.isGlow));
54
+ }
55
+ fetchPublicAddress() {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ if (this.isInstalledOnBrowser()) {
58
+ return this.solProviderHelper.fetchPublicAddressWithName(this.name);
59
+ }
60
+ const url = encodeURIComponent(window.location.toString());
61
+ const ref = encodeURIComponent(window.location.origin);
62
+ // samsung browser only supports native links, not universal links
63
+ if ((0, isMobile_1.isMobile)()) {
64
+ if ((0, isMobile_1.isSamsungBrowser)()) {
65
+ window.location.assign(`phantom://browse/${url}?ref=${ref}`);
66
+ }
67
+ else {
68
+ window.location.assign(`https://phantom.app/ul/browse/${url}?ref=${ref}`);
69
+ }
70
+ }
71
+ return;
72
+ });
73
+ }
74
+ signMessage(messageToSign) {
75
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
76
+ return this.solProviderHelper.signMessageWithName(messageToSign, this.name);
77
+ });
78
+ }
79
+ proveOwnership(messageToSign) {
80
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
81
+ return this.signMessage(messageToSign);
82
+ });
83
+ }
84
+ supportsNetworkSwitching() {
85
+ return false;
86
+ }
87
+ switchNetwork() {
88
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
89
+ throw new errors_1.DynamicError('Not supported');
90
+ });
91
+ }
92
+ getConnectedAccounts() {
93
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
94
+ return this.solProviderHelper.getConnectedAccountsWithName(this.name);
95
+ });
96
+ }
97
+ }
98
+ exports.default = Phantom;
99
+ //# sourceMappingURL=phantom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phantom.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/solana/phantom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
+ import { ISolana } from '../window';
3
+ import { SolProvider } from './solProvider';
4
+ interface ConnectData {
5
+ data: {
6
+ publicKey: string;
7
+ };
8
+ }
9
+ interface SignatureData {
10
+ data: {
11
+ signature: string;
12
+ };
13
+ }
14
+ declare class Slope extends SolProvider implements WalletConnector {
15
+ name: string;
16
+ supportedChains: Chain[];
17
+ connectedChain: Chain;
18
+ canConnectViaQrCode: boolean;
19
+ canConnectViaCustodialService: boolean;
20
+ isWalletConnect: boolean;
21
+ private static _wallet;
22
+ get key(): string;
23
+ get wallet(): ISolana | undefined;
24
+ setupEventListeners(): void;
25
+ teardownEventListeners(): void;
26
+ connect(): Promise<void>;
27
+ getSigner(): Promise<undefined>;
28
+ getBalance(): Promise<string | undefined>;
29
+ isInstalledOnBrowser(): boolean;
30
+ isConnectData: (value: unknown) => value is ConnectData;
31
+ isSignatureData: (value: unknown) => value is SignatureData;
32
+ fetchPublicAddress(): Promise<string | undefined>;
33
+ signMessage(messageToSign: string): Promise<string | undefined>;
34
+ proveOwnership(messageToSign: string): Promise<string | undefined>;
35
+ supportsNetworkSwitching(): boolean;
36
+ switchNetwork(): Promise<void>;
37
+ getConnectedAccounts(): Promise<string[]>;
38
+ }
39
+ export default Slope;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const errors_1 = require("../../errors");
6
+ const logger_1 = require("../../utils/logger");
7
+ const normalizeWalletName_1 = require("../../utils/normalizeWalletName");
8
+ const solProvider_1 = require("./solProvider");
9
+ class Slope extends solProvider_1.SolProvider {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'Slope';
13
+ this.supportedChains = ['SOL'];
14
+ this.connectedChain = 'SOL';
15
+ this.canConnectViaQrCode = false;
16
+ this.canConnectViaCustodialService = false;
17
+ this.isWalletConnect = false;
18
+ this.isConnectData = (value) => { var _a; return ((_a = value.data) === null || _a === void 0 ? void 0 : _a.publicKey) !== undefined; };
19
+ this.isSignatureData = (value) => { var _a; return ((_a = value.data) === null || _a === void 0 ? void 0 : _a.signature) !== undefined; };
20
+ }
21
+ get key() {
22
+ return (0, normalizeWalletName_1.normalizeWalletName)(this.name);
23
+ }
24
+ get wallet() {
25
+ if (!window.Slope) {
26
+ return undefined;
27
+ }
28
+ if (!Slope._wallet) {
29
+ Slope._wallet = new window.Slope();
30
+ }
31
+ return Slope._wallet;
32
+ }
33
+ setupEventListeners() {
34
+ return;
35
+ }
36
+ teardownEventListeners() {
37
+ return;
38
+ }
39
+ connect() {
40
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
41
+ if (this.wallet === undefined)
42
+ return;
43
+ yield this.wallet.connect();
44
+ });
45
+ }
46
+ getSigner() {
47
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
48
+ return undefined;
49
+ });
50
+ }
51
+ getBalance() {
52
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
53
+ try {
54
+ if (this.wallet === undefined)
55
+ return undefined;
56
+ const response = yield this.wallet.connect();
57
+ const publicKey = new web3_js_1.PublicKey(this.isConnectData(response) && response.data.publicKey);
58
+ const balance = this.lamportsToSol(yield this.getWeb3Provider().getBalance(publicKey));
59
+ return balance.toString();
60
+ }
61
+ catch (e) {
62
+ logger_1.logger.debug(e);
63
+ return undefined;
64
+ }
65
+ });
66
+ }
67
+ isInstalledOnBrowser() {
68
+ return typeof window.Slope === 'function';
69
+ }
70
+ fetchPublicAddress() {
71
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
72
+ try {
73
+ if (this.wallet === undefined)
74
+ return undefined;
75
+ const response = yield this.wallet.connect();
76
+ return this.isConnectData(response) ? response.data.publicKey : undefined;
77
+ }
78
+ catch (e) {
79
+ logger_1.logger.debug(e);
80
+ return undefined;
81
+ }
82
+ });
83
+ }
84
+ signMessage(messageToSign) {
85
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
86
+ const encodedMessage = new TextEncoder().encode(messageToSign);
87
+ try {
88
+ if (this.wallet === undefined)
89
+ return undefined;
90
+ const response = yield this.wallet.signMessage(encodedMessage);
91
+ return this.isSignatureData(response)
92
+ ? response.data.signature
93
+ : undefined;
94
+ }
95
+ catch (e) {
96
+ logger_1.logger.debug(e);
97
+ return undefined;
98
+ }
99
+ });
100
+ }
101
+ proveOwnership(messageToSign) {
102
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
103
+ return this.signMessage(messageToSign);
104
+ });
105
+ }
106
+ supportsNetworkSwitching() {
107
+ return false;
108
+ }
109
+ switchNetwork() {
110
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
111
+ throw new errors_1.DynamicError('Not supported');
112
+ });
113
+ }
114
+ getConnectedAccounts() {
115
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
116
+ if (this.wallet === undefined)
117
+ return [];
118
+ const response = yield this.wallet.connect();
119
+ return this.isConnectData(response) ? [response.data.publicKey] : [];
120
+ });
121
+ }
122
+ }
123
+ exports.default = Slope;
124
+ //# sourceMappingURL=slope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slope.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/solana/slope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Connection } from '@solana/web3.js';
2
+ import type { NetworkConfiguration } from '@dynamic-labs/sdk-api';
3
+ import { ISolana } from '../window';
4
+ export declare abstract class SolProvider {
5
+ solNetworks: NetworkConfiguration[];
6
+ constructor({ solNetworks }: {
7
+ solNetworks: NetworkConfiguration[];
8
+ });
9
+ getWeb3Provider(): Connection;
10
+ getRpcProvider(): Promise<Connection | undefined>;
11
+ abstract getSigner(): Promise<ISolana | undefined>;
12
+ abstract connect(): Promise<void>;
13
+ getNetwork(): Promise<number | undefined>;
14
+ getBalance(): Promise<string | undefined>;
15
+ lamportsToSol(lamports: number): number;
16
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolProvider = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /* eslint-disable prefer-destructuring */
6
+ const web3_js_1 = require("@solana/web3.js");
7
+ const rpcProviders_1 = require("../../rpcProviders");
8
+ const errors_1 = require("../../errors");
9
+ class SolProvider {
10
+ constructor({ solNetworks }) {
11
+ this.solNetworks = solNetworks;
12
+ }
13
+ getWeb3Provider() {
14
+ var _a;
15
+ const [network] = this.solNetworks;
16
+ if (!network) {
17
+ throw new errors_1.DynamicError('No enabled networks');
18
+ }
19
+ const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
20
+ return new web3_js_1.Connection(rpcUrl, 'confirmed');
21
+ }
22
+ getRpcProvider() {
23
+ var _a;
24
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
+ if (this.solNetworks.length === 0)
26
+ return;
27
+ const configurations = {
28
+ evm: undefined,
29
+ solana: this.solNetworks,
30
+ starknet: undefined,
31
+ };
32
+ return (_a = (0, rpcProviders_1.getSolanaDefaultRpcProvider)(configurations)) === null || _a === void 0 ? void 0 : _a.provider;
33
+ });
34
+ }
35
+ getNetwork() {
36
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
37
+ return undefined;
38
+ });
39
+ }
40
+ getBalance() {
41
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
42
+ const signer = yield this.getSigner();
43
+ if (!signer)
44
+ return;
45
+ const publicKey = new web3_js_1.PublicKey(signer.publicKey.toString());
46
+ const balance = this.lamportsToSol(yield this.getWeb3Provider().getBalance(publicKey));
47
+ return balance.toString();
48
+ });
49
+ }
50
+ // Solana uses lamports as the smallest unit of currency. This converts lamports to SOL.
51
+ lamportsToSol(lamports) {
52
+ return lamports / 1000000000;
53
+ }
54
+ }
55
+ exports.SolProvider = SolProvider;
56
+ //# sourceMappingURL=solProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solProvider.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/solana/solProvider.ts"],"names":[],"mappings":";;;;AAAA,yCAAyC;AACzC,6CAAwD;AAKxD,qDAAiE;AACjE,yCAA4C;AAE5C,MAAsB,WAAW;IAG/B,YAAY,EAAE,WAAW,EAA2C;QAClE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,eAAe;;QACb,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QAEnC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,qBAAY,CAAC,qBAAqB,CAAC,CAAC;SAC/C;QAED,MAAM,MAAM,GAAG,CAAA,MAAA,OAAO,CAAC,sBAAsB,0CAAG,CAAC,CAAC,KAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEzE,OAAO,IAAI,oBAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;IAEK,cAAc;;;YAClB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAE1C,MAAM,cAAc,GAAG;gBACrB,GAAG,EAAE,SAAS;gBACd,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,QAAQ,EAAE,SAAS;aACpB,CAAC;YACF,OAAO,MAAA,IAAA,0CAA2B,EAAC,cAAc,CAAC,0CAAE,QAAQ,CAAC;;KAC9D;IAKK,UAAU;;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;KAAA;IAEK,UAAU;;YACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAChC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CACnD,CAAC;YACF,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,wFAAwF;IACxF,aAAa,CAAC,QAAgB;QAC5B,OAAO,QAAQ,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAnDD,kCAmDC"}
@@ -0,0 +1,29 @@
1
+ import { WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
2
+ import { ISolana, ProviderCondition } from '../window';
3
+ export interface SignedMessage {
4
+ signature: Uint8Array;
5
+ }
6
+ type Provider = () => ISolana | undefined;
7
+ export declare class SolProviderHelper {
8
+ GlowProvider: Provider;
9
+ CoinbaseProvider: Provider;
10
+ PhantomProvider: Provider;
11
+ SolflareProvider: Provider;
12
+ BraveProvider: Provider;
13
+ ExodusProvider: Provider;
14
+ providers: {
15
+ [wallet: string]: Provider;
16
+ };
17
+ installedProviderLookup(providerFlags: Array<ProviderCondition>): ISolana | undefined;
18
+ allInstalledProviders(): ISolana[];
19
+ findSolanaProviders(solana?: ISolana): ISolana[];
20
+ isInstalledHelper(walletName: string): boolean;
21
+ findProvider(walletName: string): ISolana | undefined;
22
+ fetchPublicAddressWithName(name: string): Promise<string | undefined>;
23
+ connectWithName(name: string): Promise<ISolana | undefined>;
24
+ signMessageWithName(messageToSign: string, name: string): Promise<string | undefined>;
25
+ _setupEventListeners(listeners: WalletEventListeners, web3Provider?: ISolana): () => void;
26
+ _teardownEventListeners(name: string): void;
27
+ getConnectedAccountsWithName(name: string): Promise<string[]>;
28
+ }
29
+ export {};
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolProviderHelper = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const convertors_1 = require("../../utils/convertors");
6
+ const ProviderLookup_1 = require("../ProviderLookup");
7
+ const normalizeWalletName_1 = require("../../utils/normalizeWalletName");
8
+ class SolProviderHelper {
9
+ constructor() {
10
+ this.GlowProvider = () => this.installedProviderLookup([{ flag: 'isGlow', value: true }]);
11
+ this.CoinbaseProvider = () => this.findSolanaProviders(window.coinbaseSolana)[0];
12
+ this.PhantomProvider = () => this.installedProviderLookup([
13
+ { flag: 'isPhantom', value: true },
14
+ { flag: 'isBraveWallet', value: false },
15
+ { flag: 'isExodus', value: false },
16
+ ]);
17
+ this.SolflareProvider = () => this.installedProviderLookup([{ flag: 'isSolflare', value: true }]);
18
+ this.BraveProvider = () => this.installedProviderLookup([
19
+ { flag: 'isPhantom', value: true },
20
+ { flag: 'isBraveWallet', value: true },
21
+ ]);
22
+ this.ExodusProvider = () => this.installedProviderLookup([
23
+ { flag: 'isPhantom', value: true },
24
+ { flag: 'isExodus', value: true },
25
+ ]);
26
+ this.providers = {
27
+ bravesol: this.BraveProvider,
28
+ coinbasesolana: this.CoinbaseProvider,
29
+ exodussol: this.ExodusProvider,
30
+ glow: this.GlowProvider,
31
+ phantom: this.PhantomProvider,
32
+ phantomledger: this.PhantomProvider,
33
+ solflare: this.SolflareProvider,
34
+ };
35
+ }
36
+ installedProviderLookup(providerFlags) {
37
+ return (0, ProviderLookup_1.ProviderLookup)(this.allInstalledProviders(), providerFlags);
38
+ }
39
+ allInstalledProviders() {
40
+ return this.findSolanaProviders(window.solana).concat(this.findSolanaProviders(window.solflare), this.findSolanaProviders(window.glowSolana));
41
+ }
42
+ findSolanaProviders(solana) {
43
+ const solanaProviders = [];
44
+ if (solana && !solana.providers) {
45
+ solanaProviders.push(solana);
46
+ }
47
+ else if (solana && solana.providers) {
48
+ solana.providers.forEach((provider) => {
49
+ solanaProviders.push(provider);
50
+ });
51
+ }
52
+ return solanaProviders;
53
+ }
54
+ isInstalledHelper(walletName) {
55
+ return this.findProvider(walletName) !== undefined;
56
+ }
57
+ findProvider(walletName) {
58
+ var _a, _b;
59
+ return (_b = (_a = this.providers)[(0, normalizeWalletName_1.normalizeWalletName)(walletName)]) === null || _b === void 0 ? void 0 : _b.call(_a);
60
+ }
61
+ fetchPublicAddressWithName(name) {
62
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
63
+ const provider = this.findProvider(name);
64
+ if (!provider) {
65
+ return Promise.resolve(undefined);
66
+ }
67
+ yield provider.connect();
68
+ const { publicKey } = provider;
69
+ return publicKey ? publicKey.toString() : Promise.resolve(undefined);
70
+ });
71
+ }
72
+ connectWithName(name) {
73
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
74
+ const provider = this.findProvider(name);
75
+ if (!provider) {
76
+ return Promise.resolve(undefined);
77
+ }
78
+ try {
79
+ yield provider.connect();
80
+ return provider;
81
+ }
82
+ catch (err) {
83
+ return undefined;
84
+ }
85
+ });
86
+ }
87
+ signMessageWithName(messageToSign, name) {
88
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
89
+ const walletAddress = yield this.fetchPublicAddressWithName(name);
90
+ if (!walletAddress) {
91
+ return Promise.resolve(undefined);
92
+ }
93
+ const provider = this.findProvider(name);
94
+ if (!provider) {
95
+ return Promise.resolve(undefined);
96
+ }
97
+ const encodedMessage = new TextEncoder().encode(messageToSign);
98
+ return provider.connect().then(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
99
+ const { signature } = (yield provider.signMessage(encodedMessage, 'utf8'));
100
+ return (0, convertors_1.bufferToBase64)(signature);
101
+ }));
102
+ });
103
+ }
104
+ _setupEventListeners(listeners, web3Provider) {
105
+ const handleAccountChange = (address) => tslib_1.__awaiter(this, void 0, void 0, function* () {
106
+ var _a, _b, _c;
107
+ if (!address) {
108
+ yield (web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.connect());
109
+ if ((_a = web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.publicKey) === null || _a === void 0 ? void 0 : _a.toString()) {
110
+ (_b = listeners.onAccountChange) === null || _b === void 0 ? void 0 : _b.call(listeners, [web3Provider.publicKey.toString()]);
111
+ }
112
+ return;
113
+ }
114
+ if (address.toString()) {
115
+ yield ((_c = listeners.onAccountChange) === null || _c === void 0 ? void 0 : _c.call(listeners, [address.toString()]));
116
+ }
117
+ });
118
+ const handleDisconnect = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
119
+ var _d;
120
+ yield ((_d = listeners.onDisconnect) === null || _d === void 0 ? void 0 : _d.call(listeners));
121
+ });
122
+ web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.on('accountChanged', handleAccountChange);
123
+ web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.on('disconnect', handleDisconnect);
124
+ return () => { };
125
+ }
126
+ _teardownEventListeners(name) {
127
+ const web3Provider = this.findProvider(name);
128
+ if (!web3Provider) {
129
+ return;
130
+ }
131
+ web3Provider.removeAllListeners();
132
+ }
133
+ getConnectedAccountsWithName(name) {
134
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
135
+ const provider = this.findProvider(name);
136
+ if (!provider || !provider.publicKey) {
137
+ return [];
138
+ }
139
+ return [provider.publicKey.toString()];
140
+ });
141
+ }
142
+ }
143
+ exports.SolProviderHelper = SolProviderHelper;
144
+ //# sourceMappingURL=solProviderHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solProviderHelper.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/solana/solProviderHelper.ts"],"names":[],"mappings":"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"}