mainnet-js 2.7.31 → 3.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.html +1 -1
- package/dist/{mainnet-2.7.31.js → mainnet-3.0.0-next.0.js} +718 -678
- package/dist/module/cache/MemoryCache.d.ts +0 -1
- package/dist/module/cache/MemoryCache.d.ts.map +1 -1
- package/dist/module/cache/MemoryCache.js +5 -7
- package/dist/module/cache/MemoryCache.js.map +1 -1
- package/dist/module/cache/index.d.ts +1 -0
- package/dist/module/cache/index.d.ts.map +1 -1
- package/dist/module/cache/index.js +1 -0
- package/dist/module/cache/index.js.map +1 -1
- package/dist/module/cache/walletCache.d.ts +39 -0
- package/dist/module/cache/walletCache.d.ts.map +1 -0
- package/dist/module/cache/walletCache.js +141 -0
- package/dist/module/cache/walletCache.js.map +1 -0
- package/dist/module/history/{electrumTransformer.d.ts → getHistory.d.ts} +3 -3
- package/dist/module/history/getHistory.d.ts.map +1 -0
- package/dist/module/history/{electrumTransformer.js → getHistory.js} +47 -14
- package/dist/module/history/getHistory.js.map +1 -0
- package/dist/module/index.d.ts +3 -1
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +3 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/interface.d.ts +7 -1
- package/dist/module/interface.d.ts.map +1 -1
- package/dist/module/interface.js.map +1 -1
- package/dist/module/message/interface.d.ts +2 -2
- package/dist/module/message/interface.d.ts.map +1 -1
- package/dist/module/message/interface.js +0 -3
- package/dist/module/message/interface.js.map +1 -1
- package/dist/module/message/signed.d.ts +5 -5
- package/dist/module/message/signed.d.ts.map +1 -1
- package/dist/module/message/signed.js +14 -14
- package/dist/module/message/signed.js.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.d.ts +2 -2
- package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.js +2 -1
- package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
- package/dist/module/network/NetworkProvider.d.ts +2 -2
- package/dist/module/network/NetworkProvider.d.ts.map +1 -1
- package/dist/module/network/constant.js +4 -4
- package/dist/module/network/constant.js.map +1 -1
- package/dist/module/transaction/Wif.d.ts +21 -19
- package/dist/module/transaction/Wif.d.ts.map +1 -1
- package/dist/module/transaction/Wif.js +18 -15
- package/dist/module/transaction/Wif.js.map +1 -1
- package/dist/module/util/checkUtxos.d.ts +2 -2
- package/dist/module/util/checkUtxos.d.ts.map +1 -1
- package/dist/module/util/checkUtxos.js +11 -12
- package/dist/module/util/checkUtxos.js.map +1 -1
- package/dist/module/util/deriveCashaddr.d.ts.map +1 -1
- package/dist/module/util/deriveCashaddr.js +6 -0
- package/dist/module/util/deriveCashaddr.js.map +1 -1
- package/dist/module/util/deriveNetwork.js +1 -1
- package/dist/module/util/deriveNetwork.js.map +1 -1
- package/dist/module/util/hd.d.ts +3 -0
- package/dist/module/util/hd.d.ts.map +1 -0
- package/dist/module/util/hd.js +11 -0
- package/dist/module/util/hd.js.map +1 -0
- package/dist/module/util/index.d.ts +1 -0
- package/dist/module/util/index.d.ts.map +1 -1
- package/dist/module/util/index.js +1 -0
- package/dist/module/util/index.js.map +1 -1
- package/dist/module/util/sumUtxoValue.d.ts +3 -3
- package/dist/module/util/sumUtxoValue.d.ts.map +1 -1
- package/dist/module/util/sumUtxoValue.js.map +1 -1
- package/dist/module/wallet/Base.d.ts +37 -93
- package/dist/module/wallet/Base.d.ts.map +1 -1
- package/dist/module/wallet/Base.js +83 -250
- package/dist/module/wallet/Base.js.map +1 -1
- package/dist/module/wallet/HDWallet.d.ts +164 -0
- package/dist/module/wallet/HDWallet.d.ts.map +1 -0
- package/dist/module/wallet/HDWallet.js +486 -0
- package/dist/module/wallet/HDWallet.js.map +1 -0
- package/dist/module/wallet/Watch.d.ts +151 -0
- package/dist/module/wallet/Watch.d.ts.map +1 -0
- package/dist/module/wallet/Watch.js +307 -0
- package/dist/module/wallet/Watch.js.map +1 -0
- package/dist/module/wallet/Wif.d.ts +23 -29
- package/dist/module/wallet/Wif.d.ts.map +1 -1
- package/dist/module/wallet/Wif.js +204 -267
- package/dist/module/wallet/Wif.js.map +1 -1
- package/dist/module/wallet/createWallet.d.ts +7 -1
- package/dist/module/wallet/createWallet.d.ts.map +1 -1
- package/dist/module/wallet/createWallet.js +26 -17
- package/dist/module/wallet/createWallet.js.map +1 -1
- package/dist/module/wallet/interface.d.ts +3 -3
- package/dist/module/wallet/interface.d.ts.map +1 -1
- package/dist/module/wallet/model.d.ts +3 -3
- package/dist/module/wallet/model.d.ts.map +1 -1
- package/dist/module/wallet/model.js +2 -18
- package/dist/module/wallet/model.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/cache/MemoryCache.ts +5 -5
- package/src/cache/index.ts +1 -0
- package/src/cache/walletCache.ts +252 -0
- package/src/history/{electrumTransformer.test.ts → getHistory.test.ts} +6 -19
- package/src/history/{electrumTransformer.ts → getHistory.ts} +63 -15
- package/src/index.ts +3 -1
- package/src/interface.ts +8 -1
- package/src/message/interface.ts +2 -28
- package/src/message/signed.test.ts +56 -48
- package/src/message/signed.ts +15 -18
- package/src/network/ElectrumNetworkProvider.ts +4 -4
- package/src/network/NetworkProvider.ts +2 -2
- package/src/network/Rpc.test.ts +1 -1
- package/src/network/constant.ts +4 -4
- package/src/transaction/Wif.ts +41 -35
- package/src/util/checkUtxos.ts +21 -26
- package/src/util/deriveCashaddr.ts +8 -0
- package/src/util/deriveNetwork.ts +1 -1
- package/src/util/derivePublicKeyHash.test.ts +0 -13
- package/src/util/hd.ts +16 -0
- package/src/util/index.ts +1 -0
- package/src/util/sumUtxoValue.ts +5 -5
- package/src/wallet/Base.ts +123 -332
- package/src/wallet/HDWallet.test.ts +372 -0
- package/src/wallet/HDWallet.ts +764 -0
- package/src/wallet/Watch.ts +447 -0
- package/src/wallet/Wif.ts +258 -283
- package/src/wallet/createWallet.ts +28 -18
- package/src/wallet/interface.ts +3 -3
- package/src/wallet/model.test.ts +2 -2
- package/src/wallet/model.ts +6 -23
- package/dist/module/history/electrumTransformer.d.ts.map +0 -1
- package/dist/module/history/electrumTransformer.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Watch.d.ts","sourceRoot":"","sources":["../../../src/wallet/Watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { binToHex, CashAddressNetworkPrefix, decodeCashAddress, secp256k1, encodeCashAddress, assertSuccess, hash160, decodeCashAddressFormatWithoutPrefix, } from "@bitauth/libauth";
|
|
2
|
+
import { networkPrefixMap, NetworkType, prefixFromNetworkMap, } from "../enum.js";
|
|
3
|
+
import { BaseWallet } from "./Base.js";
|
|
4
|
+
import { WalletTypeEnum } from "./enum.js";
|
|
5
|
+
import { DUST_UTXO_THRESHOLD } from "../constant.js";
|
|
6
|
+
import { derivePrefix } from "../util/derivePublicKeyHash.js";
|
|
7
|
+
import { getHistory } from "../history/getHistory.js";
|
|
8
|
+
import { toCashaddr, toTokenaddr } from "../util/deriveCashaddr.js";
|
|
9
|
+
/**
|
|
10
|
+
* Class to manage a mainnet watch wallet.
|
|
11
|
+
*/
|
|
12
|
+
export class WatchWallet extends BaseWallet {
|
|
13
|
+
static { this.networkPrefix = CashAddressNetworkPrefix.mainnet; }
|
|
14
|
+
static { this.walletType = WalletTypeEnum.Watch; }
|
|
15
|
+
constructor(name = "", network = NetworkType.Mainnet, walletType = WalletTypeEnum.Watch) {
|
|
16
|
+
super(network);
|
|
17
|
+
this.name = name;
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
this.walletType = walletType;
|
|
20
|
+
}
|
|
21
|
+
/// Initialize the watch-only wallet given the options - publicKey variations
|
|
22
|
+
/// This internal method is called by the various static constructors
|
|
23
|
+
async initialize({ name = "", publicKey = undefined, publicKeyCompressed = undefined, publicKeyHash = undefined, address = undefined, } = {}) {
|
|
24
|
+
if (publicKey?.length) {
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
this.publicKey = publicKey;
|
|
27
|
+
if (!publicKeyCompressed) {
|
|
28
|
+
publicKeyCompressed = assertSuccess(secp256k1.compressPublicKey(publicKey));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (publicKeyCompressed?.length) {
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
this.publicKeyCompressed = publicKeyCompressed;
|
|
34
|
+
if (!publicKey) {
|
|
35
|
+
publicKey = assertSuccess(secp256k1.uncompressPublicKey(publicKeyCompressed));
|
|
36
|
+
// @ts-ignore
|
|
37
|
+
this.publicKey = publicKey;
|
|
38
|
+
}
|
|
39
|
+
publicKeyHash = hash160(publicKeyCompressed);
|
|
40
|
+
}
|
|
41
|
+
if (publicKeyHash?.length) {
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
this.publicKeyHash = publicKeyHash;
|
|
44
|
+
address = encodeCashAddress({
|
|
45
|
+
prefix: prefixFromNetworkMap[this.network],
|
|
46
|
+
type: "p2pkh",
|
|
47
|
+
payload: publicKeyHash,
|
|
48
|
+
}).address;
|
|
49
|
+
}
|
|
50
|
+
if (address?.length) {
|
|
51
|
+
// derive prefix if not provided
|
|
52
|
+
if (!address.includes(":")) {
|
|
53
|
+
const decoded = assertSuccess(decodeCashAddressFormatWithoutPrefix(address));
|
|
54
|
+
address = `${decoded.prefix}:${address}`;
|
|
55
|
+
}
|
|
56
|
+
const decoded = assertSuccess(decodeCashAddress(address));
|
|
57
|
+
if (networkPrefixMap[decoded.prefix] !== this.network) {
|
|
58
|
+
throw Error(`a ${decoded.prefix} address cannot be watched from a ${this.network} Wallet`);
|
|
59
|
+
}
|
|
60
|
+
if (!this.publicKeyHash?.length) {
|
|
61
|
+
if (decoded.type.includes("p2pkh")) {
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
this.publicKeyHash = decoded.payload;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
this.cashaddr = toCashaddr(address);
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
this.tokenaddr = toTokenaddr(address);
|
|
70
|
+
}
|
|
71
|
+
if (!this.cashaddr?.length || !this.tokenaddr?.length) {
|
|
72
|
+
throw Error("Could not initialize wallet - insufficient parameters");
|
|
73
|
+
}
|
|
74
|
+
this.name = name;
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* getDepositAddress - get a wallet deposit address
|
|
79
|
+
*
|
|
80
|
+
* a high-level function,
|
|
81
|
+
*
|
|
82
|
+
* @see {@link https://rest-unstable.mainnet.cash/api-docs/#/wallet/depositAddress|/wallet/deposit_address} for REST endpoint
|
|
83
|
+
*
|
|
84
|
+
* @returns The deposit address as a string
|
|
85
|
+
*/
|
|
86
|
+
getDepositAddress() {
|
|
87
|
+
return this.cashaddr;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* getChangeAddress - get a wallet change address
|
|
91
|
+
*
|
|
92
|
+
* a high-level function,
|
|
93
|
+
*
|
|
94
|
+
* @see {@link https://rest-unstable.mainnet.cash/api-docs/#/wallet/changeAddress|/wallet/change_address} for REST endpoint
|
|
95
|
+
*
|
|
96
|
+
* @returns The change address as a string
|
|
97
|
+
*/
|
|
98
|
+
getChangeAddress() {
|
|
99
|
+
return this.cashaddr;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* getTokenDepositAddress - get a cashtoken aware wallet deposit address
|
|
103
|
+
*
|
|
104
|
+
* @returns The cashtoken aware deposit address as a string
|
|
105
|
+
*/
|
|
106
|
+
getTokenDepositAddress() {
|
|
107
|
+
return this.tokenaddr;
|
|
108
|
+
}
|
|
109
|
+
// returns the public key hash for an address
|
|
110
|
+
getPublicKeyHash(hex = false) {
|
|
111
|
+
return hex ? binToHex(this.publicKeyHash) : this.publicKeyHash;
|
|
112
|
+
}
|
|
113
|
+
// returns the public key hash for an address
|
|
114
|
+
getPublicKey(hex = false) {
|
|
115
|
+
if (this.publicKey) {
|
|
116
|
+
return hex ? binToHex(this.publicKey) : this.publicKey;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw Error("The public key for this wallet is not known, perhaps the wallet was created to watch the *hash* of a public key? i.e. a cashaddress.");
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// returns the public key hash for an address
|
|
123
|
+
getPublicKeyCompressed(hex = false) {
|
|
124
|
+
if (this.publicKeyCompressed) {
|
|
125
|
+
return hex
|
|
126
|
+
? binToHex(this.publicKeyCompressed)
|
|
127
|
+
: this.publicKeyCompressed;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
throw Error("The compressed public key for this wallet is not known, perhaps the wallet was created to watch the *hash* of a public key? i.e. a cashaddress.");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Return wallet info
|
|
134
|
+
getInfo() {
|
|
135
|
+
return {
|
|
136
|
+
cashaddr: this.cashaddr,
|
|
137
|
+
tokenaddr: this.tokenaddr,
|
|
138
|
+
isTestnet: this.isTestnet,
|
|
139
|
+
name: this.name,
|
|
140
|
+
network: this.network,
|
|
141
|
+
publicKeyHash: binToHex(this.publicKeyHash),
|
|
142
|
+
walletId: this.toString(),
|
|
143
|
+
walletDbEntry: this.toDbString(),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* utxos Get unspent outputs for the wallet
|
|
148
|
+
*
|
|
149
|
+
*/
|
|
150
|
+
async getUtxos() {
|
|
151
|
+
return this.getAddressUtxos(this.cashaddr);
|
|
152
|
+
}
|
|
153
|
+
async getAddressUtxos(address) {
|
|
154
|
+
if (!address) {
|
|
155
|
+
address = this.cashaddr;
|
|
156
|
+
}
|
|
157
|
+
if (this._slpSemiAware) {
|
|
158
|
+
const bchUtxos = await this.provider.getUtxos(address);
|
|
159
|
+
return bchUtxos.filter((bchutxo) => bchutxo.satoshis > DUST_UTXO_THRESHOLD);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
return this.provider.getUtxos(address);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// gets transaction history of this wallet
|
|
166
|
+
async getRawHistory(fromHeight = 0, toHeight = -1) {
|
|
167
|
+
return await this.provider.getHistory(this.cashaddr, fromHeight, toHeight);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* getHistory gets transaction history of this wallet with most data decoded and ready to present to user
|
|
171
|
+
* @note balance calculations are valid only if querying to the blockchain tip (`toHeight` === -1, `count` === -1)
|
|
172
|
+
* @note this method is heavy on network calls, if invoked in browser use of cache is advised, @see `Config.UseLocalStorageCache`
|
|
173
|
+
* @note this method tries to recreate the history tab view of Electron Cash wallet, however, it may not be 100% accurate if the tnransaction value changes are the same in the same block (ordering)
|
|
174
|
+
*
|
|
175
|
+
* @param unit optional, BCH or currency unit to present balance and balance changes. If unit is currency like USD or EUR, balances will be subject to possible rounding errors. Default 0
|
|
176
|
+
* @param fromHeight optional, if set, history will be limited. Default 0
|
|
177
|
+
* @param toHeight optional, if set, history will be limited. Default -1, meaning that all history items will be returned, including mempool
|
|
178
|
+
* @param start optional, if set, the result set will be paginated with offset `start`
|
|
179
|
+
* @param count optional, if set, the result set will be paginated with `count`. Default -1, meaning that all history items will be returned
|
|
180
|
+
*
|
|
181
|
+
* @returns an array of transaction history items, with input values and addresses encoded in cashaddress format. @see `TransactionHistoryItem` type
|
|
182
|
+
*/
|
|
183
|
+
async getHistory({ unit = "sat", fromHeight = 0, toHeight = -1, start = 0, count = -1, } = {}) {
|
|
184
|
+
return getHistory({
|
|
185
|
+
addresses: [this.cashaddr],
|
|
186
|
+
provider: this.provider,
|
|
187
|
+
unit,
|
|
188
|
+
fromHeight,
|
|
189
|
+
toHeight,
|
|
190
|
+
start,
|
|
191
|
+
count,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
fromId(walletId) {
|
|
195
|
+
const [walletType, networkGiven, arg1, arg2] = walletId.split(":");
|
|
196
|
+
if (walletType !== WalletTypeEnum.Watch) {
|
|
197
|
+
throw Error(`fromId called on a ${walletType} wallet, expected a ${WalletTypeEnum.Watch} wallet`);
|
|
198
|
+
}
|
|
199
|
+
if (this.network != networkGiven) {
|
|
200
|
+
throw Error(`Network prefix ${networkGiven} to a ${this.network} wallet`);
|
|
201
|
+
}
|
|
202
|
+
if (arg2) {
|
|
203
|
+
return this.watchOnly(`${arg1}:${arg2}`);
|
|
204
|
+
}
|
|
205
|
+
return this.watchOnly(arg1);
|
|
206
|
+
}
|
|
207
|
+
// Initialize a watch only wallet from a cash addr
|
|
208
|
+
async watchOnly(address) {
|
|
209
|
+
// @ts-ignore
|
|
210
|
+
this.walletType = WalletTypeEnum.Watch;
|
|
211
|
+
return this.initialize({ address, name: this.name });
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* watchOnly - create a watch-only wallet
|
|
215
|
+
*
|
|
216
|
+
* such kind of wallet does not have a private key and is unable to spend any funds
|
|
217
|
+
* however it still allows to use many utility functions such as getting and watching balance, etc.
|
|
218
|
+
*
|
|
219
|
+
* @param address cashaddress, token aware cashaddress of a wallet
|
|
220
|
+
*
|
|
221
|
+
* @returns instantiated wallet
|
|
222
|
+
*/
|
|
223
|
+
static async watchOnly(address) {
|
|
224
|
+
if (!address?.length)
|
|
225
|
+
throw Error("address is required to create a watch-only wallet");
|
|
226
|
+
return new this().watchOnly(address);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* fromCashaddr - create a watch-only wallet in the network derived from the address
|
|
230
|
+
*
|
|
231
|
+
* such kind of wallet does not have a private key and is unable to spend any funds
|
|
232
|
+
* however it still allows to use many utility functions such as getting and watching balance, etc.
|
|
233
|
+
*
|
|
234
|
+
* @param address cashaddress of a wallet
|
|
235
|
+
*
|
|
236
|
+
* @returns instantiated wallet
|
|
237
|
+
*/
|
|
238
|
+
static async fromCashaddr(address) {
|
|
239
|
+
if (!address?.length)
|
|
240
|
+
throw Error("address is required to create a watch-only wallet");
|
|
241
|
+
const prefix = derivePrefix(address);
|
|
242
|
+
const networkType = networkPrefixMap[prefix];
|
|
243
|
+
return new this("", networkType).watchOnly(address);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* fromTokenaddr - create a watch-only wallet in the network derived from the address
|
|
247
|
+
*
|
|
248
|
+
* such kind of wallet does not have a private key and is unable to spend any funds
|
|
249
|
+
* however it still allows to use many utility functions such as getting and watching balance, etc.
|
|
250
|
+
*
|
|
251
|
+
* @param address token aware cashaddress of a wallet
|
|
252
|
+
*
|
|
253
|
+
* @returns instantiated wallet
|
|
254
|
+
*/
|
|
255
|
+
static async fromTokenaddr(address) {
|
|
256
|
+
if (!address?.length)
|
|
257
|
+
throw Error("address is required to create a watch-only wallet");
|
|
258
|
+
const prefix = derivePrefix(address);
|
|
259
|
+
const networkType = networkPrefixMap[prefix];
|
|
260
|
+
return new this("", networkType).watchOnly(address);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* fromPublicKey - create a watch-only wallet in the network derived from the compressed or uncompressed public key
|
|
264
|
+
*
|
|
265
|
+
* such kind of wallet does not have a private key and is unable to spend any funds
|
|
266
|
+
* however it still allows to use many utility functions such as getting and watching balance, etc.
|
|
267
|
+
*
|
|
268
|
+
* @param publicKey compressed or uncompressed public key
|
|
269
|
+
*
|
|
270
|
+
* @returns instantiated wallet
|
|
271
|
+
*/
|
|
272
|
+
static async fromPublicKey(publicKey) {
|
|
273
|
+
this.walletType = WalletTypeEnum.Watch;
|
|
274
|
+
return new this("", networkPrefixMap[this.networkPrefix]).initialize({
|
|
275
|
+
publicKey: publicKey.length === 33 ? undefined : publicKey,
|
|
276
|
+
publicKeyCompressed: publicKey.length === 33 ? publicKey : undefined,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
// Convenience wrapper to verify interface
|
|
280
|
+
verify(message, sig, address, publicKey) {
|
|
281
|
+
if (!address) {
|
|
282
|
+
address = this.cashaddr;
|
|
283
|
+
}
|
|
284
|
+
return super.verify(message, sig, address, publicKey);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Class to manage a testnet watch wallet.
|
|
289
|
+
*/
|
|
290
|
+
export class TestNetWatchWallet extends WatchWallet {
|
|
291
|
+
static { this.networkPrefix = CashAddressNetworkPrefix.testnet; }
|
|
292
|
+
static { this.walletType = WalletTypeEnum.Watch; }
|
|
293
|
+
constructor(name = "", network = NetworkType.Testnet) {
|
|
294
|
+
super(name, network);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Class to manage a regtest watch wallet.
|
|
299
|
+
*/
|
|
300
|
+
export class RegTestWatchWallet extends WatchWallet {
|
|
301
|
+
static { this.networkPrefix = CashAddressNetworkPrefix.regtest; }
|
|
302
|
+
static { this.walletType = WalletTypeEnum.Watch; }
|
|
303
|
+
constructor(name = "", network = NetworkType.Regtest) {
|
|
304
|
+
super(name, network);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=Watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Watch.js","sourceRoot":"","sources":["../../../src/wallet/Watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,33 +3,38 @@ import { NetworkType } from "../enum.js";
|
|
|
3
3
|
import { WalletTypeEnum } from "./enum.js";
|
|
4
4
|
import { MnemonicI, SendRequestOptionsI, WalletInfoI } from "./interface.js";
|
|
5
5
|
import { OpReturnData, SendRequest, SendRequestArray, SendResponse, SourceOutput, TokenSendRequest } from "./model.js";
|
|
6
|
-
import {
|
|
6
|
+
import { SignedMessageResponseI } from "../message/index.js";
|
|
7
7
|
import ElectrumNetworkProvider from "../network/ElectrumNetworkProvider.js";
|
|
8
|
-
import {
|
|
9
|
-
|
|
8
|
+
import { WatchWallet } from "./Watch.js";
|
|
9
|
+
export interface WalletOptions {
|
|
10
|
+
name?: string;
|
|
11
|
+
mnemonic?: string;
|
|
12
|
+
derivationPath?: string;
|
|
13
|
+
privateKey?: Uint8Array;
|
|
14
|
+
privateKeyWif?: string;
|
|
15
|
+
publicKey?: Uint8Array;
|
|
16
|
+
publicKeyCompressed?: Uint8Array;
|
|
17
|
+
publicKeyHash?: Uint8Array;
|
|
18
|
+
address?: string;
|
|
19
|
+
}
|
|
10
20
|
/**
|
|
11
21
|
* Class to manage a bitcoin cash wallet.
|
|
12
22
|
*/
|
|
13
|
-
export declare class Wallet extends
|
|
23
|
+
export declare class Wallet extends WatchWallet {
|
|
14
24
|
readonly provider: ElectrumNetworkProvider;
|
|
15
|
-
readonly cashaddr: string;
|
|
16
|
-
readonly tokenaddr: string;
|
|
17
25
|
readonly derivationPath: string;
|
|
18
26
|
readonly parentDerivationPath: string;
|
|
19
27
|
readonly mnemonic: string;
|
|
20
28
|
readonly parentXPubKey: string;
|
|
21
29
|
readonly privateKey: Uint8Array;
|
|
22
|
-
readonly publicKeyCompressed: Uint8Array;
|
|
23
30
|
readonly privateKeyWif: string;
|
|
24
|
-
readonly publicKey: Uint8Array;
|
|
25
|
-
readonly publicKeyHash: Uint8Array;
|
|
26
31
|
name: string;
|
|
27
|
-
|
|
32
|
+
constructor(name?: string, network?: NetworkType, walletType?: WalletTypeEnum);
|
|
33
|
+
protected initialize({ name, mnemonic, derivationPath, privateKey, privateKeyWif, publicKey, publicKeyCompressed, publicKeyHash, address, }?: WalletOptions): Promise<this>;
|
|
28
34
|
getSeed(): MnemonicI;
|
|
29
35
|
getInfo(): WalletInfoI;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
constructor(name?: string, network?: NetworkType, walletType?: WalletTypeEnum);
|
|
36
|
+
deriveHdPaths(hdPaths: string[]): Promise<any[]>;
|
|
37
|
+
getXPubKeys(paths?: string[]): Promise<any[]>;
|
|
33
38
|
/**
|
|
34
39
|
* fromId - create a wallet from encoded walletId string
|
|
35
40
|
*
|
|
@@ -57,15 +62,14 @@ export declare class Wallet extends BaseWallet {
|
|
|
57
62
|
/**
|
|
58
63
|
* fromSeed - create a wallet using the seed phrase and derivation path
|
|
59
64
|
*
|
|
60
|
-
* unless specified the derivation path m/44'/
|
|
61
|
-
* this derivation path is standard for Electron Cash SLP and other SLP enabled wallets
|
|
65
|
+
* unless specified the derivation path m/44'/0'/0'/0/0 will be used
|
|
62
66
|
*
|
|
63
|
-
* @param
|
|
67
|
+
* @param mnemonic BIP39 12 word seed phrase
|
|
64
68
|
* @param derivationPath BIP44 HD wallet derivation path to get a single the private key from hierarchy
|
|
65
69
|
*
|
|
66
70
|
* @returns instantiated wallet
|
|
67
71
|
*/
|
|
68
|
-
static fromSeed<T extends typeof Wallet>(this: T,
|
|
72
|
+
static fromSeed<T extends typeof Wallet>(this: T, mnemonic: string, derivationPath?: string): Promise<InstanceType<T>>;
|
|
69
73
|
/**
|
|
70
74
|
* newRandom - create a random wallet
|
|
71
75
|
*
|
|
@@ -77,15 +81,10 @@ export declare class Wallet extends BaseWallet {
|
|
|
77
81
|
* @returns instantiated wallet
|
|
78
82
|
*/
|
|
79
83
|
static newRandom<T extends typeof Wallet>(this: T, name?: string, dbName?: string): Promise<InstanceType<T>>;
|
|
80
|
-
protected generate(): Promise<this>;
|
|
81
|
-
private _generateWif;
|
|
82
|
-
private _generateMnemonic;
|
|
83
84
|
protected fromId: (walletId: string) => Promise<this>;
|
|
84
|
-
getXPubKeys(paths?: any): Promise<any[]>;
|
|
85
85
|
protected fromSeed(mnemonic: string, derivationPath?: string): Promise<this>;
|
|
86
|
-
deriveHdPaths(hdPaths: string[]): Promise<any[]>;
|
|
87
86
|
protected fromPrivateKey(privateKey: string | Uint8Array): Promise<this>;
|
|
88
|
-
protected fromWIF(
|
|
87
|
+
protected fromWIF(privateKeyWif: string): Promise<this>;
|
|
89
88
|
/**
|
|
90
89
|
* newRandom (internal) if the wallet is named, get or create it; otherwise create a random
|
|
91
90
|
* unnamed wallet
|
|
@@ -100,10 +99,6 @@ export declare class Wallet extends BaseWallet {
|
|
|
100
99
|
* @throws {Error} if called on BaseWallet
|
|
101
100
|
*/
|
|
102
101
|
toDbString(): string;
|
|
103
|
-
getMaxAmountToSend(params?: {
|
|
104
|
-
outputCount?: number;
|
|
105
|
-
options?: SendRequestOptionsI;
|
|
106
|
-
}): Promise<BalanceResponse>;
|
|
107
102
|
/**
|
|
108
103
|
* sendMax Send all available funds to a destination cash address
|
|
109
104
|
*
|
|
@@ -125,8 +120,7 @@ export declare class Wallet extends BaseWallet {
|
|
|
125
120
|
sourceOutputs: any[];
|
|
126
121
|
}>;
|
|
127
122
|
signUnsignedTransaction(transaction: Uint8Array | string, sourceOutputs: SourceOutput[]): Promise<Uint8Array>;
|
|
128
|
-
|
|
129
|
-
sign(message: string): Promise<import("../message/interface.js").SignedMessageResponseI>;
|
|
123
|
+
sign(message: string, privateKey?: Uint8Array | undefined): SignedMessageResponseI;
|
|
130
124
|
}
|
|
131
125
|
/**
|
|
132
126
|
* Class to manage a testnet wallet.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wif.d.ts","sourceRoot":"","sources":["../../../src/wallet/Wif.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Wif.d.ts","sourceRoot":"","sources":["../../../src/wallet/Wif.ts"],"names":[],"mappings":"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"}
|