@hot-labs/kit 1.0.41 → 1.0.43

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 (110) hide show
  1. package/README.md +14 -9
  2. package/build/HotConnector.d.ts +26 -15
  3. package/build/HotConnector.js +36 -14
  4. package/build/HotConnector.js.map +1 -1
  5. package/build/OmniConnector.d.ts +1 -1
  6. package/build/OmniWallet.d.ts +1 -1
  7. package/build/core/Intents.d.ts +3 -1
  8. package/build/core/Intents.js +4 -1
  9. package/build/core/Intents.js.map +1 -1
  10. package/build/core/bridge.d.ts +2 -2
  11. package/build/core/bridge.js +32 -31
  12. package/build/core/bridge.js.map +1 -1
  13. package/build/core/{config.d.ts → chains.d.ts} +21 -5
  14. package/build/core/chains.js +372 -0
  15. package/build/core/chains.js.map +1 -0
  16. package/build/core/index.d.ts +7 -6
  17. package/build/core/index.js +7 -6
  18. package/build/core/index.js.map +1 -1
  19. package/build/core/recipient.d.ts +1 -1
  20. package/build/core/recipient.js +1 -1
  21. package/build/core/token.d.ts +1 -1
  22. package/build/core/token.js +7 -45
  23. package/build/core/token.js.map +1 -1
  24. package/build/core/tokens.d.ts +1 -1
  25. package/build/core/tokens.js +1 -1
  26. package/build/core/types.d.ts +1 -0
  27. package/build/cosmos/connector.d.ts +4 -23
  28. package/build/cosmos/connector.js +30 -22
  29. package/build/cosmos/connector.js.map +1 -1
  30. package/build/cosmos/index.d.ts +2 -3
  31. package/build/cosmos/index.js +1 -1
  32. package/build/cosmos/index.js.map +1 -1
  33. package/build/cosmos/wallet.d.ts +1 -1
  34. package/build/cosmos/wallet.js +2 -2
  35. package/build/cosmos/wallet.js.map +1 -1
  36. package/build/evm/connector.d.ts +1 -1
  37. package/build/evm/connector.js +1 -1
  38. package/build/evm/wallet.d.ts +1 -1
  39. package/build/evm/wallet.js +1 -1
  40. package/build/exchange.d.ts +2 -2
  41. package/build/exchange.js +18 -21
  42. package/build/exchange.js.map +1 -1
  43. package/build/hot-wallet/google.d.ts +1 -1
  44. package/build/hot-wallet/google.js +1 -1
  45. package/build/near/connector.d.ts +1 -1
  46. package/build/near/connector.js +1 -1
  47. package/build/near/wallet.d.ts +1 -1
  48. package/build/near/wallet.js +1 -1
  49. package/build/solana/connector.d.ts +1 -1
  50. package/build/solana/connector.js +1 -1
  51. package/build/solana/wallet.d.ts +1 -1
  52. package/build/solana/wallet.js +1 -1
  53. package/build/stellar/connector.d.ts +1 -1
  54. package/build/stellar/connector.js +1 -1
  55. package/build/stellar/wallet.d.ts +3 -2
  56. package/build/stellar/wallet.js +16 -13
  57. package/build/stellar/wallet.js.map +1 -1
  58. package/build/ton/connector.d.ts +1 -1
  59. package/build/ton/connector.js +1 -1
  60. package/build/ton/wallet.d.ts +1 -1
  61. package/build/ton/wallet.js +1 -1
  62. package/build/ui/payment/Bridge.js +1 -1
  63. package/build/ui/payment/Payment.js +1 -1
  64. package/build/ui/payment/SelectRecipient.d.ts +1 -1
  65. package/build/ui/payment/SelectRecipient.js +1 -1
  66. package/build/ui/payment/SelectSender.d.ts +1 -1
  67. package/build/ui/payment/SelectSender.js +1 -1
  68. package/build/ui/payment/SelectToken.js +1 -1
  69. package/build/ui/payment/TokenCard.js +2 -2
  70. package/build/ui/payment/TokenCard.js.map +1 -1
  71. package/build/ui/router.d.ts +1 -1
  72. package/package.json +1 -1
  73. package/skill.md +174 -72
  74. package/src/HotConnector.ts +67 -38
  75. package/src/OmniConnector.ts +1 -1
  76. package/src/OmniWallet.ts +1 -1
  77. package/src/core/Intents.ts +6 -3
  78. package/src/core/bridge.ts +33 -33
  79. package/src/core/chains.ts +391 -0
  80. package/src/core/index.ts +7 -6
  81. package/src/core/recipient.ts +1 -1
  82. package/src/core/token.ts +7 -26
  83. package/src/core/tokens.ts +1 -1
  84. package/src/core/types.ts +1 -0
  85. package/src/cosmos/connector.ts +30 -27
  86. package/src/cosmos/index.ts +2 -3
  87. package/src/cosmos/wallet.ts +2 -2
  88. package/src/evm/connector.ts +1 -1
  89. package/src/evm/wallet.ts +1 -1
  90. package/src/exchange.ts +22 -25
  91. package/src/hot-wallet/google.ts +1 -1
  92. package/src/near/connector.ts +1 -1
  93. package/src/near/wallet.ts +1 -1
  94. package/src/solana/connector.ts +1 -1
  95. package/src/solana/wallet.ts +1 -1
  96. package/src/stellar/connector.ts +1 -1
  97. package/src/stellar/wallet.ts +17 -13
  98. package/src/ton/connector.ts +1 -1
  99. package/src/ton/wallet.ts +1 -1
  100. package/src/ui/payment/Bridge.tsx +1 -1
  101. package/src/ui/payment/Payment.tsx +1 -1
  102. package/src/ui/payment/Profile.tsx +1 -1
  103. package/src/ui/payment/SelectRecipient.tsx +1 -1
  104. package/src/ui/payment/SelectSender.tsx +1 -1
  105. package/src/ui/payment/SelectToken.tsx +1 -1
  106. package/src/ui/payment/TokenCard.tsx +3 -2
  107. package/src/ui/router.tsx +1 -1
  108. package/build/core/config.js +0 -130
  109. package/build/core/config.js.map +0 -1
  110. package/src/core/config.ts +0 -134
