@bitgo/account-lib 2.17.2-2.17.2-rc.0.0 → 2.17.2-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/bitgo-account-lib.min.js +1 -1
- package/dist/browser/bitgo-account-lib.min.js.LICENSE.txt +132 -0
- package/dist/package.json +10 -3
- package/dist/resources/dot/index.ts +2 -0
- package/dist/resources/dot/mainnet.ts +2 -0
- package/dist/resources/dot/westend.ts +2 -0
- package/dist/resources/trx/protobuf/tron.js~account-lib_master +31380 -0
- package/dist/src/coin/algo/keyExclusionBuilder.d.ts +9 -0
- package/dist/src/coin/algo/keyExclusionBuilder.d.ts.map +1 -0
- package/dist/src/coin/algo/keyExclusionBuilder.js +83 -0
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.js +1 -1
- package/dist/src/coin/cspr/utils.js +2 -2
- package/dist/src/coin/dot/errors.d.ts +8 -0
- package/dist/src/coin/dot/errors.d.ts.map +1 -0
- package/dist/src/coin/dot/errors.js +40 -0
- package/dist/src/coin/dot/iface.d.ts +154 -0
- package/dist/src/coin/dot/iface.d.ts.map +1 -0
- package/dist/src/coin/dot/iface.js +15 -0
- package/dist/src/coin/dot/index.d.ts +5 -0
- package/dist/src/coin/dot/index.d.ts.map +1 -1
- package/dist/src/coin/dot/index.js +12 -2
- package/dist/src/coin/dot/keyPair.d.ts +15 -2
- package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
- package/dist/src/coin/dot/keyPair.js +41 -6
- package/dist/src/coin/dot/stakingBuilder.d.ts +59 -0
- package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/stakingBuilder.js +162 -0
- package/dist/src/coin/dot/transaction.d.ts +31 -3
- package/dist/src/coin/dot/transaction.d.ts.map +1 -1
- package/dist/src/coin/dot/transaction.js +269 -7
- package/dist/src/coin/dot/transactionBuilder.d.ts +102 -9
- package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilder.js +309 -15
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts +13 -16
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilderFactory.js +60 -25
- package/dist/src/coin/dot/transferBuilder.d.ts +62 -4
- package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transferBuilder.js +161 -44
- package/dist/src/coin/dot/txnSchema.d.ts +10 -0
- package/dist/src/coin/dot/txnSchema.d.ts.map +1 -0
- package/dist/src/coin/dot/txnSchema.js +84 -0
- package/dist/src/coin/dot/unstakeBuilder.d.ts +38 -0
- package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -0
- package/dist/src/coin/dot/unstakeBuilder.js +116 -0
- package/dist/src/coin/dot/utils.d.ts +69 -0
- package/dist/src/coin/dot/utils.d.ts.map +1 -1
- package/dist/src/coin/dot/utils.js +144 -4
- package/dist/src/coin/dot/walletInitializationBuilder.d.ts +51 -5
- package/dist/src/coin/dot/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/walletInitializationBuilder.js +112 -44
- package/dist/src/coin/sol/constants.d.ts +24 -0
- package/dist/src/coin/sol/constants.d.ts.map +1 -0
- package/dist/src/coin/sol/constants.js +35 -0
- package/dist/src/coin/sol/iface.d.ts +47 -0
- package/dist/src/coin/sol/iface.d.ts.map +1 -0
- package/dist/src/coin/sol/iface.js +3 -0
- package/dist/src/coin/sol/index.d.ts +5 -0
- package/dist/src/coin/sol/index.d.ts.map +1 -0
- package/dist/src/coin/sol/index.js +29 -0
- package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
- package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/instructionParamsFactory.js +99 -0
- package/dist/src/coin/sol/keyPair.d.ts +45 -0
- package/dist/src/coin/sol/keyPair.d.ts.map +1 -0
- package/dist/src/coin/sol/keyPair.js +128 -0
- package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
- package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/solInstructionFactory.js +102 -0
- package/dist/src/coin/sol/transaction.d.ts +48 -0
- package/dist/src/coin/sol/transaction.d.ts.map +1 -0
- package/dist/src/coin/sol/transaction.js +254 -0
- package/dist/src/coin/sol/transactionBuilder.d.ts +96 -0
- package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/transactionBuilder.js +316 -0
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts +34 -0
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/transactionBuilderFactory.js +86 -0
- package/dist/src/coin/sol/transferBuilder.d.ts +26 -0
- package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/transferBuilder.js +140 -0
- package/dist/src/coin/sol/utils.d.ts +104 -0
- package/dist/src/coin/sol/utils.d.ts.map +1 -0
- package/dist/src/coin/sol/utils.js +244 -0
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts +26 -0
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -0
- package/dist/src/coin/sol/walletInitializationBuilder.js +141 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -2
- package/dist/src/utils/crypto.d.ts +8 -0
- package/dist/src/utils/crypto.d.ts.map +1 -1
- package/dist/src/utils/crypto.js +13 -2
- package/package.json +10 -3
- package/resources/dot/index.ts +2 -0
- package/resources/dot/mainnet.ts +2 -0
- package/resources/dot/westend.ts +2 -0
|
@@ -0,0 +1,128 @@
|
|
|
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.KeyPair = void 0;
|
|
7
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
var tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
9
|
+
var errors_1 = require("../baseCoin/errors");
|
|
10
|
+
var iface_1 = require("../baseCoin/iface");
|
|
11
|
+
var constants_1 = require("./constants");
|
|
12
|
+
var utils_1 = require("./utils");
|
|
13
|
+
// The Solana Key Pair is an ED25519 but the current ED25519 implementation doesnt return base58 strings
|
|
14
|
+
// TODO(): Refactor to ED25519 Keypair instead of BaseKeyPair
|
|
15
|
+
var KeyPair = /** @class */ (function () {
|
|
16
|
+
/**
|
|
17
|
+
* Public constructor. By default, creates a key pair with a random master seed.
|
|
18
|
+
*
|
|
19
|
+
* @param { KeyPairOptions } source Either a master seed, a private key, or a public key
|
|
20
|
+
*/
|
|
21
|
+
function KeyPair(source) {
|
|
22
|
+
var kp;
|
|
23
|
+
if (!source) {
|
|
24
|
+
kp = web3_js_1.Keypair.generate();
|
|
25
|
+
this.setKP(kp);
|
|
26
|
+
}
|
|
27
|
+
else if (iface_1.isSeed(source)) {
|
|
28
|
+
kp = web3_js_1.Keypair.fromSeed(source.seed.slice(0, constants_1.SEED_LENGTH));
|
|
29
|
+
this.setKP(kp);
|
|
30
|
+
}
|
|
31
|
+
else if (iface_1.isPrivateKey(source)) {
|
|
32
|
+
this.recordKeysFromPrivateKey(source.prv);
|
|
33
|
+
}
|
|
34
|
+
else if (iface_1.isPublicKey(source)) {
|
|
35
|
+
this.recordKeysFromPublicKey(source.pub);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
throw new Error('Invalid key pair options');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
KeyPair.prototype.setKP = function (keyPair) {
|
|
42
|
+
this.keyPair = {
|
|
43
|
+
prv: utils_1.Uint8ArrayTobase58(keyPair.secretKey),
|
|
44
|
+
pub: keyPair.publicKey.toString(),
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
/** @inheritdoc */
|
|
48
|
+
KeyPair.prototype.recordKeysFromPrivateKey = function (prv) {
|
|
49
|
+
if (utils_1.isValidPrivateKey(prv)) {
|
|
50
|
+
var prvKey = utils_1.base58ToUint8Array(prv);
|
|
51
|
+
var keyPair = web3_js_1.Keypair.fromSecretKey(prvKey);
|
|
52
|
+
this.setKP(keyPair);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw new errors_1.InvalidKey('Invalid private key');
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
/** @inheritdoc */
|
|
59
|
+
KeyPair.prototype.recordKeysFromPublicKey = function (pub) {
|
|
60
|
+
if (utils_1.isValidPublicKey(pub)) {
|
|
61
|
+
this.keyPair = { pub: pub };
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw new errors_1.InvalidKey('Invalid public key: ' + pub);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Solana default keys format public key as a base58 string and secret key as Uint8Array
|
|
69
|
+
*
|
|
70
|
+
* @param {boolean} raw defines if the prv key is returned in Uint8Array, default is base58
|
|
71
|
+
* @returns {SolanaKeys} The keys in the defined format
|
|
72
|
+
*/
|
|
73
|
+
KeyPair.prototype.getKeys = function (raw) {
|
|
74
|
+
if (raw === void 0) { raw = false; }
|
|
75
|
+
var result = { pub: this.keyPair.pub };
|
|
76
|
+
if (!!this.keyPair.prv) {
|
|
77
|
+
if (raw) {
|
|
78
|
+
result.prv = utils_1.base58ToUint8Array(this.keyPair.prv);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
result.prv = this.keyPair.prv;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
};
|
|
86
|
+
/** @inheritdoc */
|
|
87
|
+
KeyPair.prototype.getAddress = function () {
|
|
88
|
+
var keys = this.getKeys();
|
|
89
|
+
return keys.pub;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Generates a signature for an arbitrary string with the current private key using the ed25519 public-key signature
|
|
93
|
+
* system.
|
|
94
|
+
*
|
|
95
|
+
* @param {string} message to produce a signature for
|
|
96
|
+
* @returns {Uint8Array} The signature produced for the message
|
|
97
|
+
* @throws if there is no private key
|
|
98
|
+
*/
|
|
99
|
+
KeyPair.prototype.signMessage = function (message) {
|
|
100
|
+
var messageToSign = new Uint8Array(Buffer.from(message));
|
|
101
|
+
var prv = this.keyPair.prv;
|
|
102
|
+
if (!prv) {
|
|
103
|
+
throw new Error('Missing private key');
|
|
104
|
+
}
|
|
105
|
+
return tweetnacl_1.default.sign.detached(messageToSign, utils_1.base58ToUint8Array(prv));
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Verifies a message signature using the current public key.
|
|
109
|
+
*
|
|
110
|
+
* @param {string} message signed
|
|
111
|
+
* @param {Uint8Array} signature to verify
|
|
112
|
+
* @returns {boolean} True if the message was signed with the current key pair
|
|
113
|
+
*/
|
|
114
|
+
KeyPair.prototype.verifySignature = function (message, signature) {
|
|
115
|
+
var messageToVerify;
|
|
116
|
+
if (typeof message === 'string') {
|
|
117
|
+
messageToVerify = new Uint8Array(Buffer.from(message));
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
messageToVerify = message;
|
|
121
|
+
}
|
|
122
|
+
var pub = new web3_js_1.PublicKey(this.keyPair.pub);
|
|
123
|
+
return tweetnacl_1.default.sign.detached.verify(messageToVerify, signature, pub.toBuffer());
|
|
124
|
+
};
|
|
125
|
+
return KeyPair;
|
|
126
|
+
}());
|
|
127
|
+
exports.KeyPair = KeyPair;
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL3NvbC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJDQUFtRTtBQUNuRSx3REFBNkI7QUFFN0IsNkNBQWdEO0FBQ2hELDJDQUFtRztBQUNuRyx5Q0FBMEM7QUFFMUMsaUNBQXNHO0FBRXRHLHdHQUF3RztBQUN4Ryw2REFBNkQ7QUFDN0Q7SUFHRTs7OztPQUlHO0lBQ0gsaUJBQVksTUFBdUI7UUFDakMsSUFBSSxFQUFjLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLEVBQUUsR0FBRyxpQkFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEI7YUFBTSxJQUFJLGNBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixFQUFFLEdBQUcsaUJBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHVCQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEI7YUFBTSxJQUFJLG9CQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksbUJBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU8sdUJBQUssR0FBYixVQUFjLE9BQW1CO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixHQUFHLEVB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QUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDSCxjQUFDO0FBQUQsQ0FBQyxBQTlHRCxJQThHQztBQTlHWSwwQkFBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleXBhaXIgYXMgU29sS2V5cGFpciwgUHVibGljS2V5IH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgRGVmYXVsdEtleXMsIGlzUHJpdmF0ZUtleSwgaXNQdWJsaWNLZXksIGlzU2VlZCwgS2V5UGFpck9wdGlvbnMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBTRUVEX0xFTkdUSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNvbGFuYUtleXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGJhc2U1OFRvVWludDhBcnJheSwgaXNWYWxpZFByaXZhdGVLZXksIGlzVmFsaWRQdWJsaWNLZXksIFVpbnQ4QXJyYXlUb2Jhc2U1OCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyBUaGUgU29sYW5hIEtleSBQYWlyIGlzIGFuIEVEMjU1MTkgYnV0IHRoZSBjdXJyZW50IEVEMjU1MTkgaW1wbGVtZW50YXRpb24gZG9lc250IHJldHVybiBiYXNlNTggc3RyaW5nc1xuLy8gVE9ETygpOiBSZWZhY3RvciB0byBFRDI1NTE5IEtleXBhaXIgaW5zdGVhZCBvZiBCYXNlS2V5UGFpclxuZXhwb3J0IGNsYXNzIEtleVBhaXIgaW1wbGVtZW50cyBCYXNlS2V5UGFpciB7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBEZWZhdWx0S2V5cztcbiAgcHJvdGVjdGVkIHNvdXJjZT86IEtleVBhaXJPcHRpb25zO1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHsgS2V5UGFpck9wdGlvbnMgfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXksIG9yIGEgcHVibGljIGtleVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBsZXQga3A6IFNvbEtleXBhaXI7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIGtwID0gU29sS2V5cGFpci5nZW5lcmF0ZSgpO1xuICAgICAgdGhpcy5zZXRLUChrcCk7XG4gICAgfSBlbHNlIGlmIChpc1NlZWQoc291cmNlKSkge1xuICAgICAga3AgPSBTb2xLZXlwYWlyLmZyb21TZWVkKHNvdXJjZS5zZWVkLnNsaWNlKDAsIFNFRURfTEVOR1RIKSk7XG4gICAgICB0aGlzLnNldEtQKGtwKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpdmF0ZUtleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShzb3VyY2UucHJ2KTtcbiAgICB9IGVsc2UgaWYgKGlzUHVibGljS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMucmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkoc291cmNlLnB1Yik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRLUChrZXlQYWlyOiBTb2xLZXlwYWlyKTogdm9pZCB7XG4gICAgdGhpcy5rZXlQYWlyID0ge1xuICAgICAgcHJ2OiBVaW50OEFycmF5VG9iYXNlNTgoa2V5UGFpci5zZWNyZXRLZXkpLFxuICAgICAgcHViOiBrZXlQYWlyLnB1YmxpY0tleS50b1N0cmluZygpLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzVmFsaWRQcml2YXRlS2V5KHBydikpIHtcbiAgICAgIGNvbnN0IHBydktleSA9IGJhc2U1OFRvVWludDhBcnJheShwcnYpO1xuICAgICAgY29uc3Qga2V5UGFpciA9IFNvbEtleXBhaXIuZnJvbVNlY3JldEtleShwcnZLZXkpO1xuICAgICAgdGhpcy5zZXRLUChrZXlQYWlyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ0ludmFsaWQgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNWYWxpZFB1YmxpY0tleShwdWIpKSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSB7IHB1YiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleSgnSW52YWxpZCBwdWJsaWMga2V5OiAnICsgcHViKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU29sYW5hIGRlZmF1bHQga2V5cyBmb3JtYXQgcHVibGljIGtleSBhcyBhIGJhc2U1OCBzdHJpbmcgYW5kIHNlY3JldCBrZXkgYXMgVWludDhBcnJheVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhdyBkZWZpbmVzIGlmIHRoZSBwcnYga2V5IGlzIHJldHVybmVkIGluIFVpbnQ4QXJyYXksIGRlZmF1bHQgaXMgYmFzZTU4XG4gICAqIEByZXR1cm5zIHtTb2xhbmFLZXlzfSBUaGUga2V5cyBpbiB0aGUgZGVmaW5lZCBmb3JtYXRcbiAgICovXG4gIGdldEtleXMocmF3ID0gZmFsc2UpOiBTb2xhbmFLZXlzIHtcbiAgICBjb25zdCByZXN1bHQ6IFNvbGFuYUtleXMgPSB7IHB1YjogdGhpcy5rZXlQYWlyLnB1YiB9O1xuICAgIGlmICghIXRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgcmVzdWx0LnBydiA9IGJhc2U1OFRvVWludDhBcnJheSh0aGlzLmtleVBhaXIucHJ2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wcnYgPSB0aGlzLmtleVBhaXIucHJ2O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXlzID0gdGhpcy5nZXRLZXlzKCk7XG4gICAgcmV0dXJuIGtleXMucHViO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNpZ25hdHVyZSBmb3IgYW4gYXJiaXRyYXJ5IHN0cmluZyB3aXRoIHRoZSBjdXJyZW50IHByaXZhdGUga2V5IHVzaW5nIHRoZSBlZDI1NTE5IHB1YmxpYy1rZXkgc2lnbmF0dXJlXG4gICAqIHN5c3RlbS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgdG8gcHJvZHVjZSBhIHNpZ25hdHVyZSBmb3JcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFRoZSBzaWduYXR1cmUgcHJvZHVjZWQgZm9yIHRoZSBtZXNzYWdlXG4gICAqIEB0aHJvd3MgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBrZXlcbiAgICovXG4gIHNpZ25NZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IG1lc3NhZ2VUb1NpZ24gPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlKSk7XG4gICAgY29uc3QgeyBwcnYgfSA9IHRoaXMua2V5UGFpcjtcbiAgICBpZiAoIXBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIHJldHVybiBuYWNsLnNpZ24uZGV0YWNoZWQobWVzc2FnZVRvU2lnbiwgYmFzZTU4VG9VaW50OEFycmF5KHBydikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgbWVzc2FnZSBzaWduYXR1cmUgdXNpbmcgdGhlIGN1cnJlbnQgcHVibGljIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2Ugc2lnbmVkXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWVzc2FnZSB3YXMgc2lnbmVkIHdpdGggdGhlIGN1cnJlbnQga2V5IHBhaXJcbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBVaW50OEFycmF5IHwgc3RyaW5nLCBzaWduYXR1cmU6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICBsZXQgbWVzc2FnZVRvVmVyaWZ5O1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG1lc3NhZ2VUb1ZlcmlmeSA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZVRvVmVyaWZ5ID0gbWVzc2FnZTtcbiAgICB9XG4gICAgY29uc3QgcHViID0gbmV3IFB1YmxpY0tleSh0aGlzLmtleVBhaXIucHViKTtcbiAgICByZXR1cm4gbmFjbC5zaWduLmRldGFjaGVkLnZlcmlmeShtZXNzYWdlVG9WZXJpZnksIHNpZ25hdHVyZSwgcHViLnRvQnVmZmVyKCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
import { InstructionParams } from './iface';
|
|
3
|
+
/**
|
|
4
|
+
* Construct Solana instructions from instructions params
|
|
5
|
+
*
|
|
6
|
+
* @param {InstructionParams} instructionToBuild - the data containing the instruction params
|
|
7
|
+
* @returns {TransactionInstruction[]} An array containing supported Solana instructions
|
|
8
|
+
*/
|
|
9
|
+
export declare function solInstructionFactory(instructionToBuild: InstructionParams): TransactionInstruction[];
|
|
10
|
+
//# sourceMappingURL=solInstructionFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solInstructionFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/solInstructionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAInF,OAAO,EAAE,iBAAiB,EAAqC,MAAM,SAAS,CAAC;AAE/E;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,sBAAsB,EAAE,CAarG"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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.solInstructionFactory = void 0;
|
|
7
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
var assert_1 = __importDefault(require("assert"));
|
|
9
|
+
var bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
10
|
+
var constants_1 = require("./constants");
|
|
11
|
+
/**
|
|
12
|
+
* Construct Solana instructions from instructions params
|
|
13
|
+
*
|
|
14
|
+
* @param {InstructionParams} instructionToBuild - the data containing the instruction params
|
|
15
|
+
* @returns {TransactionInstruction[]} An array containing supported Solana instructions
|
|
16
|
+
*/
|
|
17
|
+
function solInstructionFactory(instructionToBuild) {
|
|
18
|
+
switch (instructionToBuild.type) {
|
|
19
|
+
case constants_1.InstructionBuilderTypes.NonceAdvance:
|
|
20
|
+
return advanceNonceInstruction(instructionToBuild);
|
|
21
|
+
case constants_1.InstructionBuilderTypes.Memo:
|
|
22
|
+
return memoInstruction(instructionToBuild);
|
|
23
|
+
case constants_1.InstructionBuilderTypes.Transfer:
|
|
24
|
+
return transferInstruction(instructionToBuild);
|
|
25
|
+
case constants_1.InstructionBuilderTypes.CreateNonceAccount:
|
|
26
|
+
return createNonceAccountInstruction(instructionToBuild);
|
|
27
|
+
default:
|
|
28
|
+
throw new Error("Invalid instruction type or not supported");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.solInstructionFactory = solInstructionFactory;
|
|
32
|
+
/**
|
|
33
|
+
* Construct Advance Nonce Solana instructions
|
|
34
|
+
*
|
|
35
|
+
* @param {Nonce} data - the data to build the instruction
|
|
36
|
+
* @returns {TransactionInstruction[]} An array containing Advance Nonce Solana instruction
|
|
37
|
+
*/
|
|
38
|
+
function advanceNonceInstruction(data) {
|
|
39
|
+
var _a = data.params, authWalletAddress = _a.authWalletAddress, walletNonceAddress = _a.walletNonceAddress;
|
|
40
|
+
assert_1.default(authWalletAddress, 'Missing authWalletAddress param');
|
|
41
|
+
assert_1.default(walletNonceAddress, 'Missing walletNonceAddress param');
|
|
42
|
+
var nonceInstruction = web3_js_1.SystemProgram.nonceAdvance({
|
|
43
|
+
noncePubkey: new web3_js_1.PublicKey(walletNonceAddress),
|
|
44
|
+
authorizedPubkey: new web3_js_1.PublicKey(authWalletAddress),
|
|
45
|
+
});
|
|
46
|
+
return [nonceInstruction];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Construct Memo Solana instructions
|
|
50
|
+
*
|
|
51
|
+
* @param {Memo} data - the data to build the instruction
|
|
52
|
+
* @returns {TransactionInstruction[]} An array containing Memo Solana instruction
|
|
53
|
+
*/
|
|
54
|
+
function memoInstruction(data) {
|
|
55
|
+
var memo = data.params.memo;
|
|
56
|
+
assert_1.default(memo, 'Missing memo param');
|
|
57
|
+
var memoInstruction = new web3_js_1.TransactionInstruction({
|
|
58
|
+
keys: [],
|
|
59
|
+
programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
|
|
60
|
+
data: Buffer.from(memo),
|
|
61
|
+
});
|
|
62
|
+
return [memoInstruction];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Construct Transfer Solana instructions
|
|
66
|
+
*
|
|
67
|
+
* @param {Transfer} data - the data to build the instruction
|
|
68
|
+
* @returns {TransactionInstruction[]} An array containing Transfer Solana instruction
|
|
69
|
+
*/
|
|
70
|
+
function transferInstruction(data) {
|
|
71
|
+
var _a = data.params, fromAddress = _a.fromAddress, toAddress = _a.toAddress, amount = _a.amount;
|
|
72
|
+
assert_1.default(fromAddress, 'Missing fromAddress param');
|
|
73
|
+
assert_1.default(toAddress, 'Missing toAddress param');
|
|
74
|
+
assert_1.default(amount, 'Missing toAddress param');
|
|
75
|
+
var transferInstruction = web3_js_1.SystemProgram.transfer({
|
|
76
|
+
fromPubkey: new web3_js_1.PublicKey(fromAddress),
|
|
77
|
+
toPubkey: new web3_js_1.PublicKey(toAddress),
|
|
78
|
+
lamports: new bignumber_js_1.default(amount).toNumber(),
|
|
79
|
+
});
|
|
80
|
+
return [transferInstruction];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Construct Create and Initialize Nonce Solana instructions
|
|
84
|
+
*
|
|
85
|
+
* @param {WalletInit} data - the data to build the instruction
|
|
86
|
+
* @returns {TransactionInstruction[]} An array containing Create and Initialize Nonce Solana instruction
|
|
87
|
+
*/
|
|
88
|
+
function createNonceAccountInstruction(data) {
|
|
89
|
+
var _a = data.params, fromAddress = _a.fromAddress, nonceAddress = _a.nonceAddress, authAddress = _a.authAddress, amount = _a.amount;
|
|
90
|
+
assert_1.default(fromAddress, 'Missing fromAddress param');
|
|
91
|
+
assert_1.default(nonceAddress, 'Missing nonceAddress param');
|
|
92
|
+
assert_1.default(authAddress, 'Missing authAddress param');
|
|
93
|
+
assert_1.default(amount, 'Missing amount param');
|
|
94
|
+
var nonceAccountInstruction = web3_js_1.SystemProgram.createNonceAccount({
|
|
95
|
+
fromPubkey: new web3_js_1.PublicKey(fromAddress),
|
|
96
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAddress),
|
|
97
|
+
authorizedPubkey: new web3_js_1.PublicKey(authAddress),
|
|
98
|
+
lamports: new bignumber_js_1.default(amount).toNumber(),
|
|
99
|
+
});
|
|
100
|
+
return nonceAccountInstruction.instructions;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sSW5zdHJ1Y3Rpb25GYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3NvbEluc3RydWN0aW9uRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FBbUY7QUFDbkYsa0RBQTRCO0FBQzVCLDhEQUFxQztBQUNyQyx5Q0FBdUU7QUFHdkU7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxrQkFBcUM7SUFDekUsUUFBUSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsS0FBSyxtQ0FBdUIsQ0FBQyxZQUFZO1lBQ3ZDLE9BQU8sdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxLQUFLLG1DQUF1QixDQUFDLElBQUk7WUFDL0IsT0FBTyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3QyxLQUFLLG1DQUF1QixDQUFDLFFBQVE7WUFDbkMsT0FBTyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pELEtBQUssbUNBQXVCLENBQUMsa0JBQWtCO1lBQzdDLE9BQU8sNkJBQTZCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzRDtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUFiRCxzREFhQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxJQUFXO0lBRXhDLElBQUEsS0FDRSxJQUFJLE9BRDJDLEVBQXZDLGlCQUFpQix1QkFBQSxFQUFFLGtCQUFrQix3QkFBRSxDQUMxQztJQUNULGdCQUFNLENBQUMsaUJBQWlCLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztJQUM3RCxnQkFBTSxDQUFDLGtCQUFrQixFQUFFLGtDQUFrQyxDQUFDLENBQUM7SUFDL0QsSUFBTSxnQkFBZ0IsR0FBRyx1QkFBYSxDQUFDLFlBQVksQ0FBQztRQUNsRCxXQUFXLEVBQUUsSUFBSSxtQkFBUyxDQUFDLGtCQUFrQixDQUFDO1FBQzlDLGdCQUFnQixFQUFFLElBQUksbUJBQVMsQ0FBQyxpQkFBaUIsQ0FBQztLQUNuRCxDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxJQUFVO0lBRXJCLElBQUEsSUFBSSxHQUNaLElBQUksWUFEUSxDQUNQO0lBQ1QsZ0JBQU0sQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNuQyxJQUFNLGVBQWUsR0FBRyxJQUFJLGdDQUFzQixDQUFDO1FBQ2pELElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLElBQUksbUJBQVMsQ0FBQywyQkFBZSxDQUFDO1FBQ3pDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztLQUN4QixDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUFjO0lBRXZDLElBQUEsS0FDRSxJQUFJLE9BRG9DLEVBQWhDLFdBQVcsaUJBQUEsRUFBRSxTQUFTLGVBQUEsRUFBRSxNQUFNLFlBQUUsQ0FDbkM7SUFDVCxnQkFBTSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQ2pELGdCQUFNLENBQUMsU0FBUyxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUMxQyxJQUFNLG1CQUFtQixHQUFHLHVCQUFhLENBQUMsUUFBUSxDQUFDO1FBQ2pELFVBQVUsRUFBRSxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLFFBQVEsRUFBRSxJQUFJLG1CQUFTLENBQUMsU0FBUyxDQUFDO1FBQ2xDLFFBQVEsRUFBRSxJQUFJLHNCQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFO0tBQzNDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsNkJBQTZCLENBQUMsSUFBZ0I7SUFFbkQsSUFBQSxLQUNFLElBQUksT0FEb0QsRUFBaEQsV0FBVyxpQkFBQSxFQUFFLFlBQVksa0JBQUEsRUFBRSxXQUFXLGlCQUFBLEVBQUUsTUFBTSxZQUFFLENBQ25EO0lBQ1QsZ0JBQU0sQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUNqRCxnQkFBTSxDQUFDLFlBQVksRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ25ELGdCQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDakQsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN2QyxJQUFNLHVCQUF1QixHQUFHLHVCQUFhLENBQUMsa0JBQWtCLENBQUM7UUFDL0QsVUFBVSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDdEMsV0FBVyxFQUFFLElBQUksbUJBQVMsQ0FBQyxZQUFZLENBQUM7UUFDeEMsZ0JBQWdCLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxRQUFRLEVBQUUsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtLQUMzQyxDQUFDLENBQUM7SUFDSCxPQUFPLHVCQUF1QixDQUFDLFlBQVksQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtLCBUcmFuc2FjdGlvbkluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLCBNRU1PX1BST0dSQU1fUEsgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvblBhcmFtcywgTWVtbywgTm9uY2UsIFRyYW5zZmVyLCBXYWxsZXRJbml0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQ29uc3RydWN0IFNvbGFuYSBpbnN0cnVjdGlvbnMgZnJvbSBpbnN0cnVjdGlvbnMgcGFyYW1zXG4gKlxuICogQHBhcmFtIHtJbnN0cnVjdGlvblBhcmFtc30gaW5zdHJ1Y3Rpb25Ub0J1aWxkIC0gdGhlIGRhdGEgY29udGFpbmluZyB0aGUgaW5zdHJ1Y3Rpb24gcGFyYW1zXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIHN1cHBvcnRlZCBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb2xJbnN0cnVjdGlvbkZhY3RvcnkoaW5zdHJ1Y3Rpb25Ub0J1aWxkOiBJbnN0cnVjdGlvblBhcmFtcyk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIHN3aXRjaCAoaW5zdHJ1Y3Rpb25Ub0J1aWxkLnR5cGUpIHtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZTpcbiAgICAgIHJldHVybiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbzpcbiAgICAgIHJldHVybiBtZW1vSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyOlxuICAgICAgcmV0dXJuIHRyYW5zZmVySW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDpcbiAgICAgIHJldHVybiBjcmVhdGVOb25jZUFjY291bnRJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5zdHJ1Y3Rpb24gdHlwZSBvciBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQWR2YW5jZSBOb25jZSBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtOb25jZX0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBBZHZhbmNlIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbihkYXRhOiBOb25jZSk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgYXV0aFdhbGxldEFkZHJlc3MsIHdhbGxldE5vbmNlQWRkcmVzcyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGF1dGhXYWxsZXRBZGRyZXNzLCAnTWlzc2luZyBhdXRoV2FsbGV0QWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQod2FsbGV0Tm9uY2VBZGRyZXNzLCAnTWlzc2luZyB3YWxsZXROb25jZUFkZHJlc3MgcGFyYW0nKTtcbiAgY29uc3Qgbm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleSh3YWxsZXROb25jZUFkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aFdhbGxldEFkZHJlc3MpLFxuICB9KTtcbiAgcmV0dXJuIFtub25jZUluc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtNZW1vfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIE1lbW8gU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIG1lbW9JbnN0cnVjdGlvbihkYXRhOiBNZW1vKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBtZW1vIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQobWVtbywgJ01pc3NpbmcgbWVtbyBwYXJhbScpO1xuICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAga2V5czogW10sXG4gICAgcHJvZ3JhbUlkOiBuZXcgUHVibGljS2V5KE1FTU9fUFJPR1JBTV9QSyksXG4gICAgZGF0YTogQnVmZmVyLmZyb20obWVtbyksXG4gIH0pO1xuICByZXR1cm4gW21lbW9JbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zZmVyfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiB0cmFuc2Zlckluc3RydWN0aW9uKGRhdGE6IFRyYW5zZmVyKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgdG9BZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHRvQWRkcmVzcywgJ01pc3NpbmcgdG9BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhbW91bnQsICdNaXNzaW5nIHRvQWRkcmVzcyBwYXJhbScpO1xuICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS50cmFuc2Zlcih7XG4gICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkodG9BZGRyZXNzKSxcbiAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihhbW91bnQpLnRvTnVtYmVyKCksXG4gIH0pO1xuICByZXR1cm4gW3RyYW5zZmVySW5zdHJ1Y3Rpb25dO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7V2FsbGV0SW5pdH0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKGRhdGE6IFdhbGxldEluaXQpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBub25jZUFkZHJlc3MsIGF1dGhBZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KG5vbmNlQWRkcmVzcywgJ01pc3Npbmcgbm9uY2VBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhdXRoQWRkcmVzcywgJ01pc3NpbmcgYXV0aEFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGNvbnN0IG5vbmNlQWNjb3VudEluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5jcmVhdGVOb25jZUFjY291bnQoe1xuICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWRkcmVzcyksXG4gICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICB9KTtcbiAgcmV0dXJuIG5vbmNlQWNjb3VudEluc3RydWN0aW9uLmluc3RydWN0aW9ucztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { BaseTransaction, TransactionType } from '../baseCoin';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import { Transaction as SolTransaction } from '@solana/web3.js';
|
|
4
|
+
import { TxData } from './iface';
|
|
5
|
+
import { KeyPair } from '.';
|
|
6
|
+
export declare class Transaction extends BaseTransaction {
|
|
7
|
+
private _solTransaction;
|
|
8
|
+
protected _type: TransactionType;
|
|
9
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
10
|
+
get solTransaction(): SolTransaction;
|
|
11
|
+
set solTransaction(tx: SolTransaction);
|
|
12
|
+
set id(id: string);
|
|
13
|
+
get id(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Set the transaction type.
|
|
16
|
+
*
|
|
17
|
+
* @param {TransactionType} transactionType The transaction type to be set.
|
|
18
|
+
*/
|
|
19
|
+
setTransactionType(transactionType: TransactionType): void;
|
|
20
|
+
/** @inheritdoc */
|
|
21
|
+
canSign(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Signs transaction.
|
|
24
|
+
*
|
|
25
|
+
* @param {KeyPair} keyPair Signer keys.
|
|
26
|
+
*/
|
|
27
|
+
sign(keyPair: KeyPair[] | KeyPair): Promise<void>;
|
|
28
|
+
/** @inheritdoc */
|
|
29
|
+
toBroadcastFormat(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Sets this transaction payload
|
|
32
|
+
*
|
|
33
|
+
* @param rawTransaction
|
|
34
|
+
*/
|
|
35
|
+
fromRawTransaction(rawTransaction: string): void;
|
|
36
|
+
/** @inheritdoc */
|
|
37
|
+
toJson(): TxData;
|
|
38
|
+
/**
|
|
39
|
+
* Get the nonce from the Solana Transaction
|
|
40
|
+
* Throws if not set
|
|
41
|
+
*/
|
|
42
|
+
private getNonce;
|
|
43
|
+
/**
|
|
44
|
+
* Load the input and output data on this transaction.
|
|
45
|
+
*/
|
|
46
|
+
loadInputsAndOutputs(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAgC,WAAW,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAK5B,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAiB;IACxC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,cAAc,CAAC,EAAE,EAAE,cAAc,EAEpC;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAEhB;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvD,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAiB3B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAuBhD,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAchB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAkC7B"}
|
|
@@ -0,0 +1,254 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (_) try {
|
|
33
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
54
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
exports.Transaction = void 0;
|
|
58
|
+
var baseCoin_1 = require("../baseCoin");
|
|
59
|
+
var errors_1 = require("../baseCoin/errors");
|
|
60
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
61
|
+
var bs58_1 = __importDefault(require("bs58"));
|
|
62
|
+
var utils_1 = require("./utils");
|
|
63
|
+
var instructionParamsFactory_1 = require("./instructionParamsFactory");
|
|
64
|
+
var constants_1 = require("./constants");
|
|
65
|
+
var Transaction = /** @class */ (function (_super) {
|
|
66
|
+
__extends(Transaction, _super);
|
|
67
|
+
function Transaction(_coinConfig) {
|
|
68
|
+
return _super.call(this, _coinConfig) || this;
|
|
69
|
+
}
|
|
70
|
+
Object.defineProperty(Transaction.prototype, "solTransaction", {
|
|
71
|
+
get: function () {
|
|
72
|
+
return this._solTransaction;
|
|
73
|
+
},
|
|
74
|
+
set: function (tx) {
|
|
75
|
+
this._solTransaction = tx;
|
|
76
|
+
},
|
|
77
|
+
enumerable: false,
|
|
78
|
+
configurable: true
|
|
79
|
+
});
|
|
80
|
+
Object.defineProperty(Transaction.prototype, "id", {
|
|
81
|
+
get: function () {
|
|
82
|
+
return this._id;
|
|
83
|
+
},
|
|
84
|
+
set: function (id) {
|
|
85
|
+
this._id = id;
|
|
86
|
+
},
|
|
87
|
+
enumerable: false,
|
|
88
|
+
configurable: true
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Set the transaction type.
|
|
92
|
+
*
|
|
93
|
+
* @param {TransactionType} transactionType The transaction type to be set.
|
|
94
|
+
*/
|
|
95
|
+
Transaction.prototype.setTransactionType = function (transactionType) {
|
|
96
|
+
this._type = transactionType;
|
|
97
|
+
};
|
|
98
|
+
/** @inheritdoc */
|
|
99
|
+
Transaction.prototype.canSign = function () {
|
|
100
|
+
return true;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Signs transaction.
|
|
104
|
+
*
|
|
105
|
+
* @param {KeyPair} keyPair Signer keys.
|
|
106
|
+
*/
|
|
107
|
+
Transaction.prototype.sign = function (keyPair) {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
109
|
+
var keyPairs, signers, _i, keyPairs_1, kp, keys;
|
|
110
|
+
var _a;
|
|
111
|
+
return __generator(this, function (_b) {
|
|
112
|
+
if (!this._solTransaction || !this._solTransaction.recentBlockhash) {
|
|
113
|
+
throw new errors_1.SigningError('Nonce is required before signing');
|
|
114
|
+
}
|
|
115
|
+
if (!this._solTransaction || !this._solTransaction.feePayer) {
|
|
116
|
+
throw new errors_1.SigningError('feePayer is required before signing');
|
|
117
|
+
}
|
|
118
|
+
keyPairs = keyPair instanceof Array ? keyPair : [keyPair];
|
|
119
|
+
signers = [];
|
|
120
|
+
for (_i = 0, keyPairs_1 = keyPairs; _i < keyPairs_1.length; _i++) {
|
|
121
|
+
kp = keyPairs_1[_i];
|
|
122
|
+
keys = kp.getKeys(true);
|
|
123
|
+
if (!keys.prv) {
|
|
124
|
+
throw new errors_1.SigningError('Missing private key');
|
|
125
|
+
}
|
|
126
|
+
signers.push({ publicKey: new web3_js_1.PublicKey(keys.pub), secretKey: keys.prv });
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
(_a = this._solTransaction).partialSign.apply(_a, signers);
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
throw e;
|
|
133
|
+
}
|
|
134
|
+
return [2 /*return*/];
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
/** @inheritdoc */
|
|
139
|
+
Transaction.prototype.toBroadcastFormat = function () {
|
|
140
|
+
if (!this._solTransaction) {
|
|
141
|
+
throw new errors_1.ParseTransactionError('Empty transaction');
|
|
142
|
+
}
|
|
143
|
+
// The signatures can have null signatures (which means they are required but yet unsigned)
|
|
144
|
+
// In order to be able to serializer the txs, we have to change the requireAllSignatures based
|
|
145
|
+
// on if the TX is fully signed or not
|
|
146
|
+
var requireAllSignatures = utils_1.requiresAllSignatures(this._solTransaction.signatures);
|
|
147
|
+
try {
|
|
148
|
+
// Based on the recomendation encoding found here https://docs.solana.com/developing/clients/jsonrpc-api#sendtransaction
|
|
149
|
+
// We use base64 encoding
|
|
150
|
+
return this._solTransaction.serialize({ requireAllSignatures: requireAllSignatures }).toString('base64');
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
throw e;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Sets this transaction payload
|
|
158
|
+
*
|
|
159
|
+
* @param rawTransaction
|
|
160
|
+
*/
|
|
161
|
+
Transaction.prototype.fromRawTransaction = function (rawTransaction) {
|
|
162
|
+
try {
|
|
163
|
+
utils_1.isValidRawTransaction(rawTransaction);
|
|
164
|
+
this._solTransaction = web3_js_1.Transaction.from(Buffer.from(rawTransaction, 'base64'));
|
|
165
|
+
if (this._solTransaction.signature && this._solTransaction.signature !== null) {
|
|
166
|
+
this._id = bs58_1.default.encode(this._solTransaction.signature);
|
|
167
|
+
}
|
|
168
|
+
var transactionType = utils_1.getTransactionType(this._solTransaction);
|
|
169
|
+
switch (transactionType) {
|
|
170
|
+
case baseCoin_1.TransactionType.WalletInitialization:
|
|
171
|
+
this.setTransactionType(baseCoin_1.TransactionType.WalletInitialization);
|
|
172
|
+
break;
|
|
173
|
+
case baseCoin_1.TransactionType.Send:
|
|
174
|
+
this.setTransactionType(baseCoin_1.TransactionType.Send);
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
this.loadInputsAndOutputs();
|
|
178
|
+
}
|
|
179
|
+
catch (e) {
|
|
180
|
+
throw e;
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
/** @inheritdoc */
|
|
184
|
+
Transaction.prototype.toJson = function () {
|
|
185
|
+
var _a;
|
|
186
|
+
if (!this._solTransaction) {
|
|
187
|
+
throw new errors_1.ParseTransactionError('Empty transaction');
|
|
188
|
+
}
|
|
189
|
+
var result = {
|
|
190
|
+
id: this.id,
|
|
191
|
+
feePayer: (_a = this._solTransaction.feePayer) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
192
|
+
nonce: this.getNonce(),
|
|
193
|
+
numSignatures: utils_1.countNotNullSignatures(this._solTransaction.signatures),
|
|
194
|
+
instructionsData: instructionParamsFactory_1.instructionParamsFactory(this._type, this._solTransaction.instructions),
|
|
195
|
+
};
|
|
196
|
+
return result;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Get the nonce from the Solana Transaction
|
|
200
|
+
* Throws if not set
|
|
201
|
+
*/
|
|
202
|
+
Transaction.prototype.getNonce = function () {
|
|
203
|
+
if (this._solTransaction.recentBlockhash) {
|
|
204
|
+
return this._solTransaction.recentBlockhash;
|
|
205
|
+
}
|
|
206
|
+
else if (this._solTransaction.nonceInfo) {
|
|
207
|
+
return this._solTransaction.nonceInfo.nonce;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
throw new errors_1.InvalidTransactionError('Nonce is not set');
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* Load the input and output data on this transaction.
|
|
215
|
+
*/
|
|
216
|
+
Transaction.prototype.loadInputsAndOutputs = function () {
|
|
217
|
+
var _a;
|
|
218
|
+
if (!this._solTransaction || ((_a = this._solTransaction.instructions) === null || _a === void 0 ? void 0 : _a.length) === 0) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
var outputs = [];
|
|
222
|
+
var inputs = [];
|
|
223
|
+
var instructionParams = instructionParamsFactory_1.instructionParamsFactory(this.type, this._solTransaction.instructions);
|
|
224
|
+
for (var _i = 0, instructionParams_1 = instructionParams; _i < instructionParams_1.length; _i++) {
|
|
225
|
+
var instruction = instructionParams_1[_i];
|
|
226
|
+
switch (instruction.type) {
|
|
227
|
+
case constants_1.InstructionBuilderTypes.CreateNonceAccount:
|
|
228
|
+
inputs.push({
|
|
229
|
+
address: instruction.params.fromAddress,
|
|
230
|
+
value: instruction.params.amount,
|
|
231
|
+
coin: this._coinConfig.name,
|
|
232
|
+
});
|
|
233
|
+
break;
|
|
234
|
+
case constants_1.InstructionBuilderTypes.Transfer:
|
|
235
|
+
inputs.push({
|
|
236
|
+
address: instruction.params.fromAddress,
|
|
237
|
+
value: instruction.params.amount,
|
|
238
|
+
coin: this._coinConfig.name,
|
|
239
|
+
});
|
|
240
|
+
outputs.push({
|
|
241
|
+
address: instruction.params.toAddress,
|
|
242
|
+
value: instruction.params.amount,
|
|
243
|
+
coin: this._coinConfig.name,
|
|
244
|
+
});
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
this._outputs = outputs;
|
|
249
|
+
this._inputs = inputs;
|
|
250
|
+
};
|
|
251
|
+
return Transaction;
|
|
252
|
+
}(baseCoin_1.BaseTransaction));
|
|
253
|
+
exports.Transaction = Transaction;
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQStEO0FBRS9ELDZDQUFrRztBQUNsRywyQ0FBOEY7QUFFOUYsOENBQTBCO0FBQzFCLGlDQUFtSDtBQUVuSCx1RUFBc0U7QUFDdEUseUNBQXNEO0FBR3REO0lBQWlDLCtCQUFlO0lBSTlDLHFCQUFZLFdBQWlDO2VBQzNDLGtCQUFNLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBRUQsc0JBQUksdUNBQWM7YUFBbEI7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDOUIsQ0FBQzthQUVELFVBQW1CLEVBQWtCO1lBQ25DLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzVCLENBQUM7OztPQUpBO0lBTUQsc0JBQUksMkJBQUU7YUFJTjtZQUNFLE9BQU8sSUFBSSxDQUFDLEdBQWEsQ0FBQztRQUM1QixDQUFDO2FBTkQsVUFBTyxFQUFVO1lBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDaEIsQ0FBQzs7O09BQUE7SUFNRDs7OztPQUlHO0lBQ0gsd0NBQWtCLEdBQWxCLFVBQW1CLGVBQWdDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQy9CLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNkJBQU8sR0FBUDtRQUNFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDRywwQkFBSSxHQUFWLFVBQVcsT0FBNEI7Ozs7O2dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFO29CQUNsRSxNQUFNLElBQUkscUJBQVks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QUNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUFsTEQsQ0FBaUMsMEJBQWUsR0FrTC9DO0FBbExZLGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFBhcnNlVHJhbnNhY3Rpb25FcnJvciwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEJsb2NraGFzaCwgUHVibGljS2V5LCBTaWduZXIsIFRyYW5zYWN0aW9uIGFzIFNvbFRyYW5zYWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IGJhc2U1OCBmcm9tICdiczU4JztcbmltcG9ydCB7IGNvdW50Tm90TnVsbFNpZ25hdHVyZXMsIGdldFRyYW5zYWN0aW9uVHlwZSwgaXNWYWxpZFJhd1RyYW5zYWN0aW9uLCByZXF1aXJlc0FsbFNpZ25hdHVyZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4vaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRW50cnkgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3NvbFRyYW5zYWN0aW9uOiBTb2xUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF90eXBlOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHNvbFRyYW5zYWN0aW9uKCk6IFNvbFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgc29sVHJhbnNhY3Rpb24odHg6IFNvbFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fc29sVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5faWQgPSBpZDtcbiAgfVxuXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZCBhcyBzdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFNpZ25lciBrZXlzLlxuICAgKi9cbiAgYXN5bmMgc2lnbihrZXlQYWlyOiBLZXlQYWlyW10gfCBLZXlQYWlyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9zb2xUcmFuc2FjdGlvbiB8fCAhdGhpcy5fc29sVHJhbnNhY3Rpb24ucmVjZW50QmxvY2toYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdOb25jZSBpcyByZXF1aXJlZCBiZWZvcmUgc2lnbmluZycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uIHx8ICF0aGlzLl9zb2xUcmFuc2FjdGlvbi5mZWVQYXllcikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignZmVlUGF5ZXIgaXMgcmVxdWlyZWQgYmVmb3JlIHNpZ25pbmcnKTtcbiAgICB9XG4gICAgY29uc3Qga2V5UGFpcnMgPSBrZXlQYWlyIGluc3RhbmNlb2YgQXJyYXkgPyBrZXlQYWlyIDogW2tleVBhaXJdO1xuICAgIGNvbnN0IHNpZ25lcnM6IFNpZ25lcltdID0gW107XG4gICAgZm9yIChjb25zdCBrcCBvZiBrZXlQYWlycykge1xuICAgICAgY29uc3Qga2V5cyA9IGtwLmdldEtleXModHJ1ZSk7XG4gICAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICAgIH1cbiAgICAgIHNpZ25lcnMucHVzaCh7IHB1YmxpY0tleTogbmV3IFB1YmxpY0tleShrZXlzLnB1YiksIHNlY3JldEtleToga2V5cy5wcnYgYXMgVWludDhBcnJheSB9KTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnBhcnRpYWxTaWduKC4uLnNpZ25lcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zb2xUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgLy8gVGhlIHNpZ25hdHVyZXMgY2FuIGhhdmUgbnVsbCBzaWduYXR1cmVzICh3aGljaCBtZWFucyB0aGV5IGFyZSByZXF1aXJlZCBidXQgeWV0IHVuc2lnbmVkKVxuICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2VyaWFsaXplciB0aGUgdHhzLCB3ZSBoYXZlIHRvIGNoYW5nZSB0aGUgcmVxdWlyZUFsbFNpZ25hdHVyZXMgYmFzZWRcbiAgICAvLyBvbiBpZiB0aGUgVFggaXMgZnVsbHkgc2lnbmVkIG9yIG5vdFxuICAgIGNvbnN0IHJlcXVpcmVBbGxTaWduYXR1cmVzID0gcmVxdWlyZXNBbGxTaWduYXR1cmVzKHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZXMpO1xuICAgIHRyeSB7XG4gICAgICAvLyBCYXNlZCBvbiB0aGUgcmVjb21lbmRhdGlvbiBlbmNvZGluZyBmb3VuZCBoZXJlIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL2RldmVsb3BpbmcvY2xpZW50cy9qc29ucnBjLWFwaSNzZW5kdHJhbnNhY3Rpb25cbiAgICAgIC8vIFdlIHVzZSBiYXNlNjQgZW5jb2RpbmdcbiAgICAgIHJldHVybiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5zZXJpYWxpemUoeyByZXF1aXJlQWxsU2lnbmF0dXJlcyB9KS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5fc29sVHJhbnNhY3Rpb24gPSBTb2xUcmFuc2FjdGlvbi5mcm9tKEJ1ZmZlci5mcm9tKHJhd1RyYW5zYWN0aW9uLCAnYmFzZTY0JykpO1xuXG4gICAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlICYmIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9pZCA9IGJhc2U1OC5lbmNvZGUodGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uVHlwZSA9IGdldFRyYW5zYWN0aW9uVHlwZSh0aGlzLl9zb2xUcmFuc2FjdGlvbik7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uVHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgZmVlUGF5ZXI6IHRoaXMuX3NvbFRyYW5zYWN0aW9uLmZlZVBheWVyPy50b1N0cmluZygpLFxuICAgICAgbm9uY2U6IHRoaXMuZ2V0Tm9uY2UoKSxcbiAgICAgIG51bVNpZ25hdHVyZXM6IGNvdW50Tm90TnVsbFNpZ25hdHVyZXModGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlcyksXG4gICAgICBpbnN0cnVjdGlvbnNEYXRhOiBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkodGhpcy5fdHlwZSwgdGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBub25jZSBmcm9tIHRoZSBTb2xhbmEgVHJhbnNhY3Rpb25cbiAgICogVGhyb3dzIGlmIG5vdCBzZXRcbiAgICovXG4gIHByaXZhdGUgZ2V0Tm9uY2UoKTogQmxvY2toYXNoIHtcbiAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24ucmVjZW50QmxvY2toYXNoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24ucmVjZW50QmxvY2toYXNoO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvLm5vbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ05vbmNlIGlzIG5vdCBzZXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uIHx8IHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnN0cnVjdGlvblBhcmFtcyA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0aGlzLnR5cGUsIHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucyk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9uUGFyYW1zKSB7XG4gICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVOb25jZUFjY291bnQ6XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy50b0FkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fb3V0cHV0cyA9IG91dHB1dHM7XG4gICAgdGhpcy5faW5wdXRzID0gaW5wdXRzO1xuICB9XG59XG4iXX0=
|