jcc_wallet 3.0.1 → 3.0.2

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 (47) hide show
  1. package/dist/jcc-wallet.min.js +78 -0
  2. package/lib/constant/index.d.ts +8 -0
  3. package/lib/constant/index.js +18 -0
  4. package/lib/constant/index.js.map +1 -0
  5. package/lib/eth/index.d.ts +37 -0
  6. package/lib/eth/index.js +98 -0
  7. package/lib/eth/index.js.map +1 -0
  8. package/lib/hd/constant.d.ts +26 -0
  9. package/lib/hd/constant.js +56 -0
  10. package/lib/hd/constant.js.map +1 -0
  11. package/lib/hd/eos.plugin.d.ts +5 -0
  12. package/lib/hd/eos.plugin.js +73 -0
  13. package/lib/hd/eos.plugin.js.map +1 -0
  14. package/lib/hd/ethereum.plugin.d.ts +5 -0
  15. package/lib/hd/ethereum.plugin.js +101 -0
  16. package/lib/hd/ethereum.plugin.js.map +1 -0
  17. package/lib/hd/index.d.ts +228 -0
  18. package/lib/hd/index.js +394 -0
  19. package/lib/hd/index.js.map +1 -0
  20. package/lib/hd/plugins.d.ts +2 -0
  21. package/lib/hd/plugins.js +35 -0
  22. package/lib/hd/plugins.js.map +1 -0
  23. package/lib/hd/swtc.plugin.d.ts +6 -0
  24. package/lib/hd/swtc.plugin.js +72 -0
  25. package/lib/hd/swtc.plugin.js.map +1 -0
  26. package/lib/hd/tron.plugin.d.ts +5 -0
  27. package/lib/hd/tron.plugin.js +67 -0
  28. package/lib/hd/tron.plugin.js.map +1 -0
  29. package/lib/index.d.ts +26 -0
  30. package/lib/index.js +62 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/jingchangWallet/index.d.ts +273 -0
  33. package/lib/jingchangWallet/index.js +713 -0
  34. package/lib/jingchangWallet/index.js.map +1 -0
  35. package/lib/moac/index.d.ts +29 -0
  36. package/lib/moac/index.js +58 -0
  37. package/lib/moac/index.js.map +1 -0
  38. package/lib/types/index.d.ts +90 -0
  39. package/lib/types/index.js +3 -0
  40. package/lib/types/index.js.map +1 -0
  41. package/lib/util/index.d.ts +22 -0
  42. package/lib/util/index.js +90 -0
  43. package/lib/util/index.js.map +1 -0
  44. package/lib/x-wallet/index.d.ts +22 -0
  45. package/lib/x-wallet/index.js +86 -0
  46. package/lib/x-wallet/index.js.map +1 -0
  47. package/package.json +2 -2
