@sidhujag/sysweb3-keyring 1.0.547 → 1.0.548

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 (210) hide show
  1. package/package.json +2 -27
  2. package/coverage/clover.xml +0 -2875
  3. package/coverage/coverage-final.json +0 -29468
  4. package/coverage/lcov-report/base.css +0 -354
  5. package/coverage/lcov-report/block-navigation.js +0 -85
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +0 -320
  8. package/coverage/lcov-report/prettify.css +0 -101
  9. package/coverage/lcov-report/prettify.js +0 -1008
  10. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  11. package/coverage/lcov-report/sorter.js +0 -191
  12. package/coverage/lcov-report/src/index.html +0 -276
  13. package/coverage/lcov-report/src/index.ts.html +0 -114
  14. package/coverage/lcov-report/src/initial-state.ts.html +0 -558
  15. package/coverage/lcov-report/src/keyring-manager.ts.html +0 -6279
  16. package/coverage/lcov-report/src/ledger/bitcoin_client/index.html +0 -178
  17. package/coverage/lcov-report/src/ledger/bitcoin_client/index.ts.html +0 -144
  18. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/appClient.ts.html +0 -1560
  19. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/bip32.ts.html +0 -276
  20. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/buffertools.ts.html +0 -495
  21. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/clientCommands.ts.html +0 -1138
  22. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/index.html +0 -363
  23. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts.html +0 -289
  24. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkle.ts.html +0 -486
  25. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkleMap.ts.html +0 -240
  26. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/policy.ts.html +0 -342
  27. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/psbtv2.ts.html +0 -2388
  28. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/varint.ts.html +0 -453
  29. package/coverage/lcov-report/src/ledger/consts.ts.html +0 -177
  30. package/coverage/lcov-report/src/ledger/index.html +0 -216
  31. package/coverage/lcov-report/src/ledger/index.ts.html +0 -1371
  32. package/coverage/lcov-report/src/ledger/utils.ts.html +0 -102
  33. package/coverage/lcov-report/src/signers.ts.html +0 -591
  34. package/coverage/lcov-report/src/storage.ts.html +0 -198
  35. package/coverage/lcov-report/src/transactions/ethereum.ts.html +0 -5826
  36. package/coverage/lcov-report/src/transactions/index.html +0 -216
  37. package/coverage/lcov-report/src/transactions/index.ts.html +0 -93
  38. package/coverage/lcov-report/src/transactions/syscoin.ts.html +0 -1521
  39. package/coverage/lcov-report/src/trezor/index.html +0 -176
  40. package/coverage/lcov-report/src/trezor/index.ts.html +0 -2655
  41. package/coverage/lcov-report/src/types.ts.html +0 -1443
  42. package/coverage/lcov-report/src/utils/derivation-paths.ts.html +0 -486
  43. package/coverage/lcov-report/src/utils/index.html +0 -196
  44. package/coverage/lcov-report/src/utils/psbt.ts.html +0 -159
  45. package/coverage/lcov-report/test/helpers/constants.ts.html +0 -627
  46. package/coverage/lcov-report/test/helpers/index.html +0 -176
  47. package/coverage/lcov.info +0 -4832
  48. package/dist/package.json +0 -50
  49. package/examples/basic-usage.js +0 -140
  50. package/jest.config.js +0 -32
  51. package/readme.md +0 -201
  52. package/src/declare.d.ts +0 -7
  53. package/src/errorUtils.ts +0 -83
  54. package/src/hardware-wallet-manager.ts +0 -655
  55. package/src/index.ts +0 -12
  56. package/src/initial-state.ts +0 -108
  57. package/src/keyring-manager.ts +0 -2698
  58. package/src/ledger/bitcoin_client/index.ts +0 -19
  59. package/src/ledger/bitcoin_client/lib/appClient.ts +0 -405
  60. package/src/ledger/bitcoin_client/lib/bip32.ts +0 -61
  61. package/src/ledger/bitcoin_client/lib/buffertools.ts +0 -134
  62. package/src/ledger/bitcoin_client/lib/clientCommands.ts +0 -356
  63. package/src/ledger/bitcoin_client/lib/constants.ts +0 -12
  64. package/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts +0 -65
  65. package/src/ledger/bitcoin_client/lib/merkle.ts +0 -136
  66. package/src/ledger/bitcoin_client/lib/merkleMap.ts +0 -49
  67. package/src/ledger/bitcoin_client/lib/policy.ts +0 -91
  68. package/src/ledger/bitcoin_client/lib/psbtv2.ts +0 -768
  69. package/src/ledger/bitcoin_client/lib/varint.ts +0 -120
  70. package/src/ledger/consts.ts +0 -3
  71. package/src/ledger/index.ts +0 -685
  72. package/src/ledger/types.ts +0 -74
  73. package/src/network-utils.ts +0 -99
  74. package/src/providers.ts +0 -345
  75. package/src/signers.ts +0 -158
  76. package/src/storage.ts +0 -63
  77. package/src/transactions/__tests__/integration.test.ts +0 -303
  78. package/src/transactions/__tests__/syscoin.test.ts +0 -409
  79. package/src/transactions/ethereum.ts +0 -2503
  80. package/src/transactions/index.ts +0 -2
  81. package/src/transactions/syscoin.ts +0 -542
  82. package/src/trezor/index.ts +0 -1050
  83. package/src/types.ts +0 -366
  84. package/src/utils/derivation-paths.ts +0 -133
  85. package/src/utils/psbt.ts +0 -24
  86. package/src/utils.ts +0 -191
  87. package/test/README.md +0 -158
  88. package/test/__mocks__/ledger-mock.js +0 -20
  89. package/test/__mocks__/trezor-mock.js +0 -75
  90. package/test/cleanup-summary.md +0 -167
  91. package/test/helpers/README.md +0 -78
  92. package/test/helpers/constants.ts +0 -79
  93. package/test/helpers/setup.ts +0 -714
  94. package/test/integration/import-validation.spec.ts +0 -588
  95. package/test/unit/hardware/ledger.spec.ts +0 -869
  96. package/test/unit/hardware/trezor.spec.ts +0 -828
  97. package/test/unit/keyring-manager/account-management.spec.ts +0 -970
  98. package/test/unit/keyring-manager/import-watchonly.spec.ts +0 -181
  99. package/test/unit/keyring-manager/import-wif.spec.ts +0 -126
  100. package/test/unit/keyring-manager/initialization.spec.ts +0 -782
  101. package/test/unit/keyring-manager/key-derivation.spec.ts +0 -996
  102. package/test/unit/keyring-manager/security.spec.ts +0 -505
  103. package/test/unit/keyring-manager/state-management.spec.ts +0 -375
  104. package/test/unit/network/network-management.spec.ts +0 -372
  105. package/test/unit/transactions/ethereum-transactions.spec.ts +0 -382
  106. package/test/unit/transactions/syscoin-transactions.spec.ts +0 -615
  107. package/tsconfig.json +0 -14
  108. /package/{dist/README.md → README.md} +0 -0
  109. /package/{dist/cjs → cjs}/errorUtils.js +0 -0
  110. /package/{dist/cjs → cjs}/errorUtils.js.map +0 -0
  111. /package/{dist/cjs → cjs}/hardware-wallet-manager.js +0 -0
  112. /package/{dist/cjs → cjs}/hardware-wallet-manager.js.map +0 -0
  113. /package/{dist/cjs → cjs}/index.js +0 -0
  114. /package/{dist/cjs → cjs}/index.js.map +0 -0
  115. /package/{dist/cjs → cjs}/initial-state.js +0 -0
  116. /package/{dist/cjs → cjs}/initial-state.js.map +0 -0
  117. /package/{dist/cjs → cjs}/keyring-manager.js +0 -0
  118. /package/{dist/cjs → cjs}/keyring-manager.js.map +0 -0
  119. /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js +0 -0
  120. /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js.map +0 -0
  121. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js +0 -0
  122. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js.map +0 -0
  123. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js +0 -0
  124. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js.map +0 -0
  125. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js +0 -0
  126. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js.map +0 -0
  127. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js +0 -0
  128. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js.map +0 -0
  129. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js +0 -0
  130. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js.map +0 -0
  131. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js +0 -0
  132. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js.map +0 -0
  133. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js +0 -0
  134. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js.map +0 -0
  135. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js +0 -0
  136. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js.map +0 -0
  137. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js +0 -0
  138. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js.map +0 -0
  139. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js +0 -0
  140. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js.map +0 -0
  141. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js +0 -0
  142. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js.map +0 -0
  143. /package/{dist/cjs → cjs}/ledger/consts.js +0 -0
  144. /package/{dist/cjs → cjs}/ledger/consts.js.map +0 -0
  145. /package/{dist/cjs → cjs}/ledger/index.js +0 -0
  146. /package/{dist/cjs → cjs}/ledger/index.js.map +0 -0
  147. /package/{dist/cjs → cjs}/ledger/types.js +0 -0
  148. /package/{dist/cjs → cjs}/ledger/types.js.map +0 -0
  149. /package/{dist/cjs → cjs}/network-utils.js +0 -0
  150. /package/{dist/cjs → cjs}/network-utils.js.map +0 -0
  151. /package/{dist/cjs → cjs}/providers.js +0 -0
  152. /package/{dist/cjs → cjs}/providers.js.map +0 -0
  153. /package/{dist/cjs → cjs}/signers.js +0 -0
  154. /package/{dist/cjs → cjs}/signers.js.map +0 -0
  155. /package/{dist/cjs → cjs}/storage.js +0 -0
  156. /package/{dist/cjs → cjs}/storage.js.map +0 -0
  157. /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js +0 -0
  158. /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js.map +0 -0
  159. /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js +0 -0
  160. /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js.map +0 -0
  161. /package/{dist/cjs → cjs}/transactions/ethereum.js +0 -0
  162. /package/{dist/cjs → cjs}/transactions/ethereum.js.map +0 -0
  163. /package/{dist/cjs → cjs}/transactions/index.js +0 -0
  164. /package/{dist/cjs → cjs}/transactions/index.js.map +0 -0
  165. /package/{dist/cjs → cjs}/transactions/syscoin.js +0 -0
  166. /package/{dist/cjs → cjs}/transactions/syscoin.js.map +0 -0
  167. /package/{dist/cjs → cjs}/trezor/index.js +0 -0
  168. /package/{dist/cjs → cjs}/trezor/index.js.map +0 -0
  169. /package/{dist/cjs → cjs}/types.js +0 -0
  170. /package/{dist/cjs → cjs}/types.js.map +0 -0
  171. /package/{dist/cjs → cjs}/utils/derivation-paths.js +0 -0
  172. /package/{dist/cjs → cjs}/utils/derivation-paths.js.map +0 -0
  173. /package/{dist/cjs → cjs}/utils/psbt.js +0 -0
  174. /package/{dist/cjs → cjs}/utils/psbt.js.map +0 -0
  175. /package/{dist/cjs → cjs}/utils.js +0 -0
  176. /package/{dist/cjs → cjs}/utils.js.map +0 -0
  177. /package/{dist/types → types}/errorUtils.d.ts +0 -0
  178. /package/{dist/types → types}/hardware-wallet-manager.d.ts +0 -0
  179. /package/{dist/types → types}/index.d.ts +0 -0
  180. /package/{dist/types → types}/initial-state.d.ts +0 -0
  181. /package/{dist/types → types}/keyring-manager.d.ts +0 -0
  182. /package/{dist/types → types}/ledger/bitcoin_client/index.d.ts +0 -0
  183. /package/{dist/types → types}/ledger/bitcoin_client/lib/appClient.d.ts +0 -0
  184. /package/{dist/types → types}/ledger/bitcoin_client/lib/bip32.d.ts +0 -0
  185. /package/{dist/types → types}/ledger/bitcoin_client/lib/buffertools.d.ts +0 -0
  186. /package/{dist/types → types}/ledger/bitcoin_client/lib/clientCommands.d.ts +0 -0
  187. /package/{dist/types → types}/ledger/bitcoin_client/lib/constants.d.ts +0 -0
  188. /package/{dist/types → types}/ledger/bitcoin_client/lib/merkelizedPsbt.d.ts +0 -0
  189. /package/{dist/types → types}/ledger/bitcoin_client/lib/merkle.d.ts +0 -0
  190. /package/{dist/types → types}/ledger/bitcoin_client/lib/merkleMap.d.ts +0 -0
  191. /package/{dist/types → types}/ledger/bitcoin_client/lib/policy.d.ts +0 -0
  192. /package/{dist/types → types}/ledger/bitcoin_client/lib/psbtv2.d.ts +0 -0
  193. /package/{dist/types → types}/ledger/bitcoin_client/lib/varint.d.ts +0 -0
  194. /package/{dist/types → types}/ledger/consts.d.ts +0 -0
  195. /package/{dist/types → types}/ledger/index.d.ts +0 -0
  196. /package/{dist/types → types}/ledger/types.d.ts +0 -0
  197. /package/{dist/types → types}/network-utils.d.ts +0 -0
  198. /package/{dist/types → types}/providers.d.ts +0 -0
  199. /package/{dist/types → types}/signers.d.ts +0 -0
  200. /package/{dist/types → types}/storage.d.ts +0 -0
  201. /package/{dist/types → types}/transactions/__tests__/integration.test.d.ts +0 -0
  202. /package/{dist/types → types}/transactions/__tests__/syscoin.test.d.ts +0 -0
  203. /package/{dist/types → types}/transactions/ethereum.d.ts +0 -0
  204. /package/{dist/types → types}/transactions/index.d.ts +0 -0
  205. /package/{dist/types → types}/transactions/syscoin.d.ts +0 -0
  206. /package/{dist/types → types}/trezor/index.d.ts +0 -0
  207. /package/{dist/types → types}/types.d.ts +0 -0
  208. /package/{dist/types → types}/utils/derivation-paths.d.ts +0 -0
  209. /package/{dist/types → types}/utils/psbt.d.ts +0 -0
  210. /package/{dist/types → types}/utils.d.ts +0 -0
