@layerswap/widget 0.1.4 → 0.1.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 (267) hide show
  1. package/README.md +78 -3
  2. package/dist/Models/Theme.d.ts +7 -6
  3. package/dist/Models/Theme.js +7 -7
  4. package/dist/Models/WalletProvider.d.ts +0 -4
  5. package/dist/Models/WalletProvider.js +2 -0
  6. package/dist/components/Buttons/copyButton.js +4 -3
  7. package/dist/components/ColorSchema.js +79 -45
  8. package/dist/components/Common/AddressIcon.js +1 -0
  9. package/dist/components/Common/AverageCompletionTime.js +1 -1
  10. package/dist/components/Common/CountDownTimer.js +2 -2
  11. package/dist/components/Common/FormattedAverageCompletionTime.js +1 -1
  12. package/dist/components/HeaderWithMenu/index.js +1 -8
  13. package/dist/components/Input/Address/AddressNote.js +3 -2
  14. package/dist/components/Input/Address/AddressPicker/AddressWithIcon.js +2 -2
  15. package/dist/components/Input/Address/AddressPicker/ConnectedWallets/ConnectWalletButton.js +12 -5
  16. package/dist/components/Input/Address/AddressPicker/ExchangeNote.d.ts +1 -1
  17. package/dist/components/Input/Address/AddressPicker/ExchangeNote.js +1 -1
  18. package/dist/components/Input/RouteIcon.js +1 -1
  19. package/dist/components/LayerswapMenu/MenuList.js +2 -56
  20. package/dist/components/Pages/404/index.js +1 -0
  21. package/dist/components/Pages/Auth/Steps/CodeStep/VerifyEmailCode.js +1 -0
  22. package/dist/components/Pages/Auth/index.d.ts +1 -1
  23. package/dist/components/Pages/Auth/index.js +3 -2
  24. package/dist/components/Pages/Campaigns/Details/Leaderboard.js +1 -0
  25. package/dist/components/Pages/Campaigns/Details/index.d.ts +1 -1
  26. package/dist/components/Pages/Campaigns/Details/index.js +3 -2
  27. package/dist/components/Pages/Campaigns/index.d.ts +1 -1
  28. package/dist/components/Pages/Campaigns/index.js +3 -2
  29. package/dist/components/Pages/Maintanance/index.js +1 -0
  30. package/dist/components/Pages/NoCookies/index.js +1 -0
  31. package/dist/components/Pages/SwapHistory/History.js +1 -2
  32. package/dist/components/Pages/SwapHistory/index.d.ts +1 -1
  33. package/dist/components/Pages/SwapHistory/index.js +4 -3
  34. package/dist/components/Pages/SwapPages/Form/FeeDetails/Campaign.js +1 -0
  35. package/dist/components/Pages/SwapPages/Form/Form.js +1 -4
  36. package/dist/components/Pages/SwapPages/Form/SecondaryComponents/ValidationError.js +1 -1
  37. package/dist/components/Pages/SwapPages/Form/Select/Popover/PopoverSelect.js +1 -1
  38. package/dist/components/Pages/SwapPages/Form/index.js +1 -0
  39. package/dist/components/Pages/SwapPages/Withdraw/Coinbase/Carousel.js +8 -6
  40. package/dist/components/Pages/SwapPages/Withdraw/Processing/Processing.js +2 -2
  41. package/dist/components/Pages/SwapPages/Withdraw/Wallet/FuelWalletWithdrawal.d.ts +0 -4
  42. package/dist/components/Pages/SwapPages/Withdraw/Wallet/FuelWalletWithdrawal.js +159 -125
  43. package/dist/components/Pages/SwapPages/Withdraw/Wallet/ImtblxWalletWithdrawStep.d.ts +0 -4
  44. package/dist/components/Pages/SwapPages/Withdraw/Wallet/ImtblxWalletWithdrawStep.js +69 -51
  45. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/ActivationTokentPicker.d.ts +0 -8
  46. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/ActivationTokentPicker.js +87 -45
  47. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/hooks.d.ts +0 -40
  48. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/hooks.js +73 -46
  49. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/index.d.ts +0 -4
  50. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/index.js +175 -128
  51. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/index.d.ts +0 -7
  52. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/index.js +138 -116
  53. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/transactionSender.d.ts +0 -8
  54. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/transactionSender.js +96 -75
  55. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SophonWalletWithdraw.js +2 -2
  56. package/dist/components/Pages/SwapPages/Withdraw/Wallet/StarknetWalletWithdraw.d.ts +0 -4
  57. package/dist/components/Pages/SwapPages/Withdraw/Wallet/StarknetWalletWithdraw.js +88 -71
  58. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TonWalletWithdraw.d.ts +0 -4
  59. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TonWalletWithdraw.js +146 -136
  60. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TronWalletWithdraw.d.ts +0 -4
  61. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TronWalletWithdraw.js +120 -99
  62. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/TransferToken.js +3 -3
  63. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/buttons.js +1 -0
  64. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/index.js +1 -1
  65. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/transactionMessage.js +2 -2
  66. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransferContent.js +101 -33
  67. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Evm.d.ts +0 -4
  68. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Evm.js +60 -55
  69. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Starknet.d.ts +0 -4
  70. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Starknet.js +71 -55
  71. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/buttons.js +1 -0
  72. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/index.d.ts +0 -4
  73. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/index.js +56 -52
  74. package/dist/components/Pages/SwapPages/Withdraw/index.d.ts +1 -1
  75. package/dist/components/Pages/SwapPages/Withdraw/index.js +3 -2
  76. package/dist/components/Wallet/WalletModal/Connector.js +1 -1
  77. package/dist/components/Wallet/WalletProviders/FuelProvider.d.ts +0 -5
  78. package/dist/components/Wallet/WalletProviders/FuelProvider.js +25 -20
  79. package/dist/components/Wallet/WalletProviders/ImtblPassportProvider.d.ts +0 -5
  80. package/dist/components/Wallet/WalletProviders/ImtblPassportProvider.js +39 -36
  81. package/dist/components/Wallet/WalletProviders/SolanaProvider.d.ts +0 -5
  82. package/dist/components/Wallet/WalletProviders/SolanaProvider.js +49 -38
  83. package/dist/components/Wallet/WalletProviders/StarknetProvider.d.ts +0 -5
  84. package/dist/components/Wallet/WalletProviders/StarknetProvider.js +112 -117
  85. package/dist/components/Wallet/WalletProviders/TonConnectProvider.d.ts +0 -6
  86. package/dist/components/Wallet/WalletProviders/TonConnectProvider.js +58 -50
  87. package/dist/components/Wallet/WalletProviders/TronProvider.d.ts +0 -3
  88. package/dist/components/Wallet/WalletProviders/TronProvider.js +23 -15
  89. package/dist/components/Wallet/WalletProviders/Wagmi.d.ts +1 -1
  90. package/dist/components/Wallet/WalletProviders/Wagmi.js +20 -10
  91. package/dist/components/Wallet/WalletProviders/index.js +13 -6
  92. package/dist/components/Widget/Footer.d.ts +2 -1
  93. package/dist/components/Widget/Footer.js +13 -4
  94. package/dist/components/Widget/Index.d.ts +1 -1
  95. package/dist/components/Widget/Index.js +1 -1
  96. package/dist/components/WidgetLoading.d.ts +1 -0
  97. package/dist/components/WidgetLoading.js +5 -0
  98. package/dist/components/Wizard/Wizard.js +1 -1
  99. package/dist/components/shadcn/command.js +1 -1
  100. package/dist/components/themeWrapper.js +3 -2
  101. package/dist/context/{LayerswapContext.d.ts → LayerswapProvider.d.ts} +3 -8
  102. package/dist/context/{LayerswapContext.js → LayerswapProvider.js} +8 -9
  103. package/dist/context/authContext.js +1 -0
  104. package/dist/context/walletHooksProvider.js +1 -0
  105. package/dist/hooks/useWallet.js +10 -14
  106. package/dist/index.css +1 -1
  107. package/dist/index.d.ts +3 -5
  108. package/dist/index.js +2 -4
  109. package/dist/index.mjs +19 -0
  110. package/dist/lib/AppSettings.d.ts +7 -3
  111. package/dist/lib/AppSettings.js +8 -7
  112. package/dist/lib/address/formatter/index.js +8 -9
  113. package/dist/lib/address/validator/index.js +18 -20
  114. package/dist/lib/axiosInterceptor.js +1 -2
  115. package/dist/lib/balances/balanceResolver.js +16 -16
  116. package/dist/lib/balances/providers/evmBalanceProvider.js +3 -3
  117. package/dist/lib/balances/providers/loopringBalanceProvider.d.ts +0 -6
  118. package/dist/lib/balances/providers/loopringBalanceProvider.js +56 -43
  119. package/dist/lib/balances/providers/paradexBalanceProvider.d.ts +0 -6
  120. package/dist/lib/balances/providers/paradexBalanceProvider.js +42 -42
  121. package/dist/lib/balances/providers/solanaBalanceProvider.d.ts +0 -6
  122. package/dist/lib/balances/providers/solanaBalanceProvider.js +70 -71
  123. package/dist/lib/balances/providers/starknetBalanceProvider.d.ts +0 -6
  124. package/dist/lib/balances/providers/starknetBalanceProvider.js +48 -45
  125. package/dist/lib/balances/providers/tonBalanceProvider.d.ts +0 -18
  126. package/dist/lib/balances/providers/tonBalanceProvider.js +104 -100
  127. package/dist/lib/balances/providers/tronBalanceResolver.js +2 -3
  128. package/dist/lib/fuels/common/FakeAccount.d.ts +0 -24
  129. package/dist/lib/fuels/common/FakeAccount.js +58 -36
  130. package/dist/lib/fuels/common/PredicateConnector.d.ts +0 -54
  131. package/dist/lib/fuels/common/PredicateConnector.js +292 -205
  132. package/dist/lib/fuels/common/PredicateFactory.d.ts +0 -29
  133. package/dist/lib/fuels/common/PredicateFactory.js +123 -76
  134. package/dist/lib/fuels/common/PredicateWalletAdapter.d.ts +0 -17
  135. package/dist/lib/fuels/common/PredicateWalletAdapter.js +44 -29
  136. package/dist/lib/fuels/common/index.d.ts +0 -4
  137. package/dist/lib/fuels/common/index.js +4 -4
  138. package/dist/lib/fuels/connectors/fuel-wallet/FuelWalletConnector.d.ts +0 -51
  139. package/dist/lib/fuels/connectors/fuel-wallet/FuelWalletConnector.js +268 -234
  140. package/dist/lib/fuels/connectors/fuel-wallet/index.d.ts +0 -2
  141. package/dist/lib/fuels/connectors/fuel-wallet/index.js +2 -2
  142. package/dist/lib/fuels/connectors/fuel-wallet/types.d.ts +0 -50
  143. package/dist/lib/fuels/connectors/fuel-wallet/types.js +53 -9
  144. package/dist/lib/fuels/connectors/fuelet-wallet/FueletWalletConnector.d.ts +0 -7
  145. package/dist/lib/fuels/connectors/fuelet-wallet/FueletWalletConnector.js +20 -19
  146. package/dist/lib/fuels/connectors/fuelet-wallet/index.d.ts +0 -1
  147. package/dist/lib/fuels/connectors/fuelet-wallet/index.js +1 -1
  148. package/dist/lib/gases/gasResolver.d.ts +1 -1
  149. package/dist/lib/gases/gasResolver.js +10 -10
  150. package/dist/lib/gases/providers/evmGasProvider.js +5 -4
  151. package/dist/lib/gases/providers/loopringGasProvider.d.ts +0 -6
  152. package/dist/lib/gases/providers/loopringGasProvider.js +27 -24
  153. package/dist/lib/gases/providers/solanaGasProvider.d.ts +0 -7
  154. package/dist/lib/gases/providers/solanaGasProvider.js +32 -31
  155. package/dist/lib/gases/providers/starknetGasProvider.d.ts +0 -7
  156. package/dist/lib/gases/providers/starknetGasProvider.js +34 -33
  157. package/dist/lib/imtbl.d.ts +0 -69
  158. package/dist/lib/imtbl.js +63 -60
  159. package/dist/lib/internalApiClient.d.ts +0 -2
  160. package/dist/lib/internalApiClient.js +1 -4
  161. package/dist/lib/layerSwapApiClient.js +3 -3
  162. package/dist/lib/logError.js +2 -2
  163. package/dist/lib/nft/nftBalanceResolver.js +1 -2
  164. package/dist/lib/nft/providers/starknetNftProvider.d.ts +0 -6
  165. package/dist/lib/nft/providers/starknetNftProvider.js +49 -50
  166. package/dist/lib/wallets/connectors/EthereumProvider.d.ts +2 -2
  167. package/dist/lib/wallets/connectors/useSyncProviders/store.d.ts +1 -4
  168. package/dist/lib/wallets/fuel/Bako.d.ts +0 -15
  169. package/dist/lib/wallets/fuel/Bako.js +34 -29
  170. package/dist/lib/wallets/fuel/Basko.d.ts +0 -15
  171. package/dist/lib/wallets/fuel/Basko.js +34 -29
  172. package/dist/lib/wallets/fuel/useFuel.d.ts +0 -2
  173. package/dist/lib/wallets/fuel/useFuel.js +211 -192
  174. package/dist/lib/wallets/imtblX/useImtblX.d.ts +0 -2
  175. package/dist/lib/wallets/imtblX/useImtblX.js +87 -87
  176. package/dist/lib/wallets/paradex/Authorize/Ethereum.d.ts +0 -2
  177. package/dist/lib/wallets/paradex/Authorize/Ethereum.js +24 -23
  178. package/dist/lib/wallets/paradex/Authorize/Starknet.d.ts +0 -2
  179. package/dist/lib/wallets/paradex/Authorize/Starknet.js +14 -13
  180. package/dist/lib/wallets/paradex/lib/account.d.ts +0 -28
  181. package/dist/lib/wallets/paradex/lib/account.js +102 -53
  182. package/dist/lib/wallets/paradex/lib/index.d.ts +0 -24
  183. package/dist/lib/wallets/paradex/lib/index.js +20 -20
  184. package/dist/lib/wallets/paradex/lib/paraclear-provider.d.ts +0 -6
  185. package/dist/lib/wallets/paradex/lib/paraclear-provider.js +13 -9
  186. package/dist/lib/wallets/paradex/lib/paraclear.d.ts +0 -137
  187. package/dist/lib/wallets/paradex/lib/paraclear.js +258 -131
  188. package/dist/lib/wallets/paradex/lib/starknet-account-support.d.ts +0 -22
  189. package/dist/lib/wallets/paradex/lib/starknet-account-support.js +296 -220
  190. package/dist/lib/wallets/paradex/lib/starknet-signer.d.ts +0 -15
  191. package/dist/lib/wallets/paradex/lib/starknet-signer.js +120 -94
  192. package/dist/lib/wallets/paradex/useParadex.d.ts +0 -7
  193. package/dist/lib/wallets/paradex/useParadex.js +197 -194
  194. package/dist/lib/wallets/solana/transactionBuilder.d.ts +0 -4
  195. package/dist/lib/wallets/solana/transactionBuilder.js +63 -39
  196. package/dist/lib/wallets/solana/useSVM.d.ts +0 -5
  197. package/dist/lib/wallets/solana/useSVM.js +139 -142
  198. package/dist/lib/wallets/starknet/useStarknet.d.ts +0 -2
  199. package/dist/lib/wallets/starknet/useStarknet.js +139 -139
  200. package/dist/lib/wallets/ton/client.d.ts +0 -3
  201. package/dist/lib/wallets/ton/client.js +7 -7
  202. package/dist/lib/wallets/ton/useTON.d.ts +0 -2
  203. package/dist/lib/wallets/ton/useTON.js +121 -122
  204. package/dist/lib/wallets/tron/connectors/bitkeep.d.ts +0 -61
  205. package/dist/lib/wallets/tron/connectors/bitkeep.js +326 -303
  206. package/dist/lib/wallets/tron/connectors/index.d.ts +0 -4
  207. package/dist/lib/wallets/tron/connectors/index.js +4 -4
  208. package/dist/lib/wallets/tron/connectors/okxWallet.d.ts +0 -66
  209. package/dist/lib/wallets/tron/connectors/okxWallet.js +364 -336
  210. package/dist/lib/wallets/tron/connectors/tokenPocket.d.ts +0 -72
  211. package/dist/lib/wallets/tron/connectors/tokenPocket.js +337 -308
  212. package/dist/lib/wallets/tron/connectors/tronLink/index.d.ts +0 -102
  213. package/dist/lib/wallets/tron/connectors/tronLink/index.js +560 -520
  214. package/dist/lib/wallets/tron/connectors/tronLink/types.d.ts +0 -56
  215. package/dist/lib/wallets/tron/connectors/tronLink/types.js +53 -1
  216. package/dist/lib/wallets/tron/connectors/tronLink/utils.d.ts +0 -14
  217. package/dist/lib/wallets/tron/connectors/tronLink/utils.js +64 -61
  218. package/dist/lib/wallets/tron/useTron.d.ts +0 -2
  219. package/dist/lib/wallets/tron/useTron.js +111 -111
  220. package/dist/lib/wallets/utils/resolveWalletIcon.js +1 -0
  221. package/package.json +26 -77
  222. package/dist/hooks/useCopyClipboard.d.ts +0 -1
  223. package/dist/hooks/useCopyClipboard.js +0 -21
  224. package/dist/index.cjs +0 -125
  225. package/dist/lib/abis/ERC20.json +0 -258
  226. package/dist/lib/fuels/connectors/walletConnect/WalletConnectConnector.d.ts +0 -42
  227. package/dist/lib/fuels/connectors/walletConnect/WalletConnectConnector.js +0 -357
  228. package/dist/lib/fuels/connectors/walletConnect/constants.d.ts +0 -6
  229. package/dist/lib/fuels/connectors/walletConnect/constants.js +0 -7
  230. package/dist/lib/fuels/connectors/walletConnect/index.d.ts +0 -3
  231. package/dist/lib/fuels/connectors/walletConnect/index.js +0 -3
  232. package/dist/lib/fuels/connectors/walletConnect/types.d.ts +0 -12
  233. package/dist/lib/fuels/connectors/walletConnect/types.js +0 -1
  234. package/dist/lib/fuels/connectors/walletConnect/utils/index.d.ts +0 -1
  235. package/dist/lib/fuels/connectors/walletConnect/utils/index.js +0 -1
  236. package/dist/lib/fuels/connectors/walletConnect/utils/subscribeAndEnforceChain.d.ts +0 -2
  237. package/dist/lib/fuels/connectors/walletConnect/utils/subscribeAndEnforceChain.js +0 -39
  238. package/dist/lib/fuels/connectors/walletConnect/web3Modal.d.ts +0 -10
  239. package/dist/lib/fuels/connectors/walletConnect/web3Modal.js +0 -38
  240. package/dist/lib/loopring/LoopringAPI.d.ts +0 -12
  241. package/dist/lib/loopring/LoopringAPI.js +0 -13
  242. package/dist/lib/loopring/defs.d.ts +0 -425
  243. package/dist/lib/loopring/defs.js +0 -217
  244. package/dist/lib/loopring/eddsa.d.ts +0 -29
  245. package/dist/lib/loopring/eddsa.js +0 -208
  246. package/dist/lib/loopring/field.d.ts +0 -17
  247. package/dist/lib/loopring/field.js +0 -61
  248. package/dist/lib/loopring/formatter.d.ts +0 -137
  249. package/dist/lib/loopring/formatter.js +0 -516
  250. package/dist/lib/loopring/helpers.d.ts +0 -36
  251. package/dist/lib/loopring/helpers.js +0 -140
  252. package/dist/lib/loopring/jubjub.d.ts +0 -19
  253. package/dist/lib/loopring/jubjub.js +0 -79
  254. package/dist/lib/loopring/permutation.d.ts +0 -22
  255. package/dist/lib/loopring/permutation.js +0 -198
  256. package/dist/lib/loopring/poseidon/EDDSAUtil.d.ts +0 -14
  257. package/dist/lib/loopring/poseidon/EDDSAUtil.js +0 -61
  258. package/dist/lib/loopring/poseidon/babyJub.d.ts +0 -6
  259. package/dist/lib/loopring/poseidon/babyJub.js +0 -51
  260. package/dist/lib/loopring/poseidon/eddsa.d.ts +0 -29
  261. package/dist/lib/loopring/poseidon/eddsa.js +0 -210
  262. package/dist/lib/loopring/utils.d.ts +0 -76
  263. package/dist/lib/loopring/utils.js +0 -230
  264. package/dist/styles/dialog-transition.css +0 -28
  265. package/dist/styles/globals.css +0 -372
  266. package/dist/styles/manual-trasnfer-svg.css +0 -299
  267. package/dist/styles/vaul.css +0 -256
