@meshconnect/web-link-sdk 3.2.15 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/Link.d.ts +2 -0
  2. package/Link.js +535 -0
  3. package/index.d.ts +3 -0
  4. package/index.js +3 -0
  5. package/package.json +9 -20
  6. package/utils/connectors/evm/chainConfigs.d.ts +2 -0
  7. package/utils/connectors/evm/chainConfigs.js +115 -0
  8. package/utils/connectors/evm/chainSwitching.d.ts +15 -0
  9. package/utils/connectors/evm/chainSwitching.js +242 -0
  10. package/utils/connectors/evm/index.d.ts +8 -0
  11. package/utils/connectors/evm/index.js +8 -0
  12. package/utils/connectors/evm/provider.d.ts +6 -0
  13. package/utils/connectors/evm/provider.js +13 -0
  14. package/utils/connectors/evm/signing.d.ts +1 -0
  15. package/utils/connectors/evm/signing.js +78 -0
  16. package/utils/connectors/evm/transactions.d.ts +28 -0
  17. package/utils/connectors/evm/transactions.js +381 -0
  18. package/utils/connectors/evm/types.d.ts +57 -0
  19. package/utils/connectors/evm/types.js +1 -0
  20. package/utils/connectors/evm/walletConnection.d.ts +20 -0
  21. package/utils/connectors/evm/walletConnection.js +160 -0
  22. package/utils/connectors/evm/walletDiscovery.d.ts +10 -0
  23. package/utils/connectors/evm/walletDiscovery.js +55 -0
  24. package/utils/connectors/solana/connection.d.ts +4 -0
  25. package/utils/connectors/solana/connection.js +108 -0
  26. package/utils/connectors/solana/index.d.ts +5 -0
  27. package/utils/connectors/solana/index.js +5 -0
  28. package/utils/connectors/solana/providerDiscovery.d.ts +3 -0
  29. package/utils/connectors/solana/providerDiscovery.js +127 -0
  30. package/utils/connectors/solana/signing.d.ts +1 -0
  31. package/utils/connectors/solana/signing.js +59 -0
  32. package/utils/connectors/solana/transaction.d.ts +17 -0
  33. package/utils/connectors/solana/transaction.js +362 -0
  34. package/utils/connectors/solana/types.d.ts +71 -0
  35. package/utils/connectors/solana/types.js +8 -0
  36. package/utils/event-types.d.ts +233 -0
  37. package/{src/utils/event-types.test.ts → utils/event-types.js} +5 -15
  38. package/utils/popup.d.ts +3 -0
  39. package/utils/popup.js +36 -0
  40. package/utils/sdk-specs.d.ts +5 -0
  41. package/utils/sdk-specs.js +6 -0
  42. package/utils/style.d.ts +3 -0
  43. package/utils/style.js +13 -0
  44. package/utils/types.d.ts +234 -0
  45. package/utils/types.js +1 -0
  46. package/utils/version.d.ts +1 -0
  47. package/utils/version.js +1 -0
  48. package/utils/wallet/EVMWalletStrategy.d.ts +31 -0
  49. package/utils/wallet/EVMWalletStrategy.js +265 -0
  50. package/utils/wallet/SolanaWalletStrategy.d.ts +33 -0
  51. package/utils/wallet/SolanaWalletStrategy.js +300 -0
  52. package/utils/wallet/WalletStrategy.d.ts +61 -0
  53. package/utils/wallet/WalletStrategy.js +25 -0
  54. package/utils/wallet/WalletStrategyFactory.d.ts +15 -0
  55. package/utils/wallet/WalletStrategyFactory.js +31 -0
  56. package/utils/wallet/index.d.ts +4 -0
  57. package/utils/wallet/index.js +4 -0
  58. package/utils/wallet-browser-event-types.d.ts +116 -0
  59. package/utils/wallet-browser-event-types.js +17 -0
  60. package/jest.setup.ts +0 -4
  61. package/src/Link.test.ts +0 -434
  62. package/src/Link.ts +0 -491
  63. package/src/index.ts +0 -3
  64. package/src/utils/__snapshots__/popup.test.ts.snap +0 -89
  65. package/src/utils/connectors/evm/chainConfigs.ts +0 -120
  66. package/src/utils/connectors/evm/chainSwitching.ts +0 -165
  67. package/src/utils/connectors/evm/index.ts +0 -8
  68. package/src/utils/connectors/evm/provider.ts +0 -22
  69. package/src/utils/connectors/evm/signing.ts +0 -39
  70. package/src/utils/connectors/evm/transactions.ts +0 -356
  71. package/src/utils/connectors/evm/types.ts +0 -63
  72. package/src/utils/connectors/evm/walletConnection.ts +0 -140
  73. package/src/utils/connectors/evm/walletDiscovery.ts +0 -67
  74. package/src/utils/connectors/solana/connection.ts +0 -69
  75. package/src/utils/connectors/solana/index.ts +0 -5
  76. package/src/utils/connectors/solana/providerDiscovery.ts +0 -153
  77. package/src/utils/connectors/solana/signing.ts +0 -18
  78. package/src/utils/connectors/solana/transaction.ts +0 -382
  79. package/src/utils/connectors/solana/types.ts +0 -66
  80. package/src/utils/event-types.ts +0 -350
  81. package/src/utils/popup.test.ts +0 -50
  82. package/src/utils/popup.ts +0 -123
  83. package/src/utils/sdk-specs.test.ts +0 -18
  84. package/src/utils/sdk-specs.ts +0 -7
  85. package/src/utils/style.test.ts +0 -33
  86. package/src/utils/style.ts +0 -15
  87. package/src/utils/types.ts +0 -270
  88. package/src/utils/version.ts +0 -1
  89. package/src/utils/wallet/EVMWalletStrategy.ts +0 -176
  90. package/src/utils/wallet/SolanaWalletStrategy.ts +0 -207
  91. package/src/utils/wallet/WalletStrategy.ts +0 -99
  92. package/src/utils/wallet/WalletStrategyFactory.ts +0 -46
  93. package/src/utils/wallet/__tests__/EVMWalletStrategy.test.ts +0 -233
  94. package/src/utils/wallet/__tests__/SolanaWalletStrategy.test.ts +0 -253
  95. package/src/utils/wallet/__tests__/WalletStrategy.test.ts +0 -77
  96. package/src/utils/wallet/__tests__/WalletStrategyFactory.test.ts +0 -65
  97. package/src/utils/wallet/index.ts +0 -4
  98. package/src/utils/wallet-browser-event-types.ts +0 -190
  99. package/tools/copy.js +0 -26
  100. package/tools/update-version.js +0 -10
  101. package/tsconfig.json +0 -14
