@hot-labs/kit 1.0.33

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 (300) hide show
  1. package/.eslintrc.cjs +11 -0
  2. package/.github/workflows/deploy-example.yml +55 -0
  3. package/.github/workflows/release.yml +74 -0
  4. package/.prettierrc +4 -0
  5. package/.prototools +2 -0
  6. package/.vscode/settings.json +3 -0
  7. package/CHANGELOG.md +1 -0
  8. package/README.md +67 -0
  9. package/build/GoogleConnector.d.ts +20 -0
  10. package/build/GoogleConnector.js +76 -0
  11. package/build/GoogleConnector.js.map +1 -0
  12. package/build/HotConnector.d.ts +91 -0
  13. package/build/HotConnector.js +285 -0
  14. package/build/HotConnector.js.map +1 -0
  15. package/build/OmniConnector.d.ts +95 -0
  16. package/build/OmniConnector.js +123 -0
  17. package/build/OmniConnector.js.map +1 -0
  18. package/build/OmniWallet.d.ts +57 -0
  19. package/build/OmniWallet.js +56 -0
  20. package/build/OmniWallet.js.map +1 -0
  21. package/build/cosmos/connector.d.ts +53 -0
  22. package/build/cosmos/connector.js +207 -0
  23. package/build/cosmos/connector.js.map +1 -0
  24. package/build/cosmos/wallet.d.ts +28 -0
  25. package/build/cosmos/wallet.js +59 -0
  26. package/build/cosmos/wallet.js.map +1 -0
  27. package/build/events.d.ts +42 -0
  28. package/build/events.js +64 -0
  29. package/build/events.js.map +1 -0
  30. package/build/evm/abi.d.ts +17 -0
  31. package/build/evm/abi.js +38 -0
  32. package/build/evm/abi.js.map +1 -0
  33. package/build/evm/connector.d.ts +35 -0
  34. package/build/evm/connector.js +124 -0
  35. package/build/evm/connector.js.map +1 -0
  36. package/build/evm/wallet.d.ts +47 -0
  37. package/build/evm/wallet.js +136 -0
  38. package/build/evm/wallet.js.map +1 -0
  39. package/build/exchange.d.ts +63 -0
  40. package/build/exchange.js +384 -0
  41. package/build/exchange.js.map +1 -0
  42. package/build/hot-wallet/evm.d.ts +1 -0
  43. package/build/hot-wallet/evm.js +33 -0
  44. package/build/hot-wallet/evm.js.map +1 -0
  45. package/build/hot-wallet/hot.d.ts +3 -0
  46. package/build/hot-wallet/hot.js +40 -0
  47. package/build/hot-wallet/hot.js.map +1 -0
  48. package/build/hot-wallet/index.d.ts +4 -0
  49. package/build/hot-wallet/index.js +5 -0
  50. package/build/hot-wallet/index.js.map +1 -0
  51. package/build/hot-wallet/solana/account.d.ts +11 -0
  52. package/build/hot-wallet/solana/account.js +42 -0
  53. package/build/hot-wallet/solana/account.js.map +1 -0
  54. package/build/hot-wallet/solana/index.d.ts +1 -0
  55. package/build/hot-wallet/solana/index.js +85 -0
  56. package/build/hot-wallet/solana/index.js.map +1 -0
  57. package/build/hot-wallet/solana/register.d.ts +2 -0
  58. package/build/hot-wallet/solana/register.js +41 -0
  59. package/build/hot-wallet/solana/register.js.map +1 -0
  60. package/build/hot-wallet/solana/solana-wallet.d.ts +34 -0
  61. package/build/hot-wallet/solana/solana-wallet.js +223 -0
  62. package/build/hot-wallet/solana/solana-wallet.js.map +1 -0
  63. package/build/hot-wallet/solana/utils.d.ts +32 -0
  64. package/build/hot-wallet/solana/utils.js +36 -0
  65. package/build/hot-wallet/solana/utils.js.map +1 -0
  66. package/build/hot-wallet/stellar.d.ts +38 -0
  67. package/build/hot-wallet/stellar.js +32 -0
  68. package/build/hot-wallet/stellar.js.map +1 -0
  69. package/build/hot-wallet/ton.d.ts +1 -0
  70. package/build/hot-wallet/ton.js +49 -0
  71. package/build/hot-wallet/ton.js.map +1 -0
  72. package/build/hot-wallet/wallet.d.ts +1 -0
  73. package/build/hot-wallet/wallet.js +40 -0
  74. package/build/hot-wallet/wallet.js.map +1 -0
  75. package/build/index.d.ts +24 -0
  76. package/build/index.js +25 -0
  77. package/build/index.js.map +1 -0
  78. package/build/near/connector.d.ts +28 -0
  79. package/build/near/connector.js +56 -0
  80. package/build/near/connector.js.map +1 -0
  81. package/build/near/wallet.d.ts +62 -0
  82. package/build/near/wallet.js +233 -0
  83. package/build/near/wallet.js.map +1 -0
  84. package/build/omni/Intents.d.ts +93 -0
  85. package/build/omni/Intents.js +395 -0
  86. package/build/omni/Intents.js.map +1 -0
  87. package/build/omni/bridge.d.ts +3 -0
  88. package/build/omni/bridge.js +34 -0
  89. package/build/omni/bridge.js.map +1 -0
  90. package/build/omni/config.d.ts +99 -0
  91. package/build/omni/config.js +126 -0
  92. package/build/omni/config.js.map +1 -0
  93. package/build/omni/defaultTokens.d.ts +17 -0
  94. package/build/omni/defaultTokens.js +1079 -0
  95. package/build/omni/defaultTokens.js.map +1 -0
  96. package/build/omni/index.d.ts +8 -0
  97. package/build/omni/index.js +9 -0
  98. package/build/omni/index.js.map +1 -0
  99. package/build/omni/nearRpc.d.ts +24 -0
  100. package/build/omni/nearRpc.js +167 -0
  101. package/build/omni/nearRpc.js.map +1 -0
  102. package/build/omni/recipient.d.ts +10 -0
  103. package/build/omni/recipient.js +40 -0
  104. package/build/omni/recipient.js.map +1 -0
  105. package/build/omni/token.d.ts +36 -0
  106. package/build/omni/token.js +136 -0
  107. package/build/omni/token.js.map +1 -0
  108. package/build/omni/tokens.d.ts +14 -0
  109. package/build/omni/tokens.js +57 -0
  110. package/build/omni/tokens.js.map +1 -0
  111. package/build/omni/types.d.ts +41 -0
  112. package/build/omni/types.js +2 -0
  113. package/build/omni/types.js.map +1 -0
  114. package/build/omni/utils.d.ts +24 -0
  115. package/build/omni/utils.js +150 -0
  116. package/build/omni/utils.js.map +1 -0
  117. package/build/settings.d.ts +5 -0
  118. package/build/settings.js +6 -0
  119. package/build/settings.js.map +1 -0
  120. package/build/solana/connector.d.ts +31 -0
  121. package/build/solana/connector.js +138 -0
  122. package/build/solana/connector.js.map +1 -0
  123. package/build/solana/protocol.d.ts +25 -0
  124. package/build/solana/protocol.js +56 -0
  125. package/build/solana/protocol.js.map +1 -0
  126. package/build/solana/wallet.d.ts +47 -0
  127. package/build/solana/wallet.js +188 -0
  128. package/build/solana/wallet.js.map +1 -0
  129. package/build/solana/wallets.d.ts +102 -0
  130. package/build/solana/wallets.js +150 -0
  131. package/build/solana/wallets.js.map +1 -0
  132. package/build/stellar/connector.d.ts +25 -0
  133. package/build/stellar/connector.js +56 -0
  134. package/build/stellar/connector.js.map +1 -0
  135. package/build/stellar/wallet.d.ts +70 -0
  136. package/build/stellar/wallet.js +225 -0
  137. package/build/stellar/wallet.js.map +1 -0
  138. package/build/storage.d.ts +10 -0
  139. package/build/storage.js +12 -0
  140. package/build/storage.js.map +1 -0
  141. package/build/ton/connector.d.ts +25 -0
  142. package/build/ton/connector.js +119 -0
  143. package/build/ton/connector.js.map +1 -0
  144. package/build/ton/utils.d.ts +45 -0
  145. package/build/ton/utils.js +64 -0
  146. package/build/ton/utils.js.map +1 -0
  147. package/build/ton/wallet.d.ts +70 -0
  148. package/build/ton/wallet.js +154 -0
  149. package/build/ton/wallet.js.map +1 -0
  150. package/build/ui/Popup.d.ts +10 -0
  151. package/build/ui/Popup.js +38 -0
  152. package/build/ui/Popup.js.map +1 -0
  153. package/build/ui/connect/AuthPopup.d.ts +2 -0
  154. package/build/ui/connect/AuthPopup.js +48 -0
  155. package/build/ui/connect/AuthPopup.js.map +1 -0
  156. package/build/ui/connect/ConnectWallet.d.ts +9 -0
  157. package/build/ui/connect/ConnectWallet.js +22 -0
  158. package/build/ui/connect/ConnectWallet.js.map +1 -0
  159. package/build/ui/connect/LogoutPopup.d.ts +10 -0
  160. package/build/ui/connect/LogoutPopup.js +8 -0
  161. package/build/ui/connect/LogoutPopup.js.map +1 -0
  162. package/build/ui/connect/WCPopup.d.ts +13 -0
  163. package/build/ui/connect/WCPopup.js +81 -0
  164. package/build/ui/connect/WCPopup.js.map +1 -0
  165. package/build/ui/connect/WCRequest.d.ts +9 -0
  166. package/build/ui/connect/WCRequest.js +13 -0
  167. package/build/ui/connect/WCRequest.js.map +1 -0
  168. package/build/ui/connect/WalletPicker.d.ts +11 -0
  169. package/build/ui/connect/WalletPicker.js +48 -0
  170. package/build/ui/connect/WalletPicker.js.map +1 -0
  171. package/build/ui/icons/arrow-right.d.ts +1 -0
  172. package/build/ui/icons/arrow-right.js +5 -0
  173. package/build/ui/icons/arrow-right.js.map +1 -0
  174. package/build/ui/icons/exchange.d.ts +6 -0
  175. package/build/ui/icons/exchange.js +6 -0
  176. package/build/ui/icons/exchange.js.map +1 -0
  177. package/build/ui/icons/logout.d.ts +1 -0
  178. package/build/ui/icons/logout.js +3 -0
  179. package/build/ui/icons/logout.js.map +1 -0
  180. package/build/ui/icons/pending.d.ts +1 -0
  181. package/build/ui/icons/pending.js +5 -0
  182. package/build/ui/icons/pending.js.map +1 -0
  183. package/build/ui/icons/qr.d.ts +1 -0
  184. package/build/ui/icons/qr.js +5 -0
  185. package/build/ui/icons/qr.js.map +1 -0
  186. package/build/ui/icons/search.d.ts +1 -0
  187. package/build/ui/icons/search.js +5 -0
  188. package/build/ui/icons/search.js.map +1 -0
  189. package/build/ui/icons/switch.d.ts +1 -0
  190. package/build/ui/icons/switch.js +5 -0
  191. package/build/ui/icons/switch.js.map +1 -0
  192. package/build/ui/icons/wallet.d.ts +1 -0
  193. package/build/ui/icons/wallet.js +5 -0
  194. package/build/ui/icons/wallet.js.map +1 -0
  195. package/build/ui/payment/Bridge.d.ts +27 -0
  196. package/build/ui/payment/Bridge.js +340 -0
  197. package/build/ui/payment/Bridge.js.map +1 -0
  198. package/build/ui/payment/DepositQR.d.ts +9 -0
  199. package/build/ui/payment/DepositQR.js +56 -0
  200. package/build/ui/payment/DepositQR.js.map +1 -0
  201. package/build/ui/payment/Payment.d.ts +16 -0
  202. package/build/ui/payment/Payment.js +50 -0
  203. package/build/ui/payment/Payment.js.map +1 -0
  204. package/build/ui/payment/Profile.d.ts +7 -0
  205. package/build/ui/payment/Profile.js +88 -0
  206. package/build/ui/payment/Profile.js.map +1 -0
  207. package/build/ui/payment/SelectRecipient.d.ts +14 -0
  208. package/build/ui/payment/SelectRecipient.js +68 -0
  209. package/build/ui/payment/SelectRecipient.js.map +1 -0
  210. package/build/ui/payment/SelectSender.d.ts +13 -0
  211. package/build/ui/payment/SelectSender.js +23 -0
  212. package/build/ui/payment/SelectSender.js.map +1 -0
  213. package/build/ui/payment/SelectToken.d.ts +13 -0
  214. package/build/ui/payment/SelectToken.js +92 -0
  215. package/build/ui/payment/SelectToken.js.map +1 -0
  216. package/build/ui/payment/TokenCard.d.ts +23 -0
  217. package/build/ui/payment/TokenCard.js +50 -0
  218. package/build/ui/payment/TokenCard.js.map +1 -0
  219. package/build/ui/router.d.ts +37 -0
  220. package/build/ui/router.js +56 -0
  221. package/build/ui/router.js.map +1 -0
  222. package/build/ui/styles.d.ts +11 -0
  223. package/build/ui/styles.js +273 -0
  224. package/build/ui/styles.js.map +1 -0
  225. package/package.json +60 -0
  226. package/skill.md +989 -0
  227. package/src/GoogleConnector.ts +102 -0
  228. package/src/HotConnector.ts +344 -0
  229. package/src/OmniConnector.ts +161 -0
  230. package/src/OmniWallet.ts +94 -0
  231. package/src/cosmos/connector.ts +242 -0
  232. package/src/cosmos/wallet.ts +77 -0
  233. package/src/events.ts +66 -0
  234. package/src/evm/abi.ts +39 -0
  235. package/src/evm/connector.ts +139 -0
  236. package/src/evm/wallet.ts +156 -0
  237. package/src/exchange.ts +426 -0
  238. package/src/hot-wallet/evm.ts +38 -0
  239. package/src/hot-wallet/hot.ts +39 -0
  240. package/src/hot-wallet/index.ts +4 -0
  241. package/src/hot-wallet/solana/account.ts +52 -0
  242. package/src/hot-wallet/solana/index.ts +98 -0
  243. package/src/hot-wallet/solana/register.ts +48 -0
  244. package/src/hot-wallet/solana/solana-wallet.ts +280 -0
  245. package/src/hot-wallet/solana/utils.ts +56 -0
  246. package/src/hot-wallet/stellar.ts +39 -0
  247. package/src/hot-wallet/ton.ts +56 -0
  248. package/src/hot-wallet/wallet.ts +44 -0
  249. package/src/index.ts +30 -0
  250. package/src/near/connector.ts +71 -0
  251. package/src/near/wallet.ts +255 -0
  252. package/src/omni/Intents.ts +454 -0
  253. package/src/omni/bridge.ts +38 -0
  254. package/src/omni/config.ts +130 -0
  255. package/src/omni/defaultTokens.ts +1078 -0
  256. package/src/omni/index.ts +8 -0
  257. package/src/omni/nearRpc.ts +187 -0
  258. package/src/omni/recipient.ts +41 -0
  259. package/src/omni/token.ts +125 -0
  260. package/src/omni/tokens.ts +68 -0
  261. package/src/omni/types.ts +46 -0
  262. package/src/omni/utils.ts +163 -0
  263. package/src/settings.ts +5 -0
  264. package/src/solana/connector.ts +151 -0
  265. package/src/solana/protocol.ts +66 -0
  266. package/src/solana/wallet.ts +230 -0
  267. package/src/solana/wallets.ts +243 -0
  268. package/src/stellar/connector.ts +69 -0
  269. package/src/stellar/wallet.ts +267 -0
  270. package/src/storage.ts +19 -0
  271. package/src/ton/connector.ts +138 -0
  272. package/src/ton/utils.ts +73 -0
  273. package/src/ton/wallet.ts +178 -0
  274. package/src/ui/Popup.tsx +62 -0
  275. package/src/ui/connect/AuthPopup.tsx +78 -0
  276. package/src/ui/connect/ConnectWallet.tsx +63 -0
  277. package/src/ui/connect/LogoutPopup.tsx +20 -0
  278. package/src/ui/connect/WCPopup.tsx +122 -0
  279. package/src/ui/connect/WCRequest.tsx +28 -0
  280. package/src/ui/connect/WalletPicker.tsx +92 -0
  281. package/src/ui/icons/arrow-right.tsx +8 -0
  282. package/src/ui/icons/exchange.tsx +17 -0
  283. package/src/ui/icons/logout.tsx +18 -0
  284. package/src/ui/icons/pending.tsx +18 -0
  285. package/src/ui/icons/qr.tsx +12 -0
  286. package/src/ui/icons/search.tsx +18 -0
  287. package/src/ui/icons/switch.tsx +10 -0
  288. package/src/ui/icons/wallet.tsx +18 -0
  289. package/src/ui/payment/Bridge.tsx +582 -0
  290. package/src/ui/payment/DepositQR.tsx +88 -0
  291. package/src/ui/payment/Payment.tsx +78 -0
  292. package/src/ui/payment/Profile.tsx +140 -0
  293. package/src/ui/payment/SelectRecipient.tsx +111 -0
  294. package/src/ui/payment/SelectSender.tsx +60 -0
  295. package/src/ui/payment/SelectToken.tsx +134 -0
  296. package/src/ui/payment/TokenCard.tsx +83 -0
  297. package/src/ui/router.tsx +92 -0
  298. package/src/ui/styles.ts +284 -0
  299. package/tsconfig.json +22 -0
  300. package/vite.config.ts +17 -0
