@witnet/sdk 1.0.4 → 1.0.6
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/.env_witnet +6 -6
- package/LICENSE +21 -21
- package/README.md +103 -103
- package/dist/package.json +3 -4
- package/dist/src/bin/helpers.js +2 -2
- package/dist/src/index.js +1 -1
- package/dist/src/lib/crypto/account.d.ts +3 -1
- package/dist/src/lib/crypto/account.d.ts.map +1 -1
- package/dist/src/lib/crypto/account.js +7 -1
- package/dist/src/lib/crypto/coinbase.js +1 -1
- package/dist/src/lib/crypto/index.js +1 -1
- package/dist/src/lib/crypto/interfaces.d.ts +2 -0
- package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
- package/dist/src/lib/crypto/interfaces.js +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +1 -1
- package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +12 -1
- package/dist/src/lib/crypto/signer.d.ts +1 -0
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +18 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
- package/dist/src/lib/crypto/transmitters.d.ts +1 -1
- package/dist/src/lib/crypto/transmitters.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters.js +4 -4
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +2 -1
- package/dist/src/lib/crypto/utils.js +1 -1
- package/dist/src/lib/crypto/wallet.d.ts +3 -1
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +10 -1
- package/dist/src/lib/index.js +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +1 -1
- package/dist/src/lib/radon/ccdr/index.js +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +1 -1
- package/dist/src/lib/radon/filters.js +1 -1
- package/dist/src/lib/radon/index.js +1 -1
- package/dist/src/lib/radon/reducers.js +1 -1
- package/dist/src/lib/radon/types.js +1 -1
- package/dist/src/lib/radon/utils.js +1 -1
- package/dist/src/lib/rpc/index.js +1 -1
- package/dist/src/lib/rpc/nodes.js +1 -1
- package/dist/src/lib/rpc/provider.js +1 -1
- package/dist/src/lib/rpc/types.d.ts +6 -4
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +1 -1
- package/dist/src/lib/types.d.ts +0 -1
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.js +1 -1
- package/dist/witnet/assets/index.js +1 -1
- package/dist/witnet/assets/modals/index.js +1 -1
- package/dist/witnet/assets/modals/web3/eth.js +1 -1
- package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
- package/dist/witnet/assets/modals/web3/wit.js +1 -1
- package/dist/witnet/assets/requests.js +1 -1
- package/package.json +3 -4
- package/src/bin/cli/history.js +31 -31
- package/src/bin/cli/inspect.js +405 -405
- package/src/bin/cli/network.js +594 -594
- package/src/bin/cli/nodes.js +364 -364
- package/src/bin/cli/radon.js +817 -815
- package/src/bin/cli/wallet.js +1121 -1117
- package/src/bin/helpers.js +840 -840
- package/src/bin/postinstall.js +9 -9
- package/src/bin/toolkit.js +295 -295
- package/witnet/assets/_index.js +8 -8
- package/witnet/assets/_requests.js +25 -25
- package/witnet/assets/_sources.js +36 -36
- package/witnet/assets/_templates.js +36 -36
- package/witnet/assets/index.js +4 -4
- package/witnet/assets/modals/index.js +9 -9
- package/witnet/assets/modals/web3/eth.js +29 -29
- package/witnet/assets/modals/web3/ipfs.js +19 -19
- package/witnet/assets/modals/web3/wit.js +21 -21
- package/witnet/assets/requests.js +95 -95
- package/dist/bin/helpers.d.ts +0 -88
- package/dist/bin/helpers.d.ts.map +0 -1
- package/dist/bin/helpers.js +0 -866
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -42
- package/dist/lib/crypto/account.d.ts +0 -18
- package/dist/lib/crypto/account.d.ts.map +0 -1
- package/dist/lib/crypto/account.js +0 -152
- package/dist/lib/crypto/coinbase.d.ts +0 -9
- package/dist/lib/crypto/coinbase.d.ts.map +0 -1
- package/dist/lib/crypto/coinbase.js +0 -39
- package/dist/lib/crypto/index.d.ts +0 -7
- package/dist/lib/crypto/index.d.ts.map +0 -1
- package/dist/lib/crypto/index.js +0 -28
- package/dist/lib/crypto/interfaces.d.ts +0 -80
- package/dist/lib/crypto/interfaces.d.ts.map +0 -1
- package/dist/lib/crypto/interfaces.js +0 -3
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +0 -47
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/DataRequestPayload.js +0 -384
- package/dist/lib/crypto/payloads/StakePayload.d.ts +0 -27
- package/dist/lib/crypto/payloads/StakePayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/StakePayload.js +0 -184
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts +0 -35
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/UnstakePayload.js +0 -244
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +0 -24
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +0 -1
- package/dist/lib/crypto/payloads/ValueTransferPayload.js +0 -182
- package/dist/lib/crypto/payloads.d.ts +0 -54
- package/dist/lib/crypto/payloads.d.ts.map +0 -1
- package/dist/lib/crypto/payloads.js +0 -224
- package/dist/lib/crypto/signer.d.ts +0 -26
- package/dist/lib/crypto/signer.d.ts.map +0 -1
- package/dist/lib/crypto/signer.js +0 -299
- package/dist/lib/crypto/transmitters/DataRequests.d.ts +0 -14
- package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/DataRequests.js +0 -62
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +0 -11
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/StakeDeposits.js +0 -48
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +0 -17
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/StakeWithdrawals.js +0 -115
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +0 -10
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters/ValueTransfers.js +0 -47
- package/dist/lib/crypto/transmitters.d.ts +0 -46
- package/dist/lib/crypto/transmitters.d.ts.map +0 -1
- package/dist/lib/crypto/transmitters.js +0 -506
- package/dist/lib/crypto/types.d.ts +0 -127
- package/dist/lib/crypto/types.d.ts.map +0 -1
- package/dist/lib/crypto/types.js +0 -261
- package/dist/lib/crypto/utils.d.ts +0 -10
- package/dist/lib/crypto/utils.d.ts.map +0 -1
- package/dist/lib/crypto/utils.js +0 -97
- package/dist/lib/crypto/wallet.d.ts +0 -26
- package/dist/lib/crypto/wallet.d.ts.map +0 -1
- package/dist/lib/crypto/wallet.js +0 -327
- package/dist/lib/helpers.d.ts +0 -90
- package/dist/lib/helpers.d.ts.map +0 -1
- package/dist/lib/helpers.js +0 -1031
- package/dist/lib/index.d.ts +0 -5
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -21
- package/dist/lib/radon/artifacts.d.ts +0 -55
- package/dist/lib/radon/artifacts.d.ts.map +0 -1
- package/dist/lib/radon/artifacts.js +0 -347
- package/dist/lib/radon/ccdr/eth.d.ts +0 -100
- package/dist/lib/radon/ccdr/eth.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/eth.js +0 -237
- package/dist/lib/radon/ccdr/index.d.ts +0 -34
- package/dist/lib/radon/ccdr/index.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/index.js +0 -63
- package/dist/lib/radon/ccdr/wit.d.ts +0 -29
- package/dist/lib/radon/ccdr/wit.d.ts.map +0 -1
- package/dist/lib/radon/ccdr/wit.js +0 -60
- package/dist/lib/radon/filters.d.ts +0 -14
- package/dist/lib/radon/filters.d.ts.map +0 -1
- package/dist/lib/radon/filters.js +0 -47
- package/dist/lib/radon/index.d.ts +0 -36
- package/dist/lib/radon/index.d.ts.map +0 -1
- package/dist/lib/radon/index.js +0 -154
- package/dist/lib/radon/reducers.d.ts +0 -29
- package/dist/lib/radon/reducers.d.ts.map +0 -1
- package/dist/lib/radon/reducers.js +0 -101
- package/dist/lib/radon/retrievals.d.ts +0 -120
- package/dist/lib/radon/retrievals.d.ts.map +0 -1
- package/dist/lib/radon/retrievals.js +0 -358
- package/dist/lib/radon/sources.d.ts +0 -102
- package/dist/lib/radon/sources.d.ts.map +0 -1
- package/dist/lib/radon/sources.js +0 -294
- package/dist/lib/radon/types.d.ts +0 -521
- package/dist/lib/radon/types.d.ts.map +0 -1
- package/dist/lib/radon/types.js +0 -1066
- package/dist/lib/radon/utils.d.ts +0 -55
- package/dist/lib/radon/utils.d.ts.map +0 -1
- package/dist/lib/radon/utils.js +0 -181
- package/dist/lib/rpc/farm.d.ts +0 -66
- package/dist/lib/rpc/farm.d.ts.map +0 -1
- package/dist/lib/rpc/farm.js +0 -808
- package/dist/lib/rpc/index.d.ts +0 -3
- package/dist/lib/rpc/index.d.ts.map +0 -1
- package/dist/lib/rpc/index.js +0 -19
- package/dist/lib/rpc/node.d.ts +0 -38
- package/dist/lib/rpc/node.d.ts.map +0 -1
- package/dist/lib/rpc/node.js +0 -335
- package/dist/lib/rpc/nodes.d.ts +0 -40
- package/dist/lib/rpc/nodes.d.ts.map +0 -1
- package/dist/lib/rpc/nodes.js +0 -531
- package/dist/lib/rpc/provider.d.ts +0 -72
- package/dist/lib/rpc/provider.d.ts.map +0 -1
- package/dist/lib/rpc/provider.js +0 -402
- package/dist/lib/rpc/reporter.d.ts +0 -18
- package/dist/lib/rpc/reporter.d.ts.map +0 -1
- package/dist/lib/rpc/reporter.js +0 -99
- package/dist/lib/rpc/types.d.ts +0 -396
- package/dist/lib/rpc/types.d.ts.map +0 -1
- package/dist/lib/rpc/types.js +0 -81
- package/dist/lib/rpc/wallet.d.ts +0 -72
- package/dist/lib/rpc/wallet.d.ts.map +0 -1
- package/dist/lib/rpc/wallet.js +0 -41
- package/dist/lib/types.d.ts +0 -19
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -7
- package/dist/lib/utils.d.ts +0 -5
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -51
- package/dist/src/lib/rpc/reporter.d.ts +0 -17
- package/dist/src/lib/rpc/reporter.d.ts.map +0 -1
- package/dist/src/lib/rpc/reporter.js +0 -27
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { Epoch, Hash, HexString, Nanowits } from "../types";
|
|
2
|
-
export type KeyPath = Array<number>;
|
|
3
|
-
export type KeyedSignature = {
|
|
4
|
-
signature: {
|
|
5
|
-
Secp256k1: {
|
|
6
|
-
der: Array<number>;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
public_key: {
|
|
10
|
-
bytes: Array<number>;
|
|
11
|
-
compressed: number;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
export type PublicKeyHashString = HexString;
|
|
15
|
-
interface Key {
|
|
16
|
-
bytes: Uint8Array;
|
|
17
|
-
}
|
|
18
|
-
export interface PrivateKey extends Key {
|
|
19
|
-
type: "private";
|
|
20
|
-
}
|
|
21
|
-
export interface PublicKey extends Key {
|
|
22
|
-
type: "public";
|
|
23
|
-
}
|
|
24
|
-
export type TransactionCallback = (receipt: TransactionReceipt, error?: any) => any;
|
|
25
|
-
export type TransactionParams = {
|
|
26
|
-
deadline?: Epoch;
|
|
27
|
-
fees: Nanowits;
|
|
28
|
-
};
|
|
29
|
-
export type TransactionReceipt = {
|
|
30
|
-
authorization?: HexString;
|
|
31
|
-
blockEpoch?: Epoch;
|
|
32
|
-
blockHash?: Hash;
|
|
33
|
-
blockMiner?: PublicKeyHashString;
|
|
34
|
-
burns?: Nanowits;
|
|
35
|
-
confirmations?: number;
|
|
36
|
-
change?: Nanowits;
|
|
37
|
-
droHash?: Hash;
|
|
38
|
-
error?: Error;
|
|
39
|
-
fees: Nanowits;
|
|
40
|
-
from?: Array<PublicKeyHashString> | PublicKeyHashString;
|
|
41
|
-
hash: Hash;
|
|
42
|
-
outputLock?: number;
|
|
43
|
-
radArgs?: any;
|
|
44
|
-
radHash?: HexString;
|
|
45
|
-
recipients?: Array<[PublicKeyHashString, Nanowits]>;
|
|
46
|
-
status?: TransactionStatus;
|
|
47
|
-
timestamp: number;
|
|
48
|
-
type: string;
|
|
49
|
-
tx?: any;
|
|
50
|
-
value?: Nanowits;
|
|
51
|
-
weight: number;
|
|
52
|
-
withdrawer?: PublicKeyHashString;
|
|
53
|
-
witnesses?: number | Record<PublicKeyHashString, Nanowits>;
|
|
54
|
-
};
|
|
55
|
-
export declare enum TransactionStatus {
|
|
56
|
-
Pending = "pending",
|
|
57
|
-
Confirmed = "confirmed",
|
|
58
|
-
Finalized = "finalized",
|
|
59
|
-
Mined = "mined",
|
|
60
|
-
Relayed = "relayed"
|
|
61
|
-
}
|
|
62
|
-
export type Transmission = {
|
|
63
|
-
bytecode?: Uint8Array;
|
|
64
|
-
hash?: Hash;
|
|
65
|
-
message: any;
|
|
66
|
-
};
|
|
67
|
-
export type UtxoPointer = {
|
|
68
|
-
transaction_id: Hash;
|
|
69
|
-
output_index: number;
|
|
70
|
-
};
|
|
71
|
-
export declare enum UtxoSelectionStrategy {
|
|
72
|
-
BigFirst = "big-first",
|
|
73
|
-
Random = "random",
|
|
74
|
-
SlimFit = "slim-fit",
|
|
75
|
-
SmallFirst = "small-first"
|
|
76
|
-
}
|
|
77
|
-
export declare class PublicKey implements Key {
|
|
78
|
-
readonly compressed: number;
|
|
79
|
-
readonly bytes: Uint8Array;
|
|
80
|
-
static fromProtobuf(protobuf: {
|
|
81
|
-
compressed: number;
|
|
82
|
-
bytes: Array<number>;
|
|
83
|
-
}): PublicKey;
|
|
84
|
-
static fromUint8Array(uint8Array: Uint8Array): PublicKey;
|
|
85
|
-
static recoverFrom(recoverable: any, msg: Uint8Array): PublicKey;
|
|
86
|
-
constructor(compressed: number, bytes: Uint8Array);
|
|
87
|
-
equals(pubKey: PublicKey): boolean;
|
|
88
|
-
hash(): PublicKeyHash;
|
|
89
|
-
toString(): string;
|
|
90
|
-
toUint8Array(): Uint8Array;
|
|
91
|
-
}
|
|
92
|
-
export declare class PublicKeyHash {
|
|
93
|
-
static fromHash(hash: Uint8Array): PublicKeyHash;
|
|
94
|
-
static fromHexString(hash: HexString): PublicKeyHash;
|
|
95
|
-
static fromPublicKey(pk: PublicKey): PublicKeyHash;
|
|
96
|
-
static fromBech32(pkh: string): PublicKeyHash;
|
|
97
|
-
protected words: number[];
|
|
98
|
-
constructor(words: number[]);
|
|
99
|
-
toBech32(network?: string): string;
|
|
100
|
-
toBytes20(): Uint8Array;
|
|
101
|
-
toBytes32(): Uint8Array;
|
|
102
|
-
toHexString(): string;
|
|
103
|
-
}
|
|
104
|
-
export declare class Signature {
|
|
105
|
-
static fromHexString(hex: string): Signature;
|
|
106
|
-
readonly bytes: Uint8Array;
|
|
107
|
-
constructor(bytes: Uint8Array);
|
|
108
|
-
toHexString(): string;
|
|
109
|
-
}
|
|
110
|
-
export declare class RecoverableSignature extends Signature {
|
|
111
|
-
static from(recoverable: any, msg: Uint8Array): RecoverableSignature;
|
|
112
|
-
static fromKeyedSignature(ks: KeyedSignature, msg: Uint8Array): RecoverableSignature;
|
|
113
|
-
readonly message: Uint8Array;
|
|
114
|
-
readonly pubKey: PublicKey;
|
|
115
|
-
readonly recoveryId: number;
|
|
116
|
-
constructor(pubKey: PublicKey, bytes: Uint8Array, msg: Uint8Array);
|
|
117
|
-
toHexString(): string;
|
|
118
|
-
toKeyedSignature(): any;
|
|
119
|
-
toProtobuf(): any;
|
|
120
|
-
}
|
|
121
|
-
export declare class TransmissionError extends Error {
|
|
122
|
-
readonly error?: any;
|
|
123
|
-
readonly inFlight: Transmission;
|
|
124
|
-
constructor(inFlight: Transmission, error?: any);
|
|
125
|
-
}
|
|
126
|
-
export {};
|
|
127
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/types.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/crypto/types.js
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
18
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
19
|
-
if (!m) return o;
|
|
20
|
-
var i = m.call(o), r, ar = [], e;
|
|
21
|
-
try {
|
|
22
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
23
|
-
}
|
|
24
|
-
catch (error) { e = { error: error }; }
|
|
25
|
-
finally {
|
|
26
|
-
try {
|
|
27
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
28
|
-
}
|
|
29
|
-
finally { if (e) throw e.error; }
|
|
30
|
-
}
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
34
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
35
|
-
if (ar || !(i in from)) {
|
|
36
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
37
|
-
ar[i] = from[i];
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
41
|
-
};
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.TransmissionError = exports.RecoverableSignature = exports.Signature = exports.PublicKeyHash = exports.PublicKey = exports.UtxoSelectionStrategy = exports.TransactionStatus = void 0;
|
|
44
|
-
var secp256k1 = require('secp256k1');
|
|
45
|
-
var bech32_1 = require("bech32");
|
|
46
|
-
var helpers_1 = require("../../bin/helpers");
|
|
47
|
-
var utils_1 = require("./utils");
|
|
48
|
-
var TransactionStatus;
|
|
49
|
-
(function (TransactionStatus) {
|
|
50
|
-
/// Awating to be relayed by the RPC provider
|
|
51
|
-
TransactionStatus["Pending"] = "pending";
|
|
52
|
-
/// Remains on-chain after certain amount of epochs since mined
|
|
53
|
-
TransactionStatus["Confirmed"] = "confirmed";
|
|
54
|
-
/// Remains on-chain after end of next super-epoch to the one on which the tx got mined
|
|
55
|
-
TransactionStatus["Finalized"] = "finalized";
|
|
56
|
-
/// Relayed and allegedly included in a block
|
|
57
|
-
TransactionStatus["Mined"] = "mined";
|
|
58
|
-
/// Relayed to the mempool
|
|
59
|
-
TransactionStatus["Relayed"] = "relayed";
|
|
60
|
-
})(TransactionStatus || (exports.TransactionStatus = TransactionStatus = {}));
|
|
61
|
-
var UtxoSelectionStrategy;
|
|
62
|
-
(function (UtxoSelectionStrategy) {
|
|
63
|
-
UtxoSelectionStrategy["BigFirst"] = "big-first";
|
|
64
|
-
UtxoSelectionStrategy["Random"] = "random";
|
|
65
|
-
UtxoSelectionStrategy["SlimFit"] = "slim-fit";
|
|
66
|
-
UtxoSelectionStrategy["SmallFirst"] = "small-first";
|
|
67
|
-
})(UtxoSelectionStrategy || (exports.UtxoSelectionStrategy = UtxoSelectionStrategy = {}));
|
|
68
|
-
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
69
|
-
/// EXPORTED CLASSES
|
|
70
|
-
/// ===================================================================================================================
|
|
71
|
-
var PublicKey = /** @class */ (function () {
|
|
72
|
-
function PublicKey(compressed, bytes) {
|
|
73
|
-
this.compressed = compressed;
|
|
74
|
-
this.bytes = bytes;
|
|
75
|
-
}
|
|
76
|
-
PublicKey.fromProtobuf = function (protobuf) {
|
|
77
|
-
return new PublicKey(protobuf.compressed, Uint8Array.from(protobuf.bytes));
|
|
78
|
-
};
|
|
79
|
-
PublicKey.fromUint8Array = function (uint8Array) {
|
|
80
|
-
return new PublicKey(uint8Array[0], uint8Array.slice(1));
|
|
81
|
-
};
|
|
82
|
-
PublicKey.recoverFrom = function (recoverable, msg) {
|
|
83
|
-
var bytes;
|
|
84
|
-
if ((0, helpers_1.isHexString)(recoverable)) {
|
|
85
|
-
bytes = (0, helpers_1.fromHexString)(recoverable);
|
|
86
|
-
}
|
|
87
|
-
else if (recoverable instanceof Buffer) {
|
|
88
|
-
bytes = Uint8Array.from(recoverable.buffer);
|
|
89
|
-
}
|
|
90
|
-
else if (recoverable instanceof Uint8Array) {
|
|
91
|
-
bytes = recoverable;
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
throw new TypeError("PublicKey: unsupported recoverable signature format: ".concat(recoverable));
|
|
95
|
-
}
|
|
96
|
-
if (bytes.length !== 65) {
|
|
97
|
-
throw new TypeError("PublicKey: expected recoverable signature with length 65: ".concat((0, helpers_1.toHexString)(bytes)));
|
|
98
|
-
}
|
|
99
|
-
var _a = __read([bytes[0], bytes.slice(1)], 2), recoveryId = _a[0], signature = _a[1];
|
|
100
|
-
return PublicKey.fromUint8Array(secp256k1.ecdsaRecover(signature, recoveryId, msg));
|
|
101
|
-
};
|
|
102
|
-
PublicKey.prototype.equals = function (pubKey) {
|
|
103
|
-
return pubKey.compressed === this.compressed && matchingUint8Arrays(pubKey.bytes, pubKey.bytes);
|
|
104
|
-
};
|
|
105
|
-
PublicKey.prototype.hash = function () {
|
|
106
|
-
return PublicKeyHash.fromPublicKey(this);
|
|
107
|
-
};
|
|
108
|
-
PublicKey.prototype.toString = function () {
|
|
109
|
-
return (0, helpers_1.toHexString)(__spreadArray([this.compressed], __read(this.bytes), false));
|
|
110
|
-
};
|
|
111
|
-
PublicKey.prototype.toUint8Array = function () {
|
|
112
|
-
return Uint8Array.from(__spreadArray([this.compressed], __read(this.bytes), false));
|
|
113
|
-
};
|
|
114
|
-
return PublicKey;
|
|
115
|
-
}());
|
|
116
|
-
exports.PublicKey = PublicKey;
|
|
117
|
-
;
|
|
118
|
-
/// ===================================================================================================================
|
|
119
|
-
var PublicKeyHash = /** @class */ (function () {
|
|
120
|
-
function PublicKeyHash(words) {
|
|
121
|
-
this.words = words;
|
|
122
|
-
}
|
|
123
|
-
PublicKeyHash.fromHash = function (hash) {
|
|
124
|
-
return new PublicKeyHash(bech32_1.bech32.toWords(hash));
|
|
125
|
-
};
|
|
126
|
-
PublicKeyHash.fromHexString = function (hash) {
|
|
127
|
-
return PublicKeyHash.fromHash((0, helpers_1.fromHexString)(hash));
|
|
128
|
-
};
|
|
129
|
-
PublicKeyHash.fromPublicKey = function (pk) {
|
|
130
|
-
return PublicKeyHash.fromHash((0, utils_1.sha256)(Buffer.from(__spreadArray([pk.compressed], __read(pk.bytes), false))).subarray(0, 20));
|
|
131
|
-
};
|
|
132
|
-
PublicKeyHash.fromBech32 = function (pkh) {
|
|
133
|
-
try {
|
|
134
|
-
pkh = pkh.toLowerCase();
|
|
135
|
-
if (pkh.startsWith('wit')) {
|
|
136
|
-
return new PublicKeyHash(bech32_1.bech32.decode(pkh, 66).words);
|
|
137
|
-
}
|
|
138
|
-
else if (pkh.startsWith('twit')) {
|
|
139
|
-
return new PublicKeyHash(bech32_1.bech32.decode(pkh, 67).words);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
throw new TypeError("PublicKeyHash: invalid bech32 string: ".concat(pkh));
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
catch (_a) {
|
|
146
|
-
throw new TypeError("PublicKeyHash: invalid bech32 string: ".concat(pkh));
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
PublicKeyHash.prototype.toBech32 = function (network) {
|
|
150
|
-
if (network === void 0) { network = "mainnet"; }
|
|
151
|
-
return network === "mainnet" ? bech32_1.bech32.encode('wit', this.words, 66) : bech32_1.bech32.encode('twit', this.words, 67);
|
|
152
|
-
};
|
|
153
|
-
PublicKeyHash.prototype.toBytes20 = function () {
|
|
154
|
-
return Uint8Array.from(bech32_1.bech32.fromWords(this.words).slice(0, 20));
|
|
155
|
-
};
|
|
156
|
-
PublicKeyHash.prototype.toBytes32 = function () {
|
|
157
|
-
return Uint8Array.from(__spreadArray(__spreadArray([], __read(bech32_1.bech32.fromWords(this.words).slice(0, 20)), false), __read(new Array(12).fill(0)), false));
|
|
158
|
-
};
|
|
159
|
-
PublicKeyHash.prototype.toHexString = function () {
|
|
160
|
-
return (0, helpers_1.toHexString)(this.toBytes20());
|
|
161
|
-
};
|
|
162
|
-
return PublicKeyHash;
|
|
163
|
-
}());
|
|
164
|
-
exports.PublicKeyHash = PublicKeyHash;
|
|
165
|
-
/// ===================================================================================================================
|
|
166
|
-
var Signature = /** @class */ (function () {
|
|
167
|
-
function Signature(bytes) {
|
|
168
|
-
this.bytes = bytes;
|
|
169
|
-
}
|
|
170
|
-
Signature.fromHexString = function (hex) {
|
|
171
|
-
return new Signature((0, helpers_1.fromHexString)(hex));
|
|
172
|
-
};
|
|
173
|
-
Signature.prototype.toHexString = function () {
|
|
174
|
-
return (0, helpers_1.toHexString)(this.bytes);
|
|
175
|
-
};
|
|
176
|
-
return Signature;
|
|
177
|
-
}());
|
|
178
|
-
exports.Signature = Signature;
|
|
179
|
-
/// ===================================================================================================================
|
|
180
|
-
var RecoverableSignature = /** @class */ (function (_super) {
|
|
181
|
-
__extends(RecoverableSignature, _super);
|
|
182
|
-
function RecoverableSignature(pubKey, bytes, msg) {
|
|
183
|
-
var _this = _super.call(this, bytes) || this;
|
|
184
|
-
var pubKeyRaw = pubKey.toUint8Array();
|
|
185
|
-
var recoveryId;
|
|
186
|
-
for (recoveryId = 0; recoveryId < 4; recoveryId++) {
|
|
187
|
-
var recovered = void 0;
|
|
188
|
-
try {
|
|
189
|
-
recovered = secp256k1.ecdsaRecover(bytes, recoveryId, msg);
|
|
190
|
-
if (matchingUint8Arrays(recovered, pubKeyRaw))
|
|
191
|
-
break;
|
|
192
|
-
}
|
|
193
|
-
catch (_a) { }
|
|
194
|
-
}
|
|
195
|
-
_this.message = msg;
|
|
196
|
-
_this.pubKey = pubKey;
|
|
197
|
-
_this.recoveryId = recoveryId;
|
|
198
|
-
return _this;
|
|
199
|
-
}
|
|
200
|
-
RecoverableSignature.from = function (recoverable, msg) {
|
|
201
|
-
var bytes;
|
|
202
|
-
if ((0, helpers_1.isHexString)(recoverable)) {
|
|
203
|
-
bytes = (0, helpers_1.fromHexString)(recoverable).slice(1);
|
|
204
|
-
}
|
|
205
|
-
else if (recoverable instanceof Buffer) {
|
|
206
|
-
bytes = Uint8Array.from(recoverable.buffer).slice(1);
|
|
207
|
-
}
|
|
208
|
-
else if (recoverable instanceof Uint8Array) {
|
|
209
|
-
bytes = recoverable.slice(1);
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
throw new TypeError("RecoverableSignature: unsupported recoverable signature format: ".concat(recoverable));
|
|
213
|
-
}
|
|
214
|
-
if (bytes.length !== 64) {
|
|
215
|
-
throw new TypeError("RecoverableSignatre: expected recoverable signature with length 65: ".concat((0, helpers_1.toHexString)(bytes)));
|
|
216
|
-
}
|
|
217
|
-
return new RecoverableSignature(PublicKey.recoverFrom(recoverable, msg), bytes, msg);
|
|
218
|
-
};
|
|
219
|
-
RecoverableSignature.fromKeyedSignature = function (ks, msg) {
|
|
220
|
-
return new RecoverableSignature(PublicKey.fromProtobuf(ks.public_key), secp256k1.signatureImport(Uint8Array.from(ks.signature.Secp256k1.der)), msg);
|
|
221
|
-
};
|
|
222
|
-
RecoverableSignature.prototype.toHexString = function () {
|
|
223
|
-
return (0, helpers_1.toHexString)(__spreadArray([this.recoveryId], __read(this.bytes), false));
|
|
224
|
-
};
|
|
225
|
-
RecoverableSignature.prototype.toKeyedSignature = function () {
|
|
226
|
-
return {
|
|
227
|
-
signature: { Secp256k1: { der: Array.from(secp256k1.signatureExport(this.bytes)) } },
|
|
228
|
-
public_key: {
|
|
229
|
-
bytes: Array.from(this.pubKey.bytes),
|
|
230
|
-
compressed: this.pubKey.compressed,
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
|
-
};
|
|
234
|
-
RecoverableSignature.prototype.toProtobuf = function () {
|
|
235
|
-
return {
|
|
236
|
-
signature: { Secp256k1: { der: Array.from(secp256k1.signatureExport(this.bytes)) } },
|
|
237
|
-
publicKey: { publicKey: Array.from(__spreadArray([this.pubKey.compressed], __read(this.pubKey.bytes), false)) },
|
|
238
|
-
};
|
|
239
|
-
};
|
|
240
|
-
return RecoverableSignature;
|
|
241
|
-
}(Signature));
|
|
242
|
-
exports.RecoverableSignature = RecoverableSignature;
|
|
243
|
-
/// ===================================================================================================================
|
|
244
|
-
var TransmissionError = /** @class */ (function (_super) {
|
|
245
|
-
__extends(TransmissionError, _super);
|
|
246
|
-
function TransmissionError(inFlight, error) {
|
|
247
|
-
var _this = _super.call(this, JSON.stringify(error)) || this;
|
|
248
|
-
error === null || error === void 0 ? true : delete error.stack;
|
|
249
|
-
_this.error = error;
|
|
250
|
-
_this.inFlight = inFlight;
|
|
251
|
-
return _this;
|
|
252
|
-
}
|
|
253
|
-
return TransmissionError;
|
|
254
|
-
}(Error));
|
|
255
|
-
exports.TransmissionError = TransmissionError;
|
|
256
|
-
/// -------------------------------------------------------------------------------------------------------------------
|
|
257
|
-
/// --- Internal functions
|
|
258
|
-
function matchingUint8Arrays(a, b) {
|
|
259
|
-
return a.length === b.length && a.every(function (value, index) { return value === b[index]; });
|
|
260
|
-
}
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NyeXB0by90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQ3RDLGlDQUErQjtBQUcvQiw2Q0FBMkU7QUFDM0UsaUNBQWdDO0FBMkRoQyxJQUFZLGlCQWVYO0FBZkQsV0FBWSxpQkFBaUI7SUFDekIsNkNBQTZDO0lBQzdDLHdDQUFtQixDQUFBO0lBRW5CLCtEQUErRDtJQUMvRCw0Q0FBdUIsQ0FBQTtJQUV2Qix1RkFBdUY7SUFDdkYsNENBQXVCLENBQUE7SUFFdkIsNkNBQTZDO0lBQzdDLG9DQUFlLENBQUE7SUFFZiwyQkFBMkI7SUFDM0Isd0NBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQWZXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBZTVCO0FBZUQsSUFBWSxxQkFLWDtBQUxELFdBQVkscUJBQXFCO0lBQzdCLCtDQUFzQixDQUFBO0lBQ3RCLDBDQUFpQixDQUFBO0lBQ2pCLDZDQUFvQixDQUFBO0lBQ3BCLG1EQUEwQixDQUFBO0FBQzlCLENBQUMsRUFMVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQUtoQztBQUdELHVIQUF1SDtBQUN2SCxxQkFBcUI7QUFFckIsdUhBQXVIO0FBQ3ZIO0lBa0NJLG1CQUFZLFVBQWtCLEVBQUUsS0FBaUI7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDdEIsQ0FBQztJQWhDTSxzQkFBWSxHQUFuQixVQUFvQixRQUFzRDtRQUN0RSxPQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMs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bnQiOlsiY29uc3Qgc2VjcDI1NmsxID0gcmVxdWlyZSgnc2VjcDI1NmsxJylcbmltcG9ydCB7IGJlY2gzMiB9IGZyb20gJ2JlY2gzMidcbmltcG9ydCB7IEVwb2NoLCBIYXNoLCBIZXhTdHJpbmcsIE5hbm93aXRzIH0gZnJvbSBcIi4uL3R5cGVzXCJcblxuaW1wb3J0IHsgZnJvbUhleFN0cmluZywgaXNIZXhTdHJpbmcsIHRvSGV4U3RyaW5nIH0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzXCJcbmltcG9ydCB7IHNoYTI1NiB9IGZyb20gXCIuL3V0aWxzXCJcblxuZXhwb3J0IHR5cGUgS2V5UGF0aCA9IEFycmF5PG51bWJlcj5cblxuZXhwb3J0IHR5cGUgS2V5ZWRTaWduYXR1cmUgPSB7XG4gICAgc2lnbmF0dXJlOiB7IFNlY3AyNTZrMTogeyBkZXI6IEFycmF5PG51bWJlcj4gfX0sXG4gICAgcHVibGljX2tleToge1xuICAgICAgICBieXRlczogQXJyYXk8bnVtYmVyPjtcbiAgICAgICAgY29tcHJlc3NlZDogbnVtYmVyLFxuICAgIH0sXG59O1xuXG5leHBvcnQgdHlwZSBQdWJsaWNLZXlIYXNoU3RyaW5nID0gSGV4U3RyaW5nXG5cbmludGVyZmFjZSBLZXkge1xuICAgIGJ5dGVzOiBVaW50OEFycmF5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByaXZhdGVLZXkgZXh0ZW5kcyBLZXkge1xuICAgIHR5cGU6IFwicHJpdmF0ZVwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0tleSBleHRlbmRzIEtleSB7XG4gICAgdHlwZTogXCJwdWJsaWNcIjtcbn1cblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25DYWxsYmFjayA9IChyZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHQsIGVycm9yPzogYW55KSA9PiBhbnlcblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25QYXJhbXMgPSB7XG4gICAgZGVhZGxpbmU/OiBFcG9jaCxcbiAgICBmZWVzOiBOYW5vd2l0cyxcbn1cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcbiAgICBhdXRob3JpemF0aW9uPzogSGV4U3RyaW5nO1xuICAgIGJsb2NrRXBvY2g/OiBFcG9jaDtcbiAgICBibG9ja0hhc2g/OiBIYXNoO1xuICAgIGJsb2NrTWluZXI/OiBQdWJsaWNLZXlIYXNoU3RyaW5nO1xuICAgIGJ1cm5zPzogTmFub3dpdHM7XG4gICAgY29uZmlybWF0aW9ucz86IG51bWJlcjtcbiAgICBjaGFuZ2U/OiBOYW5vd2l0cztcbiAgICBkcm9IYXNoPzogSGFzaDtcbiAgICBlcnJvcj86IEVycm9yLFxuICAgIGZlZXM6IE5hbm93aXRzO1xuICAgIGZyb20/OiBBcnJheTxQdWJsaWNLZXlIYXNoU3RyaW5nPiB8IFB1YmxpY0tleUhhc2hTdHJpbmc7XG4gICAgaGFzaDogSGFzaDtcbiAgICBvdXRwdXRMb2NrPzogbnVtYmVyO1xuICAgIHJhZEFyZ3M/OiBhbnk7XG4gICAgcmFkSGFzaD86IEhleFN0cmluZztcbiAgICByZWNpcGllbnRzPzogQXJyYXk8W1B1YmxpY0tleUhhc2hTdHJpbmcsIE5hbm93aXRzXT47XG4gICAgc3RhdHVzPzogVHJhbnNhY3Rpb25TdGF0dXM7XG4gICAgdGltZXN0YW1wOiBudW1iZXI7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHR4PzogYW55O1xuICAgIHZhbHVlPzogTmFub3dpdHM7XG4gICAgd2VpZ2h0OiBudW1iZXI7XG4gICAgd2l0aGRyYXdlcj86IFB1YmxpY0tleUhhc2hTdHJpbmc7XG4gICAgd2l0bmVzc2VzPzogbnVtYmVyIHwgUmVjb3JkPFB1YmxpY0tleUhhc2hTdHJpbmcsIE5hbm93aXRzPjtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25TdGF0dXMge1xuICAgIC8vLyBBd2F0aW5nIHRvIGJlIHJlbGF5ZWQgYnkgdGhlIFJQQyBwcm92aWRlclxuICAgIFBlbmRpbmcgPSBcInBlbmRpbmdcIiwgXG5cbiAgICAvLy8gUmVtYWlucyBvbi1jaGFpbiBhZnRlciBjZXJ0YWluIGFtb3VudCBvZiBlcG9jaHMgc2luY2UgbWluZWRcbiAgICBDb25maXJtZWQgPSBcImNvbmZpcm1lZFwiLFxuXG4gICAgLy8vIFJlbWFpbnMgb24tY2hhaW4gYWZ0ZXIgZW5kIG9mIG5leHQgc3VwZXItZXBvY2ggdG8gdGhlIG9uZSBvbiB3aGljaCB0aGUgdHggZ290IG1pbmVkXG4gICAgRmluYWxpemVkID0gXCJmaW5hbGl6ZWRcIixcbiAgICBcbiAgICAvLy8gUmVsYXllZCBhbmQgYWxsZWdlZGx5IGluY2x1ZGVkIGluIGEgYmxvY2tcbiAgICBNaW5lZCA9IFwibWluZWRcIixcbiAgICBcbiAgICAvLy8gUmVsYXllZCB0byB0aGUgbWVtcG9vbCBcbiAgICBSZWxheWVkID0gXCJyZWxheWVkXCIsXG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zbWlzc2lvbiA9IHtcbiAgICBieXRlY29kZT86IFVpbnQ4QXJyYXksXG4gICAgaGFzaD86IEhhc2g7XG4gICAgbWVzc2FnZTogYW55O1xufVxuXG5leHBvcnQgdHlwZSBVdHhvUG9pbnRlciA9IHtcbiAgICAvLyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyXG4gICAgdHJhbnNhY3Rpb25faWQ6IEhhc2g7XG4gICAgLy8gb3V0cHV0IGluZGV4IHdpdGhpbiByZWZlcnJlZCB0cmFuc2FjdGlvblxuICAgIG91dHB1dF9pbmRleDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGVudW0gVXR4b1NlbGVjdGlvblN0cmF0ZWd5IHtcbiAgICBCaWdGaXJzdCA9IFwiYmlnLWZpcnN0XCIsXG4gICAgUmFuZG9tID0gXCJyYW5kb21cIixcbiAgICBTbGltRml0ID0gXCJzbGltLWZpdFwiLFxuICAgIFNtYWxsRmlyc3QgPSBcInNtYWxsLWZpcnN0XCIsXG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBFWFBPUlRFRCBDTEFTU0VTIFxuXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNsYXNzIFB1YmxpY0tleSBpbXBsZW1lbnRzIEtleSB7XG4gICAgXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbXByZXNzZWQ6IG51bWJlcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnl0ZXM6IFVpbnQ4QXJyYXk7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvYnVmKHByb3RvYnVmOiB7IGNvbXByZXNzZWQ6IG51bWJlciwgYnl0ZXM6IEFycmF5PG51bWJlcj4gfSk6IFB1YmxpY0tleSB7XG4gICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5KHByb3RvYnVmLmNvbXByZXNzZWQsIFVpbnQ4QXJyYXkuZnJvbShwcm90b2J1Zi5ieXRlcykpXG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21VaW50OEFycmF5KHVpbnQ4QXJyYXk6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXkge1xuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShcbiAgICAgICAgICAgIHVpbnQ4QXJyYXlbMF0sXG4gICAgICAgICAgICB1aW50OEFycmF5LnNsaWNlKDEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHN0YXRpYyByZWNvdmVyRnJvbShyZWNvdmVyYWJsZTogYW55LCBtc2c6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXkge1xuICAgICAgICBsZXQgYnl0ZXNcbiAgICAgICAgaWYgKGlzSGV4U3RyaW5nKHJlY292ZXJhYmxlKSkge1xuICAgICAgICAgICAgYnl0ZXMgPSBmcm9tSGV4U3RyaW5nKHJlY292ZXJhYmxlKVxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShyZWNvdmVyYWJsZS5idWZmZXIpXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgICAgICBieXRlcyA9IHJlY292ZXJhYmxlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXk6IHVuc3VwcG9ydGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSBmb3JtYXQ6ICR7cmVjb3ZlcmFibGV9YClcbiAgICAgICAgfVxuICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoICE9PSA2NSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5OiBleHBlY3RlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgd2l0aCBsZW5ndGggNjU6ICR7dG9IZXhTdHJpbmcoYnl0ZXMpfWApXG4gICAgICAgIH0gXG4gICAgICAgIGNvbnN0IFsgcmVjb3ZlcnlJZCwgc2lnbmF0dXJlIF0gPSBbIGJ5dGVzWzBdLCBieXRlcy5zbGljZSgxKSBdXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXkuZnJvbVVpbnQ4QXJyYXkoc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihzaWduYXR1cmUsIHJlY292ZXJ5SWQsIG1zZykpXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoY29tcHJlc3NlZDogbnVtYmVyLCBieXRlczogVWludDhBcnJheSkge1xuICAgICAgICB0aGlzLmNvbXByZXNzZWQgPSBjb21wcmVzc2VkXG4gICAgICAgIHRoaXMuYnl0ZXMgPSBieXRlc1xuICAgIH1cblxuICAgIHB1YmxpYyBlcXVhbHMocHViS2V5OiBQdWJsaWNLZXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHB1YktleS5jb21wcmVzc2VkID09PSB0aGlzLmNvbXByZXNzZWQgJiYgbWF0Y2hpbmdVaW50OEFycmF5cyhwdWJLZXkuYnl0ZXMsIHB1YktleS5ieXRlcylcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzaCgpOiBQdWJsaWNLZXlIYXNoIHtcbiAgICAgICAgcmV0dXJuIFB1YmxpY0tleUhhc2guZnJvbVB1YmxpY0tleSh0aGlzKVxuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoW3RoaXMuY29tcHJlc3NlZCwgLi4udGhpcy5ieXRlc10pXG4gICAgfVxuXG4gICAgcHVibGljIHRvVWludDhBcnJheSgpOiBVaW50OEFycmF5IHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbdGhpcy5jb21wcmVzc2VkLCAuLi50aGlzLmJ5dGVzXSlcbiAgICB9XG59O1xuXG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgY2xhc3MgUHVibGljS2V5SGFzaCB7XG5cbiAgICBzdGF0aWMgZnJvbUhhc2goaGFzaDogVWludDhBcnJheSk6IFB1YmxpY0tleUhhc2gge1xuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleUhhc2goYmVjaDMyLnRvV29yZHMoaGFzaCkpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tSGV4U3RyaW5nKGhhc2g6IEhleFN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tSGFzaChmcm9tSGV4U3RyaW5nKGhhc2gpKVxuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgZnJvbVB1YmxpY0tleShwazogUHVibGljS2V5KTogUHVibGljS2V5SGFzaCB7XG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21IYXNoKFxuICAgICAgICAgICAgc2hhMjU2KFxuICAgICAgICAgICAgICAgIEJ1ZmZlci5mcm9tKFtway5jb21wcmVzc2VkLCAuLi5way5ieXRlc10pXG4gICAgICAgICAgICApLnN1YmFycmF5KDAsIDIwKVxuICAgICAgICApO1xuICAgIH1cbiAgICBcbiAgICBzdGF0aWMgZnJvbUJlY2gzMihwa2g6IHN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGtoID0gcGtoLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIGlmIChwa2guc3RhcnRzV2l0aCgnd2l0JykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleUhhc2goYmVjaDMyLmRlY29kZShwa2gsIDY2KS53b3JkcylcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGtoLnN0YXJ0c1dpdGgoJ3R3aXQnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIuZGVjb2RlKHBraCwgNjcpLndvcmRzKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXlIYXNoOiBpbnZhbGlkIGJlY2gzMiBzdHJpbmc6ICR7cGtofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFB1YmxpY0tleUhhc2g6IGludmFsaWQgYmVjaDMyIHN0cmluZzogJHtwa2h9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgd29yZHM6IG51bWJlcltdO1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKHdvcmRzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLndvcmRzID0gd29yZHNcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9CZWNoMzIobmV0d29yayA9IFwibWFpbm5ldFwiKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5ldHdvcmsgPT09IFwibWFpbm5ldFwiID8gYmVjaDMyLmVuY29kZSgnd2l0JywgdGhpcy53b3JkcywgNjYpIDogYmVjaDMyLmVuY29kZSgndHdpdCcsIHRoaXMud29yZHMsIDY3KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9CeXRlczIwKCk6IFVpbnQ4QXJyYXkge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5mcm9tKGJlY2gzMi5mcm9tV29yZHModGhpcy53b3Jkcykuc2xpY2UoMCwgMjApKVxuICAgIH1cblxuICAgIHB1YmxpYyB0b0J5dGVzMzIoKTogVWludDhBcnJheSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW1xuICAgICAgICAgICAgLi4uYmVjaDMyLmZyb21Xb3Jkcyh0aGlzLndvcmRzKS5zbGljZSgwLCAyMCksXG4gICAgICAgICAgICAuLi5uZXcgQXJyYXkoMTIpLmZpbGwoMCksXG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0hleFN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcodGhpcy50b0J5dGVzMjAoKSlcbiAgICB9XG59XG5cblxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjbGFzcyBTaWduYXR1cmUge1xuXG4gICAgc3RhdGljIGZyb21IZXhTdHJpbmcoaGV4OiBzdHJpbmcpOiBTaWduYXR1cmUge1xuICAgICAgICByZXR1cm4gbmV3IFNpZ25hdHVyZShmcm9tSGV4U3RyaW5nKGhleCkpXG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRvbmx5IGJ5dGVzOiBVaW50OEFycmF5O1xuXG4gICAgY29uc3RydWN0b3IgKGJ5dGVzOiBVaW50OEFycmF5KSB7XG4gICAgICAgIHRoaXMuYnl0ZXMgPSBieXRlc1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgdG9IZXhTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMuYnl0ZXMpXG4gICAgfVxufVxuXG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgY2xhc3MgUmVjb3ZlcmFibGVTaWduYXR1cmUgZXh0ZW5kcyBTaWduYXR1cmUge1xuXG4gICAgc3RhdGljIGZyb20ocmVjb3ZlcmFibGU6IGFueSwgbXNnOiBVaW50OEFycmF5KTogUmVjb3ZlcmFibGVTaWduYXR1cmUge1xuICAgICAgICBsZXQgYnl0ZXNcbiAgICAgICAgaWYgKGlzSGV4U3RyaW5nKHJlY292ZXJhYmxlKSkge1xuICAgICAgICAgICAgYnl0ZXMgPSBmcm9tSGV4U3RyaW5nKHJlY292ZXJhYmxlKS5zbGljZSgxKVxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShyZWNvdmVyYWJsZS5idWZmZXIpLnNsaWNlKDEpXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgICAgICBieXRlcyA9IHJlY292ZXJhYmxlLnNsaWNlKDEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSZWNvdmVyYWJsZVNpZ25hdHVyZTogdW5zdXBwb3J0ZWQgcmVjb3ZlcmFibGUgc2lnbmF0dXJlIGZvcm1hdDogJHtyZWNvdmVyYWJsZX1gKVxuICAgICAgICB9XG4gICAgICAgIGlmIChieXRlcy5sZW5ndGggIT09IDY0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBSZWNvdmVyYWJsZVNpZ25hdHJlOiBleHBlY3RlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgd2l0aCBsZW5ndGggNjU6ICR7dG9IZXhTdHJpbmcoYnl0ZXMpfWApXG4gICAgICAgIH0gXG4gICAgICAgIHJldHVybiBuZXcgUmVjb3ZlcmFibGVTaWduYXR1cmUoUHVibGljS2V5LnJlY292ZXJGcm9tKHJlY292ZXJhYmxlLCBtc2cpLCBieXRlcywgbXNnKVxuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tS2V5ZWRTaWduYXR1cmUoa3M6IEtleWVkU2lnbmF0dXJlLCBtc2c6IFVpbnQ4QXJyYXkpOiBSZWNvdmVyYWJsZVNpZ25hdHVyZSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVjb3ZlcmFibGVTaWduYXR1cmUoXG4gICAgICAgICAgICBQdWJsaWNLZXkuZnJvbVByb3RvYnVmKGtzLnB1YmxpY19rZXkpLFxuICAgICAgICAgICAgc2VjcDI1NmsxLnNpZ25hdHVyZUltcG9ydChVaW50OEFycmF5LmZyb20oa3Muc2lnbmF0dXJlLlNlY3AyNTZrMS5kZXIpKSxcbiAgICAgICAgICAgIG1zZ1xuICAgICAgICApICAgXG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2U6IFVpbnQ4QXJyYXlcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHViS2V5OiBQdWJsaWNLZXlcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVjb3ZlcnlJZDogbnVtYmVyXG4gICAgXG4gICAgY29uc3RydWN0b3IgKHB1YktleTogUHVibGljS2V5LCBieXRlczogVWludDhBcnJheSwgbXNnOiBVaW50OEFycmF5KSB7XG4gICAgICAgIHN1cGVyKGJ5dGVzKVxuICAgICAgICBjb25zdCBwdWJLZXlSYXcgPSBwdWJLZXkudG9VaW50OEFycmF5KClcbiAgICAgICAgbGV0IHJlY292ZXJ5SWQ6IG51bWJlcjtcbiAgICAgICAgZm9yIChyZWNvdmVyeUlkID0gMDsgcmVjb3ZlcnlJZCA8IDQ7IHJlY292ZXJ5SWQgKyspIHtcbiAgICAgICAgICAgIGxldCByZWNvdmVyZWQgXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZWNvdmVyZWQgPSBzZWNwMjU2azEuZWNkc2FSZWNvdmVyKGJ5dGVzLCByZWNvdmVyeUlkLCBtc2cpXG4gICAgICAgICAgICAgIGlmIChtYXRjaGluZ1VpbnQ4QXJyYXlzKHJlY292ZXJlZCwgcHViS2V5UmF3KSkgYnJlYWs7XG4gICAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbXNnXG4gICAgICAgIHRoaXMucHViS2V5ID0gcHViS2V5XG4gICAgICAgIHRoaXMucmVjb3ZlcnlJZCA9IHJlY292ZXJ5SWRcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXhTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKFt0aGlzLnJlY292ZXJ5SWQsIC4uLnRoaXMuYnl0ZXNdKVxuICAgIH1cblxuICAgIHB1YmxpYyB0b0tleWVkU2lnbmF0dXJlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcbiAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcbiAgICAgICAgICAgICAgICBieXRlczogQXJyYXkuZnJvbSh0aGlzLnB1YktleS5ieXRlcyksXG4gICAgICAgICAgICAgICAgY29tcHJlc3NlZDogdGhpcy5wdWJLZXkuY29tcHJlc3NlZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogeyBwdWJsaWNLZXk6IEFycmF5LmZyb20oWyB0aGlzLnB1YktleS5jb21wcmVzc2VkLCAuLi50aGlzLnB1YktleS5ieXRlcyBdKSB9LFxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgY2xhc3MgVHJhbnNtaXNzaW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcmVhZG9ubHkgZXJyb3I/OiBhbnk7XG4gICAgcmVhZG9ubHkgaW5GbGlnaHQ6IFRyYW5zbWlzc2lvbjtcbiAgICBjb25zdHJ1Y3RvcihpbkZsaWdodDogVHJhbnNtaXNzaW9uLCBlcnJvcj86IGFueSkge1xuICAgICAgICBzdXBlcihKU09OLnN0cmluZ2lmeShlcnJvcikpXG4gICAgICAgIGRlbGV0ZSBlcnJvcj8uc3RhY2tcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yXG4gICAgICAgIHRoaXMuaW5GbGlnaHQgPSBpbkZsaWdodFxuICAgIH1cbn1cblxuXG4vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8vIC0tLSBJbnRlcm5hbCBmdW5jdGlvbnMgXG5cbmZ1bmN0aW9uIG1hdGNoaW5nVWludDhBcnJheXMoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSkge1xuICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB2YWx1ZSA9PT0gYltpbmRleF0pXG59XG4iXX0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { bech32 } from 'bech32';
|
|
2
|
-
export { PrivateKey, PublicKey, PublicKeyHash, KeyedSignature, RecoverableSignature, Signature } from "./types";
|
|
3
|
-
export declare function decipherXprv(slip32: string, passwd: string): string;
|
|
4
|
-
export declare const parseXprv: (slip32: string) => {
|
|
5
|
-
chainCode: Uint8Array;
|
|
6
|
-
keyPath: Array<number>;
|
|
7
|
-
privateKey: Uint8Array;
|
|
8
|
-
};
|
|
9
|
-
export declare function sha256(buffer: any): Buffer<ArrayBufferLike>;
|
|
10
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAqB/G,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAcnE;AAED,eAAO,MAAM,SAAS,WAAY,MAAM,KAAG;IACvC,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;CAyD1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,2BAIjC"}
|
package/dist/lib/crypto/utils.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseXprv = exports.Signature = exports.RecoverableSignature = exports.PublicKeyHash = exports.PublicKey = exports.bech32 = void 0;
|
|
4
|
-
exports.decipherXprv = decipherXprv;
|
|
5
|
-
exports.sha256 = sha256;
|
|
6
|
-
var secp256k1 = require("secp256k1");
|
|
7
|
-
var bech32_1 = require("bech32");
|
|
8
|
-
var crypto_1 = require("crypto");
|
|
9
|
-
var bech32_2 = require("bech32");
|
|
10
|
-
Object.defineProperty(exports, "bech32", { enumerable: true, get: function () { return bech32_2.bech32; } });
|
|
11
|
-
var types_1 = require("./types");
|
|
12
|
-
Object.defineProperty(exports, "PublicKey", { enumerable: true, get: function () { return types_1.PublicKey; } });
|
|
13
|
-
Object.defineProperty(exports, "PublicKeyHash", { enumerable: true, get: function () { return types_1.PublicKeyHash; } });
|
|
14
|
-
Object.defineProperty(exports, "RecoverableSignature", { enumerable: true, get: function () { return types_1.RecoverableSignature; } });
|
|
15
|
-
Object.defineProperty(exports, "Signature", { enumerable: true, get: function () { return types_1.Signature; } });
|
|
16
|
-
var CHAIN_CODE_LENGTH = 32;
|
|
17
|
-
var DEPTH_LENGTH = 1;
|
|
18
|
-
var KEY_LENGTH = 33;
|
|
19
|
-
var KEY_PATH_LENGTH = 4;
|
|
20
|
-
var BECH32_LIMIT = (DEPTH_LENGTH
|
|
21
|
-
+ ((Math.pow(256, DEPTH_LENGTH) - 1) * KEY_PATH_LENGTH)
|
|
22
|
-
+ CHAIN_CODE_LENGTH
|
|
23
|
-
+ KEY_LENGTH);
|
|
24
|
-
var getExpectedDataLength = function (depth) { return (DEPTH_LENGTH
|
|
25
|
-
+ depth * KEY_PATH_LENGTH
|
|
26
|
-
+ CHAIN_CODE_LENGTH
|
|
27
|
-
+ KEY_LENGTH); };
|
|
28
|
-
function decipherXprv(slip32, passwd) {
|
|
29
|
-
var _a = bech32_1.bech32.decode(slip32, BECH32_LIMIT), prefix = _a.prefix, words = _a.words;
|
|
30
|
-
if (prefix !== "xprv") {
|
|
31
|
-
throw Error("Invalid XPRV header: \"".concat(prefix, "\" != \"xprv\""));
|
|
32
|
-
}
|
|
33
|
-
var buffer = new Uint8Array(bech32_1.bech32.fromWords(words)).buffer;
|
|
34
|
-
var iv = buffer.slice(0, 16);
|
|
35
|
-
var salt = buffer.slice(16, 48);
|
|
36
|
-
var data = buffer.slice(48);
|
|
37
|
-
var key = (0, crypto_1.pbkdf2Sync)(passwd, Buffer.from(salt), 10000, 32, 'sha256');
|
|
38
|
-
var decipher = (0, crypto_1.createDecipheriv)("aes-256-cbc", key, Buffer.from(iv));
|
|
39
|
-
var decrypted = decipher.update(Buffer.from(data), undefined, 'utf-8');
|
|
40
|
-
decrypted += decipher.final('utf-8');
|
|
41
|
-
return decrypted;
|
|
42
|
-
}
|
|
43
|
-
var parseXprv = function (slip32) {
|
|
44
|
-
// decode slip32 string
|
|
45
|
-
var _a = bech32_1.bech32.decode(slip32, BECH32_LIMIT), prefix = _a.prefix, words = _a.words;
|
|
46
|
-
var bytes = bech32_1.bech32.fromWords(words);
|
|
47
|
-
// check prefix
|
|
48
|
-
if (prefix !== "xprv") {
|
|
49
|
-
throw Error("Invalid XPRV: bad header: \"".concat(prefix, "\" != \"xprv\""));
|
|
50
|
-
}
|
|
51
|
-
// check expected data length
|
|
52
|
-
var depth = bytes[0];
|
|
53
|
-
if (depth !== 0) {
|
|
54
|
-
throw Error("Invalid XPRV: not a master private key (depth: ".concat(depth, ")"));
|
|
55
|
-
}
|
|
56
|
-
var expectedLength = getExpectedDataLength(depth);
|
|
57
|
-
if (bytes.length !== expectedLength) {
|
|
58
|
-
throw Error("Invalid XPRV: bad data length"
|
|
59
|
-
+ "(expected: ".concat(expectedLength, ", was: ").concat(bytes.length));
|
|
60
|
-
}
|
|
61
|
-
var buffer = new Uint8Array(bytes).buffer;
|
|
62
|
-
// extract key path (32-bit unsigned integers, big endian)
|
|
63
|
-
var keyPath = [];
|
|
64
|
-
var keyPathView = new DataView(buffer, DEPTH_LENGTH, depth * KEY_PATH_LENGTH);
|
|
65
|
-
for (var i = 0; i < depth; i++) {
|
|
66
|
-
keyPath.push((keyPathView.getUint32(i * KEY_PATH_LENGTH, false)));
|
|
67
|
-
}
|
|
68
|
-
// extract chain code
|
|
69
|
-
var chainCode = new Uint8Array(CHAIN_CODE_LENGTH);
|
|
70
|
-
var chainCodeOffset = DEPTH_LENGTH + depth * KEY_PATH_LENGTH;
|
|
71
|
-
var chainCodeView = new DataView(buffer, chainCodeOffset, CHAIN_CODE_LENGTH);
|
|
72
|
-
for (var i = 0; i < chainCode.length; i++) {
|
|
73
|
-
chainCode[i] = (chainCodeView.getUint8(i));
|
|
74
|
-
}
|
|
75
|
-
// extract key bytes
|
|
76
|
-
var privateKey = new Uint8Array(KEY_LENGTH);
|
|
77
|
-
var privateKeyView = new DataView(buffer, chainCodeOffset + CHAIN_CODE_LENGTH);
|
|
78
|
-
for (var i = 0; i < privateKey.length; i++) {
|
|
79
|
-
privateKey[i] = (privateKeyView.getUint8(i));
|
|
80
|
-
}
|
|
81
|
-
// check if private or public key are valid
|
|
82
|
-
if (privateKey[0] !== 0 || !secp256k1.privateKeyVerify(privateKey.slice(1))) {
|
|
83
|
-
throw Error("Malformed slip32: not a private key");
|
|
84
|
-
}
|
|
85
|
-
return {
|
|
86
|
-
chainCode: chainCode,
|
|
87
|
-
keyPath: keyPath,
|
|
88
|
-
privateKey: privateKey.slice(1),
|
|
89
|
-
};
|
|
90
|
-
};
|
|
91
|
-
exports.parseXprv = parseXprv;
|
|
92
|
-
function sha256(buffer) {
|
|
93
|
-
var hash = (0, crypto_1.createHash)('sha256');
|
|
94
|
-
hash.update(buffer);
|
|
95
|
-
return hash.digest();
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NyeXB0by91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0QkEsb0NBY0M7QUFnRUQsd0JBSUM7QUE5R0QsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXRDLGlDQUErQjtBQUMvQixpQ0FBaUU7QUFFakUsaUNBQStCO0FBQXRCLGdHQUFBLE1BQU0sT0FBQTtBQUVmLGlDQUErRztBQUExRixrR0FBQSxTQUFTLE9BQUE7QUFBRSxzR0FBQSxhQUFhLE9BQUE7QUFBa0IsNkdBQUEsb0JBQW9CLE9BQUE7QUFBRSxrR0FBQSxTQUFTLE9BQUE7QUFFOUYsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUE7QUFDNUIsSUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBQ3RCLElBQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQTtBQUNyQixJQUFNLGVBQWUsR0FBRyxDQUFDLENBQUE7QUFFekIsSUFBTSxZQUFZLEdBQUcsQ0FDakIsWUFBWTtNQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUM7TUFDckQsaUJBQWlCO01BQ2pCLFVBQVUsQ0FDbkIsQ0FBQztBQUVGLElBQU0scUJBQXFCLEdBQUcsVUFBQyxLQUFhLElBQUssT0FBQSxDQUM3QyxZQUFZO01BQ04sS0FBSyxHQUFHLGVBQWU7TUFDdkIsaUJBQWlCO01BQ2pCLFVBQVUsQ0FDbkIsRUFMZ0QsQ0FLaEQsQ0FBQztBQUVGLFNBQWdCLFlBQVksQ0FBQyxNQUFjLEVBQUUsTUFBYztJQUNqRCxJQUFBLEtBQW9CLGVBQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFyRCxNQUFNLFlBQUEsRUFBRSxLQUFLLFdBQXdDLENBQUE7SUFDN0QsSUFBSSxNQUFNLEtBQUss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Q0wsQ0FBQyxDQUFDO0FBNURXLFFBQUEsU0FBUyxhQTREcEI7QUFFRixTQUFnQixNQUFNLENBQUMsTUFBVztJQUM5QixJQUFNLElBQUksR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDLENBQUE7SUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc2VjcDI1NmsxID0gcmVxdWlyZShcInNlY3AyNTZrMVwiKVxuXG5pbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInXG5pbXBvcnQgeyBjcmVhdGVEZWNpcGhlcml2LCBjcmVhdGVIYXNoLCBwYmtkZjJTeW5jIH0gZnJvbSAnY3J5cHRvJ1xuXG5leHBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInXG5cbmV4cG9ydCB7IFByaXZhdGVLZXksIFB1YmxpY0tleSwgUHVibGljS2V5SGFzaCwgS2V5ZWRTaWduYXR1cmUsIFJlY292ZXJhYmxlU2lnbmF0dXJlLCBTaWduYXR1cmUgfSBmcm9tIFwiLi90eXBlc1wiXG5cbmNvbnN0IENIQUlOX0NPREVfTEVOR1RIID0gMzJcbmNvbnN0IERFUFRIX0xFTkdUSCA9IDFcbmNvbnN0IEtFWV9MRU5HVEggPSAzM1xuY29uc3QgS0VZX1BBVEhfTEVOR1RIID0gNFxuXG5jb25zdCBCRUNIMzJfTElNSVQgPSAoXG4gICAgREVQVEhfTEVOR1RIIFxuICAgICAgICArICgoTWF0aC5wb3coMjU2LCBERVBUSF9MRU5HVEgpIC0gMSkgKiBLRVlfUEFUSF9MRU5HVEgpIFxuICAgICAgICArIENIQUlOX0NPREVfTEVOR1RIIFxuICAgICAgICArIEtFWV9MRU5HVEhcbik7XG5cbmNvbnN0IGdldEV4cGVjdGVkRGF0YUxlbmd0aCA9IChkZXB0aDogbnVtYmVyKSA9PiAoXG4gICAgREVQVEhfTEVOR1RIXG4gICAgICAgICsgZGVwdGggKiBLRVlfUEFUSF9MRU5HVEhcbiAgICAgICAgKyBDSEFJTl9DT0RFX0xFTkdUSFxuICAgICAgICArIEtFWV9MRU5HVEhcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNpcGhlclhwcnYoc2xpcDMyOiBzdHJpbmcsIHBhc3N3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHByZWZpeCwgd29yZHMgfSA9IGJlY2gzMi5kZWNvZGUoc2xpcDMyLCBCRUNIMzJfTElNSVQpXG4gICAgaWYgKHByZWZpeCAhPT0gXCJ4cHJ2XCIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgWFBSViBoZWFkZXI6IFwiJHtwcmVmaXh9XCIgIT0gXCJ4cHJ2XCJgKVxuICAgIH1cbiAgICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheShiZWNoMzIuZnJvbVdvcmRzKHdvcmRzKSkuYnVmZmVyXG4gICAgY29uc3QgaXYgPSBidWZmZXIuc2xpY2UoMCwgMTYpXG4gICAgY29uc3Qgc2FsdCA9IGJ1ZmZlci5zbGljZSgxNiwgNDgpXG4gICAgY29uc3QgZGF0YSA9IGJ1ZmZlci5zbGljZSg0OClcbiAgICBjb25zdCBrZXkgPSBwYmtkZjJTeW5jKHBhc3N3ZCwgQnVmZmVyLmZyb20oc2FsdCksIDEwMDAwLCAzMiwgJ3NoYTI1NicpICAgIFxuICAgIGNvbnN0IGRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJpdihcImFlcy0yNTYtY2JjXCIsIGtleSwgQnVmZmVyLmZyb20oaXYpKVxuICAgIGxldCBkZWNyeXB0ZWQgPSBkZWNpcGhlci51cGRhdGUoQnVmZmVyLmZyb20oZGF0YSksIHVuZGVmaW5lZCwgJ3V0Zi04JylcbiAgICBkZWNyeXB0ZWQgKz0gZGVjaXBoZXIuZmluYWwoJ3V0Zi04JylcbiAgICByZXR1cm4gZGVjcnlwdGVkXG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZVhwcnYgPSAoc2xpcDMyOiBzdHJpbmcpOiB7XG4gICAgY2hhaW5Db2RlOiBVaW50OEFycmF5LFxuICAgIGtleVBhdGg6IEFycmF5PG51bWJlcj4sXG4gICAgcHJpdmF0ZUtleTogVWludDhBcnJheSxcbn0gPT4ge1xuICAgIC8vIGRlY29kZSBzbGlwMzIgc3RyaW5nXG4gICAgY29uc3QgeyBwcmVmaXgsIHdvcmRzIH0gPSBiZWNoMzIuZGVjb2RlKHNsaXAzMiwgQkVDSDMyX0xJTUlUKVxuICAgIGNvbnN0IGJ5dGVzID0gYmVjaDMyLmZyb21Xb3Jkcyh3b3JkcylcblxuICAgIC8vIGNoZWNrIHByZWZpeFxuICAgIGlmIChwcmVmaXggIT09IFwieHBydlwiKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIFhQUlY6IGJhZCBoZWFkZXI6IFwiJHtwcmVmaXh9XCIgIT0gXCJ4cHJ2XCJgKVxuICAgIH1cblxuICAgIC8vIGNoZWNrIGV4cGVjdGVkIGRhdGEgbGVuZ3RoXG4gICAgY29uc3QgZGVwdGggPSBieXRlc1swXVxuICAgIGlmIChkZXB0aCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBYUFJWOiBub3QgYSBtYXN0ZXIgcHJpdmF0ZSBrZXkgKGRlcHRoOiAke2RlcHRofSlgKVxuICAgIH1cbiAgICBjb25zdCBleHBlY3RlZExlbmd0aCA9IGdldEV4cGVjdGVkRGF0YUxlbmd0aChkZXB0aClcbiAgICBpZiAoYnl0ZXMubGVuZ3RoICE9PSBleHBlY3RlZExlbmd0aCkge1xuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiSW52YWxpZCBYUFJWOiBiYWQgZGF0YSBsZW5ndGhcIlxuICAgICAgICAgICAgICAgICsgYChleHBlY3RlZDogJHtleHBlY3RlZExlbmd0aH0sIHdhczogJHtieXRlcy5sZW5ndGh9YFxuICAgICAgICApXG4gICAgfVxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKS5idWZmZXJcblxuICAgIC8vIGV4dHJhY3Qga2V5IHBhdGggKDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYmlnIGVuZGlhbilcbiAgICBjb25zdCBrZXlQYXRoOiBBcnJheTxudW1iZXI+ID0gW11cbiAgICBjb25zdCBrZXlQYXRoVmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIsIERFUFRIX0xFTkdUSCwgZGVwdGggKiBLRVlfUEFUSF9MRU5HVEgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXB0aDsgaSsrKSB7XG4gICAgICAgIGtleVBhdGgucHVzaCgoa2V5UGF0aFZpZXcuZ2V0VWludDMyKGkgKiBLRVlfUEFUSF9MRU5HVEgsIGZhbHNlKSkpXG4gICAgfVxuXG4gICAgLy8gZXh0cmFjdCBjaGFpbiBjb2RlXG4gICAgY29uc3QgY2hhaW5Db2RlOiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoQ0hBSU5fQ09ERV9MRU5HVEgpXG4gICAgY29uc3QgY2hhaW5Db2RlT2Zmc2V0ID0gREVQVEhfTEVOR1RIICsgZGVwdGggKiBLRVlfUEFUSF9MRU5HVEhcbiAgICBjb25zdCBjaGFpbkNvZGVWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlciwgY2hhaW5Db2RlT2Zmc2V0LCBDSEFJTl9DT0RFX0xFTkdUSClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYWluQ29kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaGFpbkNvZGVbaV0gPSAoY2hhaW5Db2RlVmlldy5nZXRVaW50OChpKSlcbiAgICB9XG5cbiAgICAvLyBleHRyYWN0IGtleSBieXRlc1xuICAgIGNvbnN0IHByaXZhdGVLZXk6IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShLRVlfTEVOR1RIKVxuICAgIGNvbnN0IHByaXZhdGVLZXlWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlciwgY2hhaW5Db2RlT2Zmc2V0ICsgQ0hBSU5fQ09ERV9MRU5HVEgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcml2YXRlS2V5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHByaXZhdGVLZXlbaV0gPSAocHJpdmF0ZUtleVZpZXcuZ2V0VWludDgoaSkpXG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgcHJpdmF0ZSBvciBwdWJsaWMga2V5IGFyZSB2YWxpZFxuICAgIGlmIChwcml2YXRlS2V5WzBdICE9PSAwIHx8ICFzZWNwMjU2azEucHJpdmF0ZUtleVZlcmlmeShwcml2YXRlS2V5LnNsaWNlKDEpKSkge1xuICAgICAgICB0aHJvdyBFcnJvcihgTWFsZm9ybWVkIHNsaXAzMjogbm90IGEgcHJpdmF0ZSBrZXlgKVxuICAgIH0gXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGFpbkNvZGUsXG4gICAgICAgIGtleVBhdGgsXG4gICAgICAgIHByaXZhdGVLZXk6IHByaXZhdGVLZXkuc2xpY2UoMSksXG4gICAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNoYTI1NihidWZmZXI6IGFueSkge1xuICAgIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKVxuICAgIGhhc2gudXBkYXRlKGJ1ZmZlcilcbiAgICByZXR1cm4gaGFzaC5kaWdlc3QoKVxufVxuIl19
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Balance, Network, QueryStakesOrder, StakeEntry } from "../types";
|
|
2
|
-
import { IAccount, IBIP32, ICoinbase, IProvider, ISigner, IWallet } from "./interfaces";
|
|
3
|
-
import { PublicKey, PublicKeyHashString, UtxoSelectionStrategy } from "./types";
|
|
4
|
-
export declare class Wallet implements IWallet {
|
|
5
|
-
protected root: IBIP32;
|
|
6
|
-
protected _accounts: Array<IAccount>;
|
|
7
|
-
readonly coinbase: ICoinbase;
|
|
8
|
-
gap: number;
|
|
9
|
-
readonly provider: IProvider;
|
|
10
|
-
strategy: UtxoSelectionStrategy;
|
|
11
|
-
static fromXprv(xprv: string, provider: IProvider, strategy?: UtxoSelectionStrategy, gap?: number): Promise<Wallet>;
|
|
12
|
-
static fromEncryptedXprv(xprv: string, passwd: string, provider: IProvider, strategy?: UtxoSelectionStrategy, gap?: number): Promise<Wallet>;
|
|
13
|
-
constructor(root: IBIP32, provider: IProvider, strategy?: UtxoSelectionStrategy, gap?: number);
|
|
14
|
-
get accounts(): Array<IAccount> | undefined;
|
|
15
|
-
get network(): Network | undefined;
|
|
16
|
-
get pkh(): PublicKeyHashString;
|
|
17
|
-
get publicKey(): PublicKey;
|
|
18
|
-
get signers(): Array<ISigner>;
|
|
19
|
-
deriveAccounts(limit: number): Array<IAccount>;
|
|
20
|
-
exploreAccounts(limit: number, gap?: number): Promise<Array<IAccount>>;
|
|
21
|
-
findAccount(pkh: PublicKeyHashString, gap?: number): IAccount | undefined;
|
|
22
|
-
countUtxos(reload?: boolean): Promise<number>;
|
|
23
|
-
getBalance(): Promise<Balance>;
|
|
24
|
-
getDelegates(order?: QueryStakesOrder, leftJoin?: boolean): Promise<Array<StakeEntry>>;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/lib/crypto/wallet.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAiB,MAAM,UAAU,CAAA;AAGxF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAE/E,qBAAa,MAAO,YAAW,OAAO;IAClC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAM;IAE1C,SAAgB,QAAQ,EAAE,SAAS,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACnB,SAAgB,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,EAAE,qBAAqB,CAAC;WAE1B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAU5G,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAItI,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,EAAE,MAAM;IAQ7F,IAAW,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,CAEjD;IAED,IAAW,OAAO,IAAI,OAAO,GAAG,SAAS,CAExC;IAED,IAAW,GAAG,IAAI,mBAAmB,CAEpC;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED,IAAW,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAQnC;IAEM,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;IAcxC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAwB5E,WAAW,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAmBnE,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAa7C,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAmB9B,YAAY,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;CAqBnG"}
|