jcc_wallet 1.1.2 → 1.2.1

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.
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WALLET_IS_EMPTY = exports.SECRET_IS_INVALID = exports.PASSWORD_IS_WRONG = exports.PASSWORD_IS_REQUIRED = exports.KEYSTORE_IS_INVALID = exports.ETH_PASSWORD_IS_WRONG = exports.ADDRESS_IS_EXISTENT = void 0;
3
4
  var PASSWORD_IS_REQUIRED = "password is required";
4
5
  exports.PASSWORD_IS_REQUIRED = PASSWORD_IS_REQUIRED;
5
6
  var WALLET_IS_EMPTY = "wallet is empty";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constant/index.ts"],"names":[],"mappings":";;AAAA,IAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAYlD,oDAAoB;AAXtB,IAAM,eAAe,GAAG,iBAAiB,CAAC;AAcxC,0CAAe;AAbjB,IAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAW5C,8CAAiB;AAVnB,IAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAQhD,kDAAmB;AAPrB,IAAM,qBAAqB,GAAG,cAAY,iBAAmB,CAAC;AAM5D,sDAAqB;AALvB,IAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAS5C,8CAAiB;AARnB,IAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAGhD,kDAAmB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constant/index.ts"],"names":[],"mappings":";;;AAAA,IAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAYlD,oDAAoB;AAXtB,IAAM,eAAe,GAAG,iBAAiB,CAAC;AAcxC,0CAAe;AAbjB,IAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAW5C,8CAAiB;AAVnB,IAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAQhD,kDAAmB;AAPrB,IAAM,qBAAqB,GAAG,cAAY,iBAAmB,CAAC;AAM5D,sDAAqB;AALvB,IAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAS5C,8CAAiB;AARnB,IAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAGhD,kDAAmB"}
@@ -17,7 +17,7 @@ declare const isValidAddress: (address: string) => boolean;
17
17
  * @param {string} secret
18
18
  * @returns {string | null} return address if valid, otherwise return null
19
19
  */