package/dist/package.json DELETED
@@ -1,50 +0,0 @@
1
- {
2
- "name": "@sidhujag/sysweb3-keyring",
3
- "version": "1.0.547",
4
- "description": "Keyring Manager for UTXO and Web3 Wallets",
5
- "main": "cjs/index.js",
6
- "types": "types/index.d.ts",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/syscoin/sysweb3.git"
10
- },
11
- "author": "Pali Wallet",
12
- "license": "MIT",
13
- "private": false,
14
- "dependencies": {
15
- "@bitcoinerlab/secp256k1": "^1.2.0",
16
- "@ethersproject/abstract-provider": "^5.8.0",
17
- "@ethersproject/bignumber": "^5.8.0",
18
- "@ethersproject/bytes": "^5.8.0",
19
- "@ethersproject/contracts": "^5.8.0",
20
- "@ethersproject/hdnode": "^5.8.0",
21
- "@ethersproject/logger": "^5.8.0",
22
- "@ethersproject/networks": "^5.8.0",
23
- "@ethersproject/properties": "^5.8.0",
24
- "@ethersproject/providers": "^5.8.0",
25
- "@ethersproject/transactions": "^5.8.0",
26
- "@ethersproject/units": "^5.8.0",
27
- "@ethersproject/wallet": "^5.8.0",
28
- "@ledgerhq/hw-app-eth": "^6.45.12",
29
- "@ledgerhq/hw-transport-webhid": "^6.30.4",
30
- "@ledgerhq/logs": "^6.10.1",
31
- "@metamask/eth-sig-util": "^8.2.0",
32
- "@sidhujag/sysweb3-core": "^1.0.27",
33
- "@sidhujag/sysweb3-network": "^1.0.105",
34
- "@sidhujag/sysweb3-utils": "^1.1.270",
35
- "@trezor/connect-web": "^9.1.5",
36
- "@trezor/connect-webextension": "^9.6.2",
37
- "@trezor/utxo-lib": "^1.0.12",
38
- "bip32-path": "^0.4.2",
39
- "bitcoin-ops": "^1.4.1",
40
- "bitcoinjs-lib": "^7.0.0-rc.0",
41
- "crypto-js": "^4.1.1",
42
- "ethereumjs-util": "^7.1.5"
43
- },
44
- "peerDependencies": {
45
- "syscoinjs-lib": "^1.0.267"
46
- },
47
- "optionalDependencies": {
48
- "zksync-ethers": "5"
49
- }
50
- }
@@ -1,140 +0,0 @@
1
- /**
2
- * Basic usage example of the stateless KeyringManager
3
- */
4
-
5
- import { KeyringManager, KeyringAccountType } from '@sidhujag/sysweb3-keyring';
6
-
7
- // Example state structure (similar to Redux store)
8
- let vaultState = {
9
- accounts: {
10
- [KeyringAccountType.HDAccount]: {},
11
- [KeyringAccountType.Imported]: {},
12
- [KeyringAccountType.Trezor]: {},
13
- [KeyringAccountType.Ledger]: {},
14
- },
15
- activeAccount: { id: 0, type: KeyringAccountType.HDAccount },
16
- activeNetwork: {
17
- chainId: 57,
18
- currency: 'SYS',
19
- kind: 'syscoin',
20
- label: 'Syscoin Mainnet',
21
- url: 'https://blockbook.syscoin.org/',
22
- slip44: 57,
23
- },
24
- // ... other vault properties
25
- };
26
-
27
- // Vault state getter function
28
- const vaultStateGetter = () => vaultState;
29
-
30
- // Update vault state helper (in real app, this would be Redux dispatch)
31
- const updateVaultState = (updates) => {
32
- vaultState = { ...vaultState, ...updates };
33
- };
34
-
35
- async function example() {
36
- try {
37
- const seedPhrase =
38
- 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
39
- const password = 'secure-password';
40
-
41
- // 1. Initialize KeyringManager
42
- console.log('Initializing KeyringManager...');
43
- const keyringManager = await KeyringManager.createInitialized(
44
- seedPhrase,
45
- password,
46
- vaultStateGetter
47
- );
48
-
49
- // 2. Create the initial account (this would be added to your state)
50
- const initialAccount = await keyringManager.createKeyringVaultFromSession();
51
-
52
- // Update your state with the new account
53
- updateVaultState({
54
- accounts: {
55
- ...vaultState.accounts,
56
- [KeyringAccountType.HDAccount]: {
57
- ...vaultState.accounts[KeyringAccountType.HDAccount],
58
- [initialAccount.id]: initialAccount,
59
- },
60
- },
61
- });
62
-
63
- console.log('Initial account created:', initialAccount.address);
64
-
65
- // 3. Create additional accounts
66
- console.log('Creating additional account...');
67
- const newAccount = await keyringManager.addNewAccount('My Second Account');
68
-
69
- // Update state with new account
70
- updateVaultState({
71
- accounts: {
72
- ...vaultState.accounts,
73
- [KeyringAccountType.HDAccount]: {
74
- ...vaultState.accounts[KeyringAccountType.HDAccount],
75
- [newAccount.id]: newAccount,
76
- },
77
- },
78
- });
79
-
80
- console.log('New account created:', newAccount.address);
81
-
82
- // 4. Switch active account
83
- console.log('Switching to new account...');
84
- await keyringManager.setActiveAccount(
85
- newAccount.id,
86
- KeyringAccountType.HDAccount
87
- );
88
-
89
- // Update state with new active account
90
- updateVaultState({
91
- activeAccount: { id: newAccount.id, type: KeyringAccountType.HDAccount },
92
- });
93
-
94
- console.log('Active account switched to:', newAccount.address);
95
-
96
- // 5. Get addresses for UTXO operations
97
- console.log('Getting receiving address...');
98
- const receivingAddress = await keyringManager.updateReceivingAddress();
99
- console.log('Receiving address:', receivingAddress);
100
-
101
- const changeAddress = await keyringManager.getNewChangeAddress();
102
- console.log('Change address:', changeAddress);
103
-
104
- // 6. Network operations
105
- console.log('Current network:', keyringManager.getNetwork().label);
106
-
107
- // 7. Transaction fee estimation example
108
- try {
109
- const feeEstimate =
110
- await keyringManager.syscoinTransaction.getEstimateSysTransactionFee({
111
- txOptions: {},
112
- amount: 0.1,
113
- receivingAddress: 'sys1qexample...',
114
- feeRate: 0.00001,
115
- token: null,
116
- });
117
- console.log('Fee estimate:', feeEstimate.fee);
118
- } catch (error) {
119
- console.log(
120
- 'Fee estimation failed (expected in example):',
121
- error.message
122
- );
123
- }
124
-
125
- // 8. Lock the keyring
126
- console.log('Locking keyring...');
127
- keyringManager.lockWallet();
128
- console.log('Keyring locked:', !keyringManager.isUnlocked());
129
-
130
- // 9. Unlock the keyring
131
- console.log('Unlocking keyring...');
132
- await keyringManager.unlock(password);
133
- console.log('Keyring unlocked:', keyringManager.isUnlocked());
134
- } catch (error) {
135
- console.error('Example failed:', error);
136
- }
137
- }
138
-
139
- // Run the example
140
- example().catch(console.error);
package/jest.config.js DELETED
@@ -1,32 +0,0 @@
1
- module.exports = {
2
- preset: 'ts-jest',
3
- testEnvironment: 'node',
4
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
5
- transform: {
6
- '^.+\\.(ts|tsx)$': [
7
- 'ts-jest',
8
- {
9
- isolatedModules: true,
10
- },
11
- ],
12
- },
13
- testMatch: ['**/test/**/*.spec.ts'],
14
- moduleNameMapper: {
15
- '^@sidhujag/sysweb3-utils$': '<rootDir>/../sysweb3-utils/src',
16
- '^@sidhujag/sysweb3-network$': '<rootDir>/../sysweb3-network/src',
17
- '^@sidhujag/sysweb3-core$': '<rootDir>/../sysweb3-core/src',
18
- '^@ledgerhq/devices/hid-framing$':
19
- '<rootDir>/test/__mocks__/ledger-mock.js',
20
- '^@ledgerhq/hw-transport-webhid$':
21
- '<rootDir>/test/__mocks__/ledger-mock.js',
22
- '^@ledgerhq/evm-tools/.*$': '<rootDir>/test/__mocks__/ledger-mock.js',
23
- '^@ledgerhq/hw-app-eth$': '<rootDir>/test/__mocks__/ledger-mock.js',
24
- '^@ledgerhq/hw-app-btc$': '<rootDir>/test/__mocks__/ledger-mock.js',
25
- '^@trezor/connect-webextension$': '<rootDir>/test/__mocks__/trezor-mock.js',
26
- 'isomorphic-fetch': '<rootDir>/../../__mocks__/isomorphic-fetch.js',
27
- },
28
- setupFilesAfterEnv: [
29
- '<rootDir>/../../jest.setup.js',
30
- '<rootDir>/test/helpers/setup.ts',
31
- ],
32
- };
package/readme.md DELETED
@@ -1,201 +0,0 @@
1
- # Sysweb3-keyring
2
-
3
- A stateless, multi-chain keyring manager for Syscoin and Ethereum-based networks.
4
-
5
- ## Overview
6
-
7
- The sysweb3-keyring provides a unified interface for managing accounts, transactions, and hardware wallets across Syscoin (UTXO) and Ethereum (EVM) networks. The KeyringManager operates statelessly, relying on external state providers (like Redux) for account and network data.
8
-
9
- ## Key Features
10
-
11
- - **Stateless Architecture**: No internal state storage - integrates with external state management
12
- - **Multi-Chain Support**: Handles both UTXO (Syscoin) and EVM (Ethereum) networks
13
- - **Hardware Wallet Support**: Trezor and Ledger integration
14
- - **Secure Session Management**: Encrypted private key handling with session transfer
15
- - **Transaction Management**: Full transaction lifecycle support for both network types
16
-
17
- ## Installation
18
-
19
- ```bash
20
- npm install @sidhujag/sysweb3-keyring
21
- # or
22
- yarn add @sidhujag/sysweb3-keyring
23
- ```
24
-
25
- ## Usage
26
-
27
- ### Basic Setup
28
-
29
- ```javascript
30
- import { KeyringManager } from '@sidhujag/sysweb3-keyring';
31
-
32
- // Create a vault state getter function (e.g., from Redux store)
33
- const vaultStateGetter = () => store.getState().vault;
34
-
35
- // Initialize the keyring manager
36
- const keyringManager = await KeyringManager.createInitialized(
37
- seedPhrase,
38
- password,
39
- vaultStateGetter
40
- );
41
- ```
42
-
43
- ### Account Management
44
-
45
- ```javascript
46
- // Get active account
47
- const activeAccount = keyringManager.getActiveAccount();
48
-
49
- // Create new account
50
- const newAccount = await keyringManager.addNewAccount('My Account');
51
-
52
- // Switch active account
53
- await keyringManager.setActiveAccount(accountId, KeyringAccountType.HDAccount);
54
-
55
- // Import account from private key
56
- const importedAccount = await keyringManager.importAccount(
57
- privateKey,
58
- 'Imported Account'
59
- );
60
- ```
61
-
62
- ### Network Management
63
-
64
- ```javascript
65
- // Set network (automatically switches between UTXO/EVM signers)
66
- await keyringManager.setSignerNetwork(networkConfig);
67
-
68
- // Get current network
69
- const network = keyringManager.getNetwork();
70
- ```
71
-
72
- ### Transaction Operations
73
-
74
- #### Syscoin (UTXO) Transactions
75
-
76
- ```javascript
77
- // Estimate transaction fee
78
- const feeEstimate =
79
- await keyringManager.syscoinTransaction.getEstimateSysTransactionFee({
80
- txOptions: {},
81
- amount: 1.0,
82
- receivingAddress: 'sys1q...',
83
- feeRate: 0.00001,
84
- token: null,
85
- });
86
-
87
- // Sign PSBT
88
- const signedPsbt = await keyringManager.syscoinTransaction.signPSBT({
89
- psbt: psbtData,
90
- isTrezor: false,
91
- isLedger: false,
92
- });
93
-
94
- // Get addresses
95
- const receivingAddress = await keyringManager.updateReceivingAddress();
96
- const changeAddress = await keyringManager.getNewChangeAddress();
97
- ```
98
-
99
- #### Ethereum (EVM) Transactions
100
-
101
- ```javascript
102
- // Send transaction
103
- const txHash = await keyringManager.ethereumTransaction.sendTransaction({
104
- to: '0x...',
105
- value: '1000000000000000000', // 1 ETH in wei
106
- gasLimit: '21000',
107
- gasPrice: '20000000000', // 20 gwei
108
- });
109
-
110
- // Sign message
111
- const signature = await keyringManager.ethereumTransaction.signPersonalMessage([
112
- '0x48656c6c6f', // "Hello" in hex
113
- accountAddress,
114
- ]);
115
- ```
116
-
117
- ### Hardware Wallet Support
118
-
119
- ```javascript
120
- // Import Trezor account
121
- const trezorAccount = await keyringManager.importTrezorAccount(
122
- 'Trezor Account'
123
- );
124
-
125
- // Import Ledger account
126
- const ledgerAccount = await keyringManager.importLedgerAccount(
127
- false,
128
- 'Ledger Account'
129
- );
130
- ```
131
-
132
- ### State Management Integration
133
-
134
- The KeyringManager requires a `vaultStateGetter` function that returns the current vault state:
135
-
136
- ```javascript
137
- // Example with Redux
138
- const vaultStateGetter = () => ({
139
- accounts: {
140
- [KeyringAccountType.HDAccount]: {
141
- /* account data */
142
- },
143
- [KeyringAccountType.Imported]: {
144
- /* imported accounts */
145
- },
146
- },
147
- activeAccount: { id: 0, type: KeyringAccountType.HDAccount },
148
- activeNetwork: {
149
- /* network config */
150
- },
151
- // ... other vault state
152
- });
153
-
154
- // The keyring manager will call this function to get current state
155
- const keyringManager = new KeyringManager();
156
- keyringManager.setVaultStateGetter(vaultStateGetter);
157
- ```
158
-
159
- ## Architecture
160
-
161
- The stateless design means:
162
-
163
- - **No Internal State**: The KeyringManager doesn't store account or network data
164
- - **External State Provider**: Relies on your application's state management (Redux, Context, etc.)
165
- - **Session Management**: Private keys are encrypted and managed securely in memory
166
- - **Multi-Instance Support**: Multiple KeyringManager instances can operate independently
167
-
168
- ## API Reference
169
-
170
- ### KeyringManager
171
-
172
- Main class for keyring operations:
173
-
174
- - `createInitialized(seedPhrase, password, vaultStateGetter)` - Create and initialize keyring
175
- - `addNewAccount(label?)` - Create new HD account
176
- - `setActiveAccount(id, type)` - Switch active account
177
- - `importAccount(privateKey, label?)` - Import account from private key
178
- - `setSignerNetwork(network)` - Set active network
179
- - `unlock(password)` - Unlock keyring
180
- - `lockWallet()` - Lock keyring
181
-
182
- ### Transaction Managers
183
-
184
- - `syscoinTransaction` - UTXO transaction operations
185
- - `ethereumTransaction` - EVM transaction operations
186
-
187
- ### Hardware Wallet Support
188
-
189
- - `importTrezorAccount(label?)` - Import Trezor account
190
- - `importLedgerAccount(isConnected, label?)` - Import Ledger account
191
-
192
- ## Security
193
-
194
- - Private keys are encrypted and stored in memory only
195
- - Session data is cleared when the keyring is locked
196
- - Hardware wallet integration follows device security models
197
- - Secure memory management with explicit cleanup
198
-
199
- ## License
200
-
201
- MIT License
package/src/declare.d.ts DELETED
@@ -1,7 +0,0 @@
1
- declare module 'syscoinjs-lib';
2
- declare module '@sidhujag/sysweb3-core';
3
- declare module 'bip32-path';
4
- interface Window {
5
- pali: Readonly<any>;
6
- }
7
- //TODO: remove window dependence
package/src/errorUtils.ts DELETED
@@ -1,83 +0,0 @@
1
- export function handleStatusCodeError(
2
- statusCode: number,
3
- errorMessage: string
4
- ) {
5
- switch (statusCode) {
6
- case 400:
7
- console.error({
8
- errorMessage,
9
- message:
10
- 'Bad Request: The current provider(RPC) could not understand the request due to invalid syntax.',
11
- });
12
- break;
13
- case 401:
14
- console.error({
15
- errorMessage,
16
- message: 'Unauthorized: The request requires user authentication.',
17
- });
18
- break;
19
- case 403:
20
- console.error({
21
- errorMessage,
22
- message:
23
- 'Forbidden: You do not have the necessary permissions for the resource.',
24
- });
25
- break;
26
- case 404:
27
- console.error({
28
- errorMessage,
29
- message: 'Not Found: The requested RPC method could not be found.',
30
- });
31
- break;
32
- case 405:
33
- console.error({
34
- errorMessage,
35
- message:
36
- 'Method Not Allowed: The request method is known by the current provider but is not supported by the target resource.',
37
- });
38
- break;
39
- case 408:
40
- console.error({
41
- errorMessage,
42
- message:
43
- 'Request Timeout: The current provider(RPC) would like to shut down the unused connection.',
44
- });
45
- break;
46
- case 413:
47
- console.error({
48
- errorMessage,
49
- message:
50
- 'Payload Too Large: The request entity is larger than limits defined by the server.',
51
- });
52
- break;
53
- case 429:
54
- console.error({
55
- errorMessage,
56
- message:
57
- 'The current RPC provider has a low rate-limit. We are applying a cooldown that will affect Pali performance. Modify the RPC URL in the network settings to resolve this issue.',
58
- });
59
- throw {
60
- errorMessage,
61
- message:
62
- 'The current RPC provider has a low rate-limit. We are applying a cooldown that will affect Pali performance. Modify the RPC URL in the network settings to resolve this issue.',
63
- };
64
- case 500:
65
- console.error({
66
- errorMessage,
67
- message:
68
- 'Internal Server Error: The current provider(RPC) encountered an unexpected condition that prevented it from fulfilling the request.',
69
- });
70
- break;
71
- case 503:
72
- console.error({
73
- errorMessage,
74
- message:
75
- 'Service Unavailable: The current provider(RPC) is not ready to handle the request, possibly due to being down for maintenance or overloaded.',
76
- });
77
- break;
78
- default:
79
- throw {
80
- message: `Unexpected HTTP status code: ${statusCode}`,
81
- };
82
- }
83
- }