@@ -0,0 +1,391 @@
1
+ export enum OmniToken {
2
+ USDT = "nep141:usdt.tether-token.near",
3
+ USDC = "nep141:17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1",
4
+ GONKA = "nep245:v2_1.omni.hot.tg:4444119_wyixUKCL",
5
+ NEAR = "nep141:wrap.near",
6
+ ETH = "nep141:eth.bridge.near",
7
+ AURORA = "nep141:aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near",
8
+ SOL = "nep141:sol.omft.near",
9
+ BNB = "nep245:v2_1.omni.hot.tg:56_11111111111111111111",
10
+ ADI = "nep245:v2_1.omni.hot.tg:36900_11111111111111111111",
11
+ }
12
+
13
+ export enum WalletType {
14
+ NEAR = 1010,
15
+ EVM = 1,
16
+ OMNI = -4,
17
+ SOLANA = 1001,
18
+ STELLAR = 1100,
19
+ TON = 1111,
20
+ COSMOS = 4444118,
21
+ Tron = 333,
22
+
23
+ Zcash = -5,
24
+ Btc = -6,
25
+ Xrp = -7,
26
+ Doge = -8,
27
+ Ada = -9,
28
+ Aptos = -10,
29
+ Sui = -11,
30
+ Cardano = -12,
31
+ Litecoin = -14,
32
+ unknown = -1000000,
33
+ }
34
+
35
+ export enum Network {
36
+ Omni_v1 = 0,
37
+ Hot = -4,
38
+
39
+ Zcash = -5,
40
+ Btc = -6,
41
+ Xrp = -7,
42
+ Doge = -8,
43
+ Ada = -9,
44
+ Aptos = -10,
45
+ Sui = -11,
46
+ Cardano = -12,
47
+ Litecoin = -14,
48
+
49
+ Juno = 4444118,
50
+ Gonka = 4444119,
51
+ OmniTon = 1117,
52
+ ADI = 36900,
53
+
54
+ Eth = 1,
55
+ Tron = 333,
56
+ Solana = 1001,
57
+ Stellar = 1100,
58
+ Near = 1010,
59
+ Polygon = 137,
60
+ Arbitrum = 42_161,
61
+ Aurora = 1_313_161_554,
62
+ Avalanche = 43_114,
63
+ Linea = 59_144,
64
+ Xlayer = 196,
65
+ Base = 8453,
66
+ Ton = 1111,
67
+ Bnb = 56,
68
+ OpBnb = 204,
69
+ BnbTestnet = 97,
70
+ Optimism = 10,
71
+ Scroll = 534_352,
72
+ EbiChain = 98_881,
73
+ Sei = 1329,
74
+ Blast = 81_457,
75
+ Taiko = 167_000,
76
+ Mantle = 5000,
77
+ Manta = 169,
78
+ Kava = 2222,
79
+ ZkSync = 324,
80
+ Monad = 10_143,
81
+ Metis = 1088,
82
+ Gnosis = 100,
83
+ Fantom = 250,
84
+ Cronos = 25,
85
+ Chiliz = 88_888,
86
+ Moonbeam = 1284,
87
+ Ronin = 2020,
88
+ Lisk = 1135,
89
+ Sonic = 146,
90
+ Zora = 7_777_777,
91
+ Mode = 34_443,
92
+ Berachain = 80_094,
93
+ Unichain = 130,
94
+ Soneium = 1868,
95
+ Ink = 57_073,
96
+ Apechain = 2741,
97
+ }
98
+
99
+ export interface ChainConfig {
100
+ id: number;
101
+ key: string;
102
+ name: string;
103
+ currency: { id: string; symbol: string; decimals: number; logo: string };
104
+ bridgeContract?: string;
105
+ gasLimit?: bigint;
106
+ logo?: string;
107
+ prefix?: string;
108
+ rpc: string;
109
+ type: WalletType;
110
+ }
111
+
112
+ const rpc = (chain: number) => `https://api0.herewallet.app/api/v1/evm/rpc/${chain}`;
113
+ const logo = (chain: number) => `https://storage.herewallet.app/ft/${chain}:native.png`;
114
+
115
+ const chainsRepository: Record<number, ChainConfig> = {
116
+ [Network.Juno]: {
117
+ id: Network.Juno,
118
+ key: "juno-1",
119
+ name: "Juno",
120
+ bridgeContract: "juno1va9q7gma6l62aqq988gghv4r7u4hnlgm85ssmsdf9ypw77qfwa0qaz7ea4",
121
+ logo: "https://storage.herewallet.app/ft/4444118:ujuno.png",
122
+ currency: { id: "ujuno", symbol: "JUNO", decimals: 6, logo: logo(Network.Juno) },
123
+ rpc: rpc(Network.Juno),
124
+ prefix: "juno",
125
+ type: WalletType.COSMOS,
126
+ gasLimit: 200000n,
127
+ },
128
+ [Network.Gonka]: {
129
+ id: Network.Gonka,
130
+ key: "gonka-mainnet",
131
+ name: "Gonka",
132
+ bridgeContract: "gonka15wng2302rhq5w8ddy3l3jslrhfcpufzfs6wc3zc6cxt8cpwrfp4qqgenkc",
133
+ logo: "https://storage.herewallet.app/ft/4444119:ngonka.png",
134
+ currency: { id: "ngonka", symbol: "GNK", decimals: 6, logo: logo(Network.Gonka) },
135
+ rpc: rpc(Network.Gonka),
136
+ prefix: "gonka",
137
+ type: WalletType.COSMOS,
138
+ gasLimit: 200000n,
139
+ },
140
+ [Network.Monad]: {
141
+ id: Network.Monad,
142
+ key: "monad",
143
+ name: "Monad",
144
+ logo: "https://storage.herewallet.app/upload/8f6bdf0d04494dc7157704cf3a7e623aeba7188120d93535d3b9330fa82fc200.JPG",
145
+ currency: { id: "native", symbol: "MONAD", decimals: 6, logo: logo(Network.Monad) },
146
+ rpc: rpc(Network.Monad),
147
+ type: WalletType.EVM,
148
+ },
149
+ [Network.Near]: {
150
+ id: Network.Near,
151
+ key: "near",
152
+ name: "NEAR",
153
+ logo: "https://storage.herewallet.app/ft/1010:native.png",
154
+ currency: { id: "native", symbol: "NEAR", decimals: 6, logo: logo(Network.Near) },
155
+ rpc: rpc(Network.Near),
156
+ type: WalletType.NEAR,
157
+ },
158
+ [Network.Eth]: {
159
+ id: Network.Eth,
160
+ key: "eth",
161
+ name: "Ethereum",
162
+ logo: "https://storage.herewallet.app/upload/80978f3676fc2dfbd3d874a9421004fb7dea7616481bda53bf68f44e21c3ce0c.png",
163
+ currency: { id: "native", symbol: "ETH", decimals: 18, logo: logo(Network.Eth) },
164
+ rpc: rpc(Network.Eth),
165
+ type: WalletType.EVM,
166
+ },
167
+ [Network.Solana]: {
168
+ id: Network.Solana,
169
+ key: "sol",
170
+ name: "Solana",
171
+ logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png",
172
+ currency: { id: "native", symbol: "SOL", decimals: 9, logo: logo(Network.Solana) },
173
+ rpc: rpc(Network.Solana),
174
+ type: WalletType.SOLANA,
175
+ },
176
+ [Network.Arbitrum]: {
177
+ id: Network.Arbitrum,
178
+ key: "arb",
179
+ name: "Arbitrum",
180
+ logo: "https://storage.herewallet.app/upload/1606b00068f729f48de00d2575940484f6a0dc83351702a9fb8b0139e41dc00b.jpeg",
181
+ currency: { id: "native", symbol: "ARB", decimals: 18, logo: logo(Network.Arbitrum) },
182
+ rpc: rpc(Network.Arbitrum),
183
+ type: WalletType.EVM,
184
+ },
185
+ [Network.Base]: {
186
+ id: Network.Base,
187
+ key: "base",
188
+ name: "Base",
189
+ logo: "https://storage.herewallet.app/upload/c6cf6513fba97c22192d0b96ffd2be74608559017a4c41ebf4457b65224a7070.jpg",
190
+ currency: { id: "native", symbol: "BASE", decimals: 18, logo: logo(Network.Base) },
191
+ rpc: rpc(Network.Base),
192
+ type: WalletType.EVM,
193
+ },
194
+ [Network.Bnb]: {
195
+ id: Network.Bnb,
196
+ key: "bsc",
197
+ name: "BNB Chain",
198
+ logo: "https://storage.herewallet.app/upload/b82ec85a318b8d8f1f12b25a0e21cd475208014f15952daf317b876812562530.png",
199
+ currency: { id: "native", symbol: "BNB", decimals: 18, logo: logo(Network.Bnb) },
200
+ rpc: rpc(Network.Bnb),
201
+ type: WalletType.EVM,
202
+ },
203
+ [Network.Polygon]: {
204
+ id: Network.Polygon,
205
+ key: "pol",
206
+ name: "Polygon",
207
+ logo: "https://storage.herewallet.app/upload/e51b9ec8d0ed17792cca05be487f5dbc1d0a1b9113cf7e3465310de48c0acc2f.jpg",
208
+ currency: { id: "native", symbol: "POL", decimals: 18, logo: logo(Network.Polygon) },
209
+ rpc: rpc(Network.Polygon),
210
+ type: WalletType.EVM,
211
+ },
212
+ [Network.Avalanche]: {
213
+ id: Network.Avalanche,
214
+ key: "avax",
215
+ name: "Avalanche",
216
+ logo: "https://storage.herewallet.app/upload/fa027e81ebb6957ebd8feada21b5374b15aa090e1747fae131a1e061d3d7e6da.jpg",
217
+ currency: { id: "native", symbol: "AVAX", decimals: 18, logo: logo(Network.Avalanche) },
218
+ rpc: rpc(Network.Avalanche),
219
+ type: WalletType.EVM,
220
+ },
221
+ [Network.Optimism]: {
222
+ id: Network.Optimism,
223
+ key: "op",
224
+ name: "Optimism",
225
+ logo: "https://storage.herewallet.app/upload/d183a3c76b584552888cb8b5a4dfb849572592d7c7f473fe43bcc5c2adae9a50.jpg",
226
+ currency: { id: "native", symbol: "OP", decimals: 18, logo: logo(Network.Optimism) },
227
+ rpc: rpc(Network.Optimism),
228
+ type: WalletType.EVM,
229
+ },
230
+ [Network.Gnosis]: {
231
+ id: Network.Gnosis,
232
+ key: "gnosis",
233
+ name: "Gnosis",
234
+ logo: "https://storage.herewallet.app/upload/fc4945be03eec20c68ae19920f012afef7204b2c04d39b5cff6ab3a6d99b5981.jpg",
235
+ currency: { id: "native", symbol: "GNO", decimals: 18, logo: logo(Network.Gnosis) },
236
+ rpc: rpc(Network.Gnosis),
237
+ type: WalletType.EVM,
238
+ },
239
+ [Network.Ton]: {
240
+ id: Network.Ton,
241
+ key: "ton",
242
+ name: "TON",
243
+ logo: "https://tgapp.herewallet.app/images/chains/ton.svg",
244
+ currency: { id: "native", symbol: "TON", decimals: 9, logo: logo(Network.Ton) },
245
+ rpc: rpc(Network.Ton),
246
+ type: WalletType.TON,
247
+ },
248
+ [Network.Stellar]: {
249
+ id: Network.Stellar,
250
+ key: "stellar",
251
+ name: "Stellar",
252
+ logo: "https://tgapp.herewallet.app/images/chains/xlm.svg",
253
+ currency: { id: "native", symbol: "XLM", decimals: 6, logo: logo(Network.Stellar) },
254
+ rpc: rpc(Network.Stellar),
255
+ type: WalletType.STELLAR,
256
+ },
257
+ [Network.Btc]: {
258
+ id: Network.Btc,
259
+ key: "btc",
260
+ name: "Bitcoin",
261
+ logo: "https://storage.herewallet.app/ft/-6:native.png",
262
+ currency: { id: "native", symbol: "BTC", decimals: 8, logo: logo(Network.Btc) },
263
+ rpc: rpc(Network.Btc),
264
+ type: WalletType.Btc,
265
+ },
266
+ [Network.Berachain]: {
267
+ id: Network.Berachain,
268
+ key: "bera",
269
+ name: "Berachain",
270
+ logo: "https://storage.herewallet.app/upload/f5c15875b85ca57447ec031930dbdac1f85799a4ca83ae8ecc204142ff433d60.png",
271
+ currency: { id: "native", symbol: "BERA", decimals: 6, logo: logo(Network.Berachain) },
272
+ rpc: rpc(Network.Berachain),
273
+ type: WalletType.EVM,
274
+ },
275
+ [Network.Tron]: {
276
+ id: Network.Tron,
277
+ key: "tron",
278
+ name: "TRON",
279
+ logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png",
280
+ currency: { id: "native", symbol: "TRX", decimals: 6, logo: logo(Network.Tron) },
281
+ rpc: rpc(Network.Tron),
282
+ type: WalletType.Tron,
283
+ },
284
+ [Network.Zcash]: {
285
+ id: Network.Zcash,
286
+ key: "zec",
287
+ name: "Zcash",
288
+ logo: "https://storage.herewallet.app/ft/-5:native.png",
289
+ currency: { id: "native", symbol: "ZEC", decimals: 8, logo: logo(Network.Zcash) },
290
+ rpc: rpc(Network.Zcash),
291
+ type: WalletType.Zcash,
292
+ },
293
+ [Network.Xrp]: {
294
+ id: Network.Xrp,
295
+ key: "xrp",
296
+ name: "XRP",
297
+ logo: "https://cryptologos.cc/logos/xrp-xrp-logo.svg?v=040",
298
+ currency: { id: "native", symbol: "XRP", decimals: 6, logo: logo(Network.Xrp) },
299
+ rpc: rpc(Network.Xrp),
300
+ type: WalletType.Xrp,
301
+ },
302
+ [Network.Doge]: {
303
+ id: Network.Doge,
304
+ key: "doge",
305
+ name: "Doge",
306
+ logo: "https://cryptologos.cc/logos/dogecoin-doge-logo.svg?v=040",
307
+ currency: { id: "native", symbol: "DOGE", decimals: 6, logo: logo(Network.Doge) },
308
+ rpc: rpc(Network.Doge),
309
+ type: WalletType.Doge,
310
+ },
311
+ [Network.Ada]: {
312
+ id: Network.Ada,
313
+ key: "ada",
314
+ name: "ADA",
315
+ logo: "https://cryptologos.cc/logos/cardano-ada-logo.svg?v=040",
316
+ currency: { id: "native", symbol: "ADA", decimals: 6, logo: logo(Network.Ada) },
317
+ rpc: rpc(Network.Ada),
318
+ type: WalletType.Ada,
319
+ },
320
+ [Network.Aptos]: {
321
+ id: Network.Aptos,
322
+ key: "aptos",
323
+ name: "Aptos",
324
+ logo: "https://cryptologos.cc/logos/aptos-apt-logo.svg?v=040",
325
+ currency: { id: "native", symbol: "APT", decimals: 6, logo: logo(Network.Aptos) },
326
+ rpc: rpc(Network.Aptos),
327
+ type: WalletType.Aptos,
328
+ },
329
+ [Network.Sui]: {
330
+ id: Network.Sui,
331
+ key: "sui",
332
+ name: "SUI",
333
+ logo: "https://cryptologos.cc/logos/sui-sui-logo.svg?v=040",
334
+ currency: { id: "native", symbol: "SUI", decimals: 6, logo: logo(Network.Sui) },
335
+ rpc: rpc(Network.Sui),
336
+ type: WalletType.Sui,
337
+ },
338
+ [Network.Hot]: {
339
+ id: Network.Hot,
340
+ key: "hot",
341
+ name: "Omni",
342
+ logo: "https://tgapp.herewallet.app/images/hot/hot-icon.png",
343
+ currency: { id: "native", symbol: "OMNI", decimals: 6, logo: logo(Network.Hot) },
344
+ rpc: rpc(Network.Hot),
345
+ type: WalletType.OMNI,
346
+ },
347
+ [Network.Cardano]: {
348
+ id: Network.Cardano,
349
+ key: "cardano",
350
+ name: "Cardano",
351
+ logo: "https://cryptologos.cc/logos/cardano-ada-logo.svg?v=040",
352
+ currency: { id: "native", symbol: "ADA", decimals: 6, logo: logo(Network.Cardano) },
353
+ rpc: rpc(Network.Cardano),
354
+ type: WalletType.Cardano,
355
+ },
356
+ [Network.Litecoin]: {
357
+ id: Network.Litecoin,
358
+ key: "ltc",
359
+ name: "Litecoin",
360
+ logo: "https://cryptologos.cc/logos/litecoin-ltc-logo.svg?v=040",
361
+ currency: { id: "native", symbol: "LTC", decimals: 8, logo: logo(Network.Litecoin) },
362
+ rpc: rpc(Network.Litecoin),
363
+ type: WalletType.Litecoin,
364
+ },
365
+ [Network.ADI]: {
366
+ id: Network.ADI,
367
+ key: "adi",
368
+ name: "ADI",
369
+ currency: { id: "native", symbol: "ADI", decimals: 6, logo: logo(Network.ADI) },
370
+ rpc: rpc(Network.ADI),
371
+ type: WalletType.EVM,
372
+ },
373
+ };
374
+
375
+ export const chains = {
376
+ get repository() {
377
+ return Object.values(chainsRepository);
378
+ },
379
+
380
+ getByType: (type: WalletType) => Object.values(chainsRepository).filter((chain) => chain.type === type),
381
+ getByKey: (key: string) => {
382
+ const chain = Object.values(chainsRepository).find((chain) => chain.key === key);
383
+ if (!chain) throw new Error(`Chain ${key} not found`);
384
+ return chain;
385
+ },
386
+
387
+ get: (id: number) => chainsRepository[id],
388
+ register: (config: ChainConfig) => {
389
+ chainsRepository[config.id] = config;
390
+ },
391
+ };
package/src/core/index.ts CHANGED
@@ -1,9 +1,10 @@
1
- export { OmniToken, WalletType, Network, chainsMap, reverseChainsMap } from "./config";
2
- export { Intents } from "./Intents";
3
- export { Token } from "./token";
4
- export { tokens } from "./tokens";
5
- export { bridge } from "./bridge";
1
+ export { OmniToken, WalletType, Network, chains } from "./chains";
2
+ export { createHotBridge, HotBridge, ReviewFee } from "./bridge";
3
+ export { rpc as nearRpc, TGAS } from "./nearRpc";
4
+ export { EventEmitter } from "./events";
6
5
  export { Recipient } from "./recipient";