20
- declare const getAddress: (secret: string) => string;
20
+ declare const getAddress: (secret: string) => string | null;
21
21
  /**
22
22
  * decrypt ethereum keystore file with ethereum password
23
23
  *
package/lib/eth/index.js CHANGED
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createWallet = exports.decryptKeystore = exports.getAddress = exports.isValidAddress = exports.isValidSecret = void 0;
6
7
  var crypto_1 = __importDefault(require("crypto"));
7
8
  var ethereumjs_util_1 = require("ethereumjs-util");
8
9
  var ethereumjs_wallet_1 = __importDefault(require("ethereumjs-wallet"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eth/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eth/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ declare enum BIP44Chain {
2
+ BITCOIN = 2147483648,
3
+ BSC = 2147492654,
4
+ EOS = 2147483842,
5
+ ETC = 2147483709,
6
+ ETH = 2147483708,
7
+ HECO = 2147484658,
8
+ MOAC = 2147483962,
9
+ POLYGON = 2147484614,
10
+ RIPPLE = 2147483792,
11
+ SWTC = 2147483963,
12
+ CALL = 2147484281,
13
+ BVCADT = 2399141888,
14
+ STREAM = 2399141889,
15
+ BIZAIN = 2399141890
16
+ }
17
+ /**
18
+ * get bip44 chain constant
19
+ *
20
+ * @param {number} chain chain index number
21
+ * @returns {number} bip44 chain constant
22
+ */
23
+ declare const getBIP44Chain: (chain: number) => any;
24
+ declare const BIP44ChainMap: Map<BIP44Chain, string>;
25
+ export { BIP44Chain, BIP44ChainMap, getBIP44Chain };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getBIP44Chain = exports.BIP44ChainMap = exports.BIP44Chain = void 0;
7
+ var bip44_constants_1 = __importDefault(require("bip44-constants"));
8
+ // BIP44 链常量定义
9
+ var BIP44Chain;
10
+ (function (BIP44Chain) {
11
+ BIP44Chain[BIP44Chain["BITCOIN"] = 2147483648] = "BITCOIN";
12
+ BIP44Chain[BIP44Chain["BSC"] = 2147492654] = "BSC";
13
+ BIP44Chain[BIP44Chain["EOS"] = 2147483842] = "EOS";
14
+ BIP44Chain[BIP44Chain["ETC"] = 2147483709] = "ETC";
15
+ BIP44Chain[BIP44Chain["ETH"] = 2147483708] = "ETH";
16
+ BIP44Chain[BIP44Chain["HECO"] = 2147484658] = "HECO";
17
+ BIP44Chain[BIP44Chain["MOAC"] = 2147483962] = "MOAC";
18
+ BIP44Chain[BIP44Chain["POLYGON"] = 2147484614] = "POLYGON";
19
+ BIP44Chain[BIP44Chain["RIPPLE"] = 2147483792] = "RIPPLE";
20
+ BIP44Chain[BIP44Chain["SWTC"] = 2147483963] = "SWTC";
21
+ BIP44Chain[BIP44Chain["CALL"] = 2147484281] = "CALL";
22
+ // not register in bip44, customize setting range: 0x8f000000-0x8fffffff
23
+ BIP44Chain[BIP44Chain["BVCADT"] = 2399141888] = "BVCADT";
24
+ BIP44Chain[BIP44Chain["STREAM"] = 2399141889] = "STREAM";
25
+ BIP44Chain[BIP44Chain["BIZAIN"] = 2399141890] = "BIZAIN";
26
+ })(BIP44Chain || (BIP44Chain = {}));
27
+ exports.BIP44Chain = BIP44Chain;
28
+ /**
29
+ * get bip44 chain constant
30
+ *
31
+ * @param {number} chain chain index number
32
+ * @returns {number} bip44 chain constant
33
+ */
34
+ var getBIP44Chain = function (chain) {
35
+ return bip44_constants_1.default.filter(function (e) { return e[0] === chain; });
36
+ };
37
+ exports.getBIP44Chain = getBIP44Chain;
38
+ var BIP44ChainMap = new Map([
39
+ [BIP44Chain.BITCOIN, "bitcoin"],
40
+ [BIP44Chain.BSC, "bsc"],
41
+ [BIP44Chain.EOS, "eos"],
42
+ [BIP44Chain.ETC, "etc"],
43
+ [BIP44Chain.ETH, "ethereum"],
44
+ [BIP44Chain.HECO, "heco"],
45
+ [BIP44Chain.MOAC, "moac"],
46
+ [BIP44Chain.POLYGON, "polygon"],
47
+ [BIP44Chain.RIPPLE, "ripple"],
48
+ [BIP44Chain.SWTC, "jingtum"],
49
+ [BIP44Chain.CALL, "call"],
50
+ [BIP44Chain.BVCADT, "bvcadt"],
51
+ [BIP44Chain.STREAM, "stream"],
52
+ [BIP44Chain.BIZAIN, "bizain"]
53
+ ]);
54
+ exports.BIP44ChainMap = BIP44ChainMap;
55
+ //# sourceMappingURL=constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/hd/constant.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAwC;AAExC,cAAc;AACd,IAAK,UAiBJ;AAjBD,WAAK,UAAU;IACb,0DAAoB,CAAA;IACpB,kDAAgB,CAAA;IAChB,kDAAgB,CAAA;IAChB,kDAAgB,CAAA;IAChB,kDAAgB,CAAA;IAChB,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IACjB,0DAAoB,CAAA;IACpB,wDAAmB,CAAA;IACnB,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IAEjB,wEAAwE;IACxE,wDAAmB,CAAA;IACnB,wDAAmB,CAAA;IACnB,wDAAmB,CAAA;AACrB,CAAC,EAjBI,UAAU,KAAV,UAAU,QAiBd;AA6BQ,gCAAU;AA3BnB;;;;;GAKG;AACH,IAAM,aAAa,GAAG,UAAC,KAAa;IAClC,OAAO,yBAAS,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAd,CAAc,CAAC,CAAC;AACjD,CAAC,CAAC;AAmBkC,sCAAa;AAjBjD,IAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC;IAC/B,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;IACvB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;IACvB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;IACvB,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC;IAC5B,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;IACzB,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;IACzB,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC;IAC/B,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC7B,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;IAC5B,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;IACzB,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC7B,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC7B,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC9B,CAAC,CAAC;AAEkB,sCAAa"}
@@ -0,0 +1,4 @@
1
+ export interface IEthereumPlugin extends IHDPlugin {
2
+ checkPrivateKey(privateKey: string): string;
3
+ }
4
+ export declare const plugin: IEthereumPlugin;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.plugin = void 0;
26
+ var ethereumjs_wallet_1 = __importDefault(require("ethereumjs-wallet"));
27
+ var ethUtil = __importStar(require("ethereumjs-util"));
28
+ var jcc_common_1 = require("jcc_common");
29
+ exports.plugin = {
30
+ checkPrivateKey: function (privateKey) {
31
+ // check and cut swtc keypair lib add prefix 00
32
+ return privateKey.length === 66 ? privateKey.substring(2) : privateKey;
33
+ },
34
+ address: function (key) {
35
+ if (key.privateKey) {
36
+ var privateKey = this.checkPrivateKey(key.privateKey);
37
+ var buffer = Buffer.from(privateKey, "hex");
38
+ var wallet = ethereumjs_wallet_1.default.fromPrivateKey(buffer);
39
+ // console.log("get public key:", wallet.getPublicKeyString());
40
+ return wallet.getAddressString();
41
+ }
42
+ if (key.publicKey) {
43
+ // TODO: length of ethereum publick key of keypaire is 128, but swtc lib keypair is 64
44
+ // so, if you want get address from public key, get it from private first
45
+ return ethUtil.bufferToHex(ethUtil.publicToAddress(Buffer.from(key.publicKey, "hex")));
46
+ }
47
+ return null;
48
+ },
49
+ isValidAddress: function (address) {
50
+ return ethUtil.isValidAddress(address);
51
+ },
52
+ isValidSecret: function (secret) {
53
+ try {
54
+ return ethUtil.isValidPrivate(Buffer.from(jcc_common_1.filterOx(secret), "hex"));
55
+ }
56
+ catch (error) {
57
+ return false;
58
+ }
59
+ },
60
+ hash: function (message) {
61
+ return ethUtil.keccak256(Buffer.from(message, "utf-8")).toString("hex");
62
+ },
63
+ /**
64
+ *
65
+ * @param message message content, let message is "\x19Ethereum Signed Message:\n" + message.length + message, match web3.accounts.sign function
66
+ * @param privateKey private key
67
+ * @returns signature string
68
+ */
69
+ sign: function (message, privateKey) {
70
+ var key = this.checkPrivateKey(privateKey).toLowerCase();
71
+ var hash = ethUtil.keccak256(Buffer.from(message, "utf-8"));
72
+ var signed = ethUtil.ecsign(hash, Buffer.from(key, "hex"));
73
+ return signed.r.toString("hex") + signed.s.toString("hex") + signed.v.toString(16);
74
+ },
75
+ verify: function (message, signature, address) {
76
+ return this.recover(message, signature) === address;
77
+ },
78
+ recover: function (message, signature) {
79
+ var hash = ethUtil.keccak256(Buffer.from(message, "utf-8"));
80
+ var r = Buffer.from(Buffer.from(signature.substring(0, 64), "hex"));
81
+ var s = Buffer.from(Buffer.from(signature.substring(64, 128), "hex"));
82
+ var v = "0x" + signature.substring(128, 130);
83
+ var pk = ethUtil.ecrecover(hash, v, r, s);
84
+ return ethUtil.bufferToHex(ethUtil.publicToAddress(pk));
85
+ },
86
+ proxy: function (functionName) {
87
+ var args = [];
88
+ for (var _i = 1; _i < arguments.length; _i++) {
89
+ args[_i - 1] = arguments[_i];
90
+ }
91
+ return ethUtil[functionName].apply(ethUtil, args);
92
+ }
93
+ };
94
+ //# sourceMappingURL=ethereum.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum.plugin.js","sourceRoot":"","sources":["../../src/hd/ethereum.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import { BIP44Chain, BIP44ChainMap, getBIP44Chain } from "./constant";
2
+ export { BIP44Chain, BIP44ChainMap, getBIP44Chain };
3
+ export declare class HDWallet {
4
+ private _secret;
5
+ private _mnemonic;
6
+ private _address;
7
+ private _keypair;
8
+ private _path;
9
+ /**
10
+ * generate mnemonic
11
+ *
12
+ * @static
13
+ * @param {number} len strength of random bytes, default 128
14
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
15
+ * @returns {string} return mnemonic string, spilt by blank
16
+ */
17
+ static generateMnemonic: (len?: number, language?: string) => string;
18
+ /**
19
+ * get secret from mnemonic, obey encode rule base58 for jingtum
20
+ *
21
+ * @static
22
+ * @param {string} mnemonic mnemonic words
23
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
24
+ * @returns {string} return secret string
25
+ */
26
+ static getSecretFromMnemonic: (mnemonic: string, language?: string) => string;
27
+ /**
28
+ * get mnemonic from secret, obey encode rule base58 for jingtum
29
+ *
30
+ * @static
31
+ * @param {string} secret secret string
32
+ * @param {string} language localized word list, default is english. see also https://github.com/bitcoinjs/BIP39
33
+ * @returns {string} return mnemonic word list
34
+ */
35
+ static getMnemonicFromSecret: (secret: string, language?: string) => string;
36
+ /**
37
+ * get keypair from secret
38
+ *
39
+ * @static
40
+ * @param {string} secret secret string
41
+ * @returns {object} return keypair object
42
+ */
43
+ static getKeypairFromSecret: (secret: string) => any;
44
+ /**
45
+ * get hd wallet key pair
46
+ *
47
+ * @static
48
+ * @param {string} rootSecret root secret
49
+ * @param {number} chain chain index number
50
+ * @param {number} account bip44 account index for purpose
51
+ * @param {number} index bip44 last level index
52
+ * @returns {IKeyPair} return keypair object
53
+ */
54
+ static getHDKeypair: (rootSecret: string, chain: number, account: number, index: number) => IKeyPair;
55
+ /**
56
+ * generate hd wallet
57
+ *
58
+ * @static
59
+ * @param {any} opt options of generate, like:
60
+ * {
61
+ * len: 128/160/192/224/256, default is 128, determines number of mnemonic word
62
+ * language: english default/chinese_simplified/chinese_traditional/czech/korean/french/japanese/... see also:bip39 https://github.com/bitcoinjs/bip39/tree/master/ts_src/wordlists
63
+ * }
64
+ * @returns {object} return hd wallet object
65
+ */
66
+ static generate: (opt: any) => HDWallet;
67
+ /**
68
+ * create hd wallet from secret
69
+ *
70
+ * @static
71
+ * @param {string} secret secret string
72
+ * @returns {object} return hd wallet object
73
+ */
74
+ static fromSecret: (secret: string) => HDWallet;
75
+ /**
76
+ * create hd wallet from mnemonic
77
+ *
78
+ * @static
79
+ * @param {IMnemonic} mnemonic object like
80
+ * {mnemonic: "abc abc ...", language: "english"}
81
+ * @returns {object} return hd wallet object
82
+ */
83
+ static fromMnemonic: (mnemonic: IMnemonic) => HDWallet;
84
+ /**
85
+ * create hd wallet from keypair
86
+ *
87
+ * @static
88
+ * @param {IKeyPair} keypair object like
89
+ * {publicKey: "public key...", privateKey: "private key..."}
90
+ * @returns {object} return hd wallet object
91
+ */
92
+ static fromKeypair: (keypair: IKeyPair) => HDWallet;
93
+ /**
94
+ * generate hd wallet
95
+ *
96
+ * @param {any} opt options of generate, like:
97
+ * {
98
+ * mnemonic: "world list", // optional
99
+ * // see also:bip39 https://github.com/bitcoinjs/bip39/tree/master/ts_src/wordlists
100
+ * // language attribute appears with mnemonic attribute
101
+ * language: english default/chinese_simplified/...
102
+ * secret: "secret string", // optional, default this coding rules of SWTC chain
103
+ * keypair: {privateKey: "xxxx", publicKey: "xxxx"}
104
+ * }
105
+ * way of create hd wallet
106
+ * 1. {mnemonic: "xxx", language:"english"}
107
+ * 2. {secret: "xxxx"}
108
+ * 3. {keypair: {....}, path:{....}}
109
+ * @returns {object} return hd wallet object
110
+ */
111
+ constructor(opt: any);
112
+ /**
113
+ * hd wallet is root or not
114
+ *
115
+ * @returns {boolean} return hd wallet root or not
116
+ */
117
+ isRoot: () => boolean;
118
+ /**
119
+ * generate hd wallet by derive path, obey BIP44 protocol
120
+ *
121
+ * @param {any} opt options of derive, like:
122
+ * {
123
+ * chain: BIP44Chain.ETH, //chain code defined in bip44
124
+ * account: 0, // account for what purpose
125
+ * change: 0, // optional attrube,default always 0, for change account after transfer
126
+ * index: 0, // accout index
127
+ * }
128
+ * @returns {object} return hd wallet object
129
+ */
130
+ deriveWallet: (opt: any) => HDWallet;
131
+ /**
132
+ * get wallet secret
133
+ *
134
+ * @returns {string} return wallet secret
135
+ */
136
+ secret: () => string;
137
+ /**
138
+ * get wallet mnemonic
139
+ *
140
+ * @returns {IMnemonic} return IMnemonic object
141
+ */
142
+ mnemonic: () => IMnemonic;
143
+ /**
144
+ * get chain of hd wallet
145
+ *
146
+ * @returns {string} return chain of hd wallet
147
+ */
148
+ chain: () => string;
149
+ /**
150
+ * get address of hd wallet
151
+ *
152
+ * @returns {string} return address of hd wallet
153
+ */
154
+ address: () => string;
155
+ /**
156
+ * check address valid or not
157
+ * @param {string} address
158
+ * @returns {boolean} true valid, false invalid
159
+ */
160
+ isValidAddress: (address: string) => boolean;
161
+ /**
162
+ * check secret valid or not
163
+ *
164
+ * @param {string} secret
165
+ * @returns {boolean} true valid, false invalid
166
+ */
167
+ isValidSecret: (address: string) => boolean;
168
+ /**
169
+ * hash message
170
+ *
171
+ * @param {string} message
172
+ * @returns {string} return hash of message
173
+ */
174
+ hash: (message: string) => string;
175
+ /**
176
+ * sign message
177
+ * @notice how to operate message(raw or hashed) is different in native sdk of different chain
178
+ * to avoid confusion, we assume that native sdk will automatically hashed message
179
+ * if not the case of native sdk, we hash this message in lower level(plugin), for example ethereum sdk
180
+ * @param {string} message
181
+ * @returns {string} return signature string
182
+ */
183
+ sign: (message: string) => string;
184
+ /**
185
+ * verify signature valid or not
186
+ *
187
+ * @param {string} message origin message
188
+ * @param {string} signature signature
189
+ * @param {string} address account which sign
190
+ * @param {IKeyPair} keypair keypair object, usually to provide public key, private key not required
191
+ *
192
+ * @returns {boolean} true valid, false invalid
193
+ */
194
+ verify: (messgae: string, signature: string, address?: string, keypair?: IKeyPair) => boolean;
195
+ /**
196
+ * recover address/account from signature
197
+ *
198
+ * @param {string} message origin message
199
+ * @param {string} signature signature
200
+ *
201
+ * @returns {string} return address
202
+ */
203
+ recover: (messgae: string, signature: string) => string;
204
+ /**
205
+ * get specified chain wallet api
206
+ *
207
+ * @returns {IHDPlugin} return hd plugin object
208
+ */
209
+ getWalletApi: () => IHDPlugin;
210
+ /**
211
+ * get keypair of hd wallet
212
+ *
213
+ * @returns {IKeyPair} return keypair of message
214
+ */
215
+ keypair: () => IKeyPair;
216
+ /**
217
+ * get path of hd wallet
218
+ *
219
+ * @returns {IBIP44Path} return path of wallet
220
+ */
221
+ path: () => IBIP44Path;
222
+ /**
223
+ * set keypair
224
+ * @param {IKeyPair} keypair
225
+ */
226
+ setKeypair: (keypair: IKeyPair) => void;
227
+ }