@@ -0,0 +1,228 @@
1
+ import { BIP44Chain, BIP44ChainMap, getBIP44Chain } from "./constant";
2
+ import { IBIP44Path, IHDPlugin, IKeyPair, IMnemonic } from "../types";
3
+ export { BIP44Chain, BIP44ChainMap, getBIP44Chain };
4
+ export declare class HDWallet {
5
+ private _secret;
6
+ private _mnemonic;
7
+ private _address;
8
+ private _keypair;
9
+ private _path;
10
+ /**
11
+ * generate hd wallet
12
+ *
13
+ * @param {any} opt options of generate, like:
14
+ * {
15
+ * mnemonic: "world list", // optional
16
+ * // see also:bip39 https://github.com/bitcoinjs/bip39/tree/master/ts_src/wordlists
17
+ * // language attribute appears with mnemonic attribute
18
+ * language: english default/chinese_simplified/...
19
+ * secret: "secret string", // optional, default this coding rules of SWTC chain
20
+ * keypair: {privateKey: "xxxx", publicKey: "xxxx"}
21
+ * }
22
+ * way of create hd wallet
23
+ * 1. {mnemonic: "xxx", language:"english"}
24
+ * 2. {secret: "xxxx"}
25
+ * 3. {keypair: {....}, path:{....}}
26
+ * @returns {object} return hd wallet object
27
+ */
28
+ constructor(opt: any);
29
+ /**
30
+ * generate mnemonic
31
+ *
32
+ * @static
33
+ * @param {number} len strength of random bytes, default 128
34
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
35
+ * @returns {string} return mnemonic string, spilt by blank
36
+ */
37
+ static generateMnemonic: (len?: number, language?: string) => string;
38
+ /**
39
+ * get secret from mnemonic, obey encode rule base58 for jingtum
40
+ *
41
+ * @static
42
+ * @param {string} mnemonic mnemonic words
43
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
44
+ * @returns {string} return secret string
45
+ */
46
+ static getSecretFromMnemonic: (mnemonic: string, language?: string) => string;
47
+ /**
48
+ * get mnemonic from secret, obey encode rule base58 for jingtum
49
+ *
50
+ * @static
51
+ * @param {string} secret secret string
52
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
53
+ * @returns {string} return mnemonic word list
54
+ */
55
+ static getMnemonicFromSecret: (secret: string, language?: string) => string;
56
+ /**
57
+ * get keypair from secret
58
+ *
59
+ * @static
60
+ * @param {string} secret secret string
61
+ * @returns {object} return keypair object
62
+ */
63
+ static getKeypairFromSecret: (secret: string) => any;
64
+ /**
65
+ * get hd wallet key pair
66
+ *
67
+ * @static
68
+ * @param {string} rootSecret root secret
69
+ * @param {number} chain chain index number
70
+ * @param {number} account bip44 account index for purpose
71
+ * @param {number} index bip44 last level index
72
+ * @returns {IKeyPair} return keypair object
73
+ */
74
+ static getHDKeypair: (rootSecret: string, chain: number, account: number, index: number) => IKeyPair;
75
+ /**
76
+ * generate hd wallet
77
+ *
78
+ * @static
79
+ * @param {any} opt options of generate, like:
80
+ * {
81
+ * len: 128/160/192/224/256, default is 128, determines number of mnemonic word
82
+ * language: english default/chinese_simplified/chinese_traditional/czech/korean/french/japanese/... see also:bip39 https://github.com/bitcoinjs/bip39/tree/master/ts_src/wordlists
83
+ * }
84
+ * @returns {object} return hd wallet object
85
+ */
86
+ static generate: (opt: any) => HDWallet;
87
+ /**
88
+ * create hd wallet from secret
89
+ *
90
+ * @static
91
+ * @param {string} secret secret string
92
+ * @returns {object} return hd wallet object
93
+ */
94
+ static fromSecret: (secret: string) => HDWallet;
95
+ /**
96
+ * create hd wallet from mnemonic
97
+ *
98
+ * @static
99
+ * @param {IMnemonic} mnemonic object like
100
+ * {mnemonic: "abc abc ...", language: "english"}
101
+ * @returns {object} return hd wallet object
102
+ */
103
+ static fromMnemonic: (mnemonic: IMnemonic) => HDWallet;
104
+ /**
105
+ * create hd wallet from keypair
106
+ *
107
+ * @static
108
+ * @param {IKeyPair} keypair object like
109
+ * {publicKey: "public key...", privateKey: "private key..."}
110
+ * @returns {object} return hd wallet object
111
+ */
112
+ static fromKeypair: (keypair: IKeyPair) => HDWallet;
113
+ /**
114
+ * hd wallet is root or not
115
+ *
116
+ * @returns {boolean} return hd wallet root or not
117
+ */
118
+ isRoot: () => boolean;
119
+ /**
120
+ * generate hd wallet by derive path, obey BIP44 protocol
121
+ *
122
+ * @param {any} opt options of derive, like:
123
+ * {
124
+ * chain: BIP44Chain.ETH, //chain code defined in bip44
125
+ * account: 0, // account for what purpose
126
+ * change: 0, // optional attrube,default always 0, for change account after transfer
127
+ * index: 0, // accout index
128
+ * }
129
+ * @returns {object} return hd wallet object
130
+ */
131
+ deriveWallet: (opt: any) => HDWallet;
132
+ /**
133
+ * get wallet secret
134
+ *
135
+ * @returns {string} return wallet secret
136
+ */
137
+ secret: () => string;
138
+ /**
139
+ * get wallet mnemonic
140
+ *
141
+ * @returns {IMnemonic} return IMnemonic object
142
+ */
143
+ mnemonic: () => IMnemonic;
144
+ /**
145
+ * get chain of hd wallet
146
+ *
147
+ * @returns {string} return chain of hd wallet
148
+ */
149
+ chain: () => string;
150
+ /**
151
+ * get address of hd wallet
152
+ *
153
+ * @returns {string} return address of hd wallet
154
+ */
155
+ address: () => string;
156
+ /**
157
+ * check address valid or not
158
+ * @param {string} address
159
+ * @returns {boolean} true valid, false invalid
160
+ */
161
+ isValidAddress: (address: string) => boolean;
162
+ /**
163
+ * check secret valid or not
164
+ *
165
+ * @param {string} secret
166
+ * @returns {boolean} true valid, false invalid
167
+ */
168
+ isValidSecret: (address: string) => boolean;
169
+ /**
170
+ * hash message
171
+ *
172
+ * @param {string} message
173
+ * @returns {string} return hash of message
174
+ */
175
+ hash: (message: string) => string;
176
+ /**
177
+ * sign message
178
+ * @notice how to operate message(raw or hashed) is different in native sdk of different chain
179
+ * to avoid confusion, we assume that native sdk will automatically hashed message
180
+ * if not the case of native sdk, we hash this message in lower level(plugin), for example ethereum sdk
181
+ * @param {string} message
182
+ * @returns {string} return signature string
183
+ */
184
+ sign: (message: string) => string;
185
+ /**
186
+ * verify signature valid or not
187
+ *
188
+ * @param {string} message origin message
189
+ * @param {string} signature signature
190
+ * @param {string} address account which sign
191
+ * @param {IKeyPair} keypair keypair object, usually to provide public key, private key not required
192
+ *
193
+ * @returns {boolean} true valid, false invalid
194
+ */
195
+ verify: (messgae: string, signature: string, address?: string, keypair?: IKeyPair) => boolean;
196
+ /**
197
+ * recover address/account from signature
198
+ *
199
+ * @param {string} message origin message
200
+ * @param {string} signature signature
201
+ *
202
+ * @returns {string} return address
203
+ */
204
+ recover: (messgae: string, signature: string) => string;
205
+ /**
206
+ * get specified chain wallet api
207
+ *
208
+ * @returns {IHDPlugin} return hd plugin object
209
+ */
210
+ getWalletApi: () => IHDPlugin;
211
+ /**
212
+ * get keypair of hd wallet
213
+ *
214
+ * @returns {IKeyPair} return keypair of message
215
+ */
216
+ keypair: () => IKeyPair;
217
+ /**
218
+ * get path of hd wallet
219
+ *
220
+ * @returns {IBIP44Path} return path of wallet
221
+ */
222
+ path: () => IBIP44Path;
223
+ /**
224
+ * set keypair
225
+ * @param {IKeyPair} keypair
226
+ */
227
+ setKeypair: (keypair: IKeyPair) => void;
228
+ }
@@ -0,0 +1,394 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.HDWallet = exports.getBIP44Chain = exports.BIP44ChainMap = exports.BIP44Chain = void 0;
30
+ var wallet_1 = require("@swtc/wallet");
31
+ var BIP39 = __importStar(require("bip39"));
32
+ var bip32_1 = __importDefault(require("bip32"));
33
+ var ecc = __importStar(require("tiny-secp256k1"));
34
+ var constant_1 = require("./constant");
35
+ Object.defineProperty(exports, "BIP44Chain", { enumerable: true, get: function () { return constant_1.BIP44Chain; } });
36
+ Object.defineProperty(exports, "BIP44ChainMap", { enumerable: true, get: function () { return constant_1.BIP44ChainMap; } });
37
+ Object.defineProperty(exports, "getBIP44Chain", { enumerable: true, get: function () { return constant_1.getBIP44Chain; } });
38
+ var plugins_1 = require("./plugins");
39
+ var addressCodec = wallet_1.KeyPair.addressCodec;
40
+ var HDWallet = /** @class */ (function () {
41
+ /**
42
+ * generate hd wallet
43
+ *
44
+ * @param {any} opt options of generate, like:
45
+ * {
46
+ * mnemonic: "world list", // optional
47
+ * // see also:bip39 https://github.com/bitcoinjs/bip39/tree/master/ts_src/wordlists
48
+ * // language attribute appears with mnemonic attribute
49
+ * language: english default/chinese_simplified/...
50
+ * secret: "secret string", // optional, default this coding rules of SWTC chain
51
+ * keypair: {privateKey: "xxxx", publicKey: "xxxx"}
52
+ * }
53
+ * way of create hd wallet
54
+ * 1. {mnemonic: "xxx", language:"english"}
55
+ * 2. {secret: "xxxx"}
56
+ * 3. {keypair: {....}, path:{....}}
57
+ * @returns {object} return hd wallet object
58
+ */
59
+ function HDWallet(opt) {
60
+ var _this = this;
61
+ /**
62
+ * hd wallet is root or not
63
+ *
64
+ * @returns {boolean} return hd wallet root or not
65
+ */
66
+ this.isRoot = function () {
67
+ return _this._path.chain + _this._path.account + _this._path.change + _this._path.index === 0;
68
+ };
69
+ /**
70
+ * generate hd wallet by derive path, obey BIP44 protocol
71
+ *
72
+ * @param {any} opt options of derive, like:
73
+ * {
74
+ * chain: BIP44Chain.ETH, //chain code defined in bip44
75
+ * account: 0, // account for what purpose
76
+ * change: 0, // optional attrube,default always 0, for change account after transfer
77
+ * index: 0, // accout index
78
+ * }
79
+ * @returns {object} return hd wallet object
80
+ */
81
+ this.deriveWallet = function (opt) {
82
+ if (isNaN(opt.chain) || isNaN(opt.account) || isNaN(opt.index)) {
83
+ return null;
84
+ }
85
+ var hdKeypair = HDWallet.getHDKeypair(_this._secret, opt.chain, opt.account, opt.index);
86
+ return new HDWallet({
87
+ keypair: hdKeypair,
88
+ path: { chain: opt.chain, account: opt.account, change: 0, index: opt.index }
89
+ });
90
+ };
91
+ /**
92
+ * get wallet secret
93
+ *
94
+ * @returns {string} return wallet secret
95
+ */
96
+ this.secret = function () {
97
+ return _this._secret;
98
+ };
99
+ /**
100
+ * get wallet mnemonic
101
+ *
102
+ * @returns {IMnemonic} return IMnemonic object
103
+ */
104
+ this.mnemonic = function () {
105
+ return _this._mnemonic;
106
+ };
107
+ /**
108
+ * get chain of hd wallet
109
+ *
110
+ * @returns {string} return chain of hd wallet
111
+ */
112
+ this.chain = function () {
113
+ return _this.isRoot() ? constant_1.BIP44ChainMap.get(constant_1.BIP44Chain.SWTC) : constant_1.BIP44ChainMap.get(_this._path.chain);
114
+ };
115
+ /**
116
+ * get address of hd wallet
117
+ *
118
+ * @returns {string} return address of hd wallet
119
+ */
120
+ this.address = function () {
121
+ if (!_this._address) {
122
+ var chain = _this.chain();
123
+ _this._address = (0, plugins_1.getPluginByType)(chain).address(_this._secret ? _this._secret : _this._keypair, chain);
124
+ }
125
+ return _this._address;
126
+ };
127
+ /**
128
+ * check address valid or not
129
+ * @param {string} address
130
+ * @returns {boolean} true valid, false invalid
131
+ */
132
+ this.isValidAddress = function (address) {
133
+ return (0, plugins_1.getPluginByType)(_this.chain()).isValidAddress(address);
134
+ };
135
+ /**
136
+ * check secret valid or not
137
+ *
138
+ * @param {string} secret
139
+ * @returns {boolean} true valid, false invalid
140
+ */
141
+ this.isValidSecret = function (address) {
142
+ return (0, plugins_1.getPluginByType)(_this.chain()).isValidSecret(address);
143
+ };
144
+ /**
145
+ * hash message
146
+ *
147
+ * @param {string} message
148
+ * @returns {string} return hash of message
149
+ */
150
+ this.hash = function (message) {
151
+ return (0, plugins_1.getPluginByType)(_this.chain()).hash(message);
152
+ };
153
+ /**
154
+ * sign message
155
+ * @notice how to operate message(raw or hashed) is different in native sdk of different chain
156
+ * to avoid confusion, we assume that native sdk will automatically hashed message
157
+ * if not the case of native sdk, we hash this message in lower level(plugin), for example ethereum sdk
158
+ * @param {string} message
159
+ * @returns {string} return signature string
160
+ */
161
+ this.sign = function (message) {
162
+ return (0, plugins_1.getPluginByType)(_this.chain()).sign(message, _this._keypair.privateKey);
163
+ };
164
+ /**
165
+ * verify signature valid or not
166
+ *
167
+ * @param {string} message origin message
168
+ * @param {string} signature signature
169
+ * @param {string} address account which sign
170
+ * @param {IKeyPair} keypair keypair object, usually to provide public key, private key not required
171
+ *
172
+ * @returns {boolean} true valid, false invalid
173
+ */
174
+ this.verify = function (messgae, signature, address, keypair) {
175
+ if (!address) {
176
+ address = _this.address();
177
+ }
178
+ if (!keypair) {
179
+ keypair = _this._keypair;
180
+ }
181
+ return (0, plugins_1.getPluginByType)(_this.chain()).verify(messgae, signature, address, keypair);
182
+ };
183
+ /**
184
+ * recover address/account from signature
185
+ *
186
+ * @param {string} message origin message
187
+ * @param {string} signature signature
188
+ *
189
+ * @returns {string} return address
190
+ */
191
+ this.recover = function (messgae, signature) {
192
+ return (0, plugins_1.getPluginByType)(_this.chain()).recover(messgae, signature);
193
+ };
194
+ /**
195
+ * get specified chain wallet api
196
+ *
197
+ * @returns {IHDPlugin} return hd plugin object
198
+ */
199
+ this.getWalletApi = function () {
200
+ return (0, plugins_1.getPluginByType)(_this.chain());
201
+ };
202
+ /**
203
+ * get keypair of hd wallet
204
+ *
205
+ * @returns {IKeyPair} return keypair of message
206
+ */
207
+ this.keypair = function () {
208
+ return _this._keypair;
209
+ };
210
+ /**
211
+ * get path of hd wallet
212
+ *
213
+ * @returns {IBIP44Path} return path of wallet
214
+ */
215
+ this.path = function () {
216
+ return _this._path;
217
+ };
218
+ /**
219
+ * set keypair
220
+ * @param {IKeyPair} keypair
221
+ */
222
+ this.setKeypair = function (keypair) {
223
+ _this._keypair = keypair;
224
+ };
225
+ if (!opt) {
226
+ throw new Error("undefined parameters: " + opt);
227
+ }
228
+ this._path = {
229
+ chain: 0,
230
+ account: 0,
231
+ change: 0,
232
+ index: 0
233
+ };
234
+ if (opt.mnemonic) {
235
+ this._secret = HDWallet.getSecretFromMnemonic(opt.mnemonic, opt.language);
236
+ this._keypair = HDWallet.getKeypairFromSecret(this._secret);
237
+ this._mnemonic = { mnemonic: opt.mnemonic, language: opt.language };
238
+ return this;
239
+ }
240
+ if (opt.secret) {
241
+ this._secret = opt.secret;
242
+ this._keypair = HDWallet.getKeypairFromSecret(this._secret);
243
+ this._mnemonic = { mnemonic: HDWallet.getMnemonicFromSecret(this._secret, opt.language), language: opt.language };
244
+ return this;
245
+ }
246
+ // wallet create by keypair, which only for sign message and tx
247
+ if (opt.keypair) {
248
+ if (opt.path) {
249
+ this._keypair = opt.keypair;
250
+ this._mnemonic = null;
251
+ this._secret = null;
252
+ this._path = opt.path;
253
+ }
254
+ else {
255
+ this._keypair = opt.keypair;
256
+ this._mnemonic = null;
257
+ this._secret = null;
258
+ }
259
+ return this;
260
+ }
261
+ // parameter error;
262
+ throw new Error("invalid parameters: " + opt);
263
+ }
264
+ /**
265
+ * generate mnemonic
266
+ *
267
+ * @static
268
+ * @param {number} len strength of random bytes, default 128
269
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
270
+ * @returns {string} return mnemonic string, spilt by blank
271
+ */
272
+ HDWallet.generateMnemonic = function (len, language) {
273
+ if (len === void 0) { len = 128; }
274
+ if (language === void 0) { language = "english"; }
275
+ BIP39.setDefaultWordlist(language);
276
+ return BIP39.generateMnemonic(len);
277
+ };
278
+ /**
279
+ * get secret from mnemonic, obey encode rule base58 for jingtum
280
+ *
281
+ * @static
282
+ * @param {string} mnemonic mnemonic words
283
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
284
+ * @returns {string} return secret string
285
+ */
286
+ HDWallet.getSecretFromMnemonic = function (mnemonic, language) {
287
+ if (language === void 0) { language = "english"; }
288
+ BIP39.setDefaultWordlist(language);
289
+ var entropy = BIP39.mnemonicToEntropy(mnemonic);
290
+ return addressCodec.encodeSeed(Buffer.from(entropy, "hex"));
291
+ };
292
+ /**
293
+ * get mnemonic from secret, obey encode rule base58 for jingtum
294
+ *
295
+ * @static
296
+ * @param {string} secret secret string
297
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
298
+ * @returns {string} return mnemonic word list
299
+ */
300
+ HDWallet.getMnemonicFromSecret = function (secret, language) {
301
+ if (language === void 0) { language = "english"; }
302
+ BIP39.setDefaultWordlist(language);
303
+ var entropy = addressCodec.decodeSeed(secret).bytes;
304
+ return BIP39.entropyToMnemonic(entropy);
305
+ };
306
+ /**
307
+ * get keypair from secret
308
+ *
309
+ * @static
310
+ * @param {string} secret secret string
311
+ * @returns {object} return keypair object
312
+ */
313
+ HDWallet.getKeypairFromSecret = function (secret) {
314
+ return wallet_1.KeyPair.deriveKeypair(secret);
315
+ };
316
+ /**
317
+ * get hd wallet key pair
318
+ *
319
+ * @static
320
+ * @param {string} rootSecret root secret
321
+ * @param {number} chain chain index number
322
+ * @param {number} account bip44 account index for purpose
323
+ * @param {number} index bip44 last level index
324
+ * @returns {IKeyPair} return keypair object
325
+ */
326
+ HDWallet.getHDKeypair = function (rootSecret, chain, account, index) {
327
+ if (account === void 0) { account = 0; }
328
+ var bip44Chain = (0, constant_1.getBIP44Chain)(chain);
329
+ if (bip44Chain.length === 0) {
330
+ return null;
331
+ }
332
+ // eslint-disable-next-line no-bitwise
333
+ var chainIdx = (bip44Chain[0][0] << 1) >> 1;
334
+ var mnemonic = HDWallet.getMnemonicFromSecret(rootSecret);
335
+ var seed = BIP39.mnemonicToSeedSync(mnemonic);
336
+ var bip32 = (0, bip32_1.default)(ecc);
337
+ var b32 = bip32.fromSeed(seed);
338
+ var privateKey = b32.derivePath("m/44'/".concat(chainIdx, "'/").concat(account, "'/0/").concat(index)).privateKey;
339
+ return wallet_1.KeyPair.deriveKeypair(privateKey.toString("hex"));
340
+ };
341
+ /**
342
+ * generate hd wallet
343
+ *
344
+ * @static
345
+ * @param {any} opt options of generate, like:
346
+ * {
347
+ * len: 128/160/192/224/256, default is 128, determines number of mnemonic word
348
+ * language: english default/chinese_simplified/chinese_traditional/czech/korean/french/japanese/... see also:bip39 https://github.com/bitcoinjs/bip39/tree/master/ts_src/wordlists
349
+ * }
350
+ * @returns {object} return hd wallet object
351
+ */
352
+ HDWallet.generate = function (opt) {
353
+ if (!opt) {
354
+ opt = {};
355
+ }
356
+ var mnemonic = HDWallet.generateMnemonic(opt.len, opt.language);
357
+ return new HDWallet({ mnemonic: mnemonic, language: opt.language });
358
+ };
359
+ /**
360
+ * create hd wallet from secret
361
+ *
362
+ * @static
363
+ * @param {string} secret secret string
364
+ * @returns {object} return hd wallet object
365
+ */
366
+ HDWallet.fromSecret = function (secret) {
367
+ return new HDWallet({ secret: secret });
368
+ };
369
+ /**
370
+ * create hd wallet from mnemonic
371
+ *
372
+ * @static
373
+ * @param {IMnemonic} mnemonic object like
374
+ * {mnemonic: "abc abc ...", language: "english"}
375
+ * @returns {object} return hd wallet object
376
+ */
377
+ HDWallet.fromMnemonic = function (mnemonic) {
378
+ return new HDWallet({ mnemonic: mnemonic.mnemonic, language: mnemonic.language });
379
+ };
380
+ /**
381
+ * create hd wallet from keypair
382
+ *
383
+ * @static
384
+ * @param {IKeyPair} keypair object like
385
+ * {publicKey: "public key...", privateKey: "private key..."}
386
+ * @returns {object} return hd wallet object
387
+ */
388
+ HDWallet.fromKeypair = function (keypair) {
389
+ return new HDWallet({ keypair: keypair });
390
+ };
391
+ return HDWallet;
392
+ }());
393
+ exports.HDWallet = HDWallet;
394
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hd/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { IHDPlugin } from "../types";
2
+ export declare function getPluginByType<T extends IHDPlugin>(type: string): T;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPluginByType = void 0;
4
+ var ethereum_plugin_1 = require("./ethereum.plugin");
5
+ var ethereum_plugin_2 = require("./ethereum.plugin");
6
+ var ethereum_plugin_3 = require("./ethereum.plugin");
7
+ var ethereum_plugin_4 = require("./ethereum.plugin");
8
+ var tron_plugin_1 = require("./tron.plugin");
9
+ var eos_plugin_1 = require("./eos.plugin");
10
+ // import { plugin as swtcPlugin } from "./swtc.plugin";
11
+ // import { plugin as bvcadtPlugin } from "./swtc.plugin";
12
+ // import { plugin as callPlugin } from "./swtc.plugin";
13
+ // import { plugin as ripplePlugin } from "./ripple.plugin";
14
+ // import { plugin as streamPlugin } from "./swtc.plugin";
15
+ // import { plugin as bizainPlugin } from "./swtc.plugin";
16
+ var swtc_plugin_1 = require("./swtc.plugin");
17
+ var pluginMap = {
18
+ ethereum: ethereum_plugin_1.plugin,
19
+ bsc: ethereum_plugin_2.plugin,
20
+ heco: ethereum_plugin_3.plugin,
21
+ polygon: ethereum_plugin_4.plugin,
22
+ tron: tron_plugin_1.plugin,
23
+ eos: eos_plugin_1.plugin,
24
+ bvcadt: (0, swtc_plugin_1.XWallet)("bvcadt"),
25
+ call: (0, swtc_plugin_1.XWallet)("call"),
26
+ ripple: (0, swtc_plugin_1.XWallet)("ripple"),
27
+ stream: (0, swtc_plugin_1.XWallet)("stream"),
28
+ bizain: (0, swtc_plugin_1.XWallet)("bizain"),
29
+ jingtum: (0, swtc_plugin_1.XWallet)("jingtum")
30
+ };
31
+ function getPluginByType(type) {
32
+ return pluginMap[type];
33
+ }
34
+ exports.getPluginByType = getPluginByType;
35
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/hd/plugins.ts"],"names":[],"mappings":";;;AAAA,qDAA6D;AAC7D,qDAAwD;AACxD,qDAAyD;AACzD,qDAA4D;AAC5D,6CAAqD;AACrD,2CAAmD;AAEnD,wDAAwD;AACxD,0DAA0D;AAC1D,wDAAwD;AACxD,4DAA4D;AAC5D,0DAA0D;AAC1D,0DAA0D;AAC1D,6CAAwC;AAMxC,IAAM,SAAS,GAAe;IAC5B,QAAQ,EAAE,wBAAc;IACxB,GAAG,EAAE,wBAAS;IACd,IAAI,EAAE,wBAAU;IAChB,OAAO,EAAE,wBAAa;IACtB,IAAI,EAAE,oBAAU;IAChB,GAAG,EAAE,mBAAS;IACd,MAAM,EAAE,IAAA,qBAAO,EAAC,QAAQ,CAAC;IACzB,IAAI,EAAE,IAAA,qBAAO,EAAC,MAAM,CAAC;IACrB,MAAM,EAAE,IAAA,qBAAO,EAAC,QAAQ,CAAC;IACzB,MAAM,EAAE,IAAA,qBAAO,EAAC,QAAQ,CAAC;IACzB,MAAM,EAAE,IAAA,qBAAO,EAAC,QAAQ,CAAC;IACzB,OAAO,EAAE,IAAA,qBAAO,EAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,SAAgB,eAAe,CAAsB,IAAY;IAC/D,OAAO,SAAS,CAAC,IAAI,CAAM,CAAC;AAC9B,CAAC;AAFD,0CAEC"}
@@ -0,0 +1,6 @@
1
+ import { IHDPlugin } from "../types";
2
+ export interface ISwtcPlugin extends IHDPlugin {
3
+ wallet?: any;
4
+ }
5
+ declare const XWallet: (chain: string) => ISwtcPlugin;
6
+ export { XWallet };