@ksangkuk10/wallet-controller 1.7.14

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 (124) hide show
  1. package/README.md +7 -0
  2. package/_commonjs/controller.js +704 -0
  3. package/_commonjs/env.js +9 -0
  4. package/_commonjs/exception/isError.js +15 -0
  5. package/_commonjs/exception/mapExtensionTxError.js +46 -0
  6. package/_commonjs/exception/mapWalletConnectError.js +69 -0
  7. package/_commonjs/getChainOptions.js +57 -0
  8. package/_commonjs/index.js +22 -0
  9. package/_commonjs/modules/connect-modal/index.js +80 -0
  10. package/_commonjs/modules/connect-modal/style.js +161 -0
  11. package/_commonjs/modules/extension-router/ExtensionRouter.js +241 -0
  12. package/_commonjs/modules/extension-router/index.js +19 -0
  13. package/_commonjs/modules/extension-router/modal.js +80 -0
  14. package/_commonjs/modules/extension-router/modal.style.js +161 -0
  15. package/_commonjs/modules/extension-router/multiChannel.js +18 -0
  16. package/_commonjs/modules/extension-router/session.js +37 -0
  17. package/_commonjs/modules/extension-router/types.js +16 -0
  18. package/_commonjs/modules/legacy-extension/LegacyExtensionConnector.js +143 -0
  19. package/_commonjs/modules/legacy-extension/createFixedExtension.js +236 -0
  20. package/_commonjs/modules/legacy-extension/index.js +19 -0
  21. package/_commonjs/modules/readonly-wallet/connect.js +24 -0
  22. package/_commonjs/modules/readonly-wallet/index.js +20 -0
  23. package/_commonjs/modules/readonly-wallet/modal.js +123 -0
  24. package/_commonjs/modules/readonly-wallet/modal.style.js +204 -0
  25. package/_commonjs/modules/readonly-wallet/storage.js +40 -0
  26. package/_commonjs/modules/readonly-wallet/types.js +3 -0
  27. package/_commonjs/modules/walletconnect/connect.js +421 -0
  28. package/_commonjs/modules/walletconnect/errors.js +51 -0
  29. package/_commonjs/modules/walletconnect/impl/socket-transport/index.js +204 -0
  30. package/_commonjs/modules/walletconnect/impl/socket-transport/network.js +30 -0
  31. package/_commonjs/modules/walletconnect/index.js +22 -0
  32. package/_commonjs/modules/walletconnect/modal.js +147 -0
  33. package/_commonjs/modules/walletconnect/modal.style.js +138 -0
  34. package/_commonjs/modules/walletconnect/types.js +13 -0
  35. package/_commonjs/operators/getExtensions.js +55 -0
  36. package/_commonjs/operators/toConnectedWallet.js +24 -0
  37. package/_commonjs/operators/toLcdClient.js +15 -0
  38. package/_commonjs/utils/browser-check.js +47 -0
  39. package/_commonjs/utils/checkExtensionReady.js +28 -0
  40. package/_commonjs/utils/sortConnections.js +13 -0
  41. package/_commonjs/verifyBytes.js +19 -0
  42. package/controller.d.ts +220 -0
  43. package/controller.js +697 -0
  44. package/env.d.ts +2 -0
  45. package/env.js +5 -0
  46. package/exception/isError.d.ts +3 -0
  47. package/exception/isError.js +11 -0
  48. package/exception/mapExtensionTxError.d.ts +5 -0
  49. package/exception/mapExtensionTxError.js +41 -0
  50. package/exception/mapWalletConnectError.d.ts +6 -0
  51. package/exception/mapWalletConnectError.js +63 -0
  52. package/getChainOptions.d.ts +3 -0
  53. package/getChainOptions.js +53 -0
  54. package/index.d.ts +6 -0
  55. package/index.js +6 -0
  56. package/modules/connect-modal/index.d.ts +2 -0
  57. package/modules/connect-modal/index.js +76 -0
  58. package/modules/connect-modal/style.d.ts +1 -0
  59. package/modules/connect-modal/style.js +158 -0
  60. package/modules/extension-router/ExtensionRouter.d.ts +43 -0
  61. package/modules/extension-router/ExtensionRouter.js +237 -0
  62. package/modules/extension-router/index.d.ts +2 -0
  63. package/modules/extension-router/index.js +3 -0
  64. package/modules/extension-router/modal.d.ts +2 -0
  65. package/modules/extension-router/modal.js +76 -0
  66. package/modules/extension-router/modal.style.d.ts +1 -0
  67. package/modules/extension-router/modal.style.js +158 -0
  68. package/modules/extension-router/multiChannel.d.ts +13 -0
  69. package/modules/extension-router/multiChannel.js +14 -0
  70. package/modules/extension-router/session.d.ts +8 -0
  71. package/modules/extension-router/session.js +31 -0
  72. package/modules/extension-router/types.d.ts +35 -0
  73. package/modules/extension-router/types.js +13 -0
  74. package/modules/legacy-extension/LegacyExtensionConnector.d.ts +30 -0
  75. package/modules/legacy-extension/LegacyExtensionConnector.js +139 -0
  76. package/modules/legacy-extension/createFixedExtension.d.ts +46 -0
  77. package/modules/legacy-extension/createFixedExtension.js +232 -0
  78. package/modules/legacy-extension/index.d.ts +2 -0
  79. package/modules/legacy-extension/index.js +3 -0
  80. package/modules/readonly-wallet/connect.d.ts +8 -0
  81. package/modules/readonly-wallet/connect.js +19 -0
  82. package/modules/readonly-wallet/index.d.ts +3 -0
  83. package/modules/readonly-wallet/index.js +4 -0
  84. package/modules/readonly-wallet/modal.d.ts +7 -0
  85. package/modules/readonly-wallet/modal.js +119 -0
  86. package/modules/readonly-wallet/modal.style.d.ts +1 -0
  87. package/modules/readonly-wallet/modal.style.js +201 -0
  88. package/modules/readonly-wallet/storage.d.ts +4 -0
  89. package/modules/readonly-wallet/storage.js +34 -0
  90. package/modules/readonly-wallet/types.d.ts +5 -0
  91. package/modules/readonly-wallet/types.js +2 -0
  92. package/modules/walletconnect/connect.d.ts +42 -0
  93. package/modules/walletconnect/connect.js +390 -0
  94. package/modules/walletconnect/errors.d.ts +22 -0
  95. package/modules/walletconnect/errors.js +41 -0
  96. package/modules/walletconnect/impl/socket-transport/index.d.ts +39 -0
  97. package/modules/walletconnect/impl/socket-transport/index.js +199 -0
  98. package/modules/walletconnect/impl/socket-transport/network.d.ts +8 -0
  99. package/modules/walletconnect/impl/socket-transport/network.js +28 -0
  100. package/modules/walletconnect/index.d.ts +5 -0
  101. package/modules/walletconnect/index.js +6 -0
  102. package/modules/walletconnect/modal.d.ts +12 -0
  103. package/modules/walletconnect/modal.js +143 -0
  104. package/modules/walletconnect/modal.style.d.ts +1 -0
  105. package/modules/walletconnect/modal.style.js +135 -0
  106. package/modules/walletconnect/types.d.ts +24 -0
  107. package/modules/walletconnect/types.js +10 -0
  108. package/operators/getExtensions.d.ts +9 -0
  109. package/operators/getExtensions.js +51 -0
  110. package/operators/toConnectedWallet.d.ts +4 -0
  111. package/operators/toConnectedWallet.js +20 -0
  112. package/operators/toLcdClient.d.ts +4 -0
  113. package/operators/toLcdClient.js +11 -0
  114. package/package.json +550 -0
  115. package/utils/browser-check.d.ts +3 -0
  116. package/utils/browser-check.js +38 -0
  117. package/utils/checkExtensionReady.d.ts +6 -0
  118. package/utils/checkExtensionReady.js +24 -0
  119. package/utils/sortConnections.d.ts +2 -0
  120. package/utils/sortConnections.js +9 -0
  121. package/verifyBytes.d.ts +4 -0
  122. package/verifyBytes.js +15 -0
  123. package/~/.npm/_cacache/content-v2/sha512/ad/b5/8c87dfae7c208906a88f1997b323933e7efb4e481bcfdc559cb13199d077e1b40abcb161561a293ca59cd98aae224cd0877555e6e7a2e11021bc55ebedf4 +0 -0
  124. package/~/.npm/_cacache/index-v5/6a/39/c03f62d7353a7cc1411e180ec37c393f9fedcfd081fa567f67bf32e6fb68 +2 -0
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getExtensions = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const fetch_1 = require("rxjs/fetch");
6
+ const operators_1 = require("rxjs/operators");
7
+ const browser_check_1 = require("../utils/browser-check");
8
+ const FALLBACK = {
9
+ whitelist: [
10
+ {
11
+ name: 'XPLA Vault Wallet',
12
+ identifier: 'xplavault',
13
+ icon: 'https://assets.xpla.io/icon/extension/icon.png',
14
+ urls: [
15
+ {
16
+ browser: 'chrome',
17
+ url: 'https://chrome.google.com/webstore/detail/xpla-vault-wallet/ocjobpilfplciaddcbafabcegbilnbnb',
18
+ },
19
+ {
20
+ browser: 'firefox',
21
+ url: 'https://addons.mozilla.org/ko/firefox/addon/xpla-vault-wallet',
22
+ },
23
+ ],
24
+ },
25
+ ],
26
+ };
27
+ function getExtensions() {
28
+ const currentBrowser = (0, browser_check_1.getDesktopBrowserType)(navigator.userAgent);
29
+ if (!currentBrowser) {
30
+ return (0, rxjs_1.of)([]);
31
+ }
32
+ return (0, fetch_1.fromFetch)('https://assets.xpla.io/extensions.json').pipe((0, rxjs_1.switchMap)((res) => {
33
+ if (res.ok) {
34
+ return res.json();
35
+ }
36
+ else {
37
+ return (0, rxjs_1.of)(FALLBACK);
38
+ }
39
+ }), (0, operators_1.catchError)(() => {
40
+ return (0, rxjs_1.of)(FALLBACK);
41
+ }), (0, operators_1.map)(({ whitelist }) => {
42
+ return whitelist
43
+ .filter(({ urls }) => urls.some(({ browser }) => currentBrowser === browser))
44
+ .map(({ name, identifier, icon, urls }) => {
45
+ return {
46
+ name,
47
+ identifier,
48
+ icon,
49
+ url: urls.find(({ browser }) => currentBrowser === browser).url,
50
+ };
51
+ });
52
+ }));
53
+ }
54
+ exports.getExtensions = getExtensions;
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0RXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci9vcGVyYXRvcnMvZ2V0RXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBaUQ7QUFDakQsc0NBQXVDO0FBQ3ZDLDhDQUFpRDtBQUNqRCwwREFBK0Q7QUFjL0QsTUFBTSxRQUFRLEdBQWU7SUFDM0IsU0FBUyxFQUFFO1FBQ1Q7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLElBQUksRUFBRSxnREFBZ0Q7WUFDdEQsSUFBSSxFQUFFO2dCQUNKO29CQUNFLE9BQU8sRUFBRSxRQUFRO29CQUNqQixHQUFHLEVBQUUsOEZBQThGO2lCQUNwRztnQkFDRDtvQkFDRSxPQUFPLEVBQUUsU0FBUztvQkFDbEIsR0FBRyxFQUFFLCtEQUErRDtpQkFDckU7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBU0YsU0FBZ0IsYUFBYTtJQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFBLHFDQUFxQixFQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVsRSxJQUFJLENBQUMsY0FBYyxFQUFFO1FBQ25CLE9BQU8sSUFBQSxTQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7S0FDZjtJQUVELE9BQU8sSUFBQSxpQkFBUyxFQUFDLHdDQUF3QyxDQUFDLENBQUMsSUFBSSxDQUs3RCxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNoQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDVixPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNuQjthQUFNO1lBQ0wsT0FBTyxJQUFBLFNBQUUsRUFBQyxRQUFRLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUMsQ0FBQyxFQUNGLElBQUEsc0JBQVUsRUFBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLElBQUEsU0FBRSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxFQUNGLElBQUEsZUFBRyxFQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1FBQ3BCLE9BQU8sU0FBUzthQUNiLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBQyxDQUN2RDthQUNBLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUN4QyxPQUFPO2dCQUNMLElBQUk7Z0JBQ0osVUFBVTtnQkFDVixJQUFJO2dCQUNKLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBRSxDQUFDLEdBQUc7YUFDakUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFyQ0Qsc0NBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZnJvbUZldGNoIH0gZnJvbSAncnhqcy9mZXRjaCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXREZXNrdG9wQnJvd3NlclR5cGUgfSBmcm9tICcuLi91dGlscy9icm93c2VyLWNoZWNrJztcblxuaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICB3aGl0ZWxpc3Q6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaWRlbnRpZmllcjogc3RyaW5nO1xuICAgIGljb246IHN0cmluZztcbiAgICB1cmxzOiBBcnJheTx7XG4gICAgICBicm93c2VyOiAnY2hyb21lJyB8ICdlZGdlJyB8ICdmaXJlZm94JyB8ICdzYWZhcmknO1xuICAgICAgdXJsOiBzdHJpbmc7XG4gICAgfT47XG4gIH0+O1xufVxuXG5jb25zdCBGQUxMQkFDSzogRXh0ZW5zaW9ucyA9IHtcbiAgd2hpdGVsaXN0OiBbXG4gICAge1xuICAgICAgbmFtZTogJ1hQTEEgVmF1bHQgV2FsbGV0JyxcbiAgICAgIGlkZW50aWZpZXI6ICd4cGxhdmF1bHQnLFxuICAgICAgaWNvbjogJ2h0dHBzOi8vYXNzZXRzLnhwbGEuaW8vaWNvbi9leHRlbnNpb24vaWNvbi5wbmcnLFxuICAgICAgdXJsczogW1xuICAgICAgICB7XG4gICAgICAgICAgYnJvd3NlcjogJ2Nocm9tZScsXG4gICAgICAgICAgdXJsOiAnaHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwveHBsYS12YXVsdC13YWxsZXQvb2Nqb2JwaWxmcGxjaWFkZGNiYWZhYmNlZ2JpbG5ibmInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYnJvd3NlcjogJ2ZpcmVmb3gnLFxuICAgICAgICAgIHVybDogJ2h0dHBzOi8vYWRkb25zLm1vemlsbGEub3JnL2tvL2ZpcmVmb3gvYWRkb24veHBsYS12YXVsdC13YWxsZXQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxuaW50ZXJmYWNlIEluc3RhbGxhYmxlRXh0ZW5zaW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25zKCk6IE9ic2VydmFibGU8SW5zdGFsbGFibGVFeHRlbnNpb25bXT4ge1xuICBjb25zdCBjdXJyZW50QnJvd3NlciA9IGdldERlc2t0b3BCcm93c2VyVHlwZShuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuICBpZiAoIWN1cnJlbnRCcm93c2VyKSB7XG4gICAgcmV0dXJuIG9mKFtdKTtcbiAgfVxuXG4gIHJldHVybiBmcm9tRmV0Y2goJ2h0dHBzOi8vYXNzZXRzLnhwbGEuaW8vZXh0ZW5zaW9ucy5qc29uJykucGlwZTxcbiAgICBFeHRlbnNpb25zLFxuICAgIEV4dGVuc2lvbnMsXG4gICAgSW5zdGFsbGFibGVFeHRlbnNpb25bXVxuICA+KFxuICAgIHN3aXRjaE1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgIHJldHVybiByZXMuanNvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKEZBTExCQUNLKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgIHJldHVybiBvZihGQUxMQkFDSyk7XG4gICAgfSksXG4gICAgbWFwKCh7IHdoaXRlbGlzdCB9KSA9PiB7XG4gICAgICByZXR1cm4gd2hpdGVsaXN0XG4gICAgICAgIC5maWx0ZXIoKHsgdXJscyB9KSA9PlxuICAgICAgICAgIHVybHMuc29tZSgoeyBicm93c2VyIH0pID0+IGN1cnJlbnRCcm93c2VyID09PSBicm93c2VyKSxcbiAgICAgICAgKVxuICAgICAgICAubWFwKCh7IG5hbWUsIGlkZW50aWZpZXIsIGljb24sIHVybHMgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICB1cmw6IHVybHMuZmluZCgoeyBicm93c2VyIH0pID0+IGN1cnJlbnRCcm93c2VyID09PSBicm93c2VyKSEudXJsLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0pLFxuICApO1xufVxuIl19
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toConnectedWallet = void 0;
4
+ const wallet_types_1 = require("@ksangkuk10/wallet-types");
5
+ const operators_1 = require("rxjs/operators");
6
+ function toConnectedWallet(controller) {
7
+ return (0, operators_1.map)((states) => {
8
+ if (states.status === wallet_types_1.WalletStatus.WALLET_CONNECTED) {
9
+ return (0, wallet_types_1.createConnectedWallet)({
10
+ connection: states.connection,
11
+ network: states.network,
12
+ wallets: states.wallets,
13
+ post: controller.post,
14
+ sign: controller.sign,
15
+ signBytes: controller.signBytes,
16
+ supportFeatures: states.supportFeatures,
17
+ status: states.status,
18
+ });
19
+ }
20
+ return undefined;
21
+ });
22
+ }
23
+ exports.toConnectedWallet = toConnectedWallet;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9Db25uZWN0ZWRXYWxsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvb3BlcmF0b3JzL3RvQ29ubmVjdGVkV2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUtrQztBQUVsQyw4Q0FBcUM7QUFHckMsU0FBZ0IsaUJBQWlCLENBQy9CLFVBQTRCO0lBRTVCLE9BQU8sSUFBQSxlQUFHLEVBQTRDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDL0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLDJCQUFZLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkQsT0FBTyxJQUFBLG9DQUFxQixFQUFDO2dCQUMzQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN2QixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO2dCQUMvQixlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7Z0JBQ3ZDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTthQUN0QixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWxCRCw4Q0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25uZWN0ZWRXYWxsZXQsXG4gIGNyZWF0ZUNvbm5lY3RlZFdhbGxldCxcbiAgV2FsbGV0U3RhdGVzLFxuICBXYWxsZXRTdGF0dXMsXG59IGZyb20gJ0Brc2FuZ2t1azEwL3dhbGxldC10eXBlcyc7XG5pbXBvcnQgeyBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBXYWxsZXRDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0Nvbm5lY3RlZFdhbGxldChcbiAgY29udHJvbGxlcjogV2FsbGV0Q29udHJvbGxlcixcbik6IE9wZXJhdG9yRnVuY3Rpb248V2FsbGV0U3RhdGVzLCBDb25uZWN0ZWRXYWxsZXQgfCB1bmRlZmluZWQ+IHtcbiAgcmV0dXJuIG1hcDxXYWxsZXRTdGF0ZXMsIENvbm5lY3RlZFdhbGxldCB8IHVuZGVmaW5lZD4oKHN0YXRlcykgPT4ge1xuICAgIGlmIChzdGF0ZXMuc3RhdHVzID09PSBXYWxsZXRTdGF0dXMuV0FMTEVUX0NPTk5FQ1RFRCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbm5lY3RlZFdhbGxldCh7XG4gICAgICAgIGNvbm5lY3Rpb246IHN0YXRlcy5jb25uZWN0aW9uLFxuICAgICAgICBuZXR3b3JrOiBzdGF0ZXMubmV0d29yayxcbiAgICAgICAgd2FsbGV0czogc3RhdGVzLndhbGxldHMsXG4gICAgICAgIHBvc3Q6IGNvbnRyb2xsZXIucG9zdCxcbiAgICAgICAgc2lnbjogY29udHJvbGxlci5zaWduLFxuICAgICAgICBzaWduQnl0ZXM6IGNvbnRyb2xsZXIuc2lnbkJ5dGVzLFxuICAgICAgICBzdXBwb3J0RmVhdHVyZXM6IHN0YXRlcy5zdXBwb3J0RmVhdHVyZXMsXG4gICAgICAgIHN0YXR1czogc3RhdGVzLnN0YXR1cyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toLcdClient = void 0;
4
+ const wallet_types_1 = require("@ksangkuk10/wallet-types");
5
+ const operators_1 = require("rxjs/operators");
6
+ function toLcdClient(lcdClientConfig) {
7
+ return (0, operators_1.map)((states) => {
8
+ return (0, wallet_types_1.createLCDClient)({
9
+ lcdClientConfig,
10
+ network: states.network,
11
+ });
12
+ });
13
+ }
14
+ exports.toLcdClient = toLcdClient;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9MY2RDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvb3BlcmF0b3JzL3RvTGNkQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUlrQztBQUdsQyw4Q0FBcUM7QUFFckMsU0FBZ0IsV0FBVyxDQUN6QixlQUF1QztJQUV2QyxPQUFPLElBQUEsZUFBRyxFQUEwQixDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQzdDLE9BQU8sSUFBQSw4QkFBZSxFQUFDO1lBQ3JCLGVBQWU7WUFDZixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBVEQsa0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVMQ0RDbGllbnQsXG4gIFdhbGxldExDRENsaWVudENvbmZpZyxcbiAgV2FsbGV0U3RhdGVzLFxufSBmcm9tICdAa3NhbmdrdWsxMC93YWxsZXQtdHlwZXMnO1xuaW1wb3J0IHsgTENEQ2xpZW50IH0gZnJvbSAnQHhwbGEveHBsYS5qcyc7XG5pbXBvcnQgeyBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0xjZENsaWVudChcbiAgbGNkQ2xpZW50Q29uZmlnPzogV2FsbGV0TENEQ2xpZW50Q29uZmlnLFxuKTogT3BlcmF0b3JGdW5jdGlvbjxXYWxsZXRTdGF0ZXMsIExDRENsaWVudD4ge1xuICByZXR1cm4gbWFwPFdhbGxldFN0YXRlcywgTENEQ2xpZW50Pigoc3RhdGVzKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUxDRENsaWVudCh7XG4gICAgICBsY2RDbGllbnRDb25maWcsXG4gICAgICBuZXR3b3JrOiBzdGF0ZXMubmV0d29yayxcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getDesktopBrowserType = exports.isDesktopChrome = exports.isMobile = void 0;
7
+ const bowser_1 = __importDefault(require("bowser"));
8
+ const mobile_detect_1 = __importDefault(require("mobile-detect"));
9
+ const isMobile = () => {
10
+ const mobileDetect = new mobile_detect_1.default(navigator.userAgent);
11
+ return !!mobileDetect.os();
12
+ };
13
+ exports.isMobile = isMobile;
14
+ const isDesktopChrome = (isChromeExtensionCompatibleBrowser) => {
15
+ const userAgent = navigator.userAgent;
16
+ if (isChromeExtensionCompatibleBrowser) {
17
+ return true;
18
+ }
19
+ const browser = bowser_1.default.getParser(userAgent);
20
+ const mobileDetect = new mobile_detect_1.default(navigator.userAgent);
21
+ return !!(browser.satisfies({
22
+ chrome: '>60',
23
+ edge: '>80',
24
+ }) && !mobileDetect.os());
25
+ };
26
+ exports.isDesktopChrome = isDesktopChrome;
27
+ const getDesktopBrowserType = (userAgent) => {
28
+ const browser = bowser_1.default.getParser(userAgent);
29
+ const mobileDetect = new mobile_detect_1.default(navigator.userAgent);
30
+ if (!!mobileDetect.mobile()) {
31
+ return null;
32
+ }
33
+ if (browser.satisfies({ chrome: '>60', chromium: '>60' })) {
34
+ return 'chrome';
35
+ }
36
+ else if (browser.satisfies({ firefox: '>=60' })) {
37
+ return 'firefox';
38
+ }
39
+ else if (browser.satisfies({ edge: '>80' })) {
40
+ return 'edge';
41
+ }
42
+ else {
43
+ return null;
44
+ }
45
+ };
46
+ exports.getDesktopBrowserType = getDesktopBrowserType;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1jaGVjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci91dGlscy9icm93c2VyLWNoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixrRUFBeUM7QUFFbEMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksdUJBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFM0QsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUpXLFFBQUEsUUFBUSxZQUluQjtBQUVLLE1BQU0sZUFBZSxHQUFHLENBQzdCLGtDQUEyQyxFQUNsQyxFQUFFO0lBQ1gsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUV0QyxJQUFJLGtDQUFrQyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxNQUFNLFlBQVksR0FBRyxJQUFJLHVCQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTNELE9BQU8sQ0FBQyxDQUFDLENBQ1AsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNoQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxLQUFLO0tBQ1osQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUN6QixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBbEJXLFFBQUEsZUFBZSxtQkFrQjFCO0FBRUssTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxTQUFpQixFQUNnQyxFQUFFO0lBQ25ELE1BQU0sT0FBTyxHQUFHLGdCQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sWUFBWSxHQUFHLElBQUksdUJBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFM0QsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQ3pELE9BQU8sUUFBUSxDQUFDO0tBQ2pCO1NBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7UUFDakQsT0FBTyxTQUFTLENBQUM7S0FDbEI7U0FBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtRQUM3QyxPQUFPLE1BQU0sQ0FBQztLQUNmO1NBQU07UUFDTCxPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQyxDQUFDO0FBbkJXLFFBQUEscUJBQXFCLHlCQW1CaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYm93c2VyIGZyb20gJ2Jvd3Nlcic7XG5pbXBvcnQgTW9iaWxlRGV0ZWN0IGZyb20gJ21vYmlsZS1kZXRlY3QnO1xuXG5leHBvcnQgY29uc3QgaXNNb2JpbGUgPSAoKSA9PiB7XG4gIGNvbnN0IG1vYmlsZURldGVjdCA9IG5ldyBNb2JpbGVEZXRlY3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbiAgcmV0dXJuICEhbW9iaWxlRGV0ZWN0Lm9zKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEZXNrdG9wQ2hyb21lID0gKFxuICBpc0Nocm9tZUV4dGVuc2lvbkNvbXBhdGlibGVCcm93c2VyOiBib29sZWFuLFxuKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgaWYgKGlzQ2hyb21lRXh0ZW5zaW9uQ29tcGF0aWJsZUJyb3dzZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGJyb3dzZXIgPSBib3dzZXIuZ2V0UGFyc2VyKHVzZXJBZ2VudCk7XG4gIGNvbnN0IG1vYmlsZURldGVjdCA9IG5ldyBNb2JpbGVEZXRlY3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbiAgcmV0dXJuICEhKFxuICAgIGJyb3dzZXIuc2F0aXNmaWVzKHtcbiAgICAgIGNocm9tZTogJz42MCcsXG4gICAgICBlZGdlOiAnPjgwJyxcbiAgICB9KSAmJiAhbW9iaWxlRGV0ZWN0Lm9zKClcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZXNrdG9wQnJvd3NlclR5cGUgPSAoXG4gIHVzZXJBZ2VudDogc3RyaW5nLFxuKTogJ2Nocm9tZScgfCAnZWRnZScgfCAnZmlyZWZveCcgfCAnc2FmYXJpJyB8IG51bGwgPT4ge1xuICBjb25zdCBicm93c2VyID0gYm93c2VyLmdldFBhcnNlcih1c2VyQWdlbnQpO1xuICBjb25zdCBtb2JpbGVEZXRlY3QgPSBuZXcgTW9iaWxlRGV0ZWN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4gIGlmICghIW1vYmlsZURldGVjdC5tb2JpbGUoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGJyb3dzZXIuc2F0aXNmaWVzKHsgY2hyb21lOiAnPjYwJywgY2hyb21pdW06ICc+NjAnIH0pKSB7XG4gICAgcmV0dXJuICdjaHJvbWUnO1xuICB9IGVsc2UgaWYgKGJyb3dzZXIuc2F0aXNmaWVzKHsgZmlyZWZveDogJz49NjAnIH0pKSB7XG4gICAgcmV0dXJuICdmaXJlZm94JztcbiAgfSBlbHNlIGlmIChicm93c2VyLnNhdGlzZmllcyh7IGVkZ2U6ICc+ODAnIH0pKSB7XG4gICAgcmV0dXJuICdlZGdlJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkExtensionReady = void 0;
4
+ const interval = 500;
5
+ async function checkExtensionReady(timeout, isChromeExtensionCompatibleBrowser) {
6
+ return new Promise((resolve) => {
7
+ if (isChromeExtensionCompatibleBrowser) {
8
+ resolve(true);
9
+ return;
10
+ }
11
+ const start = Date.now();
12
+ function check() {
13
+ if (window.isXplaExtensionAvailable === true ||
14
+ Array.isArray(window.xplaWallets)) {
15
+ resolve(true);
16
+ }
17
+ else if (Date.now() > start + timeout) {
18
+ resolve(false);
19
+ }
20
+ else {
21
+ setTimeout(check, interval);
22
+ }
23
+ }
24
+ setTimeout(check, interval);
25
+ });
26
+ }
27
+ exports.checkExtensionReady = checkExtensionReady;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tFeHRlbnNpb25SZWFkeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci91dGlscy9jaGVja0V4dGVuc2lvblJlYWR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztBQVFkLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsT0FBZSxFQUNmLGtDQUEyQztJQUUzQyxPQUFPLElBQUksT0FBTyxDQUFVLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDdEMsSUFBSSxrQ0FBa0MsRUFBRTtZQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDZCxPQUFPO1NBQ1I7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFekIsU0FBUyxLQUFLO1lBQ1osSUFDRSxNQUFNLENBQUMsd0JBQXdCLEtBQUssSUFBSTtnQkFDeEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQ2pDO2dCQUNBLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNmO2lCQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxPQUFPLEVBQUU7Z0JBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNoQjtpQkFBTTtnQkFDTCxVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQztRQUVELFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBM0JELGtEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGludGVydmFsID0gNTAwO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIGlzWHBsYUV4dGVuc2lvbkF2YWlsYWJsZTogYm9vbGVhbjtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tFeHRlbnNpb25SZWFkeShcbiAgdGltZW91dDogbnVtYmVyLFxuICBpc0Nocm9tZUV4dGVuc2lvbkNvbXBhdGlibGVCcm93c2VyOiBib29sZWFuLFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChpc0Nocm9tZUV4dGVuc2lvbkNvbXBhdGlibGVCcm93c2VyKSB7XG4gICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgIGZ1bmN0aW9uIGNoZWNrKCkge1xuICAgICAgaWYgKFxuICAgICAgICB3aW5kb3cuaXNYcGxhRXh0ZW5zaW9uQXZhaWxhYmxlID09PSB0cnVlIHx8XG4gICAgICAgIEFycmF5LmlzQXJyYXkod2luZG93LnhwbGFXYWxsZXRzKVxuICAgICAgKSB7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKERhdGUubm93KCkgPiBzdGFydCArIHRpbWVvdXQpIHtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGNoZWNrLCBpbnRlcnZhbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGltZW91dChjaGVjaywgaW50ZXJ2YWwpO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortConnections = void 0;
4
+ function sortConnections(connections) {
5
+ const vaultIndex = connections.findIndex(({ identifier }) => identifier === 'xplavault');
6
+ if (vaultIndex > -1) {
7
+ const vault = connections.splice(vaultIndex, 1);
8
+ return [...vault, ...connections];
9
+ }
10
+ return connections;
11
+ }
12
+ exports.sortConnections = sortConnections;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydENvbm5lY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0Brc2FuZ2t1azEwL3dhbGxldC1jb250cm9sbGVyL3V0aWxzL3NvcnRDb25uZWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxTQUFnQixlQUFlLENBQUMsV0FBeUI7SUFDdkQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FDdEMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEtBQUssV0FBVyxDQUMvQyxDQUFDO0lBRUYsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBWEQsMENBV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uIH0gZnJvbSAnQGtzYW5na3VrMTAvd2FsbGV0LXR5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRDb25uZWN0aW9ucyhjb25uZWN0aW9uczogQ29ubmVjdGlvbltdKTogQ29ubmVjdGlvbltdIHtcbiAgY29uc3QgdmF1bHRJbmRleCA9IGNvbm5lY3Rpb25zLmZpbmRJbmRleChcbiAgICAoeyBpZGVudGlmaWVyIH0pID0+IGlkZW50aWZpZXIgPT09ICd4cGxhdmF1bHQnLFxuICApO1xuXG4gIGlmICh2YXVsdEluZGV4ID4gLTEpIHtcbiAgICBjb25zdCB2YXVsdCA9IGNvbm5lY3Rpb25zLnNwbGljZSh2YXVsdEluZGV4LCAxKTtcbiAgICByZXR1cm4gWy4uLnZhdWx0LCAuLi5jb25uZWN0aW9uc107XG4gIH1cblxuICByZXR1cm4gY29ubmVjdGlvbnM7XG59XG4iXX0=
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyBytes = void 0;
4
+ // import { keccak256 } from '@ethersproject/keccak256';
5
+ const sha3_1 = require("@noble/hashes/sha3");
6
+ const secp256k1_1 = require("@noble/secp256k1");
7
+ function verifyBytes(bytes, signBytesResult) {
8
+ var _a;
9
+ const publicKey = (_a = signBytesResult.public_key) === null || _a === void 0 ? void 0 : _a.toProto();
10
+ if (publicKey && 'key' in publicKey) {
11
+ const sig = signBytesResult.signature;
12
+ const hash = (0, sha3_1.keccak_256)(bytes);
13
+ const pubKey = publicKey.key;
14
+ return (0, secp256k1_1.verify)(sig, hash, pubKey);
15
+ }
16
+ return false;
17
+ }
18
+ exports.verifyBytes = verifyBytes;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5Qnl0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvdmVyaWZ5Qnl0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esd0RBQXdEO0FBQ3hELDZDQUFnRDtBQUNoRCxnREFBMEM7QUFFMUMsU0FBZ0IsV0FBVyxDQUN6QixLQUFhLEVBQ2IsZUFBMEM7O0lBRTNDLE1BQU0sU0FBUyxHQUFHLE1BQUEsZUFBZSxDQUFDLFVBQVUsMENBQUUsT0FBTyxFQUFFLENBQUM7SUFFeEQsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLFNBQVMsRUFBRTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUEsaUJBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBRTdCLE9BQU8sSUFBQSxrQkFBTSxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDbEM7SUFFRixPQUFPLEtBQUssQ0FBQztBQUNkLENBQUM7QUFmRCxrQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25CeXRlc1Jlc3VsdCB9IGZyb20gJ0Brc2FuZ2t1azEwL3dhbGxldC10eXBlcyc7XG4vLyBpbXBvcnQgeyBrZWNjYWsyNTYgfSBmcm9tICdAZXRoZXJzcHJvamVjdC9rZWNjYWsyNTYnO1xuaW1wb3J0IHsga2VjY2FrXzI1NiB9IGZyb20gJ0Bub2JsZS9oYXNoZXMvc2hhMyc7XG5pbXBvcnQgeyB2ZXJpZnkgfSBmcm9tICdAbm9ibGUvc2VjcDI1NmsxJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUJ5dGVzKFxuICBieXRlczogQnVmZmVyLFxuICBzaWduQnl0ZXNSZXN1bHQ6IFNpZ25CeXRlc1Jlc3VsdFsncmVzdWx0J10sXG4pOiBib29sZWFuIHtcblx0Y29uc3QgcHVibGljS2V5ID0gc2lnbkJ5dGVzUmVzdWx0LnB1YmxpY19rZXk/LnRvUHJvdG8oKTtcblxuXHRpZiAocHVibGljS2V5ICYmICdrZXknIGluIHB1YmxpY0tleSkge1xuICAgIGNvbnN0IHNpZyA9IHNpZ25CeXRlc1Jlc3VsdC5zaWduYXR1cmU7XG4gICAgY29uc3QgaGFzaCA9IGtlY2Nha18yNTYoYnl0ZXMpO1xuICAgIGNvbnN0IHB1YktleSA9IHB1YmxpY0tleS5rZXk7XG4gICAgXG4gICAgcmV0dXJuIHZlcmlmeShzaWcsIGhhc2gsIHB1YktleSk7XG4gIH1cblxuXHRyZXR1cm4gZmFsc2U7XG59XG4iXX0=
@@ -0,0 +1,220 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { CreateTxOptions, LCDClient, SignMode } from '@xpla/xpla.js';
4
+ import { ConnectedWallet, Connection, ConnectType, Installation, NetworkInfo, SignBytesResult, SignResult, TxResult, WalletApp, WalletLCDClientConfig, WalletStates } from '@ksangkuk10/wallet-types';
5
+ import { Observable } from 'rxjs';
6
+ import { ExtensionInfo } from './modules/extension-router/multiChannel';
7
+ import { ReadonlyWalletSession } from './modules/readonly-wallet';
8
+ import { WalletConnectControllerOptions } from './modules/walletconnect';
9
+ export interface WalletControllerOptions extends WalletConnectControllerOptions {
10
+ /**
11
+ * ⚠️ Don't hardcoding this, use getChain Options()
12
+ *
13
+ * fallback network if controller is not connected
14
+ */
15
+ defaultNetwork: NetworkInfo;
16
+ /**
17
+ * ⚠️ Don't hardcoding this, use getChain Options()
18
+ *
19
+ * for walletconnect
20
+ *
21
+ * The network rules passed by the Xpla Mobile are 0 is testnet, 1 is mainnet.
22
+ *
23
+ * Always set testnet for 0 and mainnet for 1.
24
+ *
25
+ * @example
26
+ * ```
27
+ * const mainnet: NetworkInfo = {
28
+ * name: 'mainnet',
29
+ * chainID: 'dimension-1',
30
+ * lcd: 'https://lcd.xpla.net',
31
+ * }
32
+ *
33
+ * const testnet: NetworkInfo = {
34
+ * name: 'testnet',
35
+ * chainID: 'cube-1',
36
+ * lcd: 'https://lcd.xpla.net',
37
+ * }
38
+ *
39
+ * const walletConnectChainIds: Record<number, NetworkInfo> = {
40
+ * 0: testnet,
41
+ * 1: mainnet,
42
+ * }
43
+ *
44
+ * <WalletProvider walletConnectChainIds={walletConnectChainIds}>
45
+ * ```
46
+ */
47
+ walletConnectChainIds: Record<number, NetworkInfo>;
48
+ /**
49
+ * run at executing the `connect(ConnectType.READONLY)`
50
+ */
51
+ createReadonlyWalletSession?: (networks: NetworkInfo[]) => Promise<ReadonlyWalletSession | null>;
52
+ /**
53
+ * run at executing the `connect()` - only used when does not input ConnectType
54
+ */
55
+ selectConnection?: (connections: Connection[]) => Promise<[type: ConnectType, identifier: string | undefined] | null>;
56
+ /**
57
+ * run at executing the `connect(ConnectType.EXTENSION)`
58
+ * if user installed multiple wallets
59
+ */
60
+ selectExtension?: (extensionInfos: ExtensionInfo[]) => Promise<ExtensionInfo | null>;
61
+ /**
62
+ * milliseconds to wait checking chrome extension is installed
63
+ *
64
+ * @default 1000 * 3 miliseconds
65
+ */
66
+ waitingChromeExtensionInstallCheck?: number;
67
+ /**
68
+ * ⚠️ This API is an option for wallet developers. Please don't use dApp developers.
69
+ *
70
+ * @example
71
+ * ```
72
+ * <WalletProvider dangerously__chromeExtensionCompatibleBrowserCheck={(userAgent: string) => {
73
+ * return /MyWallet\//.test(userAgent);
74
+ * }}>
75
+ * ```
76
+ */
77
+ dangerously__chromeExtensionCompatibleBrowserCheck?: (userAgent: string) => boolean;
78
+ }
79
+ export declare class WalletController {
80
+ readonly options: WalletControllerOptions;
81
+ private extension;
82
+ private walletConnect;
83
+ private readonlyWallet;
84
+ private _availableConnectTypes;
85
+ private _availableInstallTypes;
86
+ private _states;
87
+ private disableReadonlyWallet;
88
+ private disableExtension;
89
+ private disableWalletConnect;
90
+ private readonly _notConnected;
91
+ private readonly _initializing;
92
+ constructor(options: WalletControllerOptions);
93
+ /**
94
+ * Some mobile wallet emulates the behavior of chrome extension.
95
+ * It confirms that the current connection environment is such a wallet.
96
+ * (If you are running connect() by checking availableConnectType, you do not need to use this API.)
97
+ *
98
+ * @see Wallet#isChromeExtensionCompatibleBrowser
99
+ */
100
+ isChromeExtensionCompatibleBrowser: () => boolean;
101
+ /**
102
+ * available connect types on the browser
103
+ *
104
+ * @see Wallet#availableConnectTypes
105
+ */
106
+ availableConnectTypes: () => Observable<ConnectType[]>;
107
+ /**
108
+ * available connections includes identifier, name, icon
109
+ *
110
+ * @see Wallet#availableConnections
111
+ */
112
+ availableConnections: () => Observable<Connection[]>;
113
+ /**
114
+ * available install types on the browser
115
+ *
116
+ * in this time, this only contains [ConnectType.EXTENSION]
117
+ *
118
+ * @see Wallet#availableInstallTypes
119
+ */
120
+ availableInstallTypes: () => Observable<ConnectType[]>;
121
+ /**
122
+ * available installations includes identifier, name, icon, url
123
+ *
124
+ * @see Wallet#availableInstallations
125
+ */
126
+ availableInstallations: () => Observable<Installation[]>;
127
+ /**
128
+ * @see Wallet#status
129
+ * @see Wallet#network
130
+ * @see Wallet#wallets
131
+ */
132
+ states: () => Observable<WalletStates>;
133
+ /** get connectedWallet */
134
+ connectedWallet: () => Observable<ConnectedWallet | undefined>;
135
+ /** get lcdClient */
136
+ lcdClient: (lcdClientConfig?: WalletLCDClientConfig) => Observable<LCDClient>;
137
+ /**
138
+ * reload the connected wallet states
139
+ *
140
+ * in this time, this only work on the ConnectType.EXTENSION
141
+ *
142
+ * @see Wallet#recheckStatus
143
+ */
144
+ refetchStates: () => void;
145
+ /**
146
+ * @deprecated Please use availableInstallations
147
+ *
148
+ * install for the connect type
149
+ *
150
+ * @see Wallet#install
151
+ */
152
+ install: (type: ConnectType) => void;
153
+ /**
154
+ * connect to wallet
155
+ *
156
+ * @see Wallet#connect
157
+ */
158
+ connect: (_type?: ConnectType, _identifier?: string, _walletApp?: WalletApp | boolean) => Promise<void>;
159
+ /**
160
+ * manual connect to read only session
161
+ *
162
+ * @see Wallet#connectReadonly
163
+ */
164
+ connectReadonly: (xplaAddress: string, network: NetworkInfo) => void;
165
+ /** @see Wallet#disconnect */
166
+ disconnect: () => void;
167
+ /**
168
+ * @see Wallet#post
169
+ * @param tx
170
+ * @param xplaAddress only available new extension
171
+ */
172
+ post: (tx: CreateTxOptions, xplaAddress?: string, walletApp?: WalletApp | boolean) => Promise<TxResult>;
173
+ /**
174
+ * @see Wallet#sign
175
+ * @param tx
176
+ * @param xplaAddress only available new extension
177
+ */
178
+ sign: (tx: CreateTxOptions & {
179
+ sequence?: number;
180
+ accountNumber?: number;
181
+ signMode?: SignMode;
182
+ }, xplaAddress?: string, walletApp?: WalletApp | boolean) => Promise<SignResult>;
183
+ /**
184
+ * @see Wallet#signBytes
185
+ * @param bytes
186
+ * @param xplaAddress only available new extension
187
+ */
188
+ signBytes: (bytes: Buffer, xplaAddress?: string, walletApp?: WalletApp | boolean) => Promise<SignBytesResult>;
189
+ /**
190
+ * @see Wallet#hasCW20Tokens
191
+ * @param chainID
192
+ * @param tokenAddrs Token addresses
193
+ */
194
+ hasCW20Tokens: (chainID: string, ...tokenAddrs: string[]) => Promise<{
195
+ [tokenAddr: string]: boolean;
196
+ }>;
197
+ /**
198
+ * @see Wallet#addCW20Tokens
199
+ * @param chainID
200
+ * @param tokenAddrs Token addresses
201
+ */
202
+ addCW20Tokens: (chainID: string, ...tokenAddrs: string[]) => Promise<{
203
+ [tokenAddr: string]: boolean;
204
+ }>;
205
+ /**
206
+ * @see Wallet#hasNetwork
207
+ * @param network
208
+ */
209
+ hasNetwork: (network: Omit<NetworkInfo, 'name'>) => Promise<boolean>;
210
+ /**
211
+ * @see Wallet#hasNetwork
212
+ * @param network
213
+ */
214
+ addNetwork: (network: NetworkInfo) => Promise<boolean>;
215
+ private availableExtensionFeature;
216
+ private updateStates;
217
+ private enableReadonlyWallet;
218
+ private enableExtension;
219
+ private enableWalletConnect;
220
+ }