@@ -1,205 +1,292 @@
1
- import { Address, FuelConnector, FuelConnectorEventTypes, ZeroBytes32, bn, calculateGasFee, concat, transactionRequestify, } from 'fuels';
2
- import { PredicateFactory, getMockedSignatureIndex } from './PredicateFactory';
3
- export class PredicateConnector extends FuelConnector {
4
- constructor() {
5
- super(...arguments);
6
- this.connected = false;
7
- this.installed = false;
8
- this.external = true;
9
- this.events = FuelConnectorEventTypes;
10
- this.predicateAccount = null;
11
- this.subscriptions = [];
12
- this.hasProviderSucceeded = true;
13
- }
14
- async emitAccountChange(address, connected = true) {
15
- await this.setupPredicate();
16
- this.emit(this.events.connection, connected);
17
- this.emit(this.events.currentAccount, this.predicateAccount?.getPredicateAddress(address));
18
- this.emit(this.events.accounts, this.predicateAccount?.getPredicateAddresses(await this.walletAccounts()));
19
- }
20
- get predicateVersions() {
21
- if (!this._predicateVersions) {
22
- this._predicateVersions = Object.entries(this.getPredicateVersions())
23
- .map(([key, pred]) => new PredicateFactory(this.getWalletAdapter(), pred.predicate, key, pred.generatedAt))
24
- .sort((a, b) => a.sort(b));
25
- }
26
- return this._predicateVersions;
27
- }
28
- isAddressPredicate(b, walletAccount) {
29
- return this.predicateVersions.some((predicate) => predicate.getPredicateAddress(walletAccount) === b);
30
- }
31
- async getCurrentUserPredicate() {
32
- const oldFirstPredicateVersions = [...this.predicateVersions].reverse();
33
- for (const predicateInstance of oldFirstPredicateVersions) {
34
- const address = await this.getAccountAddress();
35
- if (!address) {
36
- continue;
37
- }
38
- const { fuelProvider } = await this.getProviders();
39
- const predicate = predicateInstance.build(address, fuelProvider, [1]);
40
- const balance = await predicate.getBalance();
41
- if (!balance.isZero()) {
42
- return predicateInstance;
43
- }
44
- }
45
- return null;
46
- }
47
- getNewestPredicate() {
48
- return this.predicateVersions[0];
49
- }
50
- async setupPredicate() {
51
- if (this.customPredicate?.abi && this.customPredicate?.bin) {
52
- this.predicateAccount = new PredicateFactory(this.getWalletAdapter(), this.customPredicate, 'custom');
53
- this.predicateAddress = 'custom';
54
- return this.predicateAccount;
55
- }
56
- const predicate = (await this.getCurrentUserPredicate()) ?? this.getNewestPredicate();
57
- if (!predicate)
58
- throw new Error('No predicate found');
59
- this.predicateAddress = predicate.getRoot();
60
- this.predicateAccount = predicate;
61
- return this.predicateAccount;
62
- }
63
- subscribe(listener) {
64
- this.subscriptions.push(listener);
65
- }
66
- async prepareTransaction(address, transaction) {
67
- if (!(await this.isConnected())) {
68
- throw Error('No connected accounts');
69
- }
70
- if (!this.predicateAccount) {
71
- throw Error('No predicate account found');
72
- }
73
- const b256Address = Address.fromDynamicInput(address).toString();
74
- const { fuelProvider } = await this.getProviders();
75
- const chainId = await fuelProvider.getChainId();
76
- const walletAccount = this.predicateAccount.getAccountAddress(b256Address, await this.walletAccounts());
77
- if (!walletAccount) {
78
- throw Error(`No account found for ${b256Address}`);
79
- }
80
- const transactionRequest = transactionRequestify(transaction);
81
- const transactionFee = transactionRequest.maxFee.toNumber();
82
- const predicateSignatureIndex = getMockedSignatureIndex(transactionRequest.witnesses);
83
- // Create a predicate and set the witness index to call in predicate`
84
- const predicate = this.predicateAccount.build(walletAccount, fuelProvider, [
85
- predicateSignatureIndex,
86
- ]);
87
- predicate.connect(fuelProvider);
88
- // To each input of the request, attach the predicate and its data
89
- const requestWithPredicateAttached = predicate.populateTransactionPredicateData(transactionRequest);
90
- const maxGasUsed = await this.predicateAccount.getMaxPredicateGasUsed(fuelProvider);
91
- let predictedGasUsedPredicate = bn(0);
92
- requestWithPredicateAttached.inputs.forEach((input) => {
93
- if ('predicate' in input && input.predicate) {
94
- input.witnessIndex = 0;
95
- predictedGasUsedPredicate = predictedGasUsedPredicate.add(maxGasUsed);
96
- }
97
- });
98
- // Add a placeholder for the predicate signature to count on bytes measurement from start. It will be replaced later
99
- requestWithPredicateAttached.witnesses[predicateSignatureIndex] = concat([
100
- ZeroBytes32,
101
- ZeroBytes32,
102
- ]);
103
- const { gasPriceFactor } = predicate.provider.getGasConfig();
104
- const { maxFee, gasPrice } = await predicate.provider.estimateTxGasAndFee({
105
- transactionRequest: requestWithPredicateAttached,
106
- });
107
- const predicateSuccessFeeDiff = calculateGasFee({
108
- gas: predictedGasUsedPredicate,
109
- priceFactor: gasPriceFactor,
110
- gasPrice,
111
- });
112
- const feeWithFat = maxFee.add(predicateSuccessFeeDiff);
113
- const isNeededFatFee = feeWithFat.gt(transactionFee);
114
- if (isNeededFatFee) {
115
- // add more 10 just in case sdk fee estimation is not accurate
116
- requestWithPredicateAttached.maxFee = feeWithFat.add(10);
117
- }
118
- // Attach missing inputs (including estimated predicate gas usage) / outputs to the request
119
- await predicate.provider.estimateTxDependencies(requestWithPredicateAttached);
120
- return {
121
- predicate,
122
- request: requestWithPredicateAttached,
123
- transactionId: requestWithPredicateAttached.getTransactionId(chainId),
124
- account: walletAccount,
125
- transactionRequest,
126
- };
127
- }
128
- clearSubscriptions() {
129
- if (!this.subscriptions) {
130
- return;
131
- }
132
- this.subscriptions.forEach((listener) => listener());
133
- this.subscriptions = [];
134
- }
135
- async ping() {
136
- this.getProviders()
137
- .catch(() => {
138
- this.hasProviderSucceeded = false;
139
- })
140
- .then(() => {
141
- this.hasProviderSucceeded = true;
142
- });
143
- return this.hasProviderSucceeded;
144
- }
145
- async version() {
146
- return { app: '0.0.0', network: '0.0.0' };
147
- }
148
- async isConnected() {
149
- await this.requireConnection();
150
- const accounts = await this.accounts();
151
- return accounts.length > 0;
152
- }
153
- async accounts() {
154
- if (!this.predicateAccount) {
155
- return [];
156
- }
157
- const accs = await this.walletAccounts();
158
- return this.predicateAccount.getPredicateAddresses(accs);
159
- }
160
- async currentAccount() {
161
- if (!(await this.isConnected())) {
162
- throw Error('No connected accounts');
163
- }
164
- if (!this.predicateAccount) {
165
- throw Error('No predicate account found');
166
- }
167
- const account = await this.getAccountAddress();
168
- return account ? this.predicateAccount.getPredicateAddress(account) : null;
169
- }
170
- async networks() {
171
- return [await this.currentNetwork()];
172
- }
173
- async currentNetwork() {
174
- const { fuelProvider } = await this.getProviders();
175
- const chainId = await fuelProvider.getChainId();
176
- return { url: fuelProvider.url, chainId: chainId };
177
- }
178
- async signMessage(_address, _message) {
179
- throw new Error('A predicate account cannot sign messages');
180
- }
181
- async addAssets(_assets) {
182
- throw new Error('Method not implemented.');
183
- }
184
- async addAsset(_asset) {
185
- throw new Error('Method not implemented.');
186
- }
187
- async assets() {
188
- return [];
189
- }
190
- async addNetwork(_networkUrl) {
191
- throw new Error('Method not implemented.');
192
- }
193
- async selectNetwork(_network) {
194
- throw new Error('Method not implemented.');
195
- }
196
- async addAbi(_abiMap) {
197
- throw new Error('Method not implemented.');
198
- }
199
- async getAbi(_contractId) {
200
- throw Error('Cannot get contractId ABI for a predicate');
201
- }
202
- async hasAbi(_contractId) {
203
- throw Error('A predicate account cannot have an ABI');
204
- }
205
- }
1
+ // import {
2
+ // type AbiMap,
3
+ // Address,
4
+ // type Asset,
5
+ // type BytesLike,
6
+ // type ConnectorMetadata,
7
+ // FuelConnector,
8
+ // FuelConnectorEventTypes,
9
+ // type JsonAbi,
10
+ // type Network,
11
+ // type SelectNetworkArguments,
12
+ // type TransactionRequestLike,
13
+ // type Version,
14
+ // ZeroBytes32,
15
+ // bn,
16
+ // calculateGasFee,
17
+ // concat,
18
+ // transactionRequestify,
19
+ // } from 'fuels';
20
+ // import { PredicateFactory, getMockedSignatureIndex } from './PredicateFactory';
21
+ // // import type { PredicateWalletAdapter } from './PredicateWalletAdapter';
22
+ // import type {
23
+ // ConnectorConfig,
24
+ // Maybe,
25
+ // MaybeAsync,
26
+ // PredicateConfig,
27
+ // PredicateVersion,
28
+ // PreparedTransaction,
29
+ // ProviderDictionary,
30
+ // SignedMessageCustomCurve,
31
+ // } from './types';
32
+ // export abstract class PredicateConnector extends FuelConnector {
33
+ // public connected = false;
34
+ // public installed = false;
35
+ // external = true;
36
+ // public events = FuelConnectorEventTypes;
37
+ // protected predicateAddress!: string;
38
+ // protected customPredicate: Maybe<PredicateConfig>;
39
+ // protected predicateAccount: Maybe<PredicateFactory> = null;
40
+ // protected subscriptions: Array<() => void> = [];
41
+ // protected hasProviderSucceeded = true;
42
+ // private _predicateVersions!: Array<PredicateFactory>;
43
+ // public abstract name: string;
44
+ // public abstract metadata: ConnectorMetadata;
45
+ // public abstract sendTransaction(
46
+ // address: string,
47
+ // transaction: TransactionRequestLike,
48
+ // ): Promise<string>;
49
+ // public abstract connect(): Promise<boolean>;
50
+ // public abstract disconnect(): Promise<boolean>;
51
+ // protected abstract configProviders(config: ConnectorConfig): MaybeAsync<void>;
52
+ // protected abstract getWalletAdapter(): any//PredicateWalletAdapter;
53
+ // protected abstract getPredicateVersions(): Record<string, PredicateVersion>;
54
+ // protected abstract getAccountAddress(): MaybeAsync<Maybe<string>>;
55
+ // protected abstract getProviders(): Promise<ProviderDictionary>;
56
+ // protected abstract requireConnection(): MaybeAsync<void>;
57
+ // protected abstract walletAccounts(): Promise<Array<string>>;
58
+ // abstract signMessageCustomCurve(
59
+ // _message: string,
60
+ // ): Promise<SignedMessageCustomCurve>;
61
+ // protected async emitAccountChange(
62
+ // address: string,
63
+ // connected = true,
64
+ // ): Promise<void> {
65
+ // await this.setupPredicate();
66
+ // this.emit(this.events.connection, connected);
67
+ // this.emit(
68
+ // this.events.currentAccount,
69
+ // this.predicateAccount?.getPredicateAddress(address),
70
+ // );
71
+ // this.emit(
72
+ // this.events.accounts,
73
+ // this.predicateAccount?.getPredicateAddresses(await this.walletAccounts()),
74
+ // );
75
+ // }
76
+ // protected get predicateVersions(): Array<PredicateFactory> {
77
+ // if (!this._predicateVersions) {
78
+ // this._predicateVersions = Object.entries(this.getPredicateVersions())
79
+ // .map(
80
+ // ([key, pred]) =>
81
+ // new PredicateFactory(
82
+ // this.getWalletAdapter(),
83
+ // pred.predicate,
84
+ // key,
85
+ // pred.generatedAt,
86
+ // ),
87
+ // )
88
+ // .sort((a, b) => a.sort(b));
89
+ // }
90
+ // return this._predicateVersions;
91
+ // }
92
+ // protected isAddressPredicate(b: BytesLike, walletAccount: string): boolean {
93
+ // return this.predicateVersions.some(
94
+ // (predicate) => predicate.getPredicateAddress(walletAccount) === b,
95
+ // );
96
+ // }
97
+ // protected async getCurrentUserPredicate(): Promise<Maybe<PredicateFactory>> {
98
+ // const oldFirstPredicateVersions = [...this.predicateVersions].reverse();
99
+ // for (const predicateInstance of oldFirstPredicateVersions) {
100
+ // const address = await this.getAccountAddress();
101
+ // if (!address) {
102
+ // continue;
103
+ // }
104
+ // const { fuelProvider } = await this.getProviders();
105
+ // const predicate = predicateInstance.build(address, fuelProvider, [1]);
106
+ // const balance = await predicate.getBalance();
107
+ // if (!balance.isZero()) {
108
+ // return predicateInstance;
109
+ // }
110
+ // }
111
+ // return null;
112
+ // }
113
+ // protected getNewestPredicate(): Maybe<PredicateFactory> {
114
+ // return this.predicateVersions[0];
115
+ // }
116
+ // protected async setupPredicate(): Promise<PredicateFactory> {
117
+ // if (this.customPredicate?.abi && this.customPredicate?.bin) {
118
+ // this.predicateAccount = new PredicateFactory(
119
+ // this.getWalletAdapter(),
120
+ // this.customPredicate,
121
+ // 'custom',
122
+ // );
123
+ // this.predicateAddress = 'custom';
124
+ // return this.predicateAccount;
125
+ // }
126
+ // const predicate =
127
+ // (await this.getCurrentUserPredicate()) ?? this.getNewestPredicate();
128
+ // if (!predicate) throw new Error('No predicate found');
129
+ // this.predicateAddress = predicate.getRoot();
130
+ // this.predicateAccount = predicate;
131
+ // return this.predicateAccount;
132
+ // }
133
+ // protected subscribe(listener: () => void) {
134
+ // this.subscriptions.push(listener);
135
+ // }
136
+ // protected async prepareTransaction(
137
+ // address: string,
138
+ // transaction: TransactionRequestLike,
139
+ // ): Promise<PreparedTransaction> {
140
+ // if (!(await this.isConnected())) {
141
+ // throw Error('No connected accounts');
142
+ // }
143
+ // if (!this.predicateAccount) {
144
+ // throw Error('No predicate account found');
145
+ // }
146
+ // const b256Address = Address.fromDynamicInput(address).toString();
147
+ // const { fuelProvider } = await this.getProviders();
148
+ // const chainId = await fuelProvider.getChainId();
149
+ // const walletAccount = this.predicateAccount.getAccountAddress(
150
+ // b256Address,
151
+ // await this.walletAccounts(),
152
+ // );
153
+ // if (!walletAccount) {
154
+ // throw Error(`No account found for ${b256Address}`);
155
+ // }
156
+ // const transactionRequest = transactionRequestify(transaction);
157
+ // const transactionFee = transactionRequest.maxFee.toNumber();
158
+ // const predicateSignatureIndex = getMockedSignatureIndex(
159
+ // transactionRequest.witnesses,
160
+ // );
161
+ // // Create a predicate and set the witness index to call in predicate`
162
+ // const predicate = this.predicateAccount.build(walletAccount, fuelProvider, [
163
+ // predicateSignatureIndex,
164
+ // ]);
165
+ // predicate.connect(fuelProvider);
166
+ // // To each input of the request, attach the predicate and its data
167
+ // const requestWithPredicateAttached =
168
+ // predicate.populateTransactionPredicateData(transactionRequest);
169
+ // const maxGasUsed =
170
+ // await this.predicateAccount.getMaxPredicateGasUsed(fuelProvider);
171
+ // let predictedGasUsedPredicate = bn(0);
172
+ // requestWithPredicateAttached.inputs.forEach((input) => {
173
+ // if ('predicate' in input && input.predicate) {
174
+ // input.witnessIndex = 0;
175
+ // predictedGasUsedPredicate = predictedGasUsedPredicate.add(maxGasUsed);
176
+ // }
177
+ // });
178
+ // // Add a placeholder for the predicate signature to count on bytes measurement from start. It will be replaced later
179
+ // requestWithPredicateAttached.witnesses[predicateSignatureIndex] = concat([
180
+ // ZeroBytes32,
181
+ // ZeroBytes32,
182
+ // ]);
183
+ // const { gasPriceFactor } = predicate.provider.getGasConfig();
184
+ // const { maxFee, gasPrice } = await predicate.provider.estimateTxGasAndFee({
185
+ // transactionRequest: requestWithPredicateAttached,
186
+ // });
187
+ // const predicateSuccessFeeDiff = calculateGasFee({
188
+ // gas: predictedGasUsedPredicate,
189
+ // priceFactor: gasPriceFactor,
190
+ // gasPrice,
191
+ // });
192
+ // const feeWithFat = maxFee.add(predicateSuccessFeeDiff);
193
+ // const isNeededFatFee = feeWithFat.gt(transactionFee);
194
+ // if (isNeededFatFee) {
195
+ // // add more 10 just in case sdk fee estimation is not accurate
196
+ // requestWithPredicateAttached.maxFee = feeWithFat.add(10);
197
+ // }
198
+ // // Attach missing inputs (including estimated predicate gas usage) / outputs to the request
199
+ // await predicate.provider.estimateTxDependencies(
200
+ // requestWithPredicateAttached,
201
+ // );
202
+ // return {
203
+ // predicate,
204
+ // request: requestWithPredicateAttached,
205
+ // transactionId: requestWithPredicateAttached.getTransactionId(chainId),
206
+ // account: walletAccount,
207
+ // transactionRequest,
208
+ // };
209
+ // }
210
+ // public clearSubscriptions() {
211
+ // if (!this.subscriptions) {
212
+ // return;
213
+ // }
214
+ // this.subscriptions.forEach((listener) => listener());
215
+ // this.subscriptions = [];
216
+ // }
217
+ // public async ping(): Promise<boolean> {
218
+ // this.getProviders()
219
+ // .catch(() => {
220
+ // this.hasProviderSucceeded = false;
221
+ // })
222
+ // .then(() => {
223
+ // this.hasProviderSucceeded = true;
224
+ // });
225
+ // return this.hasProviderSucceeded;
226
+ // }
227
+ // public async version(): Promise<Version> {
228
+ // return { app: '0.0.0', network: '0.0.0' };
229
+ // }
230
+ // public async isConnected(): Promise<boolean> {
231
+ // await this.requireConnection();
232
+ // const accounts = await this.accounts();
233
+ // return accounts.length > 0;
234
+ // }
235
+ // public async accounts(): Promise<Array<string>> {
236
+ // if (!this.predicateAccount) {
237
+ // return [];
238
+ // }
239
+ // const accs = await this.walletAccounts();
240
+ // return this.predicateAccount.getPredicateAddresses(accs);
241
+ // }
242
+ // public async currentAccount(): Promise<string | null> {
243
+ // if (!(await this.isConnected())) {
244
+ // throw Error('No connected accounts');
245
+ // }
246
+ // if (!this.predicateAccount) {
247
+ // throw Error('No predicate account found');
248
+ // }
249
+ // const account = await this.getAccountAddress();
250
+ // return account ? this.predicateAccount.getPredicateAddress(account) : null;
251
+ // }
252
+ // public async networks(): Promise<Network[]> {
253
+ // return [await this.currentNetwork()];
254
+ // }
255
+ // public async currentNetwork(): Promise<Network> {
256
+ // const { fuelProvider } = await this.getProviders();
257
+ // const chainId = await fuelProvider.getChainId();
258
+ // return { url: fuelProvider.url, chainId: chainId };
259
+ // }
260
+ // public async signMessage(
261
+ // _address: string,
262
+ // _message: string,
263
+ // ): Promise<string> {
264
+ // throw new Error('A predicate account cannot sign messages');
265
+ // }
266
+ // public async addAssets(_assets: Asset[]): Promise<boolean> {
267
+ // throw new Error('Method not implemented.');
268
+ // }
269
+ // public async addAsset(_asset: Asset): Promise<boolean> {
270
+ // throw new Error('Method not implemented.');
271
+ // }
272
+ // public async assets(): Promise<Array<Asset>> {
273
+ // return [];
274
+ // }
275
+ // public async addNetwork(_networkUrl: string): Promise<boolean> {
276
+ // throw new Error('Method not implemented.');
277
+ // }
278
+ // public async selectNetwork(
279
+ // _network: SelectNetworkArguments,
280
+ // ): Promise<boolean> {
281
+ // throw new Error('Method not implemented.');
282
+ // }
283
+ // public async addAbi(_abiMap: AbiMap): Promise<boolean> {
284
+ // throw new Error('Method not implemented.');
285
+ // }
286
+ // public async getAbi(_contractId: string): Promise<JsonAbi> {
287
+ // throw Error('Cannot get contractId ABI for a predicate');
288
+ // }
289
+ // public async hasAbi(_contractId: string): Promise<boolean> {
290
+ // throw Error('A predicate account cannot have an ABI');
291
+ // }
292
+ // }
@@ -1,29 +0,0 @@
1
- import { type BytesLike } from 'fuels';
2
- import type { PredicateWalletAdapter } from './PredicateWalletAdapter';
3
- import type { Maybe, PredicateConfig } from './types';
4
- export declare class PredicateFactory {
5
- private abi;
6
- private bytecode;
7
- private adapter;
8
- private root;
9
- private generatedAt;
10
- constructor(adapter: PredicateWalletAdapter, { abi, bin }: PredicateConfig, root: string, generatedAt?: number);
11
- getRoot: () => string;
12
- getPredicateAddress: any;
13
- build: any;
14
- getAccountAddress: (address: string, accounts?: Array<string>) => Maybe<string>;
15
- getPredicateAddresses: (accounts?: Array<string>) => Array<string>;
16
- getMaxPredicateGasUsed: any;
17
- equals: (predicate: Maybe<PredicateFactory>) => boolean;
18
- sort: (predicate: PredicateFactory) => number;
19
- }
20
- /**
21
- * Since the predicate resources were fetched and added to the TransactionRequest before the predicate
22
- * was instantiated, it is very likely that they were fetched and added as normal account resources,
23
- * resulting in a witness placeholder being added to the witnesses of the TransactionRequest to
24
- * later be replaced with an actual signature. Since predicate resources do not require a signature,
25
- * this placeholder witness will be removed when calling `Predicate.populateTransactionPredicateData`.
26
- * However, we need to validate if this placeholder witness was added here in order to instantiate the
27
- * predicate with the correct witness index argument.
28
- */
29
- export declare const getMockedSignatureIndex: (witnesses: BytesLike[]) => number;