@rango-dev/provider-trustwallet 0.0.0-experimental-936229e8-20251208
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/CHANGELOG.md +254 -0
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/legacy/index.d.ts +18 -0
- package/dist/legacy/index.d.ts.map +1 -0
- package/dist/mod.d.ts +3 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +2 -0
- package/dist/mod.js.map +7 -0
- package/dist/namespaces/evm.d.ts +4 -0
- package/dist/namespaces/evm.d.ts.map +1 -0
- package/dist/namespaces/solana.d.ts +4 -0
- package/dist/namespaces/solana.d.ts.map +1 -0
- package/dist/provider-trustwallet.build.json +1 -0
- package/dist/provider.d.ts +3 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/signer.d.ts +4 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signers/solanaSigner.d.ts +5 -0
- package/dist/signers/solanaSigner.d.ts.map +1 -0
- package/dist/utils.d.ts +10 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +33 -0
- package/readme.md +31 -0
- package/src/constants.ts +51 -0
- package/src/legacy/index.ts +103 -0
- package/src/mod.ts +12 -0
- package/src/namespaces/evm.ts +54 -0
- package/src/namespaces/solana.ts +42 -0
- package/src/provider.ts +23 -0
- package/src/signer.ts +29 -0
- package/src/signers/solanaSigner.ts +9 -0
- package/src/utils.ts +76 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# [0.55.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.54.1...provider-trustwallet@0.55.0) (2025-12-02)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## [0.54.1](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.54.0...provider-trustwallet@0.54.1) (2025-11-22)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# [0.52.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.51.0...provider-trustwallet@0.52.0) (2025-10-29)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Reverts
|
|
13
|
+
|
|
14
|
+
* Revert "feat: implement deep linking" ([a0b0edc](https://github.com/rango-exchange/rango-client/commit/a0b0edcc052bfea69af2037b73c0bb6a9b38c2a9))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# [0.51.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.50.0...provider-trustwallet@0.51.0) (2025-09-29)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* implement changeAccountSubscriber builder ([8e2ca97](https://github.com/rango-exchange/rango-client/commit/8e2ca9783fcd57445ca558e688c402a30aba3686))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# [0.50.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.49.0...provider-trustwallet@0.50.0) (2025-09-06)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
* implement deep linking ([1dec48e](https://github.com/rango-exchange/rango-client/commit/1dec48e4db944977fb6d3797d7aa49527940fab6))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# [0.49.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.48.0...provider-trustwallet@0.49.0) (2025-08-19)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
* add rango-dev/wallets-core to dependencies of providers ([84b4b2b](https://github.com/rango-exchange/rango-client/commit/84b4b2b7c3a7f5631228fb6ebf04617c3c4428e9))
|
|
42
|
+
* remove retry dynamic import and throw refined error on dynamic import failure ([a2944ac](https://github.com/rango-exchange/rango-client/commit/a2944ac3c05a0e945f6e5621fa5693ab89625485))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
* implement retry mechanism for lazy imports ([9a8e191](https://github.com/rango-exchange/rango-client/commit/9a8e191711d2319990ca4d0613e8188a5f86842f))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# [0.48.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.47.0...provider-trustwallet@0.48.0) (2025-08-05)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Features
|
|
55
|
+
|
|
56
|
+
* implement canSwitchNetwork for hub providers ([5a4eced](https://github.com/rango-exchange/rango-client/commit/5a4eced221046b5474176aca7c569092e36f1bde))
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# [0.47.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.46.0...provider-trustwallet@0.47.0) (2025-07-22)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Bug Fixes
|
|
64
|
+
|
|
65
|
+
* handle trust wallet in app browser user rejection error ([1b1d07f](https://github.com/rango-exchange/rango-client/commit/1b1d07f9155bbd7dbe3f7a9157b353e4a2a3cc40))
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Reverts
|
|
69
|
+
|
|
70
|
+
* Revert "chore(release): publish" ([064ce15](https://github.com/rango-exchange/rango-client/commit/064ce157a2f819856f647f83aeb1c0410542e8d7))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
# [0.45.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.44.1...provider-trustwallet@0.45.0) (2025-06-09)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Features
|
|
78
|
+
|
|
79
|
+
* migrate trust wallet to use hub and add support for solana ([61497fd](https://github.com/rango-exchange/rango-client/commit/61497fd40d48d48030e5a6d7ece53b5b7daf7b09))
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## [0.44.1](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.44.0...provider-trustwallet@0.44.1) (2025-05-04)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# [0.44.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.43.0...provider-trustwallet@0.44.0) (2025-04-30)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
### Bug Fixes
|
|
91
|
+
|
|
92
|
+
* rename pbt to ptb for sui ([3d6d89f](https://github.com/rango-exchange/rango-client/commit/3d6d89f2265766607a15d61e0df92643fb33072b))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### Features
|
|
96
|
+
|
|
97
|
+
* update sui to consider recent api changes ([d764b25](https://github.com/rango-exchange/rango-client/commit/d764b2501df9bb295f63cdbc0b05acd4a3abb4b9))
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# [0.43.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.42.0...provider-trustwallet@0.43.0) (2025-03-11)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# [0.42.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.41.0...provider-trustwallet@0.42.0) (2025-02-23)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
# [0.41.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.40.0...provider-trustwallet@0.41.0) (2024-12-30)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
# [0.40.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.39.0...provider-trustwallet@0.40.0) (2024-11-27)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# [0.39.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.38.0...provider-trustwallet@0.39.0) (2024-11-12)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
# [0.38.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.37.0...provider-trustwallet@0.38.0) (2024-10-12)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
### Bug Fixes
|
|
125
|
+
|
|
126
|
+
* bump sdk and fix type issues ([d442208](https://github.com/rango-exchange/rango-client/commit/d4422083bf5dd27d5f509ce1db7f9560d05428c8))
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
### Performance Improvements
|
|
130
|
+
|
|
131
|
+
* lazy load signer packages ([7b88f18](https://github.com/rango-exchange/rango-client/commit/7b88f1834f7b29b4b81ab6c81a07bb88e8ccf55c))
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
# [0.37.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.36.0...provider-trustwallet@0.37.0) (2024-09-10)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
# [0.36.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.35.1...provider-trustwallet@0.36.0) (2024-08-11)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
## [0.35.1](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.35.0...provider-trustwallet@0.35.1) (2024-07-14)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
# [0.35.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.33.2...provider-trustwallet@0.35.0) (2024-07-09)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
# [0.34.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.33.2...provider-trustwallet@0.34.0) (2024-06-01)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
## [0.33.2](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.33.1...provider-trustwallet@0.33.2) (2024-05-26)
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
## [0.33.1](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.33.0...provider-trustwallet@0.33.1) (2024-05-25)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
# [0.33.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.32.0...provider-trustwallet@0.33.0) (2024-05-14)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
# [0.32.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.31.0...provider-trustwallet@0.32.0) (2024-04-24)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
# [0.31.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.30.0...provider-trustwallet@0.31.0) (2024-04-23)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
# [0.30.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.29.0...provider-trustwallet@0.30.0) (2024-04-09)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
# [0.29.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.28.0...provider-trustwallet@0.29.0) (2024-03-12)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
# [0.28.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.27.0...provider-trustwallet@0.28.0) (2024-02-20)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
# [0.27.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.26.0...provider-trustwallet@0.27.0) (2024-02-07)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
# [0.26.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.25.0...provider-trustwallet@0.26.0) (2024-01-22)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
# [0.25.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.23.0...provider-trustwallet@0.25.0) (2023-12-24)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
### Bug Fixes
|
|
199
|
+
|
|
200
|
+
* fix HMR for widget and playground ([8524820](https://github.com/rango-exchange/rango-client/commit/8524820f10cf0b8921f3db0c4f620ff98daa4103))
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
# [0.14.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.13.0...provider-trustwallet@0.14.0) (2023-08-03)
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
# [0.13.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.12.0...provider-trustwallet@0.13.0) (2023-08-01)
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
# [0.9.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.8.0...provider-trustwallet@0.9.0) (2023-07-31)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
# [0.7.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.6.0...provider-trustwallet@0.7.0) (2023-07-11)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
# [0.6.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.5.0...provider-trustwallet@0.6.0) (2023-07-11)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
### Reverts
|
|
224
|
+
|
|
225
|
+
* Revert "support for rango-types cjs format" ([ed4e050](https://github.com/rango-exchange/rango-client/commit/ed4e050bfc0dcde7aeffa6b0d73b02080a5721eb))
|
|
226
|
+
* Revert "support for rango-types cjs format" ([4f5f55f](https://github.com/rango-exchange/rango-client/commit/4f5f55f96e8daa329588b932b19c291c30f339c4))
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
# [0.5.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.4.0...provider-trustwallet@0.5.0) (2023-05-31)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
# [0.4.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.3.0...provider-trustwallet@0.4.0) (2023-05-31)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
# [0.3.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.2.0...provider-trustwallet@0.3.0) (2023-05-30)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
# [0.2.0](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.1.15...provider-trustwallet@0.2.0) (2023-05-30)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
## [0.1.14](https://github.com/rango-exchange/rango-client/compare/provider-trustwallet@0.1.13...provider-trustwallet@0.1.14) (2023-05-15)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
### Bug Fixes
|
|
250
|
+
|
|
251
|
+
* update rango-types and fix notification bugs ([993f185](https://github.com/rango-exchange/rango-client/commit/993f185e0b8c5e5e15a2c65ba2d85d1f9c8daa90))
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAUhE,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC,eAAO,MAAM,QAAQ,EAAE,gBAsCtB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
|
|
2
|
+
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
3
|
+
import { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
|
|
4
|
+
import { WalletTypes } from '@rango-dev/wallets-shared';
|
|
5
|
+
import { type Provider, trustWallet as trustwallet_instance } from '../utils.js';
|
|
6
|
+
export declare const config: {
|
|
7
|
+
type: WalletTypes;
|
|
8
|
+
};
|
|
9
|
+
export declare const getInstance: typeof trustwallet_instance;
|
|
10
|
+
export declare const connect: Connect;
|
|
11
|
+
export declare const subscribe: Subscribe;
|
|
12
|
+
export declare const switchNetwork: SwitchNetwork;
|
|
13
|
+
export declare const canSwitchNetworkTo: CanSwitchNetwork;
|
|
14
|
+
export declare const getSigners: (provider: Provider) => Promise<SignerFactory>;
|
|
15
|
+
export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
|
|
16
|
+
declare const buildLegacyProvider: () => LegacyProviderInterface;
|
|
17
|
+
export { buildLegacyProvider };
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/legacy/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAKL,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,KAAK,QAAQ,EACb,WAAW,IAAI,oBAAoB,EACpC,MAAM,aAAa,CAAC;AAIrB,eAAO,MAAM,MAAM;;CAElB,CAAC;AAEF,eAAO,MAAM,WAAW,6BAAuB,CAAC;AAGhD,eAAO,MAAM,OAAO,EAAE,OAMrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAA0B,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,aAAmC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,aAAa,CAC9D,CAAC;AAET,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAsCjE,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,MAAM,uBAS/B,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/mod.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,QAAQ,kEAIF,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/mod.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var w=Object.defineProperty;var o=(e,t)=>w(e,"name",{value:t,configurable:!0});var C=(e,t)=>()=>(e&&(t=e(e=0)),t);var j=(e,t)=>{for(var r in t)w(e,r,{get:t[r],enumerable:!0})};var f={};j(f,{CustomSolanaSigner:()=>p});import{DefaultSolanaSigner as O}from"@rango-dev/signer-solana";import V from"bs58";var p,h=C(()=>{"use strict";p=class extends O{static{o(this,"CustomSolanaSigner")}async signMessage(t){let r=(await this.provider.signMessage(t))?.signature;return V.encode(r)}}});import{defineVersions as Se}from"@rango-dev/wallets-core/utils";import"@rango-dev/wallets-core/legacy";import{canSwitchNetworkToEvm as R,getEvmAccounts as F,subscribeToEvm as _,switchNetworkForEvm as H,WalletTypes as U}from"@rango-dev/wallets-shared";import{evmBlockchains as y,solanaBlockchain as T}from"rango-types";import{LegacyNetworks as b}from"@rango-dev/wallets-core/legacy";import{dynamicImportWithRefinedError as v,getNetworkInstance as S}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as D,TransactionType as E}from"rango-types";async function i(e){let t=S(e,b.ETHEREUM),r=S(e,b.SOLANA),n=new D,{DefaultEvmSigner:M}=await v(async()=>await import("@rango-dev/signer-evm")),{CustomSolanaSigner:B}=await v(async()=>await Promise.resolve().then(()=>(h(),f)));return n.registerSigner(E.EVM,new M(t)),n.registerSigner(E.SOLANA,new B(r)),n}o(i,"getSigners");import{LegacyNetworks as c}from"@rango-dev/wallets-core/legacy";function a(){let{trustwallet:e}=window;if(!e||!(e?.isTrust||e?.isTrustWallet))return null;let t=new Map;t.set(c.ETHEREUM,e);let{solana:r}=e;return r&&r.isTrustWallet&&t.set(c.SOLANA,r),t}o(a,"trustWallet");function A(){let e=a();if(!e)throw new Error("Trust Wallet is not injected. Please check your wallet.");return e}o(A,"getInstanceOrThrow");function l(){let t=a()?.get(c.ETHEREUM);if(!t)throw new Error("TrustWallet not injected or EVM not enabled. Please check your wallet.");return t}o(l,"evmTrustWallet");function d(){let t=a()?.get(c.SOLANA);if(!t)throw new Error("TrustWallet not injected or Solana not enabled. Please check your wallet.");return t}o(d,"solanaTrustWallet");function m(e,t){if(typeof t=="string"&&t==="cancelled"){let r=new Error("User rejected the request");return r.code=4001,r}return t}o(m,"standardizeTrustWalletInAppBrowserError");var z=U.TRUST_WALLET,q={type:z},G=a,J=o(async({instance:e})=>{let{accounts:t,chainId:r}=await F(e);return{accounts:t,chainId:r}},"connect"),K=_,Q=H,X=R,Y=i,Z=o(e=>{let t=y(e),r=T(e);return{name:"Trust Wallet",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",BRAVE:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",DEFAULT:"https://trustwallet.com/browser-extension"},color:"#ffffff",supportedChains:[...t,...r],needsNamespace:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:n=>y(n)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:n=>T(n)}]}}},"getWalletInfo"),P=o(()=>({config:q,getInstance:G,connect:J,subscribe:K,switchNetwork:Q,canSwitchNetworkTo:X,getSigners:Y,getWalletInfo:Z}),"buildLegacyProvider");import{ProviderBuilder as ve}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{evmBlockchains as $,solanaBlockchain as ee}from"rango-types";var s="trust-wallet",k={name:"Trust Wallet",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",brave:"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph",homepage:"https://trustwallet.com/browser-extension"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>$(e)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>ee(e)}]}},{name:"signers",value:{getSigners:async()=>i(A())}}]};import{NamespaceBuilder as te}from"@rango-dev/wallets-core";import{builders as oe,standardizeAndThrowError as re}from"@rango-dev/wallets-core/namespaces/common";import{actions as u,builders as g,hooks as ne}from"@rango-dev/wallets-core/namespaces/evm";var[ae,x]=ne.changeAccountSubscriber(l),se=g.connect().action(u.connect(l)).before(ae).or(x).or(m).or(re).build(),ie=oe.disconnect().after(x).build(),ce=g.canSwitchNetwork().action(u.canSwitchNetwork()).build(),le=g.getChainId().action(u.getChainId(l)).build(),W=new te("EVM",s).action(se).action(ie).action(ce).action(le).build();import{NamespaceBuilder as me}from"@rango-dev/wallets-core";import{builders as pe,standardizeAndThrowError as de}from"@rango-dev/wallets-core/namespaces/common";import{actions as ue,builders as ge,hooks as we}from"@rango-dev/wallets-core/namespaces/solana";var[fe,I]=we.changeAccountSubscriber(d),he=ge.connect().action(ue.connect(d)).before(fe).or(I).or(m).or(de).build(),be=pe.disconnect().after(I).build(),L=new me("Solana",s).action(he).action(be).build();var N=o(()=>new ve(s).init(function(e){let[,t]=e.state();a()&&(t("installed",!0),console.debug("[trustwallet] instance detected.",e))}).config("metadata",k).add("evm",W).add("solana",L).build(),"buildProvider");var ut=o(()=>Se().version("0.0.0",P()).version("1.0.0",N()).build(),"versions");export{ut as versions};
|
|
2
|
+
//# sourceMappingURL=mod.js.map
|
package/dist/mod.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/signers/solanaSigner.ts", "../src/mod.ts", "../src/legacy/index.ts", "../src/signer.ts", "../src/utils.ts", "../src/provider.ts", "../src/constants.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts"],
|
|
4
|
+
"sourcesContent": ["import { DefaultSolanaSigner } from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\nexport class CustomSolanaSigner extends DefaultSolanaSigner {\n async signMessage(msg: string): Promise<string> {\n const signature = (await this.provider.signMessage(msg))?.signature;\n return base58.encode(signature);\n }\n}\n", "import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type {\n CanSwitchNetwork,\n Connect,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';\nimport {\n canSwitchNetworkToEvm,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, solanaBlockchain } from 'rango-types';\n\nimport signer from '../signer.js';\nimport {\n type Provider,\n trustWallet as trustwallet_instance,\n} from '../utils.js';\n\nconst WALLET = WalletTypes.TRUST_WALLET;\n\nexport const config = {\n type: WALLET,\n};\n\nexport const getInstance = trustwallet_instance;\n\n// doc: https://developer.trustwallet.com/trust-wallet-browser-extension/extension-guide\nexport const connect: Connect = async ({ instance }) => {\n const { accounts, chainId } = await getEvmAccounts(instance);\n return {\n accounts,\n chainId,\n };\n};\n\nexport const subscribe: Subscribe = subscribeToEvm;\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n\n return {\n name: 'Trust Wallet',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n DEFAULT: 'https://trustwallet.com/browser-extension',\n },\n color: '#ffffff',\n supportedChains: [...evms, ...solana],\n needsNamespace: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n };\n};\n\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n});\n\nexport { buildLegacyProvider };\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\n\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n const { CustomSolanaSigner } = await dynamicImportWithRefinedError(\n async () => await import('./signers/solanaSigner.js')\n );\n\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n\n return signers;\n}\n", "import type { Context } from '@rango-dev/wallets-core';\nimport type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Provider = Record<string, any>;\nexport function trustWallet(): Provider | null {\n const { trustwallet } = window;\n\n if (!trustwallet || !(trustwallet?.isTrust || trustwallet?.isTrustWallet)) {\n return null;\n }\n\n const instances = new Map();\n\n instances.set(LegacyNetworks.ETHEREUM, trustwallet);\n const { solana } = trustwallet;\n if (solana && solana.isTrustWallet) {\n instances.set(LegacyNetworks.SOLANA, solana);\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = trustWallet();\n\n if (!instances) {\n throw new Error('Trust Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function evmTrustWallet(): EvmProviderApi {\n const instances = trustWallet();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'TrustWallet not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaTrustWallet(): SolanaProviderApi {\n const instance = trustWallet();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'TrustWallet not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\n\n// Considering that the errors thrown in Trust Wallet in-app browser do not follow EIP-1193, we detect such errors and standardize them.\nexport function standardizeTrustWalletInAppBrowserError(\n _context: Context,\n error: unknown\n) {\n if (typeof error === 'string' && error === 'cancelled') {\n const error = new Error('User rejected the request') as Error & {\n code: number;\n };\n error.code = 4001;\n return error;\n }\n return error;\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { trustWallet as trustwalletInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (trustwalletInstance()) {\n setState('installed', true);\n console.debug('[trustwallet] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('evm', evm)\n .add('solana', solana)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport {\n type BlockchainMeta,\n evmBlockchains,\n solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'trust-wallet';\n\nexport const metadata: ProviderMetadata = {\n name: 'Trust Wallet',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n brave:\n 'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',\n homepage: 'https://trustwallet.com/browser-extension',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n hooks,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport {\n evmTrustWallet,\n standardizeTrustWalletInAppBrowserError,\n} from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n hooks.changeAccountSubscriber(evmTrustWallet);\n\nconst connect = builders\n .connect()\n .action(actions.connect(evmTrustWallet))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeTrustWalletInAppBrowserError)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmTrustWallet))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n hooks,\n} from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { WALLET_ID } from '../constants.js';\nimport {\n solanaTrustWallet,\n standardizeTrustWalletInAppBrowserError,\n} from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n hooks.changeAccountSubscriber(solanaTrustWallet);\n\nconst connect = builders\n .connect()\n .action(actions.connect(solanaTrustWallet))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeTrustWalletInAppBrowserError)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { solana };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["solanaSigner_exports", "__export", "CustomSolanaSigner", "DefaultSolanaSigner", "base58", "init_solanaSigner", "__esmMin", "__name", "msg", "signature", "defineVersions", "canSwitchNetworkToEvm", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "solanaBlockchain", "Networks", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "CustomSolanaSigner", "TxType", "__name", "LegacyNetworks", "trustWallet", "trustwallet", "instances", "LegacyNetworks", "solana", "__name", "getInstanceOrThrow", "evmTrustWallet", "evmInstance", "solanaTrustWallet", "solanaInstance", "standardizeTrustWalletInAppBrowserError", "_context", "error", "WALLET", "WalletTypes", "config", "getInstance", "trustWallet", "connect", "__name", "instance", "accounts", "chainId", "getEvmAccounts", "subscribe", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain", "allBlockchains", "buildLegacyProvider", "ProviderBuilder", "evmBlockchains", "solanaBlockchain", "WALLET_ID", "metadata", "allBlockchains", "evmBlockchains", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "hooks", "changeAccountSubscriber", "changeAccountCleanup", "hooks", "evmTrustWallet", "connect", "builders", "actions", "standardizeTrustWalletInAppBrowserError", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "hooks", "changeAccountSubscriber", "changeAccountCleanup", "hooks", "solanaTrustWallet", "connect", "builders", "actions", "standardizeTrustWalletInAppBrowserError", "standardizeAndThrowError", "disconnect", "commonBuilders", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "trustWallet", "metadata", "evm", "solana", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../src/namespaces/evm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AA8CzE,QAAA,MAAM,GAAG,gEAKC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/namespaces/solana.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAoC/E,QAAA,MAAM,MAAM,mEAGF,CAAC;AAEX,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/signers/solanaSigner.ts":{"bytes":322,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":1063,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"src/signers/solanaSigner.ts","kind":"dynamic-import","original":"./signers/solanaSigner.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":2186,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/index.ts":{"bytes":2725,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1453,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":1324,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1097,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":687,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":18785},"dist/mod.js":{"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/signers/solanaSigner.ts":{"bytesInOutput":304},"src/mod.ts":{"bytesInOutput":144},"src/legacy/index.ts":{"bytesInOutput":1205},"src/signer.ts":{"bytesInOutput":556},"src/utils.ts":{"bytesInOutput":925},"src/provider.ts":{"bytesInOutput":270},"src/constants.ts":{"bytesInOutput":756},"src/namespaces/evm.ts":{"bytesInOutput":583},"src/namespaces/solana.ts":{"bytesInOutput":460}},"bytes":5435}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,aAAa,kDAaP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/signer.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAgBxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solanaSigner.d.ts","sourceRoot":"","sources":["../../src/signers/solanaSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,qBAAa,kBAAmB,SAAQ,mBAAmB;IACnD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIhD"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Context } from '@rango-dev/wallets-core';
|
|
2
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
3
|
+
import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
|
|
4
|
+
export type Provider = Record<string, any>;
|
|
5
|
+
export declare function trustWallet(): Provider | null;
|
|
6
|
+
export declare function getInstanceOrThrow(): Provider;
|
|
7
|
+
export declare function evmTrustWallet(): EvmProviderApi;
|
|
8
|
+
export declare function solanaTrustWallet(): SolanaProviderApi;
|
|
9
|
+
export declare function standardizeTrustWalletInAppBrowserError(_context: Context, error: unknown): unknown;
|
|
10
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAIlG,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3C,wBAAgB,WAAW,IAAI,QAAQ,GAAG,IAAI,CAgB7C;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AAED,wBAAgB,cAAc,IAAI,cAAc,CAY/C;AAED,wBAAgB,iBAAiB,IAAI,iBAAiB,CAWrD;AAGD,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,OAAO,WAUf"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rango-dev/provider-trustwallet",
|
|
3
|
+
"version": "0.0.0-experimental-936229e8-20251208",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"source": "./src/mod.ts",
|
|
7
|
+
"main": "./dist/mod.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/mod.js"
|
|
10
|
+
},
|
|
11
|
+
"typings": "dist/mod.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"src"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "node ../../scripts/build/command.mjs --path wallets/provider-trustwallet --inputs src/mod.ts",
|
|
18
|
+
"ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
|
|
19
|
+
"clean": "rimraf dist",
|
|
20
|
+
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
|
|
21
|
+
"lint": "eslint \"**/*.{ts,tsx}\""
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@rango-dev/signer-evm": "^0.40.0",
|
|
25
|
+
"@rango-dev/wallets-core": "^0.0.0-experimental-936229e8-20251208",
|
|
26
|
+
"@rango-dev/wallets-shared": "^0.0.0-experimental-936229e8-20251208",
|
|
27
|
+
"bs58": "^5.0.0",
|
|
28
|
+
"rango-types": "^0.1.89"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
}
|
|
33
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Trust Wallet
|
|
2
|
+
Trust Wallet integration for hub.
|
|
3
|
+
[Homepage](https://trustwallet.com/) | [Docs](https://developer.trustwallet.com/developer/develop-for-trust/browser-extension)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Implementation notes/limitations
|
|
7
|
+
|
|
8
|
+
### Group
|
|
9
|
+
|
|
10
|
+
#### ⚠️ EVM & Solana
|
|
11
|
+
Trust Wallet supports both EVM and Solana, but **simultaneous connections across namespaces are unreliable**.
|
|
12
|
+
|
|
13
|
+
### Feature
|
|
14
|
+
|
|
15
|
+
#### ⚠️ Switch Account
|
|
16
|
+
When connected to a **single namespace**:
|
|
17
|
+
- Switching **from a private key wallet to a full wallet** triggers a **switch account event**.
|
|
18
|
+
- Switching **from a full wallet to a private key wallet** emits **no event**.
|
|
19
|
+
|
|
20
|
+
When connected to **both namespaces simultaneously**:
|
|
21
|
+
- Only the **first connected namespace** (e.g., EVM or Solana) properly receives events.
|
|
22
|
+
- The **second namespace** does **not** receive `accountsChanged` events.
|
|
23
|
+
|
|
24
|
+
#### ⚠️ Auto Connect
|
|
25
|
+
- **Auto connect is not supported**:
|
|
26
|
+
- On **Solana**, there is no silent reconnection mechanism.
|
|
27
|
+
- On **EVM**, the wallet always opens a popup when the dApp is not already connected.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
More wallet information can be found in [readme.md](../readme.md).
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type ProviderMetadata } from '@rango-dev/wallets-core';
|
|
2
|
+
import {
|
|
3
|
+
type BlockchainMeta,
|
|
4
|
+
evmBlockchains,
|
|
5
|
+
solanaBlockchain,
|
|
6
|
+
} from 'rango-types';
|
|
7
|
+
|
|
8
|
+
import getSigners from './signer.js';
|
|
9
|
+
import { getInstanceOrThrow } from './utils.js';
|
|
10
|
+
|
|
11
|
+
export const WALLET_ID = 'trust-wallet';
|
|
12
|
+
|
|
13
|
+
export const metadata: ProviderMetadata = {
|
|
14
|
+
name: 'Trust Wallet',
|
|
15
|
+
icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',
|
|
16
|
+
extensions: {
|
|
17
|
+
chrome:
|
|
18
|
+
'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',
|
|
19
|
+
brave:
|
|
20
|
+
'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',
|
|
21
|
+
homepage: 'https://trustwallet.com/browser-extension',
|
|
22
|
+
},
|
|
23
|
+
properties: [
|
|
24
|
+
{
|
|
25
|
+
name: 'namespaces',
|
|
26
|
+
value: {
|
|
27
|
+
selection: 'multiple',
|
|
28
|
+
data: [
|
|
29
|
+
{
|
|
30
|
+
label: 'EVM',
|
|
31
|
+
value: 'EVM',
|
|
32
|
+
id: 'ETH',
|
|
33
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
34
|
+
evmBlockchains(allBlockchains),
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
label: 'Solana',
|
|
38
|
+
value: 'Solana',
|
|
39
|
+
id: 'SOLANA',
|
|
40
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
41
|
+
solanaBlockchain(allBlockchains),
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'signers',
|
|
48
|
+
value: { getSigners: async () => getSigners(getInstanceOrThrow()) },
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
CanSwitchNetwork,
|
|
3
|
+
Connect,
|
|
4
|
+
Subscribe,
|
|
5
|
+
SwitchNetwork,
|
|
6
|
+
WalletInfo,
|
|
7
|
+
} from '@rango-dev/wallets-shared';
|
|
8
|
+
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
9
|
+
|
|
10
|
+
import { type LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
|
|
11
|
+
import {
|
|
12
|
+
canSwitchNetworkToEvm,
|
|
13
|
+
getEvmAccounts,
|
|
14
|
+
subscribeToEvm,
|
|
15
|
+
switchNetworkForEvm,
|
|
16
|
+
WalletTypes,
|
|
17
|
+
} from '@rango-dev/wallets-shared';
|
|
18
|
+
import { evmBlockchains, solanaBlockchain } from 'rango-types';
|
|
19
|
+
|
|
20
|
+
import signer from '../signer.js';
|
|
21
|
+
import {
|
|
22
|
+
type Provider,
|
|
23
|
+
trustWallet as trustwallet_instance,
|
|
24
|
+
} from '../utils.js';
|
|
25
|
+
|
|
26
|
+
const WALLET = WalletTypes.TRUST_WALLET;
|
|
27
|
+
|
|
28
|
+
export const config = {
|
|
29
|
+
type: WALLET,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const getInstance = trustwallet_instance;
|
|
33
|
+
|
|
34
|
+
// doc: https://developer.trustwallet.com/trust-wallet-browser-extension/extension-guide
|
|
35
|
+
export const connect: Connect = async ({ instance }) => {
|
|
36
|
+
const { accounts, chainId } = await getEvmAccounts(instance);
|
|
37
|
+
return {
|
|
38
|
+
accounts,
|
|
39
|
+
chainId,
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const subscribe: Subscribe = subscribeToEvm;
|
|
44
|
+
|
|
45
|
+
export const switchNetwork: SwitchNetwork = switchNetworkForEvm;
|
|
46
|
+
|
|
47
|
+
export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
|
|
48
|
+
|
|
49
|
+
export const getSigners: (provider: Provider) => Promise<SignerFactory> =
|
|
50
|
+
signer;
|
|
51
|
+
|
|
52
|
+
export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
53
|
+
allBlockChains
|
|
54
|
+
) => {
|
|
55
|
+
const evms = evmBlockchains(allBlockChains);
|
|
56
|
+
const solana = solanaBlockchain(allBlockChains);
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
name: 'Trust Wallet',
|
|
60
|
+
img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/trustwallet/icon.svg',
|
|
61
|
+
installLink: {
|
|
62
|
+
CHROME:
|
|
63
|
+
'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',
|
|
64
|
+
BRAVE:
|
|
65
|
+
'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',
|
|
66
|
+
DEFAULT: 'https://trustwallet.com/browser-extension',
|
|
67
|
+
},
|
|
68
|
+
color: '#ffffff',
|
|
69
|
+
supportedChains: [...evms, ...solana],
|
|
70
|
+
needsNamespace: {
|
|
71
|
+
selection: 'multiple',
|
|
72
|
+
data: [
|
|
73
|
+
{
|
|
74
|
+
label: 'EVM',
|
|
75
|
+
value: 'EVM',
|
|
76
|
+
id: 'ETH',
|
|
77
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
78
|
+
evmBlockchains(allBlockchains),
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
label: 'Solana',
|
|
82
|
+
value: 'Solana',
|
|
83
|
+
id: 'SOLANA',
|
|
84
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
85
|
+
solanaBlockchain(allBlockchains),
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const buildLegacyProvider: () => LegacyProviderInterface = () => ({
|
|
93
|
+
config,
|
|
94
|
+
getInstance,
|
|
95
|
+
connect,
|
|
96
|
+
subscribe,
|
|
97
|
+
switchNetwork,
|
|
98
|
+
canSwitchNetworkTo,
|
|
99
|
+
getSigners,
|
|
100
|
+
getWalletInfo,
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
export { buildLegacyProvider };
|
package/src/mod.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineVersions } from '@rango-dev/wallets-core/utils';
|
|
2
|
+
|
|
3
|
+
import { buildLegacyProvider } from './legacy/index.js';
|
|
4
|
+
import { buildProvider } from './provider.js';
|
|
5
|
+
|
|
6
|
+
const versions = () =>
|
|
7
|
+
defineVersions()
|
|
8
|
+
.version('0.0.0', buildLegacyProvider())
|
|
9
|
+
.version('1.0.0', buildProvider())
|
|
10
|
+
.build();
|
|
11
|
+
|
|
12
|
+
export { versions };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
|
|
2
|
+
|
|
3
|
+
import { NamespaceBuilder } from '@rango-dev/wallets-core';
|
|
4
|
+
import {
|
|
5
|
+
builders as commonBuilders,
|
|
6
|
+
standardizeAndThrowError,
|
|
7
|
+
} from '@rango-dev/wallets-core/namespaces/common';
|
|
8
|
+
import {
|
|
9
|
+
actions,
|
|
10
|
+
builders,
|
|
11
|
+
hooks,
|
|
12
|
+
} from '@rango-dev/wallets-core/namespaces/evm';
|
|
13
|
+
|
|
14
|
+
import { WALLET_ID } from '../constants.js';
|
|
15
|
+
import {
|
|
16
|
+
evmTrustWallet,
|
|
17
|
+
standardizeTrustWalletInAppBrowserError,
|
|
18
|
+
} from '../utils.js';
|
|
19
|
+
|
|
20
|
+
const [changeAccountSubscriber, changeAccountCleanup] =
|
|
21
|
+
hooks.changeAccountSubscriber(evmTrustWallet);
|
|
22
|
+
|
|
23
|
+
const connect = builders
|
|
24
|
+
.connect()
|
|
25
|
+
.action(actions.connect(evmTrustWallet))
|
|
26
|
+
.before(changeAccountSubscriber)
|
|
27
|
+
.or(changeAccountCleanup)
|
|
28
|
+
.or(standardizeTrustWalletInAppBrowserError)
|
|
29
|
+
.or(standardizeAndThrowError)
|
|
30
|
+
.build();
|
|
31
|
+
|
|
32
|
+
const disconnect = commonBuilders
|
|
33
|
+
.disconnect<EvmActions>()
|
|
34
|
+
.after(changeAccountCleanup)
|
|
35
|
+
.build();
|
|
36
|
+
|
|
37
|
+
const canSwitchNetwork = builders
|
|
38
|
+
.canSwitchNetwork()
|
|
39
|
+
.action(actions.canSwitchNetwork())
|
|
40
|
+
.build();
|
|
41
|
+
|
|
42
|
+
const getChainId = builders
|
|
43
|
+
.getChainId()
|
|
44
|
+
.action(actions.getChainId(evmTrustWallet))
|
|
45
|
+
.build();
|
|
46
|
+
|
|
47
|
+
const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
|
|
48
|
+
.action(connect)
|
|
49
|
+
.action(disconnect)
|
|
50
|
+
.action(canSwitchNetwork)
|
|
51
|
+
.action(getChainId)
|
|
52
|
+
.build();
|
|
53
|
+
|
|
54
|
+
export { evm };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';
|
|
2
|
+
|
|
3
|
+
import { NamespaceBuilder } from '@rango-dev/wallets-core';
|
|
4
|
+
import {
|
|
5
|
+
builders as commonBuilders,
|
|
6
|
+
standardizeAndThrowError,
|
|
7
|
+
} from '@rango-dev/wallets-core/namespaces/common';
|
|
8
|
+
import {
|
|
9
|
+
actions,
|
|
10
|
+
builders,
|
|
11
|
+
hooks,
|
|
12
|
+
} from '@rango-dev/wallets-core/namespaces/solana';
|
|
13
|
+
|
|
14
|
+
import { WALLET_ID } from '../constants.js';
|
|
15
|
+
import {
|
|
16
|
+
solanaTrustWallet,
|
|
17
|
+
standardizeTrustWalletInAppBrowserError,
|
|
18
|
+
} from '../utils.js';
|
|
19
|
+
|
|
20
|
+
const [changeAccountSubscriber, changeAccountCleanup] =
|
|
21
|
+
hooks.changeAccountSubscriber(solanaTrustWallet);
|
|
22
|
+
|
|
23
|
+
const connect = builders
|
|
24
|
+
.connect()
|
|
25
|
+
.action(actions.connect(solanaTrustWallet))
|
|
26
|
+
.before(changeAccountSubscriber)
|
|
27
|
+
.or(changeAccountCleanup)
|
|
28
|
+
.or(standardizeTrustWalletInAppBrowserError)
|
|
29
|
+
.or(standardizeAndThrowError)
|
|
30
|
+
.build();
|
|
31
|
+
|
|
32
|
+
const disconnect = commonBuilders
|
|
33
|
+
.disconnect<SolanaActions>()
|
|
34
|
+
.after(changeAccountCleanup)
|
|
35
|
+
.build();
|
|
36
|
+
|
|
37
|
+
const solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)
|
|
38
|
+
.action(connect)
|
|
39
|
+
.action(disconnect)
|
|
40
|
+
.build();
|
|
41
|
+
|
|
42
|
+
export { solana };
|
package/src/provider.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ProviderBuilder } from '@rango-dev/wallets-core';
|
|
2
|
+
|
|
3
|
+
import { metadata, WALLET_ID } from './constants.js';
|
|
4
|
+
import { evm } from './namespaces/evm.js';
|
|
5
|
+
import { solana } from './namespaces/solana.js';
|
|
6
|
+
import { trustWallet as trustwalletInstance } from './utils.js';
|
|
7
|
+
|
|
8
|
+
const buildProvider = () =>
|
|
9
|
+
new ProviderBuilder(WALLET_ID)
|
|
10
|
+
.init(function (context) {
|
|
11
|
+
const [, setState] = context.state();
|
|
12
|
+
|
|
13
|
+
if (trustwalletInstance()) {
|
|
14
|
+
setState('installed', true);
|
|
15
|
+
console.debug('[trustwallet] instance detected.', context);
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
.config('metadata', metadata)
|
|
19
|
+
.add('evm', evm)
|
|
20
|
+
.add('solana', solana)
|
|
21
|
+
.build();
|
|
22
|
+
|
|
23
|
+
export { buildProvider };
|
package/src/signer.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Provider } from './utils.js';
|
|
2
|
+
import type { SignerFactory } from 'rango-types';
|
|
3
|
+
|
|
4
|
+
import { LegacyNetworks as Networks } from '@rango-dev/wallets-core/legacy';
|
|
5
|
+
import {
|
|
6
|
+
dynamicImportWithRefinedError,
|
|
7
|
+
getNetworkInstance,
|
|
8
|
+
} from '@rango-dev/wallets-shared';
|
|
9
|
+
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
|
|
10
|
+
|
|
11
|
+
export default async function getSigners(
|
|
12
|
+
provider: Provider
|
|
13
|
+
): Promise<SignerFactory> {
|
|
14
|
+
const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
|
|
15
|
+
const solProvider = getNetworkInstance(provider, Networks.SOLANA);
|
|
16
|
+
|
|
17
|
+
const signers = new DefaultSignerFactory();
|
|
18
|
+
const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
|
|
19
|
+
async () => await import('@rango-dev/signer-evm')
|
|
20
|
+
);
|
|
21
|
+
const { CustomSolanaSigner } = await dynamicImportWithRefinedError(
|
|
22
|
+
async () => await import('./signers/solanaSigner.js')
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
|
|
26
|
+
signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));
|
|
27
|
+
|
|
28
|
+
return signers;
|
|
29
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DefaultSolanaSigner } from '@rango-dev/signer-solana';
|
|
2
|
+
import base58 from 'bs58';
|
|
3
|
+
|
|
4
|
+
export class CustomSolanaSigner extends DefaultSolanaSigner {
|
|
5
|
+
async signMessage(msg: string): Promise<string> {
|
|
6
|
+
const signature = (await this.provider.signMessage(msg))?.signature;
|
|
7
|
+
return base58.encode(signature);
|
|
8
|
+
}
|
|
9
|
+
}
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Context } from '@rango-dev/wallets-core';
|
|
2
|
+
import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
|
|
3
|
+
import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
|
|
4
|
+
|
|
5
|
+
import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
export type Provider = Record<string, any>;
|
|
8
|
+
export function trustWallet(): Provider | null {
|
|
9
|
+
const { trustwallet } = window;
|
|
10
|
+
|
|
11
|
+
if (!trustwallet || !(trustwallet?.isTrust || trustwallet?.isTrustWallet)) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const instances = new Map();
|
|
16
|
+
|
|
17
|
+
instances.set(LegacyNetworks.ETHEREUM, trustwallet);
|
|
18
|
+
const { solana } = trustwallet;
|
|
19
|
+
if (solana && solana.isTrustWallet) {
|
|
20
|
+
instances.set(LegacyNetworks.SOLANA, solana);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return instances;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function getInstanceOrThrow(): Provider {
|
|
27
|
+
const instances = trustWallet();
|
|
28
|
+
|
|
29
|
+
if (!instances) {
|
|
30
|
+
throw new Error('Trust Wallet is not injected. Please check your wallet.');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return instances;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function evmTrustWallet(): EvmProviderApi {
|
|
37
|
+
const instances = trustWallet();
|
|
38
|
+
|
|
39
|
+
const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);
|
|
40
|
+
|
|
41
|
+
if (!evmInstance) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
'TrustWallet not injected or EVM not enabled. Please check your wallet.'
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return evmInstance as EvmProviderApi;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function solanaTrustWallet(): SolanaProviderApi {
|
|
51
|
+
const instance = trustWallet();
|
|
52
|
+
const solanaInstance = instance?.get(LegacyNetworks.SOLANA);
|
|
53
|
+
|
|
54
|
+
if (!solanaInstance) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
'TrustWallet not injected or Solana not enabled. Please check your wallet.'
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return solanaInstance as SolanaProviderApi;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Considering that the errors thrown in Trust Wallet in-app browser do not follow EIP-1193, we detect such errors and standardize them.
|
|
64
|
+
export function standardizeTrustWalletInAppBrowserError(
|
|
65
|
+
_context: Context,
|
|
66
|
+
error: unknown
|
|
67
|
+
) {
|
|
68
|
+
if (typeof error === 'string' && error === 'cancelled') {
|
|
69
|
+
const error = new Error('User rejected the request') as Error & {
|
|
70
|
+
code: number;
|
|
71
|
+
};
|
|
72
|
+
error.code = 4001;
|
|
73
|
+
return error;
|
|
74
|
+
}
|
|
75
|
+
return error;
|
|
76
|
+
}
|