7
6
  export { formatter } from "./utils";
8
- export { rpc as nearRpc, TGAS } from "./nearRpc";
7
+ export { Intents } from "./Intents";
8
+ export { tokens } from "./tokens";
9
+ export { Token } from "./token";
9
10
  export * from "./types";
@@ -3,7 +3,7 @@ import { hex, base32, base58 } from "@scure/base";
3
3
 
4
4
  import { type OmniWallet } from "../OmniWallet";
5
5
  import { tonApi } from "../ton/utils";
6
- import { WalletType } from "./config";
6
+ import { WalletType } from "./chains";
7
7
 
8
8
  export class Recipient {
9
9
  constructor(readonly type: WalletType, readonly address: string, readonly omniAddress: string) {}
package/src/core/token.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { TokenResponse } from "@defuse-protocol/one-click-sdk-typescript";
2
2
  import { Asset, Networks } from "@stellar/stellar-base";
3
3
 
4
- import { Network, OmniToken, WalletType, chainsMap, reverseChainsMap } from "./config";
4
+ import { Network, OmniToken, WalletType, chains } from "./chains";
5
5
  import { formatter } from "./utils";
6
6
 
7
7
  export interface IToken {
@@ -24,8 +24,8 @@ export class Token {
24
24
 
25
25
  constructor(readonly info: TokenResponse & { omni?: true }) {
26
26
  this.originalChainSymbol = info.blockchain;
27
- this.originalChain = reverseChainsMap[info.blockchain];
28
- this.chain = info.omni ? -4 : reverseChainsMap[info.blockchain];
27
+ this.originalChain = chains.getByKey(info.blockchain).id || 0;
28
+ this.chain = info.omni ? -4 : chains.getByKey(info.blockchain).id || 0;
29
29
 
30
30
  if (this.chain === Network.Near) {
31
31
  this.address = info.contractAddress === "wrap.near" ? "native" : info.contractAddress || "native";
@@ -40,12 +40,12 @@ export class Token {
40
40
 
41
41
  this.decimals = info.decimals;
42
42
  this.symbol = info.symbol === "wNEAR" ? "NEAR" : info.symbol;
43
- this.usd = info.price;
43
+ this.usd = info.price || 0;
44
44
  this.omniAddress = info.assetId;
45
45
  }
46
46
 
47
47
  get chainIcon() {
48
- return chainsMap[this.chain]?.logo || `https://storage.herewallet.app/ft/${this.chain}:native.png`;
48
+ return chains.get(this.chain)?.logo || `https://storage.herewallet.app/ft/${this.chain}:native.png`;
49
49
  }
50
50
 
51
51
  get originalChainIcon() {
@@ -54,7 +54,7 @@ export class Token {
54
54
  }
55
55
 
56
56
  get chainName() {
57
- return chainsMap[this.chain]?.name || this.originalChainSymbol;
57
+ return chains.get(this.chain)?.name || this.originalChainSymbol;
58
58
  }
59
59
 
60
60
  get id() {
@@ -67,26 +67,7 @@ export class Token {
67
67
  }
68
68
 
69
69
  get type() {
70
- if (this.chain === Network.Hot) return WalletType.OMNI;
71
- if (this.chain === Network.Near) return WalletType.NEAR;
72
- if (this.chain === Network.Solana) return WalletType.SOLANA;
73
- if (this.chain === Network.OmniTon) return WalletType.TON;
74
- if (this.chain === Network.Ton) return WalletType.TON;
75
- if (this.chain === Network.Stellar) return WalletType.STELLAR;
76
- if (this.chain === Network.Juno) return WalletType.COSMOS;
77
- if (this.chain === Network.Gonka) return WalletType.COSMOS;
78
- if (this.chain === Network.Btc) return WalletType.Btc;
79
- if (this.chain === Network.Tron) return WalletType.Tron;
80
- if (this.chain === Network.Zcash) return WalletType.Zcash;
81
- if (this.chain === Network.Xrp) return WalletType.Xrp;
82
- if (this.chain === Network.Doge) return WalletType.Doge;
83
- if (this.chain === Network.Ada) return WalletType.Ada;
84
- if (this.chain === Network.Aptos) return WalletType.Aptos;
85
- if (this.chain === Network.Sui) return WalletType.Sui;
86
- if (this.chain === Network.Litecoin) return WalletType.Litecoin;
87
- if (this.chain === Network.Cardano) return WalletType.Cardano;
88
- if (this.chain > 0) return WalletType.EVM;
89
- return WalletType.unknown;
70
+ return chains.get(this.chain)?.type || WalletType.unknown;
90
71
  }
91
72
 
92
73
  get reserve() {
@@ -2,7 +2,7 @@ import { makeObservable, observable, runInAction } from "mobx";
2
2
  import { OneClickService } from "@defuse-protocol/one-click-sdk-typescript";
3
3
 
4
4
  import { defaultTokens } from "./defaultTokens";
5
- import { Network, OmniToken } from "./config";
5
+ import { Network, OmniToken } from "./chains";
6
6
  import { Token } from "./token";
7
7
 
8
8
  class TokensStorage {
package/src/core/types.ts CHANGED
@@ -2,6 +2,7 @@ export interface TransferIntent {
2
2
  intent: "transfer";
3
3
  tokens: Record<string, string>;
4
4
  receiver_id: string;
5
+ memo?: string;
5
6
  msg?: string;
6
7
  min_gas?: string;
7
8
  }
@@ -1,9 +1,10 @@
1
- import type { Keplr } from "@keplr-wallet/provider-extension";
1
+ import { Keplr } from "@keplr-wallet/provider-extension";
2
2
  import { TxRaw } from "@keplr-wallet/proto-types/cosmos/tx/v1beta1/tx";
3
3
  import { StargateClient } from "@cosmjs/stargate";
4
+ import { runInAction } from "mobx";
4
5
  import { hex } from "@scure/base";
5
6
 
6
- import { WalletType } from "../core/config";
7
+ import { chains, WalletType } from "../core/chains";
7
8
  import { HotConnector } from "../HotConnector";
8
9
  import { ConnectorType, OmniConnector, WC_ICON } from "../OmniConnector";
9
10
  import { OmniWallet } from "../OmniWallet";
@@ -11,10 +12,6 @@ import { OmniWallet } from "../OmniWallet";
11
12
  import { signAndSendTx } from "./helpers";
12
13
  import CosmosWallet from "./wallet";
13
14
 
14
- export interface CosmosConnectorOptions {
15
- cosmosChains?: Record<string, { chain: string; rpc: string; denom: string; prefix: string }>;
16
- }
17
-
18
15
  declare global {
19
16
  interface Window {
20
17
  keplr?: Keplr;
@@ -42,8 +39,6 @@ const wallets = {
42
39
  };
43
40
 
44
41
  export default class CosmosConnector extends OmniConnector<CosmosWallet> {
45
- cosmosChains: Record<string, { chain: string; rpc: string; denom: string; prefix: string }>;
46
-
47
42
  type = ConnectorType.WALLET;
48
43
  walletTypes = [WalletType.COSMOS];
49
44
  icon = "https://legacy.cosmos.network/presskit/cosmos-brandmark-dynamic-dark.svg";
@@ -51,12 +46,12 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
51
46
  isSupported = true;
52
47
  id = "cosmos";
53
48
 
54
- constructor(wibe3: HotConnector, options?: CosmosConnectorOptions) {
49
+ constructor(wibe3: HotConnector) {
55
50
  super(wibe3);
56
51
 
57
52
  this.options = [
58
53
  {
59
- name: "keplr" in window ? "Keplr" : "Keplr Mobile",
54
+ name: "Keplr",
60
55
  download: "https://www.keplr.app/get",
61
56
  icon: "https://cdn.prod.website-files.com/667dc891bc7b863b5397495b/68a4ca95f93a9ab64dc67ab4_keplr-symbol.svg",
62
57
  type: "keplr" in window ? "extension" : "external",
@@ -71,16 +66,23 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
71
66
  },
72
67
  ];
73
68
 
74
- this.cosmosChains = {
75
- "juno-1": { chain: "juno-1", rpc: "https://juno-rpc.publicnode.com", denom: "ujuno", prefix: "juno" },
76
- "gonka-mainnet": { chain: "gonka-mainnet", rpc: "https://dev.herewallet.app/api/v1/evm/rpc/4444119", denom: "ngonka", prefix: "gonka" },
77
- "cosmoshub-4": { chain: "cosmoshub-4", rpc: "https://rpc.cosmoshub.certus.one", denom: "uatom", prefix: "cosmos" },
78
- ...options?.cosmosChains,
79
- };
69
+ Keplr.getKeplr().then((keplr) => {
70
+ const option = this.options.find((option) => option.id === "keplr")!;
71
+ runInAction(() => {
72
+ option.type = keplr ? "extension" : "external";
73
+ option.name = keplr ? "Keplr" : "Keplr Mobile";
74
+ });
75
+ });
80
76
 
81
- this.getStorage().then(({ type, address, publicKey }) => {
77
+ this.getStorage().then(async ({ type, address, publicKey }) => {
82
78
  if (!address || !publicKey) return;
83
- if (type === "keplr" && window.keplr) this.setKeplrWallet(window.keplr, address, publicKey);
79
+
80
+ if (type === "keplr") {
81
+ const keplr = await Keplr.getKeplr();
82
+ if (keplr) this.setKeplrWallet(keplr, address, publicKey);
83
+ else this.disconnect();
84
+ }
85
+
84
86
  if (type === "leap" && window.leap) this.setKeplrWallet(window.leap, address, publicKey);
85
87
  });
86
88
 
@@ -101,8 +103,8 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
101
103
  .catch(() => {});
102
104
  }
103
105
 
104
- getConfig(chain: string) {
105
- return this.cosmosChains[chain];
106
+ get chains() {
107
+ return chains.getByType(WalletType.COSMOS).map((t) => t.key);
106
108
  }
107
109
 
108
110
  async setupWalletConnect(id?: "keplr" | "leap"): Promise<CosmosWallet> {
@@ -141,7 +143,7 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
141
143
  },
142
144
  });
143
145
 
144
- const client = await StargateClient.connect(this.getConfig(signDoc.chainId)?.rpc || "");
146
+ const client = await StargateClient.connect(chains.getByKey(signDoc.chainId).rpc || "");
145
147
  const protobufTx = TxRaw.encode({
146
148
  bodyBytes: signed.bodyBytes,
147
149
  authInfoBytes: signed.authInfoBytes,
@@ -164,8 +166,8 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
164
166
  publicKeyHex: publicKey,
165
167
  disconnect: () => keplr.disable(),
166
168
  sendTransaction: async (signDoc: any) => {
167
- await keplr.enable(Object.keys(this.cosmosChains));
168
- const rpcEndpoint = this.getConfig(signDoc.chainId)?.rpc || "";
169
+ await keplr.enable(this.chains);
170
+ const rpcEndpoint = chains.get(signDoc.chainId)?.rpc || "";
169
171
  return await signAndSendTx(keplr, rpcEndpoint, signDoc);
170
172
  },
171
173
  })
@@ -181,7 +183,7 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
181
183
  cosmos: {
182
184
  methods: ["cosmos_getAccounts", "cosmos_signDirect"],
183
185
  events: ["chainChanged", "accountsChanged"],
184
- chains: Object.keys(this.cosmosChains).map((chain) => `cosmos:${chain}`),
186
+ chains: this.chains.map((chain) => `cosmos:${chain}`),
185
187
  rpcMap: {},
186
188
  },
187
189
  },
@@ -200,7 +202,7 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
200
202
  chainName: "Gonka",
201
203
  });
202
204
 
203
- await extension.enable(Object.keys(this.cosmosChains));
205
+ await extension.enable(this.chains);
204
206
  const account = await extension.getKey("gonka-mainnet");
205
207
  await this.setStorage({ type, address: account.bech32Address, publicKey: hex.encode(account.pubKey) });
206
208
  return await this.setKeplrWallet(extension, account.bech32Address, hex.encode(account.pubKey));
@@ -214,7 +216,7 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
214
216
  cosmos: {
215
217
  methods: ["cosmos_getAccounts", "cosmos_signDirect"],
216
218
  events: ["chainChanged", "accountsChanged"],
217
- chains: Object.keys(this.cosmosChains).map((chain) => `cosmos:${chain}`),
219
+ chains: this.chains.map((chain) => `cosmos:${chain}`),
218
220
  rpcMap: {},
219
221
  },
220
222
  },
@@ -222,7 +224,8 @@ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
222
224
  }
223
225
 
224
226
  if (id === "keplr") {
225
- return await this.connectKeplr("keplr", window.keplr);
227
+ const keplr = await Keplr.getKeplr();
228
+ return await this.connectKeplr("keplr", keplr);
226
229
  }
227
230
 
228
231
  if (id === "leap") {
@@ -1,9 +1,8 @@
1
- import type { CosmosConnectorOptions } from "./connector";
2
1
  import CosmosConnector from "./connector";
3
2
  import CosmosWallet from "./wallet";
4
3
 
5
4
  import { HotConnector } from "../HotConnector";
6
5
 
7
- export { CosmosConnector, CosmosConnectorOptions, CosmosWallet };
6
+ export { CosmosConnector, CosmosWallet };
8
7
 
9
- export default (options?: CosmosConnectorOptions) => async (wibe3: HotConnector) => new CosmosConnector(wibe3, options);
8
+ export default () => async (wibe3: HotConnector) => new CosmosConnector(wibe3);
@@ -1,7 +1,7 @@
1
1
  import { StargateClient } from "@cosmjs/stargate";
2
2
 
3
3
  import { OmniWallet, SignedAuth } from "../OmniWallet";
4
- import { chainsMap, WalletType } from "../core/config";
4
+ import { chains, WalletType } from "../core/chains";
5
5
  import { ReviewFee } from "../core/bridge";
6
6
  import CosmosConnector from "./connector";
7
7
 
@@ -68,7 +68,7 @@ export default class CosmosWallet extends OmniWallet {
68
68
  }
69
69
 
70
70
  async fetchBalance(chain: number, token: string): Promise<bigint> {
71
- const config = this.connector.getConfig(chainsMap[chain].id);
71
+ const config = chains.get(chain);
72
72
  if (!config) throw new Error("Config not found");
73
73
  const client = await StargateClient.connect(config.rpc);
74
74
  const balance = await client.getBalance(this.address, token);