@@ -0,0 +1,300 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
27
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
52
+ import { BaseWalletStrategy } from './WalletStrategy';
53
+ import { connectToSolanaWallet, disconnectFromSolanaWallet, signSolanaMessage, sendSOLTransaction, findAvailableSolanaProviders, getSolanaProvider, sendSOLTransactionWithInstructions } from '../connectors/solana';
54
+ var SolanaWalletStrategy = /** @class */ (function (_super) {
55
+ __extends(SolanaWalletStrategy, _super);
56
+ function SolanaWalletStrategy() {
57
+ return _super !== null && _super.apply(this, arguments) || this;
58
+ }
59
+ SolanaWalletStrategy.prototype.connect = function (payload) {
60
+ return __awaiter(this, void 0, void 0, function () {
61
+ var result, error_1;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0:
65
+ _a.trys.push([0, 2, , 3]);
66
+ return [4 /*yield*/, connectToSolanaWallet(payload)];
67
+ case 1:
68
+ result = _a.sent();
69
+ if (result instanceof Error) {
70
+ throw result;
71
+ }
72
+ return [2 /*return*/, {
73
+ accounts: result.accounts,
74
+ chainId: result.chainId,
75
+ isConnected: result.isConnected
76
+ }];
77
+ case 2:
78
+ error_1 = _a.sent();
79
+ throw this.handleError(error_1, 'connect to Solana wallet');
80
+ case 3: return [2 /*return*/];
81
+ }
82
+ });
83
+ });
84
+ };
85
+ SolanaWalletStrategy.prototype.disconnect = function (payload) {
86
+ return __awaiter(this, void 0, void 0, function () {
87
+ var result, error_2;
88
+ return __generator(this, function (_a) {
89
+ switch (_a.label) {
90
+ case 0:
91
+ _a.trys.push([0, 2, , 3]);
92
+ return [4 /*yield*/, disconnectFromSolanaWallet(payload.walletName || 'Unknown Wallet')];
93
+ case 1:
94
+ result = _a.sent();
95
+ if (result instanceof Error) {
96
+ throw result;
97
+ }
98
+ return [3 /*break*/, 3];
99
+ case 2:
100
+ error_2 = _a.sent();
101
+ throw this.handleError(error_2, 'disconnect from Solana wallet');
102
+ case 3: return [2 /*return*/];
103
+ }
104
+ });
105
+ });
106
+ };
107
+ SolanaWalletStrategy.prototype.signMessage = function (payload) {
108
+ return __awaiter(this, void 0, void 0, function () {
109
+ var result, error_3;
110
+ return __generator(this, function (_a) {
111
+ switch (_a.label) {
112
+ case 0:
113
+ _a.trys.push([0, 2, , 3]);
114
+ return [4 /*yield*/, signSolanaMessage(payload.walletName || 'Unknown Wallet', payload.message)];
115
+ case 1:
116
+ result = _a.sent();
117
+ if (result instanceof Error) {
118
+ throw result;
119
+ }
120
+ return [2 /*return*/, result];
121
+ case 2:
122
+ error_3 = _a.sent();
123
+ throw this.handleError(error_3, 'sign Solana message');
124
+ case 3: return [2 /*return*/];
125
+ }
126
+ });
127
+ });
128
+ };
129
+ /**
130
+ * Handles chain switching for Solana networks
131
+ * Supports both mainnet (101) and devnet (103)
132
+ */
133
+ SolanaWalletStrategy.prototype.switchChain = function (payload) {
134
+ return __awaiter(this, void 0, void 0, function () {
135
+ return __generator(this, function (_a) {
136
+ // Check if the requested chainId is for Solana Devnet (103)
137
+ if (payload.chainId === 103) {
138
+ return [2 /*return*/, {
139
+ chainId: '103',
140
+ accounts: []
141
+ }];
142
+ }
143
+ // Default to mainnet (101) for all other cases
144
+ return [2 /*return*/, {
145
+ chainId: '101',
146
+ accounts: []
147
+ }];
148
+ });
149
+ });
150
+ };
151
+ SolanaWalletStrategy.prototype.sendNativeTransfer = function (payload) {
152
+ return __awaiter(this, void 0, void 0, function () {
153
+ var result, error_4;
154
+ return __generator(this, function (_a) {
155
+ switch (_a.label) {
156
+ case 0:
157
+ _a.trys.push([0, 2, , 3]);
158
+ return [4 /*yield*/, sendSOLTransaction({
159
+ toAddress: payload.toAddress,
160
+ amount: BigInt(payload.amount * Math.pow(10, payload.decimalPlaces)),
161
+ fromAddress: payload.account,
162
+ blockhash: payload.blockhash || '',
163
+ walletName: payload.walletName || ''
164
+ })];
165
+ case 1:
166
+ result = _a.sent();
167
+ if (typeof result === 'string') {
168
+ return [2 /*return*/, result];
169
+ }
170
+ throw result;
171
+ case 2:
172
+ error_4 = _a.sent();
173
+ throw this.handleError(error_4, 'send Solana native transfer');
174
+ case 3: return [2 /*return*/];
175
+ }
176
+ });
177
+ });
178
+ };
179
+ SolanaWalletStrategy.prototype.sendSmartContractInteraction = function (payload) {
180
+ return __awaiter(this, void 0, void 0, function () {
181
+ var provider, senderAddress, _a, decimals, rawAmount, scaledAmount;
182
+ var _b;
183
+ return __generator(this, function (_c) {
184
+ switch (_c.label) {
185
+ case 0:
186
+ provider = getSolanaProvider(payload.walletName || '');
187
+ _a = payload.account;
188
+ if (_a) return [3 /*break*/, 2];
189
+ return [4 /*yield*/, ((_b = provider.publicKey) === null || _b === void 0 ? void 0 : _b.toString())];
190
+ case 1:
191
+ _a = (_c.sent());
192
+ _c.label = 2;
193
+ case 2:
194
+ senderAddress = _a;
195
+ if (!senderAddress) {
196
+ throw new Error('Sender account address is required');
197
+ }
198
+ decimals = payload.args[2] || 9;
199
+ rawAmount = payload.args[1];
200
+ scaledAmount = rawAmount;
201
+ if (!payload.blockhash) {
202
+ throw new Error('Blockhash is required for Solana transactions');
203
+ }
204
+ return [4 /*yield*/, sendSOLTransaction({
205
+ toAddress: payload.args[0],
206
+ amount: scaledAmount,
207
+ fromAddress: senderAddress,
208
+ blockhash: payload.blockhash,
209
+ walletName: payload.walletName || '',
210
+ tokenMint: payload.address,
211
+ createATA: payload.createATA || false,
212
+ tokenProgram: payload.tokenProgram,
213
+ tokenDecimals: decimals
214
+ })];
215
+ case 3: return [2 /*return*/, _c.sent()];
216
+ }
217
+ });
218
+ });
219
+ };
220
+ SolanaWalletStrategy.prototype.sendTransactionWithInstructions = function (payload) {
221
+ return __awaiter(this, void 0, void 0, function () {
222
+ var provider, senderAddress, _a, decimals, rawAmount, scaledAmount, result, error_5;
223
+ var _b;
224
+ return __generator(this, function (_c) {
225
+ switch (_c.label) {
226
+ case 0:
227
+ provider = getSolanaProvider(payload.transactionInstructions.walletName || '');
228
+ _a = payload.transferConfig.account;
229
+ if (_a) return [3 /*break*/, 2];
230
+ return [4 /*yield*/, ((_b = provider.publicKey) === null || _b === void 0 ? void 0 : _b.toString())];
231
+ case 1:
232
+ _a = (_c.sent());
233
+ _c.label = 2;
234
+ case 2:
235
+ senderAddress = _a;
236
+ if (!senderAddress) {
237
+ throw new Error('Sender account address is required');
238
+ }
239
+ decimals = payload.transferConfig.args[2] || 6 // USDC has 6 decimals
240
+ ;
241
+ rawAmount = payload.transferConfig.args[1];
242
+ scaledAmount = rawAmount;
243
+ if (!payload.transactionInstructions.blockhash) {
244
+ throw new Error('Blockhash is required for Solana transactions');
245
+ }
246
+ _c.label = 3;
247
+ case 3:
248
+ _c.trys.push([3, 5, , 6]);
249
+ return [4 /*yield*/, sendSOLTransactionWithInstructions(payload, {
250
+ toAddress: payload.transferConfig.args[0],
251
+ amount: scaledAmount,
252
+ fromAddress: senderAddress,
253
+ blockhash: payload.transactionInstructions.blockhash,
254
+ walletName: payload.transactionInstructions.walletName || '',
255
+ tokenMint: payload.transferConfig.address,
256
+ createATA: payload.transferConfig.createATA || false,
257
+ tokenProgram: payload.transferConfig.tokenProgram,
258
+ tokenDecimals: decimals
259
+ })];
260
+ case 4:
261
+ result = _c.sent();
262
+ if (typeof result === 'string') {
263
+ return [2 /*return*/, result];
264
+ }
265
+ throw result;
266
+ case 5:
267
+ error_5 = _c.sent();
268
+ throw this.handleError(error_5, 'send Solana native transfer');
269
+ case 6: return [2 /*return*/];
270
+ }
271
+ });
272
+ });
273
+ };
274
+ SolanaWalletStrategy.prototype.sendNativeSmartContractInteraction = function () {
275
+ throw new Error('Method not implemented.');
276
+ };
277
+ SolanaWalletStrategy.prototype.sendTransactionBatch = function () {
278
+ throw new Error('Method not implemented.');
279
+ };
280
+ SolanaWalletStrategy.prototype.getWalletCapabilities = function () {
281
+ return __awaiter(this, void 0, void 0, function () {
282
+ return __generator(this, function (_a) {
283
+ return [2 /*return*/, {
284
+ atomic: {
285
+ status: 'ready'
286
+ }
287
+ }];
288
+ });
289
+ });
290
+ };
291
+ SolanaWalletStrategy.prototype.getProviders = function () {
292
+ var solanaProviderMap = findAvailableSolanaProviders();
293
+ return Object.keys(solanaProviderMap).map(function (id) { return ({
294
+ id: id,
295
+ type: 'solana'
296
+ }); });
297
+ };
298
+ return SolanaWalletStrategy;
299
+ }(BaseWalletStrategy));
300
+ export { SolanaWalletStrategy };
@@ -0,0 +1,61 @@
1
+ import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload, TransactionBatchPayload, WalletCapabilitiesPayload, SolanaTransferWithInstructionsPayload } from '../types';
2
+ export interface WalletStrategy {
3
+ connect(payload: WalletBrowserPayload): Promise<{
4
+ accounts: string[];
5
+ chainId: string | number;
6
+ isConnected: boolean;
7
+ }>;
8
+ disconnect(payload: DisconnectPayload): Promise<void>;
9
+ signMessage(payload: SignRequestPayload): Promise<string>;
10
+ switchChain(payload: ChainSwitchPayload): Promise<{
11
+ chainId: number | string;
12
+ accounts: string[];
13
+ }>;
14
+ sendNativeTransfer(payload: TransferPayload): Promise<string>;
15
+ sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
16
+ sendNativeSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
17
+ sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
18
+ getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
19
+ atomic: {
20
+ status: string;
21
+ };
22
+ }>;
23
+ sendTransactionWithInstructions(payload: SolanaTransferWithInstructionsPayload): Promise<string>;
24
+ getProviders(): {
25
+ id: string;
26
+ type: string;
27
+ name?: string;
28
+ icon?: string;
29
+ }[];
30
+ }
31
+ export declare abstract class BaseWalletStrategy implements WalletStrategy {
32
+ abstract connect(payload: WalletBrowserPayload): Promise<{
33
+ accounts: string[];
34
+ chainId: string | number;
35
+ isConnected: boolean;
36
+ }>;
37
+ abstract disconnect(payload: DisconnectPayload): Promise<void>;
38
+ abstract signMessage(payload: SignRequestPayload): Promise<string>;
39
+ abstract switchChain(payload: ChainSwitchPayload): Promise<{
40
+ chainId: number | string;
41
+ accounts: string[];
42
+ }>;
43
+ abstract sendNativeTransfer(payload: TransferPayload): Promise<string>;
44
+ abstract sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
45
+ abstract sendNativeSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
46
+ abstract sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
47
+ abstract getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
48
+ atomic: {
49
+ status: string;
50
+ };
51
+ }>;
52
+ abstract getProviders(): {
53
+ id: string;
54
+ type: string;
55
+ name?: string;
56
+ icon?: string;
57
+ }[];
58
+ abstract sendTransactionWithInstructions(payload: SolanaTransferWithInstructionsPayload): Promise<string>;
59
+ protected handleError(error: unknown, operation: string): Error;
60
+ protected isUserRejection(error: any): boolean;
61
+ }
@@ -0,0 +1,25 @@
1
+ var BaseWalletStrategy = /** @class */ (function () {
2
+ function BaseWalletStrategy() {
3
+ }
4
+ BaseWalletStrategy.prototype.handleError = function (error, operation) {
5
+ console.error("".concat(operation, " error:"), error);
6
+ if (error instanceof Error) {
7
+ return error;
8
+ }
9
+ return new Error("Failed to ".concat(operation));
10
+ };
11
+ BaseWalletStrategy.prototype.isUserRejection = function (error) {
12
+ var _a;
13
+ if (!error)
14
+ return false;
15
+ var message = ((_a = error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
16
+ //4001 - user reject, -32603 internal error
17
+ var errorCodes = [4001, -32603];
18
+ return (message.includes('user rejected') ||
19
+ message.includes('declined') ||
20
+ message.includes('cancelled') ||
21
+ errorCodes.includes(error.code));
22
+ };
23
+ return BaseWalletStrategy;
24
+ }());
25
+ export { BaseWalletStrategy };
@@ -0,0 +1,15 @@
1
+ import { WalletStrategy } from './WalletStrategy';
2
+ export type NetworkType = 'evm' | 'solana';
3
+ export declare class WalletStrategyFactory {
4
+ private static instance;
5
+ private strategies;
6
+ private constructor();
7
+ static getInstance(): WalletStrategyFactory;
8
+ getStrategy(networkType: NetworkType): WalletStrategy;
9
+ getAllProviders(): {
10
+ id: string;
11
+ type: string;
12
+ name?: string;
13
+ icon?: string;
14
+ }[];
15
+ }
@@ -0,0 +1,31 @@
1
+ import { EVMWalletStrategy } from './EVMWalletStrategy';
2
+ import { SolanaWalletStrategy } from './SolanaWalletStrategy';
3
+ var WalletStrategyFactory = /** @class */ (function () {
4
+ function WalletStrategyFactory() {
5
+ this.strategies = new Map();
6
+ this.strategies.set('evm', new EVMWalletStrategy());
7
+ this.strategies.set('solana', new SolanaWalletStrategy());
8
+ }
9
+ WalletStrategyFactory.getInstance = function () {
10
+ if (!WalletStrategyFactory.instance) {
11
+ WalletStrategyFactory.instance = new WalletStrategyFactory();
12
+ }
13
+ return WalletStrategyFactory.instance;
14
+ };
15
+ WalletStrategyFactory.prototype.getStrategy = function (networkType) {
16
+ var strategy = this.strategies.get(networkType);
17
+ if (!strategy) {
18
+ throw new Error("No strategy found for network type: ".concat(networkType));
19
+ }
20
+ return strategy;
21
+ };
22
+ WalletStrategyFactory.prototype.getAllProviders = function () {
23
+ var allProviders = [];
24
+ this.strategies.forEach(function (strategy) {
25
+ allProviders.push.apply(allProviders, strategy.getProviders());
26
+ });
27
+ return allProviders;
28
+ };
29
+ return WalletStrategyFactory;
30
+ }());
31
+ export { WalletStrategyFactory };
@@ -0,0 +1,4 @@
1
+ export * from './WalletStrategy';
2
+ export * from './EVMWalletStrategy';
3
+ export * from './SolanaWalletStrategy';
4
+ export * from './WalletStrategyFactory';
@@ -0,0 +1,4 @@
1
+ export * from './WalletStrategy';
2
+ export * from './EVMWalletStrategy';
3
+ export * from './SolanaWalletStrategy';
4
+ export * from './WalletStrategyFactory';
@@ -0,0 +1,116 @@
1
+ import { AddressLookupTableStateDto, TransactionInstructionDto } from './types';
2
+ export type WalletBrowserEventType = WalletBrowserInjectedWalletSelected | WalletBrowserSignRequest | WalletBrowserChainSwitchRequest | WalletBrowserTransferBalanceRequest | WalletBrowserNativeTransferRequest | WalletBrowserNonNativeTransferRequest | WalletBrowserNativeSmartDeposit | WalletBrowserNonNativeSmartDeposit | WalletBrowserDisconnect | WalletBrowserTransactionBatch | WalletBrowserWalletCapabilities | WalletBrowserSolanaTransferWithInstructionsRequest;
3
+ declare const WALLET_BROWSER_EVENT_TYPE_KEYS: readonly ["walletBrowserInjectedWalletSelected", "walletBrowserSignRequest", "walletBrowserChainSwitchRequest", "walletBrowserTransferBalanceRequest", "walletBrowserNativeTransferRequest", "walletBrowserNonNativeTransferRequest", "walletBrowserNativeSmartDeposit", "walletBrowserNonNativeSmartDeposit", "walletBrowserDisconnect", "walletBrowserTransactionBatchRequest", "walletBrowserWalletCapabilities", "walletBrowserSolanaTransferWithInstructionsRequest"];
4
+ export type NetworkType = 'unknown' | 'evm' | 'solana' | 'bitcoin' | 'cardano' | 'tron' | 'avalancheX' | 'tezos' | 'dogecoin' | 'ripple' | 'stellar' | 'litecoin' | 'sui' | 'aptos' | 'tvm';
5
+ export type WalletBrowserEventTypeKeys = (typeof WALLET_BROWSER_EVENT_TYPE_KEYS)[number];
6
+ export declare function isWalletBrowserEventTypeKey(key: string): key is WalletBrowserEventTypeKeys;
7
+ interface WalletBrowserEventBase {
8
+ type: WalletBrowserEventTypeKeys;
9
+ }
10
+ export interface WalletBrowserInjectedWalletSelected extends WalletBrowserEventBase {
11
+ type: 'walletBrowserInjectedWalletSelected';
12
+ payload: {
13
+ integrationName: string;
14
+ networkType?: string;
15
+ targetChainId?: number;
16
+ };
17
+ }
18
+ export interface WalletBrowserSignRequest extends WalletBrowserEventBase {
19
+ type: 'walletBrowserSignRequest';
20
+ payload: {
21
+ address: `0x${string}`;
22
+ message: string;
23
+ walletName?: string;
24
+ networkType?: NetworkType;
25
+ };
26
+ }
27
+ export interface WalletBrowserChainSwitchRequest extends WalletBrowserEventBase {
28
+ type: 'walletBrowserChainSwitchRequest';
29
+ payload: {
30
+ chainId: number;
31
+ networkType: NetworkType;
32
+ };
33
+ }
34
+ export interface WalletBrowserTransferBalanceRequest extends WalletBrowserEventBase {
35
+ type: 'walletBrowserTransferBalanceRequest';
36
+ payload: {
37
+ account: string;
38
+ chainId: number;
39
+ };
40
+ }
41
+ export interface WalletBrowserNativeTransferRequest extends WalletBrowserEventBase {
42
+ type: 'walletBrowserNativeTransferRequest';
43
+ payload: {
44
+ toAddress: string;
45
+ amount: number;
46
+ decimalPlaces: number;
47
+ chainId: number;
48
+ account: string;
49
+ network: string;
50
+ blockhash?: string;
51
+ walletName?: string;
52
+ };
53
+ }
54
+ interface SmartContractPayload {
55
+ address: string;
56
+ abi: string;
57
+ functionName: string;
58
+ args: unknown[];
59
+ account: string;
60
+ value?: string;
61
+ }
62
+ export interface WalletBrowserNonNativeTransferRequest extends WalletBrowserEventBase {
63
+ type: 'walletBrowserNonNativeTransferRequest';
64
+ payload: SmartContractPayload;
65
+ }
66
+ export interface WalletBrowserNativeSmartDeposit extends WalletBrowserEventBase {
67
+ type: 'walletBrowserNativeSmartDeposit';
68
+ payload: SmartContractPayload;
69
+ }
70
+ export interface WalletBrowserNonNativeSmartDeposit extends WalletBrowserEventBase {
71
+ type: 'walletBrowserNonNativeSmartDeposit';
72
+ payload: SmartContractPayload;
73
+ }
74
+ export interface WalletBrowserDisconnect extends WalletBrowserEventBase {
75
+ type: 'walletBrowserDisconnect';
76
+ payload?: {
77
+ networkType?: NetworkType;
78
+ walletName?: string;
79
+ };
80
+ }
81
+ export interface WalletBrowserTransactionBatch extends WalletBrowserEventBase {
82
+ type: 'walletBrowserTransactionBatchRequest';
83
+ payload: {
84
+ version: string;
85
+ from: string;
86
+ chainId: string;
87
+ atomicRequired: boolean;
88
+ calls: {
89
+ to: string;
90
+ value: string;
91
+ data?: string;
92
+ }[];
93
+ };
94
+ }
95
+ export interface WalletBrowserWalletCapabilities extends WalletBrowserEventBase {
96
+ type: 'walletBrowserWalletCapabilities';
97
+ payload: {
98
+ from: string;
99
+ chainId: string;
100
+ };
101
+ }
102
+ export interface WalletBrowserSolanaTransferWithInstructionsRequest extends WalletBrowserEventBase {
103
+ type: 'walletBrowserSolanaTransferWithInstructionsRequest';
104
+ payload: {
105
+ transactionInstructions: {
106
+ instructions: TransactionInstructionDto[];
107
+ states: AddressLookupTableStateDto[];
108
+ account: string;
109
+ blockhash: string;
110
+ walletName?: string;
111
+ network?: string;
112
+ };
113
+ transferConfig: SmartContractPayload;
114
+ };
115
+ }
116
+ export {};
@@ -0,0 +1,17 @@
1
+ var WALLET_BROWSER_EVENT_TYPE_KEYS = [
2
+ 'walletBrowserInjectedWalletSelected',
3
+ 'walletBrowserSignRequest',
4
+ 'walletBrowserChainSwitchRequest',
5
+ 'walletBrowserTransferBalanceRequest',
6
+ 'walletBrowserNativeTransferRequest',
7
+ 'walletBrowserNonNativeTransferRequest',
8
+ 'walletBrowserNativeSmartDeposit',
9
+ 'walletBrowserNonNativeSmartDeposit',
10
+ 'walletBrowserDisconnect',
11
+ 'walletBrowserTransactionBatchRequest',
12
+ 'walletBrowserWalletCapabilities',
13
+ 'walletBrowserSolanaTransferWithInstructionsRequest'
14
+ ];
15
+ export function isWalletBrowserEventTypeKey(key) {
16
+ return WALLET_BROWSER_EVENT_TYPE_KEYS.includes(key);
17
+ }
package/jest.setup.ts DELETED
@@ -1,4 +0,0 @@
1
- import { TextEncoder, TextDecoder } from 'util';
2
-
3
- global.TextEncoder = TextEncoder;
4
- global.TextDecoder = TextDecoder;