@subwallet/extension-base 1.3.40-0 → 1.3.42-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/background/KoniTypes.d.ts +121 -4
  2. package/background/KoniTypes.js +18 -0
  3. package/background/errors/BitcoinProviderError.d.ts +6 -0
  4. package/background/errors/BitcoinProviderError.js +47 -0
  5. package/cjs/background/KoniTypes.js +20 -1
  6. package/cjs/background/errors/BitcoinProviderError.js +54 -0
  7. package/cjs/constants/bitcoin.js +22 -0
  8. package/cjs/constants/environment.js +4 -2
  9. package/cjs/constants/index.js +16 -1
  10. package/cjs/core/logic-validation/recipientAddress.js +9 -0
  11. package/cjs/core/logic-validation/transfer.js +25 -5
  12. package/cjs/core/types.js +1 -0
  13. package/cjs/core/utils.js +15 -1
  14. package/cjs/koni/background/handlers/Extension.js +96 -41
  15. package/cjs/koni/background/handlers/State.js +52 -11
  16. package/cjs/packageInfo.js +1 -1
  17. package/cjs/services/balance-service/helpers/subscribe/bitcoin.js +94 -0
  18. package/cjs/services/balance-service/helpers/subscribe/evm.js +6 -1
  19. package/cjs/services/balance-service/helpers/subscribe/index.js +19 -7
  20. package/cjs/services/balance-service/index.js +32 -4
  21. package/cjs/services/balance-service/transfer/bitcoin-transfer.js +119 -0
  22. package/cjs/services/balance-service/transfer/token.js +2 -0
  23. package/cjs/services/balance-service/transfer/xcm/index.js +15 -9
  24. package/cjs/services/balance-service/transfer/xcm/utils.js +12 -14
  25. package/cjs/services/base/types.js +2 -0
  26. package/cjs/services/chain-service/constants.js +18 -6
  27. package/cjs/services/chain-service/handler/CardanoApi.js +25 -35
  28. package/cjs/services/chain-service/handler/bitcoin/BitcoinApi.js +105 -0
  29. package/cjs/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +78 -0
  30. package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +371 -0
  31. package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +19 -0
  32. package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +368 -0
  33. package/cjs/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +302 -0
  34. package/cjs/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
  35. package/cjs/services/chain-service/index.js +27 -3
  36. package/cjs/services/chain-service/utils/index.js +57 -4
  37. package/cjs/services/chain-service/utils/patch.js +1 -1
  38. package/cjs/services/earning-service/handlers/native-staking/tao.js +4 -38
  39. package/cjs/services/event-service/index.js +4 -0
  40. package/cjs/services/fee-service/service.js +8 -3
  41. package/cjs/services/hiro-service/index.js +96 -0
  42. package/cjs/services/hiro-service/utils/index.js +85 -0
  43. package/cjs/services/history-service/bitcoin-history.js +58 -0
  44. package/cjs/services/history-service/helpers/recoverHistoryStatus.js +96 -4
  45. package/cjs/services/history-service/index.js +41 -3
  46. package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
  47. package/cjs/services/keyring-service/context/handlers/Migration.js +2 -2
  48. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +4 -3
  49. package/cjs/services/migration-service/scripts/MigrateNewUnifiedAccount.js +29 -0
  50. package/cjs/services/migration-service/scripts/index.js +3 -1
  51. package/cjs/services/request-service/handler/BitcoinRequestHandler.js +440 -0
  52. package/cjs/services/request-service/index.js +29 -3
  53. package/cjs/services/rune-service/index.js +105 -0
  54. package/cjs/services/swap-service/handler/chainflip-handler.js +29 -18
  55. package/cjs/services/swap-service/handler/kyber-handler.js +5 -9
  56. package/cjs/services/swap-service/handler/simpleswap-handler.js +4 -7
  57. package/cjs/services/swap-service/handler/uniswap-handler.js +5 -12
  58. package/cjs/services/swap-service/utils.js +46 -37
  59. package/cjs/services/transaction-service/helpers/index.js +7 -1
  60. package/cjs/services/transaction-service/index.js +136 -15
  61. package/cjs/services/transaction-service/utils.js +6 -3
  62. package/cjs/strategy/api-request-strategy/context/base.js +31 -0
  63. package/cjs/strategy/api-request-strategy/index.js +90 -0
  64. package/cjs/strategy/api-request-strategy/types.js +1 -0
  65. package/cjs/strategy/api-request-strategy/utils/index.js +33 -0
  66. package/cjs/types/account/info/keyring.js +1 -1
  67. package/cjs/types/bitcoin.js +24 -0
  68. package/cjs/types/environment.js +19 -0
  69. package/cjs/types/fee/bitcoin.js +1 -0
  70. package/cjs/types/fee/index.js +11 -0
  71. package/cjs/types/index.js +11 -0
  72. package/cjs/utils/account/analyze.js +3 -3
  73. package/cjs/utils/account/common.js +16 -6
  74. package/cjs/utils/account/derive/info/solo.js +68 -19
  75. package/cjs/utils/account/derive/info/unified.js +2 -0
  76. package/cjs/utils/account/derive/validate.js +70 -2
  77. package/cjs/utils/account/transform.js +11 -5
  78. package/cjs/utils/bitcoin/common.js +98 -0
  79. package/cjs/utils/bitcoin/fee.js +21 -0
  80. package/cjs/utils/bitcoin/index.js +38 -0
  81. package/cjs/utils/bitcoin/utxo-management.js +281 -0
  82. package/cjs/utils/environment.js +30 -2
  83. package/cjs/utils/fee/transfer.js +48 -0
  84. package/cjs/utils/index.js +15 -1
  85. package/constants/bitcoin.d.ts +3 -0
  86. package/constants/bitcoin.js +13 -0
  87. package/constants/environment.d.ts +1 -0
  88. package/constants/environment.js +2 -1
  89. package/constants/index.d.ts +2 -0
  90. package/constants/index.js +3 -1
  91. package/core/logic-validation/recipientAddress.js +10 -1
  92. package/core/logic-validation/transfer.d.ts +2 -2
  93. package/core/logic-validation/transfer.js +27 -7
  94. package/core/types.d.ts +1 -0
  95. package/core/types.js +1 -0
  96. package/core/utils.d.ts +1 -0
  97. package/core/utils.js +15 -2
  98. package/koni/background/handlers/Extension.d.ts +2 -0
  99. package/koni/background/handlers/Extension.js +95 -42
  100. package/koni/background/handlers/State.d.ts +7 -3
  101. package/koni/background/handlers/State.js +52 -12
  102. package/package.json +149 -8
  103. package/packageInfo.js +1 -1
  104. package/services/balance-service/helpers/subscribe/bitcoin.d.ts +2 -0
  105. package/services/balance-service/helpers/subscribe/bitcoin.js +87 -0
  106. package/services/balance-service/helpers/subscribe/evm.js +6 -1
  107. package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
  108. package/services/balance-service/helpers/subscribe/index.js +20 -8
  109. package/services/balance-service/index.d.ts +2 -0
  110. package/services/balance-service/index.js +32 -4
  111. package/services/balance-service/transfer/bitcoin-transfer.d.ts +14 -0
  112. package/services/balance-service/transfer/bitcoin-transfer.js +112 -0
  113. package/services/balance-service/transfer/token.js +2 -0
  114. package/services/balance-service/transfer/xcm/index.js +15 -9
  115. package/services/balance-service/transfer/xcm/utils.d.ts +2 -0
  116. package/services/balance-service/transfer/xcm/utils.js +12 -14
  117. package/services/base/types.d.ts +2 -0
  118. package/services/base/types.js +2 -0
  119. package/services/chain-service/constants.d.ts +7 -0
  120. package/services/chain-service/constants.js +12 -5
  121. package/services/chain-service/handler/CardanoApi.d.ts +1 -5
  122. package/services/chain-service/handler/CardanoApi.js +26 -34
  123. package/services/chain-service/handler/bitcoin/BitcoinApi.d.ts +31 -0
  124. package/services/chain-service/handler/bitcoin/BitcoinApi.js +98 -0
  125. package/services/chain-service/handler/bitcoin/BitcoinChainHandler.d.ts +16 -0
  126. package/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +70 -0
  127. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.d.ts +28 -0
  128. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +362 -0
  129. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.d.ts +2 -0
  130. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +5 -0
  131. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.d.ts +28 -0
  132. package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +359 -0
  133. package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.d.ts +28 -0
  134. package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +293 -0
  135. package/services/chain-service/handler/bitcoin/strategy/types.d.ts +291 -0
  136. package/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
  137. package/services/chain-service/index.d.ts +3 -0
  138. package/services/chain-service/index.js +31 -5
  139. package/services/chain-service/types.d.ts +20 -0
  140. package/services/chain-service/utils/index.d.ts +4 -0
  141. package/services/chain-service/utils/index.js +50 -4
  142. package/services/chain-service/utils/patch.js +1 -1
  143. package/services/earning-service/handlers/native-staking/tao.d.ts +0 -11
  144. package/services/earning-service/handlers/native-staking/tao.js +4 -24
  145. package/services/event-service/index.d.ts +3 -0
  146. package/services/event-service/index.js +4 -0
  147. package/services/event-service/types.d.ts +3 -0
  148. package/services/fee-service/service.js +8 -3
  149. package/services/hiro-service/index.d.ts +17 -0
  150. package/services/hiro-service/index.js +88 -0
  151. package/services/hiro-service/utils/index.d.ts +6 -0
  152. package/services/hiro-service/utils/index.js +72 -0
  153. package/services/history-service/bitcoin-history.d.ts +4 -0
  154. package/services/history-service/bitcoin-history.js +52 -0
  155. package/services/history-service/helpers/recoverHistoryStatus.d.ts +3 -1
  156. package/services/history-service/helpers/recoverHistoryStatus.js +96 -4
  157. package/services/history-service/index.d.ts +1 -0
  158. package/services/history-service/index.js +42 -4
  159. package/services/keyring-service/context/handlers/Derive.js +2 -2
  160. package/services/keyring-service/context/handlers/Migration.js +2 -2
  161. package/services/keyring-service/context/handlers/Mnemonic.js +4 -3
  162. package/services/migration-service/scripts/MigrateNewUnifiedAccount.d.ts +4 -0
  163. package/services/migration-service/scripts/MigrateNewUnifiedAccount.js +21 -0
  164. package/services/migration-service/scripts/index.js +3 -1
  165. package/services/request-service/handler/BitcoinRequestHandler.d.ts +23 -0
  166. package/services/request-service/handler/BitcoinRequestHandler.js +427 -0
  167. package/services/request-service/index.d.ts +9 -2
  168. package/services/request-service/index.js +25 -3
  169. package/services/rune-service/index.d.ts +17 -0
  170. package/services/rune-service/index.js +97 -0
  171. package/services/swap-service/handler/chainflip-handler.d.ts +0 -2
  172. package/services/swap-service/handler/chainflip-handler.js +25 -13
  173. package/services/swap-service/handler/kyber-handler.d.ts +0 -1
  174. package/services/swap-service/handler/kyber-handler.js +5 -8
  175. package/services/swap-service/handler/simpleswap-handler.d.ts +0 -1
  176. package/services/swap-service/handler/simpleswap-handler.js +4 -6
  177. package/services/swap-service/handler/uniswap-handler.js +6 -13
  178. package/services/swap-service/utils.d.ts +0 -13
  179. package/services/swap-service/utils.js +46 -34
  180. package/services/transaction-service/helpers/index.d.ts +3 -1
  181. package/services/transaction-service/helpers/index.js +5 -0
  182. package/services/transaction-service/index.d.ts +3 -5
  183. package/services/transaction-service/index.js +135 -16
  184. package/services/transaction-service/types.d.ts +12 -2
  185. package/services/transaction-service/utils.js +7 -4
  186. package/strategy/api-request-strategy/context/base.d.ts +15 -0
  187. package/strategy/api-request-strategy/context/base.js +24 -0
  188. package/strategy/api-request-strategy/index.d.ts +15 -0
  189. package/strategy/api-request-strategy/index.js +83 -0
  190. package/strategy/api-request-strategy/types.d.ts +22 -0
  191. package/strategy/api-request-strategy/types.js +1 -0
  192. package/strategy/api-request-strategy/utils/index.d.ts +2 -0
  193. package/strategy/api-request-strategy/utils/index.js +23 -0
  194. package/types/account/info/keyring.d.ts +1 -1
  195. package/types/account/info/keyring.js +1 -1
  196. package/types/balance/index.d.ts +4 -1
  197. package/types/balance/transfer.d.ts +17 -0
  198. package/types/bitcoin.d.ts +93 -0
  199. package/types/bitcoin.js +17 -0
  200. package/types/environment.d.ts +9 -0
  201. package/types/environment.js +13 -0
  202. package/types/fee/base.d.ts +4 -1
  203. package/types/fee/bitcoin.d.ts +18 -0
  204. package/types/fee/bitcoin.js +1 -0
  205. package/types/fee/index.d.ts +1 -0
  206. package/types/fee/index.js +2 -1
  207. package/types/fee/subscription.d.ts +4 -3
  208. package/types/index.d.ts +1 -0
  209. package/types/index.js +1 -0
  210. package/utils/account/analyze.js +4 -4
  211. package/utils/account/common.d.ts +7 -8
  212. package/utils/account/common.js +16 -6
  213. package/utils/account/derive/info/solo.js +70 -21
  214. package/utils/account/derive/info/unified.js +2 -0
  215. package/utils/account/derive/validate.d.ts +1 -0
  216. package/utils/account/derive/validate.js +68 -1
  217. package/utils/account/transform.d.ts +1 -1
  218. package/utils/account/transform.js +11 -5
  219. package/utils/bitcoin/common.d.ts +22 -0
  220. package/utils/bitcoin/common.js +88 -0
  221. package/utils/bitcoin/fee.d.ts +2 -0
  222. package/utils/bitcoin/fee.js +14 -0
  223. package/utils/bitcoin/index.d.ts +3 -0
  224. package/utils/bitcoin/index.js +6 -0
  225. package/utils/bitcoin/utxo-management.d.ts +33 -0
  226. package/utils/bitcoin/utxo-management.js +266 -0
  227. package/utils/environment.d.ts +2 -0
  228. package/utils/environment.js +27 -1
  229. package/utils/fee/transfer.d.ts +3 -1
  230. package/utils/fee/transfer.js +47 -1
  231. package/utils/index.d.ts +1 -0
  232. package/utils/index.js +6 -3
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.ChainflipSwapHandler = exports.CHAINFLIP_BROKER_API = void 0;
7
+ exports.ChainflipSwapHandler = void 0;
8
8
  var _chainList = require("@subwallet/chain-list");