@@ -0,0 +1,53 @@
1
+ import type { Keplr } from "@keplr-wallet/provider-extension";
2
+ import { WalletType } from "../omni/config";
3
+ import { HotConnector } from "../HotConnector";
4
+ import { ConnectorType, OmniConnector, OmniConnectorOptions } from "../OmniConnector";
5
+ import CosmosWallet from "./wallet";
6
+ import { OmniWallet } from "../OmniWallet";
7
+ export interface CosmosConnectorOptions extends OmniConnectorOptions {
8
+ cosmosChains?: Record<string, {
9
+ chain: string;
10
+ rpc: string;
11
+ denom: string;
12
+ prefix: string;
13
+ }>;
14
+ }
15
+ declare global {
16
+ interface Window {
17
+ keplr?: Keplr;
18
+ leap?: Keplr;
19
+ }
20
+ }
21
+ export default class CosmosConnector extends OmniConnector<CosmosWallet> {
22
+ cosmosChains: Record<string, {
23
+ chain: string;
24
+ rpc: string;
25
+ denom: string;
26
+ prefix: string;
27
+ }>;
28
+ type: ConnectorType;
29
+ walletTypes: WalletType[];
30
+ icon: string;
31
+ name: string;
32
+ isSupported: boolean;
33
+ id: string;
34
+ constructor(wibe3: HotConnector, options?: CosmosConnectorOptions);
35
+ getConfig(chain: string): {
36
+ chain: string;
37
+ rpc: string;
38
+ denom: string;
39
+ prefix: string;
40
+ };
41
+ setupWalletConnect(id?: "keplr" | "leap"): Promise<CosmosWallet>;
42
+ setKeplrWallet(keplr: Keplr, address: string, publicKey: string): Promise<CosmosWallet>;
43
+ connectKeplr(type: "keplr" | "leap", extension?: Keplr): Promise<OmniWallet | {
44
+ qrcode: string;
45
+ deeplink?: string;
46
+ task: Promise<OmniWallet>;
47
+ }>;
48
+ connect(id: string): Promise<OmniWallet | {
49
+ qrcode: string;
50
+ deeplink?: string;
51
+ task: Promise<OmniWallet>;
52
+ }>;
53
+ }
@@ -0,0 +1,207 @@
1
+ import { TxRaw } from "@keplr-wallet/proto-types/cosmos/tx/v1beta1/tx";
2
+ import { StargateClient } from "@cosmjs/stargate";
3
+ import { hex } from "@scure/base";
4
+ import { WalletType } from "../omni/config";
5
+ import { ConnectorType, OmniConnector, WC_ICON } from "../OmniConnector";
6
+ import CosmosWallet from "./wallet";
7
+ const wallets = {
8
+ keplr: {
9
+ name: "Keplr",
10
+ icon: "https://cdn.prod.website-files.com/667dc891bc7b863b5397495b/68a4ca95f93a9ab64dc67ab4_keplr-symbol.svg",
11
+ download: "https://www.keplr.app/get",
12
+ deeplink: "keplrwallet://wcV2?",
13
+ type: "extension",
14
+ id: "keplr",
15
+ },
16
+ leap: {
17
+ name: "Leap",
18
+ icon: "https://framerusercontent.com/images/AbGYvbwnLekBbsdf5g7PI5PpSg.png?scale-down-to=512",
19
+ download: "https://www.leapwallet.io/download",
20
+ deeplink: "leapcosmos://wcV2?",
21
+ type: "extension",
22
+ id: "leap",
23
+ },
24
+ };
25
+ export default class CosmosConnector extends OmniConnector {
26
+ cosmosChains;
27
+ type = ConnectorType.WALLET;
28
+ walletTypes = [WalletType.COSMOS];
29
+ icon = "https://legacy.cosmos.network/presskit/cosmos-brandmark-dynamic-dark.svg";
30
+ name = "Cosmos Wallet";
31
+ isSupported = true;
32
+ id = "cosmos";
33
+ constructor(wibe3, options) {
34
+ super(wibe3, options);
35
+ this.options = [
36
+ {
37
+ name: "keplr" in window ? "Keplr" : "Keplr Mobile",
38
+ download: "https://www.keplr.app/get",
39
+ icon: "https://cdn.prod.website-files.com/667dc891bc7b863b5397495b/68a4ca95f93a9ab64dc67ab4_keplr-symbol.svg",
40
+ type: "keplr" in window ? "extension" : "external",
41
+ id: "keplr",
42
+ },
43
+ {
44
+ name: "leap" in window ? "Leap" : "Leap Mobile",
45
+ download: "https://www.leapwallet.io/download",
46
+ icon: "https://framerusercontent.com/images/AbGYvbwnLekBbsdf5g7PI5PpSg.png?scale-down-to=512",
47
+ type: "leap" in window ? "extension" : "external",
48
+ id: "leap",
49
+ },
50
+ ];
51
+ this.cosmosChains = {
52
+ "juno-1": { chain: "juno-1", rpc: "https://juno-rpc.publicnode.com", denom: "ujuno", prefix: "juno" },
53
+ "gonka-mainnet": { chain: "gonka-mainnet", rpc: "https://dev.herewallet.app/api/v1/evm/rpc/4444119", denom: "ngonka", prefix: "gonka" },
54
+ "cosmoshub-4": { chain: "cosmoshub-4", rpc: "https://rpc.cosmoshub.certus.one", denom: "uatom", prefix: "cosmos" },
55
+ ...options?.cosmosChains,
56
+ };
57
+ this.getStorage().then(({ type, address, publicKey }) => {
58
+ if (!address || !publicKey)
59
+ return;
60
+ if (type === "keplr" && window.keplr)
61
+ this.setKeplrWallet(window.keplr, address, publicKey);
62
+ if (type === "leap" && window.leap)
63
+ this.setKeplrWallet(window.leap, address, publicKey);
64
+ });
65
+ this.initWalletConnect().then(async (wc) => {
66
+ this.options.unshift({
67
+ download: "https://www.walletconnect.com/get",
68
+ name: "WalletConnect",
69
+ id: "walletconnect",
70
+ type: "external",
71
+ icon: WC_ICON,
72
+ });
73
+ const selected = await this.getStorage();
74
+ if (selected.type !== "walletconnect")
75
+ return;
76
+ this.setupWalletConnect(selected.id);
77
+ });
78
+ }
79
+ getConfig(chain) {
80
+ return this.cosmosChains[chain];
81
+ }
82
+ async setupWalletConnect(id) {
83
+ const wc = await this.wc;
84
+ if (!wc)
85
+ throw new Error("WalletConnect not found");
86
+ const properties = JSON.parse(wc.session?.sessionProperties?.keys || "{}");
87
+ const account = properties?.find((t) => t.chainId === "gonka-mainnet");
88
+ if (!account)
89
+ throw new Error("Account not found");
90
+ const publicKey = Buffer.from(account.pubKey, "base64").toString("hex");
91
+ const address = account.bech32Address;
92
+ this.setStorage({ type: "walletconnect", id });
93
+ const wallet = new CosmosWallet(this, {
94
+ address: address,
95
+ publicKeyHex: publicKey,
96
+ disconnect: () => this.disconnectWalletConnect(),
97
+ sendTransaction: async (signDoc) => {
98
+ const { signed, signature } = await this.requestWalletConnect({
99
+ chain: `cosmos:${signDoc.chainId}`,
100
+ deeplink: id ? wallets[id].deeplink : undefined,
101
+ icon: id ? wallets[id].icon : undefined,
102
+ name: id ? wallets[id].name : undefined,
103
+ request: {
104
+ method: "cosmos_signDirect",
105
+ params: {
106
+ signerAddress: address,
107
+ signDoc: {
108
+ chainId: signDoc.chainId,
109
+ accountNumber: signDoc.accountNumber?.toString(),
110
+ bodyBytes: signDoc.bodyBytes ? Buffer.from(signDoc.bodyBytes).toString("base64") : null,
111
+ authInfoBytes: signDoc.authInfoBytes ? Buffer.from(signDoc.authInfoBytes).toString("base64") : null,
112
+ },
113
+ },
114
+ },
115
+ });
116
+ const client = await StargateClient.connect(this.getConfig(signDoc.chainId)?.rpc || "");
117
+ const protobufTx = TxRaw.encode({
118
+ bodyBytes: signed.bodyBytes,
119
+ authInfoBytes: signed.authInfoBytes,
120
+ signatures: [Buffer.from(signature.signature, "base64")],
121
+ }).finish();
122
+ const result = await client.broadcastTx(protobufTx);
123
+ if (result.code !== 0)
124
+ throw "Transaction failed";
125
+ return result.transactionHash;
126
+ },
127
+ });
128
+ return this.setWallet(wallet);
129
+ }
130
+ async setKeplrWallet(keplr, address, publicKey) {
131
+ return this.setWallet(new CosmosWallet(this, {
132
+ address: address,
133
+ publicKeyHex: publicKey,
134
+ disconnect: () => keplr.disable(),
135
+ sendTransaction: async (signDoc, opts = { preferNoSetFee: true }) => {
136
+ await keplr.enable(Object.keys(this.cosmosChains));
137
+ const account = await keplr.getKey(signDoc.chainId);
138
+ const protoSignResponse = await keplr.signDirect(signDoc.chainId, account.bech32Address, signDoc, opts);
139
+ const client = await StargateClient.connect(this.getConfig(signDoc.chainId)?.rpc || "");
140
+ // Build a TxRaw and serialize it for broadcasting
141
+ const protobufTx = TxRaw.encode({
142
+ bodyBytes: protoSignResponse.signed.bodyBytes,
143
+ authInfoBytes: protoSignResponse.signed.authInfoBytes,
144
+ signatures: [Buffer.from(protoSignResponse.signature.signature, "base64")],
145
+ }).finish();
146
+ const result = await client.broadcastTx(protobufTx);
147
+ if (result.code !== 0)
148
+ throw "Transaction failed";
149
+ return result.transactionHash;
150
+ },
151
+ }));
152
+ }
153
+ async connectKeplr(type, extension) {
154
+ if (!extension) {
155
+ return await this.connectWalletConnect({
156
+ onConnect: () => this.setupWalletConnect(type),
157
+ deeplink: wallets[type].deeplink,
158
+ namespaces: {
159
+ cosmos: {
160
+ methods: ["cosmos_getAccounts", "cosmos_signDirect"],
161
+ events: ["chainChanged", "accountsChanged"],
162
+ chains: Object.keys(this.cosmosChains).map((chain) => `cosmos:${chain}`),
163
+ rpcMap: {},
164
+ },
165
+ },
166
+ });
167
+ }
168
+ await extension.experimentalSuggestChain({
169
+ bech32Config: { bech32PrefixAccAddr: "gonka", bech32PrefixAccPub: "gonka", bech32PrefixValAddr: "gonka", bech32PrefixValPub: "gonka", bech32PrefixConsAddr: "gonka", bech32PrefixConsPub: "gonka" },
170
+ feeCurrencies: [{ coinDenom: "GNK", coinMinimalDenom: "ngonka", coinDecimals: 9, coinGeckoId: "gonka", gasPriceStep: { low: 0, average: 0, high: 0 } }],
171
+ stakeCurrency: { coinDenom: "GNK", coinMinimalDenom: "ngonka", coinDecimals: 9, coinGeckoId: "gonka" },
172
+ currencies: [{ coinDenom: "GNK", coinMinimalDenom: "ngonka", coinDecimals: 9, coinGeckoId: "gonka" }],
173
+ rpc: "https://gonka04.6block.com:8443/chain-rpc",
174
+ rest: "https://gonka04.6block.com:8443/chain-api",
175
+ bip44: { coinType: 1200 },
176
+ chainId: "gonka-mainnet",
177
+ chainName: "Gonka",
178
+ });
179
+ await extension.enable(Object.keys(this.cosmosChains));
180
+ const account = await extension.getKey("gonka-mainnet");
181
+ await this.setStorage({ type, address: account.bech32Address, publicKey: hex.encode(account.pubKey) });
182
+ return await this.setKeplrWallet(extension, account.bech32Address, hex.encode(account.pubKey));
183
+ }
184
+ async connect(id) {
185
+ if (id === "walletconnect") {
186
+ return await this.connectWalletConnect({
187
+ onConnect: () => this.setupWalletConnect(),
188
+ namespaces: {
189
+ cosmos: {
190
+ methods: ["cosmos_getAccounts", "cosmos_signDirect"],
191
+ events: ["chainChanged", "accountsChanged"],
192
+ chains: Object.keys(this.cosmosChains).map((chain) => `cosmos:${chain}`),
193
+ rpcMap: {},
194
+ },
195
+ },
196
+ });
197
+ }
198
+ if (id === "keplr") {
199
+ return await this.connectKeplr("keplr", window.keplr);
200
+ }
201
+ if (id === "leap") {
202
+ return await this.connectKeplr("leap", window.leap);
203
+ }
204
+ throw new Error("Wallet not found");
205
+ }
206
+ }
207
+ //# sourceMappingURL=connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/cosmos/connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { OmniWallet, SignedAuth } from "../OmniWallet";
2
+ import { WalletType } from "../omni/config";
3
+ import { ReviewFee } from "../omni/bridge";
4
+ import CosmosConnector from "./connector";
5
+ interface ProtocolWallet {
6
+ disconnect?: () => Promise<void>;
7
+ sendTransaction?: (signDoc: any) => Promise<string>;
8
+ address: string;
9
+ publicKeyHex: string;
10
+ }
11
+ export default class CosmosWallet extends OmniWallet {
12
+ readonly connector: CosmosConnector;
13
+ readonly wallet: ProtocolWallet;
14
+ readonly type = WalletType.COSMOS;
15
+ constructor(connector: CosmosConnector, wallet: ProtocolWallet);
16
+ get address(): string;
17
+ get publicKey(): string;
18
+ get omniAddress(): string;
19
+ disconnect(): Promise<void>;
20
+ sendTransaction(signDoc: any): Promise<string>;
21
+ transferFee(): Promise<ReviewFee>;
22
+ transfer(): Promise<string>;
23
+ signIntentsWithAuth(): Promise<SignedAuth>;
24
+ signIntents(): Promise<Record<string, any>>;
25
+ fetchBalances(chain: number, whitelist: string[]): Promise<Record<string, bigint>>;
26
+ fetchBalance(chain: number, token: string): Promise<bigint>;
27
+ }
28
+ export {};
@@ -0,0 +1,59 @@
1
+ import { StargateClient } from "@cosmjs/stargate";
2
+ import { OmniWallet } from "../OmniWallet";
3
+ import { chainsMap, WalletType } from "../omni/config";
4
+ export default class CosmosWallet extends OmniWallet {
5
+ connector;
6
+ wallet;
7
+ type = WalletType.COSMOS;
8
+ constructor(connector, wallet) {
9
+ super(connector);
10
+ this.connector = connector;
11
+ this.wallet = wallet;
12
+ }
13
+ get address() {
14
+ return this.wallet.address;
15
+ }
16
+ get publicKey() {
17
+ return this.wallet.publicKeyHex;
18
+ }
19
+ get omniAddress() {
20
+ return "";
21
+ }
22
+ async disconnect() {
23
+ super.disconnect();
24
+ this.wallet.disconnect?.();
25
+ }
26
+ sendTransaction(signDoc) {
27
+ if (!this.wallet.sendTransaction)
28
+ throw "Not impl";
29
+ return this.wallet.sendTransaction(signDoc);
30
+ }
31
+ transferFee() {
32
+ throw new Error("Method not implemented.");
33
+ }
34
+ transfer() {
35
+ throw "Not impl";
36
+ }
37
+ signIntentsWithAuth() {
38
+ throw new Error("Method not implemented.");
39
+ }
40
+ signIntents() {
41
+ throw new Error("Method not implemented.");
42
+ }
43
+ async fetchBalances(chain, whitelist) {
44
+ const balances = await Promise.all(whitelist.map(async (token) => {
45
+ const balance = await this.fetchBalance(chain, token);
46
+ return [token, balance];
47
+ }));
48
+ return Object.fromEntries(balances);
49
+ }
50
+ async fetchBalance(chain, token) {
51
+ const config = this.connector.getConfig(chainsMap[chain].id);
52
+ if (!config)
53
+ throw new Error("Config not found");
54
+ const client = await StargateClient.connect(config.rpc);
55
+ const balance = await client.getBalance(this.address, token);
56
+ return BigInt(balance.amount || 0);
57
+ }
58
+ }
59
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/cosmos/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAc,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAWvD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IAG7B;IAAqC;IAFjD,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;IAElC,YAAqB,SAA0B,EAAW,MAAsB;QAC9E,KAAK,CAAC,SAAS,CAAC,CAAC;QADE,cAAS,GAAT,SAAS,CAAiB;QAAW,WAAM,GAAN,MAAM,CAAgB;IAEhF,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IAC7B,CAAC;IAED,eAAe,CAAC,OAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;YAAE,MAAM,UAAU,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,CAAC;IACnB,CAAC;IAED,mBAAmB;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,SAAmB;QACpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC,CACH,CAAC;QACF,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,KAAa;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Generic event emitter class for handling typed events and their callbacks
3
+ * @template T Record type containing event names as keys and their payload types as values
4
+ */
5
+ export declare class EventEmitter<T extends Record<string, any>> {
6
+ /** Internal storage for event callbacks */
7
+ private events;
8
+ /**
9
+ * Subscribe to an event
10
+ * @template K Event name type
11
+ * @param event Name of the event to subscribe to
12
+ * @param callback Function to be called when event is emitted
13
+ */
14
+ on<K extends keyof T>(event: K, callback: (payload: T[K]) => void): void;
15
+ /**
16
+ * Emit an event with payload
17
+ * @template K Event name type
18
+ * @param event Name of the event to emit
19
+ * @param payload Data to pass to event handlers
20
+ */
21
+ emit<K extends keyof T>(event: K, payload: T[K]): void;
22
+ /**
23
+ * Unsubscribe from an event
24
+ * @template K Event name type
25
+ * @param event Name of the event to unsubscribe from
26
+ * @param callback Function to remove from event handlers
27
+ */
28
+ off<K extends keyof T>(event: K, callback: (payload: T[K]) => void): void;
29
+ /**
30
+ * Subscribe to an event for a single emission
31
+ * @template K Event name type
32
+ * @param event Name of the event to subscribe to
33
+ * @param callback Function to be called when event is emitted
34
+ */
35
+ once<K extends keyof T>(event: K, callback: (payload: T[K]) => void): void;
36
+ /**
37
+ * Remove all event listeners
38
+ * @template K Event name type
39
+ * @param event Optional event name to remove listeners for. If not provided, removes all listeners for all events
40
+ */
41
+ removeAllListeners<K extends keyof T>(event?: K): void;
42
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Generic event emitter class for handling typed events and their callbacks
3
+ * @template T Record type containing event names as keys and their payload types as values
4
+ */
5
+ export class EventEmitter {
6
+ /** Internal storage for event callbacks */
7
+ events = {};
8
+ /**
9
+ * Subscribe to an event
10
+ * @template K Event name type
11
+ * @param event Name of the event to subscribe to
12
+ * @param callback Function to be called when event is emitted
13
+ */
14
+ on(event, callback) {
15
+ if (!this.events[event])
16
+ this.events[event] = [];
17
+ this.events[event].push(callback);
18
+ }
19
+ /**
20
+ * Emit an event with payload
21
+ * @template K Event name type
22
+ * @param event Name of the event to emit
23
+ * @param payload Data to pass to event handlers
24
+ */
25
+ emit(event, payload) {
26
+ this.events[event]?.forEach((cb) => cb(payload));
27
+ }
28
+ /**
29
+ * Unsubscribe from an event
30
+ * @template K Event name type
31
+ * @param event Name of the event to unsubscribe from
32
+ * @param callback Function to remove from event handlers
33
+ */
34
+ off(event, callback) {
35
+ this.events[event] = this.events[event]?.filter((cb) => cb !== callback);
36
+ }
37
+ /**
38
+ * Subscribe to an event for a single emission
39
+ * @template K Event name type
40
+ * @param event Name of the event to subscribe to
41
+ * @param callback Function to be called when event is emitted
42
+ */
43
+ once(event, callback) {
44
+ const onceWrapper = (payload) => {
45
+ callback(payload);
46
+ this.off(event, onceWrapper);
47
+ };
48
+ this.on(event, onceWrapper);
49
+ }
50
+ /**
51
+ * Remove all event listeners
52
+ * @template K Event name type
53
+ * @param event Optional event name to remove listeners for. If not provided, removes all listeners for all events
54
+ */
55
+ removeAllListeners(event) {
56
+ if (event) {
57
+ delete this.events[event];
58
+ }
59
+ else {
60
+ this.events = {};
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACvB,2CAA2C;IACnC,MAAM,GAA4D,EAAE,CAAC;IAE7E;;;;;OAKG;IACH,EAAE,CAAoB,KAAQ,EAAE,QAAiC;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAoB,KAAQ,EAAE,OAAa;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAoB,KAAQ,EAAE,QAAiC;QAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAoB,KAAQ,EAAE,QAAiC;QACjE,MAAM,WAAW,GAAG,CAAC,OAAa,EAAE,EAAE;YACpC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAoB,KAAS;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ export declare const erc20abi: string[];
2
+ export declare const bridgeAbi: string[];
3
+ export declare const nftAbi: {
4
+ inputs: {
5
+ internalType: string;
6
+ name: string;
7
+ type: string;
8
+ }[];
9
+ name: string;
10
+ outputs: {
11
+ internalType: string;
12
+ name: string;
13
+ type: string;
14
+ }[];
15
+ stateMutability: string;
16
+ type: string;
17
+ }[];
@@ -0,0 +1,38 @@
1
+ export const erc20abi = [
2
+ "function name() public view returns (string)",
3
+ "function symbol() public view returns (string)",
4
+ "function decimals() public view returns (uint8)",
5
+ "function totalSupply() public view returns (uint256)",
6
+ "function balanceOf(address _owner) public view returns (uint256 balance)",
7
+ "function transfer(address _to, uint256 _value) public returns (bool success)",
8
+ "function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)",
9
+ "function approve(address _spender, uint256 _value) public returns (bool success)",
10
+ "function allowance(address _owner, address _spender) public view returns (uint256 remaining)",
11
+ ];
12
+ export const bridgeAbi = [
13
+ "function multi_deposit(bytes memory receiver, address contract_id, uint256[] memory tokenIds)",
14
+ "function deposit(bytes memory receiver, address contract_id, uint256 tokenId)",
15
+ ];
16
+ export const nftAbi = [
17
+ {
18
+ inputs: [
19
+ { internalType: "address", name: "operator", type: "address" },
20
+ { internalType: "bool", name: "approved", type: "bool" },
21
+ ],
22
+ name: "setApprovalForAll",
23
+ stateMutability: "nonpayable",
24
+ type: "function",
25
+ outputs: [],
26
+ },
27
+ {
28
+ inputs: [
29
+ { internalType: "address", name: "account", type: "address" },
30
+ { internalType: "address", name: "operator", type: "address" },
31
+ ],
32
+ name: "isApprovedForAll",
33
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
34
+ stateMutability: "view",
35
+ type: "function",
36
+ },
37
+ ];
38
+ //# sourceMappingURL=abi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/evm/abi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,8CAA8C;IAC9C,gDAAgD;IAChD,iDAAiD;IACjD,sDAAsD;IACtD,0EAA0E;IAC1E,8EAA8E;IAC9E,iGAAiG;IACjG,kFAAkF;IAClF,8FAA8F;CAC/F,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,+FAA+F;IAC/F,+EAA+E;CAChF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9D,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;SACzD;QACD,IAAI,EAAE,mBAAmB;QACzB,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;KACZ;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;SAC/D;QACD,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC"}
@@ -0,0 +1,35 @@
1
+ import MetaMaskSDK from "@metamask/sdk";
2
+ import { ConnectorType, OmniConnector, OmniConnectorOptions } from "../OmniConnector";
3
+ import { WalletType } from "../omni/config";
4
+ import { HotConnector } from "../HotConnector";
5
+ import EvmWallet, { EvmProvider } from "./wallet";
6
+ export interface EvmConnectorOptions extends OmniConnectorOptions {
7
+ chains?: number[];
8
+ }
9
+ declare class EvmConnector extends OmniConnector<EvmWallet, {
10
+ provider: EvmProvider;
11
+ }> {
12
+ readonly settings: EvmConnectorOptions;
13
+ icon: string;
14
+ walletTypes: WalletType[];
15
+ type: ConnectorType;
16
+ name: string;
17
+ chains: number[];
18
+ id: string;
19
+ MMSDK: MetaMaskSDK;
20
+ constructor(wibe3: HotConnector, settings?: EvmConnectorOptions);
21
+ setupWalletConnect(): Promise<EvmWallet>;
22
+ connectWallet(id: string, provider: EvmProvider): Promise<EvmWallet>;
23
+ getConnectedWallet(): Promise<{
24
+ type?: string;
25
+ id?: string;
26
+ address?: string;
27
+ publicKey?: string;
28
+ }>;
29
+ connect(id: string): Promise<{
30
+ qrcode: string;
31
+ deeplink?: string;
32
+ task: Promise<import("..").OmniWallet>;
33
+ } | EvmWallet>;
34
+ }
35
+ export default EvmConnector;