9
9
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
10
10
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
@@ -12,9 +12,9 @@ var _smartContract = require("@subwallet/extension-base/services/balance-service
12
12
  var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
13
13
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
14
14
  var _baseHandler = require("@subwallet/extension-base/services/swap-service/handler/base-handler");
15
- var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
16
15
  var _types = require("@subwallet/extension-base/types");
17
- var _utils3 = require("@subwallet/extension-base/utils");
16
+ var _environment = require("@subwallet/extension-base/types/environment");
17
+ var _utils2 = require("@subwallet/extension-base/utils");
18
18
  var _getId = require("@subwallet/extension-base/utils/getId");
19
19
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
20
20
  // Copyright 2019-2022 @subwallet/extension-base
@@ -22,9 +22,10 @@ var _bignumber = _interopRequireDefault(require("bignumber.js"));
22
22
 
23
23
  const INTERMEDIARY_MAINNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_ETHEREUM;
24
24
  const INTERMEDIARY_TESTNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_SEPOLIA;
25
- const CHAINFLIP_BROKER_API = process.env.CHAINFLIP_BROKER_API || '';
26
- exports.CHAINFLIP_BROKER_API = CHAINFLIP_BROKER_API;
27
25
  class ChainflipSwapHandler {
26
+ // private baseUrl: string;
27
+ // private assetsUrl: string;
28
+
28
29
  constructor(chainService, balanceService, feeService) {
29
30
  let isTestnet = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
30
31
  this.swapBaseHandler = new _baseHandler.SwapBaseHandler({
@@ -36,8 +37,10 @@ class ChainflipSwapHandler {
36
37
  });
37
38
  this.isTestnet = isTestnet;
38
39
  this.providerSlug = isTestnet ? _types.SwapProviderId.CHAIN_FLIP_TESTNET : _types.SwapProviderId.CHAIN_FLIP_MAINNET;
39
- this.baseUrl = (0, _utils2.getChainflipSwap)(isTestnet);
40
+ // this.baseUrl = getChainflipSwap(isTestnet);
41
+ // this.assetsUrl = getAssetsUrl(isTestnet);
40
42
  }
43
+
41
44
  get chainService() {
42
45
  return this.swapBaseHandler.chainService;
43
46
  }
@@ -73,7 +76,7 @@ class ChainflipSwapHandler {
73
76
  const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
74
77
  const toChainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
75
78
  const chainType = (0, _utils._isChainSubstrateCompatible)(chainInfo) ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM;
76
- const receiver = (0, _utils3._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
79
+ const receiver = (0, _utils2._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
77
80
  const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
78
81
  const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
79
82
  const minReceive = new _bignumber.default(quote.rate).times(1 - slippage).toString();
@@ -85,23 +88,31 @@ class ChainflipSwapHandler {
85
88
  if (processMetadata.destChain !== quoteMetadata.destChain || processMetadata.srcChain !== quoteMetadata.srcChain) {
86
89
  throw new Error('Metadata for Chainflip not found');
87
90
  }
91
+ const assetsResponse = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.CHAINFLIP, '/assets', {
92
+ method: 'GET'
93
+ }, this.isTestnet);
94
+ const _allAssets = await assetsResponse.json();
95
+ const allAssets = _allAssets.assets;
96
+ const sourceAsset = allAssets.find(asset => asset.network === processMetadata.srcChain && asset.ticker === fromAssetId);
97
+ const destinationAsset = allAssets.find(asset => asset.network === processMetadata.destChain && asset.ticker === toAssetId);
98
+ if (!sourceAsset || !destinationAsset) {
99
+ throw new Error('Error get Chainflip data');
100
+ }
88
101
  const depositParams = {
89
- sourceChain: processMetadata.srcChain,
90
102
  destinationAddress: receiver,
91
- destinationAsset: toAssetId,
92
- destinationChain: processMetadata.destChain,
103
+ destinationAsset: destinationAsset.id,
104
+ sourceAsset: sourceAsset.id,
93
105
  minimumPrice: minReceive,
94
106
  // minimum accepted price for swaps through the channel
95
107
  refundAddress: address,
96
108
  // address to which assets are refunded
97
- retryDurationInBlocks: '100',
98
- // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
99
- sourceAsset: fromAssetId
109
+ retryDurationInBlocks: '100' // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
100
110
  };
101
- const url = `${this.baseUrl}&${new URLSearchParams(depositParams).toString()}`;
102
- const response = await fetch(url, {
111
+
112
+ const path = `/swap?${new URLSearchParams(depositParams).toString()}`;
113
+ const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.CHAINFLIP, path, {
103
114
  method: 'GET'
104
- });
115
+ }, this.isTestnet);
105
116
  const data = await response.json();
106
117
  if (!data.id || !data.address || data.address === '' || !data.issuedBlock || !data.network || !data.channelId) {
107
118
  throw new Error('Error get Chainflip data');
@@ -208,8 +219,8 @@ class ChainflipSwapHandler {
208
219
  expectedReceive: params.selectedQuote.toAmount,
209
220
  originTokenInfo,
210
221
  destinationTokenInfo,
211
- sender: (0, _utils3._reformatAddressWithChain)(params.request.address, originChain),
212
- receiver: (0, _utils3._reformatAddressWithChain)(params.request.recipient || params.request.address, destinationChain),
222
+ sender: (0, _utils2._reformatAddressWithChain)(params.request.address, originChain),
223
+ receiver: (0, _utils2._reformatAddressWithChain)(params.request.recipient || params.request.address, destinationChain),
213
224
  srcChain: metadata.srcChain,
214
225
  destChain: metadata.destChain,
215
226
  version: 2
@@ -4,12 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.KyberHandler = exports.KYBER_CLIENT_ID = void 0;
7
+ exports.KyberHandler = void 0;
8
8
  var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
9
9
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
10
10
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
11
11
  var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
12
12
  var _types = require("@subwallet/extension-base/types");
13
+ var _environment = require("@subwallet/extension-base/types/environment");
13
14
  var _utils = require("@subwallet/extension-base/utils");
14
15
  var _getId = require("@subwallet/extension-base/utils/getId");
15
16
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
@@ -19,9 +20,6 @@ var _baseHandler = require("./base-handler");
19
20
  // Copyright 2019-2022 @subwallet/extension-base
20
21
  // SPDX-License-Identifier: Apache-2.0
21
22
 
22
- const KYBER_CLIENT_ID = process.env.KYBER_CLIENT_ID || '';
23
- exports.KYBER_CLIENT_ID = KYBER_CLIENT_ID;
24
- const kyberUrl = 'https://aggregator-api.kyberswap.com';
25
23
  async function buildTxForKyberSwap(params, chain) {
26
24
  const {
27
25
  recipient,
@@ -46,14 +44,13 @@ async function buildTxForKyberSwap(params, chain) {
46
44
  amountIn,
47
45
  gasInclude: 'true'
48
46
  });
49
- const url = `${kyberUrl}/${chain}/api/v1/routes?${queryParams.toString()}`;
47
+ const path = `/${chain}/api/v1/routes?${queryParams.toString()}`;
50
48
  try {
51
49
  var _routeData$data;
52
- const res = await fetch(url, {
50
+ const res = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.KYBER, path, {
53
51
  method: 'GET',
54
52
  headers: {
55
53
  'Content-Type': 'application/json',
56
- 'x-client-id': KYBER_CLIENT_ID,
57
54
  accept: 'application/json'
58
55
  }
59
56
  });
@@ -86,11 +83,10 @@ async function buildTxForKyberSwap(params, chain) {
86
83
  };
87
84
  console.log('routeSummary2', routeSummary);
88
85
  try {
89
- const res = await fetch(`${kyberUrl}/${chain}/api/v1/route/build`, {
86
+ const res = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.KYBER, `/${chain}/api/v1/route/build`, {
90
87
  method: 'POST',
91
88
  headers: {
92
89
  'Content-Type': 'application/json',
93
- 'x-client-id': KYBER_CLIENT_ID,
94
90
  accept: 'application/json'
95
91
  },
96
92
  body: JSON.stringify(body)
@@ -3,12 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.simpleSwapApiKey = exports.SimpleSwapHandler = void 0;
6
+ exports.SimpleSwapHandler = void 0;
7
7
  var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
8
8
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
9
9
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
10
10
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
11
11
  var _types = require("@subwallet/extension-base/types");
12
+ var _environment = require("@subwallet/extension-base/types/environment");
12
13
  var _utils2 = require("@subwallet/extension-base/utils");
13
14
  var _getId = require("@subwallet/extension-base/utils/getId");
14
15
  var _bignumber = _interopRequireWildcard(require("bignumber.js"));
@@ -20,9 +21,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
20
21
  // Copyright 2019-2022 @subwallet/extension-base
21
22
  // SPDX-License-Identifier: Apache-2.0
22
23
 
23
- const apiUrl = 'https://api.simpleswap.io/v3';
24
- const simpleSwapApiKey = process.env.SIMPLE_SWAP_API_KEY || '';
25
- exports.simpleSwapApiKey = simpleSwapApiKey;
26
24
  const toBNString = (input, decimal) => {
27
25
  const raw = new _bignumber.BigNumber(input);
28
26
  return raw.shiftedBy(decimal).integerValue(_bignumber.BigNumber.ROUND_CEIL).toFixed();
@@ -54,12 +52,11 @@ const buildTxForSimpleSwap = async params => {
54
52
  userRefundAddress: sender,
55
53
  userRefundExtraId: ''
56
54
  };
57
- const response = await fetch(`${apiUrl}/exchanges`, {
55
+ const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.SIMPLESWAP, '/exchanges', {
58
56
  method: 'POST',
59
57
  headers: {
60
- accept: 'application/json',
61
58
  'Content-Type': 'application/json',
62
- 'x-api-key': simpleSwapApiKey
59
+ accept: 'application/json'
63
60
  },
64
61
  body: JSON.stringify(requestBody)
65
62
  });
@@ -13,6 +13,7 @@ var _xcm = require("@subwallet/extension-base/services/balance-service/transfer/
13
13
  var _acrossBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/acrossBridge");
14
14
  var _utils = require("@subwallet/extension-base/services/swap-service/utils");
15
15
  var _types = require("@subwallet/extension-base/types");
16
+ var _environment = require("@subwallet/extension-base/types/environment");
16
17
  var _utils2 = require("@subwallet/extension-base/utils");
17
18
  var _getId = require("@subwallet/extension-base/utils/getId");
18
19
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
@@ -22,10 +23,6 @@ var _baseHandler = require("./base-handler");
22
23
  // Copyright 2019-2022 @subwallet/extension-base
23
24
  // SPDX-License-Identifier: Apache-2.0
24
25
 
25
- const API_URL = 'https://trade-api.gateway.uniswap.org/v1';
26
- const headers = {
27
- 'x-api-key': process.env.UNISWAP_API_KEY || ''
28
- };
29
26
  async function fetchCheckApproval(request) {
30
27
  const {
31
28
  address,
@@ -56,10 +53,9 @@ async function fetchCheckApproval(request) {
56
53
  } else {
57
54
  return undefined;
58
55
  }
59
- const response = await fetch(`${API_URL}/check_approval`, {
56
+ const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, '/check_approval', {
60
57
  method: 'POST',
61
58
  headers: {
62
- ...headers,
63
59
  'Content-Type': 'application/json'
64
60
  },
65
61
  body: JSON.stringify({
@@ -624,10 +620,9 @@ class UniswapHandler {
624
620
  if (permitData) {
625
621
  body.permitData = permitData;
626
622
  }
627
- postTransactionResponse = await fetch(`${API_URL}/swap`, {
623
+ postTransactionResponse = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, '/swap', {
628
624
  method: 'POST',
629
625
  headers: {
630
- ...headers,
631
626
  'Content-Type': 'application/json'
632
627
  },
633
628
  body: JSON.stringify(body)
@@ -638,10 +633,9 @@ class UniswapHandler {
638
633
  const dutchQuote = quote;
639
634
  const submitSwapOrder = async () => {
640
635
  try {
641
- const res = await fetch(`${API_URL}/order`, {
636
+ const res = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, '/order', {
642
637
  method: 'POST',
643
638
  headers: {
644
- ...headers,
645
639
  'Content-Type': 'application/json'
646
640
  },
647
641
  body: JSON.stringify({
@@ -682,10 +676,9 @@ class UniswapHandler {
682
676
  const swapper = dutchQuote.orderInfo.swapper;
683
677
  return retryGetUniswapTx(async () => {
684
678
  try {
685
- const response = await fetch(`${API_URL}/orders?orderId=${orderId}&swapper=${swapper}`, {
679
+ const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, `/orders?orderId=${orderId}&swapper=${swapper}`, {
686
680
  method: 'GET',
687
681
  headers: {
688
- ...headers,
689
682
  'Content-Type': 'application/json'
690
683
  }
691
684
  });
@@ -13,9 +13,6 @@ exports.findSwapTransitDestination = findSwapTransitDestination;
13
13
  exports.getAmountAfterSlippage = getAmountAfterSlippage;
14
14
  exports.getBridgeStep = getBridgeStep;
15
15
  exports.getChainRouteFromSteps = getChainRouteFromSteps;
16
- exports.getChainflipBroker = getChainflipBroker;
17
- exports.getChainflipOptions = getChainflipOptions;
18
- exports.getChainflipSwap = getChainflipSwap;
19
16
  exports.getFirstAmountFromSteps = getFirstAmountFromSteps;
20
17
  exports.getLastAmountFromSteps = getLastAmountFromSteps;
21
18
  exports.getSupportedSwapChains = getSupportedSwapChains;
@@ -29,7 +26,6 @@ exports.processStepsToPathActions = processStepsToPathActions;
29
26
  var _chainList = require("@subwallet/chain-list");
30
27
  var _types = require("@subwallet/chain-list/types");
31
28
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
32
- var _chainflipHandler = require("@subwallet/extension-base/services/swap-service/handler/chainflip-handler");
33
29
  var _types2 = require("@subwallet/extension-base/types");
34
30
  var _swap = require("@subwallet/extension-base/types/swap");
35
31
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
@@ -105,39 +101,52 @@ function convertSwapRate(rate, fromAsset, toAsset) {
105
101
  const bnRate = (0, _bignumber.default)(rate);
106
102
  return bnRate.times(10 ** decimalDiff).pow(-1).toNumber();
107
103
  }
108
- function getChainflipOptions(isTestnet) {
109
- if (isTestnet) {
110
- return {
111
- network: getChainflipNetwork(isTestnet)
112
- };
113
- }
114
- return {
115
- network: getChainflipNetwork(isTestnet),
116
- broker: getChainflipBroker(isTestnet)
117
- };
118
- }
119
- function getChainflipNetwork(isTestnet) {
120
- return isTestnet ? 'perseverance' : 'mainnet';
121
- }
122
- function getChainflipBroker(isTestnet) {
123
- // noted: currently not use testnet broker
124
- if (isTestnet) {
125
- return {
126
- url: `https://perseverance.chainflip-broker.io/rpc/${_chainflipHandler.CHAINFLIP_BROKER_API}`
127
- };
128
- } else {
129
- return {
130
- url: `https://chainflip-broker.io/rpc/${_chainflipHandler.CHAINFLIP_BROKER_API}`
131
- };
132
- }
133
- }
134
- function getChainflipSwap(isTestnet) {
135
- if (isTestnet) {
136
- return `https://perseverance.chainflip-broker.io/swap?apikey=${_chainflipHandler.CHAINFLIP_BROKER_API}`;
137
- } else {
138
- return `https://chainflip-broker.io/swap?apikey=${_chainflipHandler.CHAINFLIP_BROKER_API}`;
139
- }
140
- }
104
+
105
+ // export function getChainflipOptions (isTestnet: boolean) {
106
+ // if (isTestnet) {
107
+ // return {
108
+ // network: getChainflipNetwork(isTestnet)
109
+ // };
110
+ // }
111
+
112
+ // return {
113
+ // network: getChainflipNetwork(isTestnet),
114
+ // broker: getChainflipBroker(isTestnet)
115
+ // };
116
+ // }
117
+
118
+ // function getChainflipNetwork (isTestnet: boolean) {
119
+ // return isTestnet ? 'perseverance' : 'mainnet';
120
+ // }
121
+
122
+ // export function getChainflipBroker (isTestnet: boolean) { // noted: currently not use testnet broker
123
+ // if (isTestnet) {
124
+ // return {
125
+ // url: `https://perseverance.chainflip-broker.io/rpc/${CHAINFLIP_BROKER_API}`
126
+ // };
127
+ // } else {
128
+ // return {
129
+ // url: `https://chainflip-broker.io/rpc/${CHAINFLIP_BROKER_API}`
130
+ // };
131
+ // }
132
+ // }
133
+
134
+ // export function getChainflipSwap (isTestnet: boolean) {
135
+ // if (isTestnet) {
136
+ // return `https://perseverance.chainflip-broker.io/swap?apikey=${CHAINFLIP_BROKER_API}`;
137
+ // } else {
138
+ // return `https://chainflip-broker.io/swap?apikey=${CHAINFLIP_BROKER_API}`;
139
+ // }
140
+ // }
141
+
142
+ // export function getAssetsUrl (isTestnet: boolean) {
143
+ // if (isTestnet) {
144
+ // return 'https://perseverance.chainflip-broker.io/assets';
145
+ // } else {
146
+ // return 'https://chainflip-broker.io/assets';
147
+ // }
148
+ // }
149
+
141
150
  function getBridgeStep(from, to) {
142
151
  return {
143
152
  action: _types2.DynamicSwapType.BRIDGE,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isTonTransaction = exports.isSubstrateTransaction = exports.isCardanoTransaction = exports.getValidationId = exports.getTransactionId = exports.getBaseTransactionInfo = void 0;
6
+ exports.isTonTransaction = exports.isSubstrateTransaction = exports.isCardanoTransaction = exports.isBitcoinTransaction = exports.getValidationId = exports.getTransactionId = exports.getBaseTransactionInfo = void 0;
7
7
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
8
8
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
9
9
  // SPDX-License-Identifier: Apache-2.0
@@ -32,7 +32,13 @@ const isCardanoTransaction = tx => {
32
32
  const cardanoTransactionConfig = tx;
33
33
  return cardanoTransactionConfig.cardanoPayload !== null && cardanoTransactionConfig.cardanoPayload !== undefined;
34
34
  };
35
+
36
+ // TODO: [Review] this function
35
37
  exports.isCardanoTransaction = isCardanoTransaction;
38
+ const isBitcoinTransaction = tx => {
39
+ return 'data' in tx && Array.isArray(tx.data.inputs);
40
+ };
41
+ exports.isBitcoinTransaction = isBitcoinTransaction;
36
42
  const typeName = type => {
37
43
  switch (type) {
38
44
  case _KoniTypes.ExtrinsicType.TRANSFER_BALANCE:
@@ -46,10 +46,6 @@ class TransactionService {
46
46
  }
47
47
  constructor(state) {
48
48
  this.state = state;
49
- this.eventService = state.eventService;
50
- this.historyService = state.historyService;
51
- this.notificationService = state.notificationService;
52
- this.chainService = state.chainService;
53
49
  }
54
50
  get allTransactions() {
55
51
  return Object.values(this.transactions);
@@ -81,6 +77,7 @@ class TransactionService {
81
77
  additionalValidator,
82
78
  address,
83
79
  chain,
80
+ chainType,
84
81
  extrinsicType
85
82
  } = validationResponse;
86
83
  const chainInfo = this.state.chainService.getChainInfoByKey(chain);
@@ -110,27 +107,30 @@ class TransactionService {
110
107
  const evmApi = this.state.chainService.getEvmApi(chainInfo.slug);
111
108
  const tonApi = this.state.chainService.getTonApi(chainInfo.slug);
112
109
  const cardanoApi = this.state.chainService.getCardanoApi(chainInfo.slug);
110
+ const bitcoinApi = this.state.chainService.getBitcoinApi(chainInfo.slug);
113
111
  // todo: should split into isEvmTx && isNoEvmApi. Because other chains type also has no Evm Api. Same to all blockchain.
114
112
  // todo: refactor check evmTransaction.
115
- const isNoEvmApi = transaction && !(0, _helpers.isSubstrateTransaction)(transaction) && !(0, _helpers.isTonTransaction)(transaction) && !(0, _helpers.isCardanoTransaction)(transaction) && !evmApi;
113
+ const isNoEvmApi = transaction && !(0, _helpers.isSubstrateTransaction)(transaction) && !(0, _helpers.isTonTransaction)(transaction) && !(0, _helpers.isCardanoTransaction)(transaction) && !(0, _helpers.isBitcoinTransaction)(transaction) && !evmApi;
116
114
  const isNoTonApi = transaction && (0, _helpers.isTonTransaction)(transaction) && !tonApi;
117
115
  const isNoCardanoApi = transaction && (0, _helpers.isCardanoTransaction)(transaction) && !cardanoApi;
118
- if (isNoEvmApi || isNoTonApi || isNoCardanoApi) {
116
+ const isNoBitcoinApi = transaction && (0, _helpers.isBitcoinTransaction)(transaction) && !bitcoinApi;
117
+ if (isNoEvmApi || isNoTonApi || isNoCardanoApi || isNoBitcoinApi) {
119
118
  validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.CHAIN_DISCONNECTED, undefined));
120
119
  }
121
120
 
122
121
  // Estimate fee for transaction
123
122
  const id = (0, _getId.getId)();
124
- const feeInfo = await this.state.feeService.subscribeChainFee(id, chain, 'evm');
123
+ const feeInfo = await this.state.feeService.subscribeChainFee(id, chain, chainType);
125
124
  const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(chain);
126
125
  const tokenPayFeeSlug = transactionInput.tokenPayFeeSlug;
127
126
  const isNonNativeTokenPayFee = tokenPayFeeSlug && !(0, _utils2._isNativeTokenBySlug)(tokenPayFeeSlug);
128
- const nonNativeTokenPayFeeInfo = isNonNativeTokenPayFee ? this.chainService.getAssetBySlug(tokenPayFeeSlug) : undefined;
127
+ const nonNativeTokenPayFeeInfo = isNonNativeTokenPayFee ? this.state.chainService.getAssetBySlug(tokenPayFeeSlug) : undefined;
129
128
  const priceMap = (await this.state.priceService.getPrice()).priceMap;
130
129
  validationResponse.estimateFee = await (0, _transfer.estimateFeeForTransaction)(validationResponse, transaction, chainInfo, evmApi, substrateApi, priceMap, feeInfo, nativeTokenInfo, nonNativeTokenPayFeeInfo, transactionInput.isTransferLocalTokenAndPayThatTokenAsFee);
131
130
  const chainInfoMap = this.state.chainService.getChainInfoMap();
132
131
 
133
132
  // Check account signing transaction
133
+
134
134
  (0, _transfer.checkSigningAccountForTransaction)(validationResponse, chainInfoMap);
135
135
  const nativeTokenAvailable = await this.state.balanceService.getTransferableBalance(address, chain, nativeTokenInfo.slug, extrinsicType);
136
136
 
@@ -193,7 +193,7 @@ class TransactionService {
193
193
  }
194
194
  fillTransactionDefaultInfo(transaction) {
195
195
  const isInternal = !transaction.url;
196
- const transactionId = (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, isInternal, (0, _helpers2.isWalletConnectRequest)(transaction.id));
196
+ const transactionId = transaction.id || (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, isInternal, (0, _helpers2.isWalletConnectRequest)(transaction.id));
197
197
  return {
198
198
  ...transaction,
199
199
  createdAt: new Date().getTime(),
@@ -417,7 +417,7 @@ class TransactionService {
417
417
  }
418
418
  async sendTransaction(transaction) {
419
419
  // Send Transaction
420
- const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : transaction.chainType === 'cardano' ? this.signAndSendCardanoTransaction(transaction) : this.signAndSendTonTransaction(transaction));
420
+ const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : transaction.chainType === 'cardano' ? this.signAndSendCardanoTransaction(transaction) : transaction.chainType === 'ton' ? this.signAndSendTonTransaction(transaction) : this.signAndSendBitcoinTransaction(transaction));
421
421
  const {
422
422
  eventsHandler,
423
423
  step
@@ -676,6 +676,7 @@ class TransactionService {
676
676
  extrinsicHash: transaction.extrinsicHash,
677
677
  time: transaction.createdAt,
678
678
  fee: transaction.estimateFee,
679
+ blockTime: undefined,
679
680
  blockNumber: 0,
680
681
  // Will be added in next step
681
682
  blockHash: '',
@@ -1065,6 +1066,24 @@ class TransactionService {
1065
1066
  if ([_KoniTypes.ExtrinsicType.STAKING_JOIN_POOL, _KoniTypes.ExtrinsicType.STAKING_BOND, _KoniTypes.ExtrinsicType.JOIN_YIELD_POOL, _KoniTypes.ExtrinsicType.MINT_LDOT, _KoniTypes.ExtrinsicType.MINT_QDOT, _KoniTypes.ExtrinsicType.MINT_SDOT, _KoniTypes.ExtrinsicType.MINT_STDOT, _KoniTypes.ExtrinsicType.MINT_VDOT, _KoniTypes.ExtrinsicType.MINT_VMANTA].includes(transaction.extrinsicType)) {
1066
1067
  this.handlePostEarningTransaction(id);
1067
1068
  }
1069
+
1070
+ // Trigger balance update for Bitcoin transactions after receiving extrinsicHash
1071
+ if (_KoniTypes.ExtrinsicType.TRANSFER_BALANCE && transaction.chainType === 'bitcoin') {
1072
+ const balanceService = this.state.balanceService;
1073
+ const inputData = (0, _utils3.parseTransactionData)(transaction.data);
1074
+ try {
1075
+ const sender = _uiKeyring.default.getPair(inputData.from);
1076
+ balanceService.refreshBalanceForAddress(sender.address, transaction.chain, inputData.tokenSlug, transaction.extrinsicType).catch(error => console.error('Failed to run balance subscription:', error));
1077
+ } catch (e) {
1078
+ console.error(e);
1079
+ }
1080
+ try {
1081
+ const recipient = _uiKeyring.default.getPair(inputData.to);
1082
+ balanceService.refreshBalanceForAddress(recipient.address, transaction.chain, inputData.tokenSlug, transaction.extrinsicType).catch(error => console.error('Failed to run balance subscription:', error));
1083
+ } catch (e) {
1084
+ console.error(e);
1085
+ }
1086
+ }
1068
1087
  }
1069
1088
  handlePostProcessing(id) {
1070
1089
  // must be done after success/failure to make sure the transaction is finalized
@@ -1104,6 +1123,7 @@ class TransactionService {
1104
1123
  let {
1105
1124
  blockHash,
1106
1125
  blockNumber,
1126
+ blockTime,
1107
1127
  extrinsicHash,
1108
1128
  id
1109
1129
  } = _ref4;
@@ -1118,7 +1138,8 @@ class TransactionService {
1118
1138
  extrinsicHash,
1119
1139
  status: _KoniTypes.ExtrinsicStatus.SUCCESS,
1120
1140
  blockNumber: blockNumber || 0,
1121
- blockHash: blockHash || ''
1141
+ blockHash: blockHash || '',
1142
+ blockTime
1122
1143
  }).catch(console.error);
1123
1144
  const info = (0, _util.isHex)(extrinsicHash) ? extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.state.chainService.getChainInfoMap());
1124
1145
  this.state.notificationService.notify({
@@ -1193,14 +1214,14 @@ class TransactionService {
1193
1214
  errors,
1194
1215
  extrinsicHash
1195
1216
  });
1196
- this.historyService.updateHistoryByExtrinsicHash(transaction.extrinsicHash, {
1217
+ this.state.historyService.updateHistoryByExtrinsicHash(transaction.extrinsicHash, {
1197
1218
  extrinsicHash: extrinsicHash || transaction.extrinsicHash,
1198
1219
  status: nextStatus,
1199
1220
  blockNumber: blockNumber || 0,
1200
1221
  blockHash: blockHash || ''
1201
1222
  }).catch(console.error);
1202
- const info = (0, _util.isHex)(transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash) ? transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.chainService.getChainInfoMap());
1203
- this.notificationService.notify({
1223
+ const info = (0, _util.isHex)(transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash) ? transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.state.chainService.getChainInfoMap());
1224
+ this.state.notificationService.notify({
1204
1225
  type: _KoniTypes.NotificationType.ERROR,
1205
1226
  title: (0, _i18next.t)('Transaction timed out'),
1206
1227
  message: (0, _i18next.t)('Transaction {{info}} timed out', {
@@ -1214,7 +1235,7 @@ class TransactionService {
1214
1235
  notifyViaBrowser: true
1215
1236
  });
1216
1237
  }
1217
- this.eventService.emit('transaction.timeout', transaction);
1238
+ this.state.eventService.emit('transaction.timeout', transaction);
1218
1239
  }
1219
1240
  generateHashPayload(chain, transaction) {
1220
1241
  const chainInfo = this.state.chainService.getChainInfoByKey(chain);
@@ -1894,6 +1915,106 @@ class TransactionService {
1894
1915
  });
1895
1916
  return emitter;
1896
1917
  }
1918
+ emitterEventTransaction = (emitter, eventData, chain, payload) => {
1919
+ // Emit signed event
1920
+ emitter.emit('signed', eventData);
1921
+ // Add start info
1922
+ emitter.emit('send', eventData);
1923
+ const event = this.state.chainService.getBitcoinApi(chain).api.sendRawTransaction(payload);
1924
+ event.on('extrinsicHash', txHash => {
1925
+ eventData.extrinsicHash = txHash;
1926
+ emitter.emit('extrinsicHash', eventData);
1927
+ });
1928
+ event.on('success', transactionStatus => {
1929
+ console.log(transactionStatus);
1930
+ eventData.blockHash = transactionStatus.block_hash || undefined;
1931
+ eventData.blockNumber = transactionStatus.block_height || undefined;
1932
+ eventData.blockTime = transactionStatus.block_time ? transactionStatus.block_time * 1000 : undefined;
1933
+ emitter.emit('success', eventData);
1934
+ });
1935
+ event.on('error', error => {
1936
+ eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SEND, error));
1937
+ emitter.emit('error', eventData);
1938
+ });
1939
+ };
1940
+ signAndSendBitcoinTransaction(_ref22) {
1941
+ let {
1942
+ address,
1943
+ chain,
1944
+ id,
1945
+ transaction,
1946
+ url
1947
+ } = _ref22;
1948
+ const tx = transaction;
1949
+ // const bitcoinApi = this.state.chainService.getBitcoinApi(chain);
1950
+ // const chainInfo = this.state.chainService.getChainInfoByKey(chain);
1951
+
1952
+ const accountPair = _uiKeyring.default.getPair(address);
1953
+ const account = (0, _utils4.pairToAccount)(accountPair);
1954
+ const payload = {
1955
+ payload: undefined,
1956
+ payloadJson: undefined,
1957
+ account,
1958
+ canSign: true,
1959
+ hashPayload: tx.toHex(),
1960
+ id
1961
+ };
1962
+ const emitter = new _eventemitter.default();
1963
+ const eventData = {
1964
+ id,
1965
+ errors: [],
1966
+ warnings: [],
1967
+ extrinsicHash: id
1968
+ };
1969
+ const isInjected = !!account.isInjected;
1970
+ // const isExternal = !!account.isExternal;
1971
+
1972
+ if (isInjected) {
1973
+ throw new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED);
1974
+ } else {
1975
+ this.state.requestService.addConfirmationBitcoin(id, url || _constants2.EXTENSION_REQUEST_URL, 'bitcoinSendTransactionRequest', payload, {}).then(_ref23 => {
1976
+ let {
1977
+ isApproved,
1978
+ payload
1979
+ } = _ref23;
1980
+ if (isApproved) {
1981
+ if (!payload) {
1982
+ throw new Error('Bad signature');
1983
+ }
1984
+
1985
+ // Emit signed event
1986
+ emitter.emit('signed', eventData);
1987
+ // Add start info
1988
+ emitter.emit('send', eventData);
1989
+ const bitcoinApi = this.state.chainService.getBitcoinApi(chain);
1990
+ const event = bitcoinApi.api.sendRawTransaction(payload);
1991
+ event.on('extrinsicHash', txHash => {
1992
+ eventData.extrinsicHash = txHash;
1993
+ emitter.emit('extrinsicHash', eventData);
1994
+ });
1995
+ event.on('success', transactionStatus => {
1996
+ eventData.blockHash = transactionStatus.block_hash || undefined;
1997
+ eventData.blockNumber = transactionStatus.block_height || undefined;
1998
+ eventData.blockTime = transactionStatus.block_time ? transactionStatus.block_time * 1000 : undefined;
1999
+ emitter.emit('success', eventData);
2000
+ });
2001
+ event.on('error', error => {
2002
+ eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SEND, error));
2003
+ emitter.emit('error', eventData);
2004
+ });
2005
+ } else {
2006
+ this.removeTransaction(id);
2007
+ eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
2008
+ emitter.emit('error', eventData);
2009
+ }
2010
+ }).catch(e => {
2011
+ this.removeTransaction(id);
2012
+ eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SIGN, e.message));
2013
+ emitter.emit('error', eventData);
2014
+ });
2015
+ }
2016
+ return emitter;
2017
+ }
1897
2018
  handleTransactionTimeout(emitter, eventData) {
1898
2019
  const timeout = setTimeout(() => {
1899
2020
  const transaction = this.getTransaction(eventData.id);