@bitgo-beta/sdk-coin-flrp 1.0.1-beta.4 → 1.0.1-beta.41
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/src/flrp.d.ts +82 -61
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +301 -133
- package/dist/src/lib/atomicTransactionBuilder.d.ts +57 -8
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +211 -8
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportInCTxBuilder.js +13 -7
- package/dist/src/lib/iface.d.ts +52 -1
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +2 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +6 -2
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +4 -6
- package/dist/src/lib/transaction.d.ts +111 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +321 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +37 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +91 -0
- package/dist/src/lib/utils.d.ts +57 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +140 -43
- package/dist/test/unit/flrp.js +103 -14
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/atomicTransactionBuilder.js +222 -0
- package/dist/test/unit/lib/exportTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportTxBuilder.js +45 -0
- package/dist/test/unit/lib/transaction.d.ts +2 -0
- package/dist/test/unit/lib/transaction.d.ts.map +1 -0
- package/dist/test/unit/lib/transaction.js +460 -0
- package/dist/test/unit/lib/utils.d.ts +2 -0
- package/dist/test/unit/lib/utils.d.ts.map +1 -0
- package/dist/test/unit/lib/utils.js +286 -0
- package/dist/test/unit/smoke.js +18 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -11
package/dist/src/lib/keyPair.js
CHANGED
|
@@ -5,8 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.KeyPair = exports.addressFormat = void 0;
|
|
7
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
-
const create_hash_1 = __importDefault(require("create-hash"));
|
|
9
|
-
const safe_buffer_1 = require("safe-buffer");
|
|
10
8
|
const secp256k1_1 = require("@bitgo-beta/secp256k1");
|
|
11
9
|
const crypto_1 = require("crypto");
|
|
12
10
|
const utils_1 = __importDefault(require("./utils"));
|
|
@@ -135,10 +133,10 @@ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
|
|
|
135
133
|
* @returns {Buffer}
|
|
136
134
|
*/
|
|
137
135
|
getAddressSafeBuffer() {
|
|
138
|
-
const
|
|
139
|
-
const sha256 =
|
|
140
|
-
return
|
|
136
|
+
const publicKeyHex = this.keyPair.publicKey.toString('hex');
|
|
137
|
+
const sha256 = (0, crypto_1.createHash)('sha256').update(publicKeyHex, 'hex').digest();
|
|
138
|
+
return (0, crypto_1.createHash)('ripemd160').update(sha256).digest();
|
|
141
139
|
}
|
|
142
140
|
}
|
|
143
141
|
exports.KeyPair = KeyPair;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFTOEI7QUFDOUIsOERBQXFDO0FBQ3JDLDZDQUFtRDtBQUNuRCxxREFBc0Q7QUFDdEQsbUNBQXFDO0FBQ3JDLG9EQUE0QjtBQUU1QixNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUNuQyxJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIsaUNBQWdCLENBQUE7SUFDaEIsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsYUFBYSw2QkFBYixhQUFhLFFBR3hCO0FBRUQsTUFBYSxPQUFRLFNBQVEsbUNBQXdCO0lBQ25EOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVcsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBQSxpQkFBTSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksSUFBQSx1QkFBWSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFBLHNCQUFXLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFD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QUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssb0JBQW9CO1FBQzFCLE1BQU0sYUFBYSxHQUFHLG9CQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRixNQUFNLE1BQU0sR0FBRyxvQkFBVSxDQUFDLElBQUksQ0FBQyxJQUFBLHFCQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUEscUJBQVUsRUFBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0Y7QUF6SEQsMEJBeUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVmYXVsdEtleXMsXG4gIGlzUHJpdmF0ZUtleSxcbiAgaXNQdWJsaWNLZXksXG4gIGlzU2VlZCxcbiAgaXNWYWxpZFhwcnYsXG4gIGlzVmFsaWRYcHViLFxuICBLZXlQYWlyT3B0aW9ucyxcbiAgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgY3JlYXRlSGFzaCBmcm9tICdjcmVhdGUtaGFzaCc7XG5pbXBvcnQgeyBCdWZmZXIgYXMgU2FmZUJ1ZmZlciB9IGZyb20gJ3NhZmUtYnVmZmVyJztcbmltcG9ydCB7IGJpcDMyLCBFQ1BhaXIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBERUZBVUxUX1NFRURfU0laRV9CWVRFUyA9IDE2O1xuZXhwb3J0IGVudW0gYWRkcmVzc0Zvcm1hdCB7XG4gIHRlc3RuZXQgPSAnZnVqaScsXG4gIG1haW5uZXQgPSAnZmxyJyxcbn1cblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIge1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHsgS2V5UGFpck9wdGlvbnMgfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXksIG9yIGEgcHVibGljIGtleVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBzdXBlcihzb3VyY2UpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICBjb25zdCBzZWVkID0gcmFuZG9tQnl0ZXMoREVGQVVMVF9TRUVEX1NJWkVfQllURVMpO1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tU2VlZChzZWVkKTtcbiAgICB9IGVsc2UgaWYgKGlzU2VlZChzb3VyY2UpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21TZWVkKHNvdXJjZS5zZWVkKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpdmF0ZUtleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShzb3VyY2UucHJ2KTtcbiAgICB9IGVsc2UgaWYgKGlzUHVibGljS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMucmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkoc291cmNlLnB1Yik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGROb2RlKSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIudG9LZXlQYWlyKHRoaXMuaGROb2RlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBrZXlwYWlyIGZyb20gYSBwcm90b2NvbCBwcml2YXRlIGtleSBvciBleHRlbmRlZCBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIHJhdyBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGlmIChpc1ZhbGlkWHBydihwcnYpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHJ2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydi5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEVDUGFpciBmcm9tIGEgcHJvdG9jb2wgcHVibGljIGtleSBvciBleHRlbmRlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIEEgcmF3IHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc1ZhbGlkWHB1YihwdWIpKSB7XG4gICAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwdWIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMua2V5UGFpciA9IEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHV0aWxzLmNiNThEZWNvZGUocHViKSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHVibGljIGtleScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGtleXMgZm9ybWF0IGlzIGEgcGFpciBvZiBVaW50OEFycmF5IGtleXNcbiAgICpcbiAgICogQHJldHVybnMgeyBEZWZhdWx0S2V5cyB9IFRoZSBrZXlzIGluIHRoZSBkZWZpbmVkIGZvcm1hdFxuICAgKi9cbiAgZ2V0S2V5cygpOiBEZWZhdWx0S2V5cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1YjogdGhpcy5nZXRQdWJsaWNLZXkoeyBjb21wcmVzc2VkOiB0cnVlIH0pLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHBydjogdGhpcy5nZXRQcml2YXRlS2V5KCk/LnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIEZsYXJlIFAtQ2hhaW4gcHVibGljIG1haW5uZXQgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gZmxhcmUgaHJwIHNlbGVjdG9yOiBNYWlubmV0KGZscikgb3IgVGVzdG5ldChmdWppKVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbWFpbm5ldCBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleVxuICAgKi9cbiAgZ2V0QWRkcmVzcyhmb3JtYXQgPSAnbWFpbm5ldCcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEZsclBBZGRyZXNzKGFkZHJlc3NGb3JtYXRbZm9ybWF0XSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHB1YmxpYyBhZGRyZXNzIG9mIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBocnAgLSBzZWxlY3QgTWFpbm5ldChmbHIpIG9yIFRlc3RuZXQoZnVqaSkgZm9yIHRoZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleSBhbmQgaHJwXG4gICAqL1xuICBnZXRGbHJQQWRkcmVzcyhocnA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYWRkcmVzc0J1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuZ2V0QWRkcmVzc0J1ZmZlcigpKTtcbiAgICByZXR1cm4gdXRpbHMuYWRkcmVzc1RvU3RyaW5nKGhycCwgJ1AnLCBhZGRyZXNzQnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBGbGFyZSBQLUNoYWluIHB1YmxpYyBtYWlubmV0IGFkZHJlc3MgYnVmZmVyXG4gICAqXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IFRoZSBhZGRyZXNzIGJ1ZmZlciBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXlcbiAgICovXG4gIHByaXZhdGUgZ2V0QWRkcmVzc0J1ZmZlcigpOiBCdWZmZXIge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgdGhlIHNhZmUgYnVmZmVyIG1ldGhvZCBmb3IgYWRkcmVzcyBkZXJpdmF0aW9uXG4gICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzU2FmZUJ1ZmZlcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzU2FmZUJ1ZmZlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlIHNhZmUgQnVmZmVyIGluc3RlYWQgb2YgdGhlIHJlZ3VsYXIgYnVmZmVyIHRvIGRlcml2ZSB0aGUgYWRkcmVzcyBidWZmZXIuIFVzZWQgaW4gdGhlIE9WQy5cbiAgICpcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIHByaXZhdGUgZ2V0QWRkcmVzc1NhZmVCdWZmZXIoKTogQnVmZmVyIHtcbiAgICBjb25zdCBwdWJsaWNLZXlTYWZlID0gU2FmZUJ1ZmZlci5mcm9tKHRoaXMua2V5UGFpci5wdWJsaWNLZXkudG9TdHJpbmcoJ2hleCcpLCAnaGV4Jyk7XG4gICAgY29uc3Qgc2hhMjU2ID0gU2FmZUJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShwdWJsaWNLZXlTYWZlKS5kaWdlc3QoKSk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goJ3JpcGVtZDE2MCcpLnVwZGF0ZShzaGEyNTYpLmRpZ2VzdCgpKTtcbiAgfVxufVxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFTOEI7QUFDOUIscURBQXNEO0FBQ3RELG1DQUFpRDtBQUNqRCxvREFBNEI7QUFFNUIsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFDbkMsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLGlDQUFnQixDQUFBO0lBQ2hCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsNkJBQWIsYUFBYSxRQUd4QjtBQUVELE1BQWEsT0FBUSxTQUFRLG1DQUF3QjtJQUNuRDs7OztPQUlHO0lBQ0gsWUFBWSxNQUF1QjtRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksR0FBRyxJQUFBLG9CQUFXLEVBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLElBQUEsaUJBQU0sRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxJQUFJLElBQUEsdUJBQVksRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksSUFBQSxzQkFBVyxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxDQUFD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UUFDckMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLG9CQUFvQjtRQUMxQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekUsT0FBTyxJQUFBLG1CQUFVLEVBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQXpIRCwwQkF5SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWZhdWx0S2V5cyxcbiAgaXNQcml2YXRlS2V5LFxuICBpc1B1YmxpY0tleSxcbiAgaXNTZWVkLFxuICBpc1ZhbGlkWHBydixcbiAgaXNWYWxpZFhwdWIsXG4gIEtleVBhaXJPcHRpb25zLFxuICBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGJpcDMyLCBFQ1BhaXIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBERUZBVUxUX1NFRURfU0laRV9CWVRFUyA9IDE2O1xuZXhwb3J0IGVudW0gYWRkcmVzc0Zvcm1hdCB7XG4gIHRlc3RuZXQgPSAnZnVqaScsXG4gIG1haW5uZXQgPSAnZmxyJyxcbn1cblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIge1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHsgS2V5UGFpck9wdGlvbnMgfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXksIG9yIGEgcHVibGljIGtleVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBzdXBlcihzb3VyY2UpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICBjb25zdCBzZWVkID0gcmFuZG9tQnl0ZXMoREVGQVVMVF9TRUVEX1NJWkVfQllURVMpO1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tU2VlZChzZWVkKTtcbiAgICB9IGVsc2UgaWYgKGlzU2VlZChzb3VyY2UpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21TZWVkKHNvdXJjZS5zZWVkKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpdmF0ZUtleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShzb3VyY2UucHJ2KTtcbiAgICB9IGVsc2UgaWYgKGlzUHVibGljS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMucmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkoc291cmNlLnB1Yik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGROb2RlKSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIudG9LZXlQYWlyKHRoaXMuaGROb2RlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBrZXlwYWlyIGZyb20gYSBwcm90b2NvbCBwcml2YXRlIGtleSBvciBleHRlbmRlZCBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIHJhdyBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGlmIChpc1ZhbGlkWHBydihwcnYpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHJ2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydi5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEVDUGFpciBmcm9tIGEgcHJvdG9jb2wgcHVibGljIGtleSBvciBleHRlbmRlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIEEgcmF3IHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc1ZhbGlkWHB1YihwdWIpKSB7XG4gICAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwdWIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMua2V5UGFpciA9IEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHV0aWxzLmNiNThEZWNvZGUocHViKSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHVibGljIGtleScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGtleXMgZm9ybWF0IGlzIGEgcGFpciBvZiBVaW50OEFycmF5IGtleXNcbiAgICpcbiAgICogQHJldHVybnMgeyBEZWZhdWx0S2V5cyB9IFRoZSBrZXlzIGluIHRoZSBkZWZpbmVkIGZvcm1hdFxuICAgKi9cbiAgZ2V0S2V5cygpOiBEZWZhdWx0S2V5cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1YjogdGhpcy5nZXRQdWJsaWNLZXkoeyBjb21wcmVzc2VkOiB0cnVlIH0pLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHBydjogdGhpcy5nZXRQcml2YXRlS2V5KCk/LnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIEZsYXJlIFAtQ2hhaW4gcHVibGljIG1haW5uZXQgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gZmxhcmUgaHJwIHNlbGVjdG9yOiBNYWlubmV0KGZscikgb3IgVGVzdG5ldChmdWppKVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbWFpbm5ldCBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleVxuICAgKi9cbiAgZ2V0QWRkcmVzcyhmb3JtYXQgPSAnbWFpbm5ldCcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEZsclBBZGRyZXNzKGFkZHJlc3NGb3JtYXRbZm9ybWF0XSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHB1YmxpYyBhZGRyZXNzIG9mIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBocnAgLSBzZWxlY3QgTWFpbm5ldChmbHIpIG9yIFRlc3RuZXQoZnVqaSkgZm9yIHRoZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleSBhbmQgaHJwXG4gICAqL1xuICBnZXRGbHJQQWRkcmVzcyhocnA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYWRkcmVzc0J1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuZ2V0QWRkcmVzc0J1ZmZlcigpKTtcbiAgICByZXR1cm4gdXRpbHMuYWRkcmVzc1RvU3RyaW5nKGhycCwgJ1AnLCBhZGRyZXNzQnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBGbGFyZSBQLUNoYWluIHB1YmxpYyBtYWlubmV0IGFkZHJlc3MgYnVmZmVyXG4gICAqXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IFRoZSBhZGRyZXNzIGJ1ZmZlciBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXlcbiAgICovXG4gIHByaXZhdGUgZ2V0QWRkcmVzc0J1ZmZlcigpOiBCdWZmZXIge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgdGhlIHNhZmUgYnVmZmVyIG1ldGhvZCBmb3IgYWRkcmVzcyBkZXJpdmF0aW9uXG4gICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzU2FmZUJ1ZmZlcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzU2FmZUJ1ZmZlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlIHNhZmUgQnVmZmVyIGluc3RlYWQgb2YgdGhlIHJlZ3VsYXIgYnVmZmVyIHRvIGRlcml2ZSB0aGUgYWRkcmVzcyBidWZmZXIuIFVzZWQgaW4gdGhlIE9WQy5cbiAgICpcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIHByaXZhdGUgZ2V0QWRkcmVzc1NhZmVCdWZmZXIoKTogQnVmZmVyIHtcbiAgICBjb25zdCBwdWJsaWNLZXlIZXggPSB0aGlzLmtleVBhaXIucHVibGljS2V5LnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBzaGEyNTYgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUocHVibGljS2V5SGV4LCAnaGV4JykuZGlnZXN0KCk7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goJ3JpcGVtZDE2MCcpLnVwZGF0ZShzaGEyNTYpLmRpZ2VzdCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { UnsignedTx, Credential } from '@flarenetwork/flarejs';
|
|
2
|
+
import { BaseKey, BaseTransaction, Entry, TransactionFee, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { FlareNetwork, BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
+
import { Buffer } from 'buffer';
|
|
5
|
+
import { DecodedUtxoObj, TransactionExplanation, Tx, TxData, FlrpEntry } from './iface';
|
|
6
|
+
import { KeyPair } from './keyPair';
|
|
7
|
+
/**
|
|
8
|
+
* Flare P-chain transaction implementation using FlareJS
|
|
9
|
+
* Based on AVAX transaction patterns adapted for Flare network
|
|
10
|
+
*/
|
|
11
|
+
export declare class Transaction extends BaseTransaction {
|
|
12
|
+
protected _flareTransaction: Tx;
|
|
13
|
+
_type: TransactionType;
|
|
14
|
+
_network: FlareNetwork;
|
|
15
|
+
_networkID: number;
|
|
16
|
+
_assetId: string;
|
|
17
|
+
_blockchainID: string;
|
|
18
|
+
_nodeID: string;
|
|
19
|
+
_startTime: bigint;
|
|
20
|
+
_endTime: bigint;
|
|
21
|
+
_stakeAmount: bigint;
|
|
22
|
+
_threshold: number;
|
|
23
|
+
_locktime: bigint;
|
|
24
|
+
_fromAddresses: string[];
|
|
25
|
+
_rewardAddresses: string[];
|
|
26
|
+
_utxos: DecodedUtxoObj[];
|
|
27
|
+
_to: string[];
|
|
28
|
+
_fee: Partial<TransactionFee>;
|
|
29
|
+
_blsPublicKey: string;
|
|
30
|
+
_blsSignature: string;
|
|
31
|
+
_memo: Uint8Array;
|
|
32
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
33
|
+
/**
|
|
34
|
+
* Get the base transaction from FlareJS UnsignedTx
|
|
35
|
+
* TODO: Implement proper FlareJS transaction extraction
|
|
36
|
+
*/
|
|
37
|
+
get flareTransaction(): UnsignedTx;
|
|
38
|
+
get signature(): string[];
|
|
39
|
+
get credentials(): Credential[];
|
|
40
|
+
get hasCredentials(): boolean;
|
|
41
|
+
/** @inheritdoc */
|
|
42
|
+
canSign({ key }: BaseKey): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Sign a Flare transaction using FlareJS
|
|
45
|
+
* @param {KeyPair} keyPair
|
|
46
|
+
*/
|
|
47
|
+
sign(keyPair: KeyPair): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Set memo from string
|
|
50
|
+
* @param {string} memo - Memo text
|
|
51
|
+
*/
|
|
52
|
+
setMemo(memo: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Set memo from various formats
|
|
55
|
+
* @param {string | Record<string, unknown> | Uint8Array} memo - Memo data
|
|
56
|
+
*/
|
|
57
|
+
setMemoData(memo: string | Record<string, unknown> | Uint8Array): void;
|
|
58
|
+
/**
|
|
59
|
+
* Get memo as bytes (FlareJS format)
|
|
60
|
+
* @returns {Uint8Array} Memo bytes
|
|
61
|
+
*/
|
|
62
|
+
getMemoBytes(): Uint8Array;
|
|
63
|
+
/**
|
|
64
|
+
* Get memo as string
|
|
65
|
+
* @returns {string} Memo string
|
|
66
|
+
*/
|
|
67
|
+
getMemoString(): string;
|
|
68
|
+
/**
|
|
69
|
+
* Check if transaction has memo
|
|
70
|
+
* @returns {boolean} Whether memo exists and is not empty
|
|
71
|
+
*/
|
|
72
|
+
hasMemo(): boolean;
|
|
73
|
+
toHexString(byteArray: Uint8Array): string;
|
|
74
|
+
/** @inheritdoc */
|
|
75
|
+
toBroadcastFormat(): string;
|
|
76
|
+
toJson(): TxData;
|
|
77
|
+
setTransaction(tx: Tx): void;
|
|
78
|
+
/**
|
|
79
|
+
* Set the transaction type
|
|
80
|
+
* @param {TransactionType} transactionType The transaction type to be set
|
|
81
|
+
*/
|
|
82
|
+
setTransactionType(transactionType: TransactionType): void;
|
|
83
|
+
/**
|
|
84
|
+
* Returns the portion of the transaction that needs to be signed in Buffer format.
|
|
85
|
+
* Only needed for coins that support adding signatures directly (e.g. TSS).
|
|
86
|
+
*/
|
|
87
|
+
get signablePayload(): Buffer;
|
|
88
|
+
get id(): string;
|
|
89
|
+
get fromAddresses(): string[];
|
|
90
|
+
get rewardAddresses(): string[];
|
|
91
|
+
/**
|
|
92
|
+
* Get the list of outputs. Amounts are expressed in absolute value.
|
|
93
|
+
*/
|
|
94
|
+
get outputs(): Entry[];
|
|
95
|
+
get fee(): TransactionFee;
|
|
96
|
+
get changeOutputs(): Entry[];
|
|
97
|
+
get inputs(): FlrpEntry[];
|
|
98
|
+
/**
|
|
99
|
+
* Flare wrapper to create signature and return it for credentials
|
|
100
|
+
* @param prv
|
|
101
|
+
* @return hexstring
|
|
102
|
+
*/
|
|
103
|
+
createSignature(prv: Buffer): string;
|
|
104
|
+
/**
|
|
105
|
+
* Check if transaction is for C-chain (cross-chain)
|
|
106
|
+
*/
|
|
107
|
+
get isTransactionForCChain(): boolean;
|
|
108
|
+
/** @inheritdoc */
|
|
109
|
+
explainTransaction(): TransactionExplanation;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,321 @@
|
|
|
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.Transaction = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const buffer_1 = require("buffer");
|
|
9
|
+
const iface_1 = require("./iface");
|
|
10
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
11
|
+
/**
|
|
12
|
+
* Flare P-chain transaction implementation using FlareJS
|
|
13
|
+
* Based on AVAX transaction patterns adapted for Flare network
|
|
14
|
+
*/
|
|
15
|
+
class Transaction extends sdk_core_1.BaseTransaction {
|
|
16
|
+
constructor(coinConfig) {
|
|
17
|
+
super(coinConfig);
|
|
18
|
+
this._threshold = 2;
|
|
19
|
+
this._locktime = BigInt(0);
|
|
20
|
+
this._fromAddresses = [];
|
|
21
|
+
this._rewardAddresses = [];
|
|
22
|
+
this._utxos = [];
|
|
23
|
+
this._fee = {};
|
|
24
|
+
this._memo = new Uint8Array(); // FlareJS memo field
|
|
25
|
+
this._network = coinConfig.network;
|
|
26
|
+
this._assetId = 'FLR'; // Default FLR asset
|
|
27
|
+
this._blockchainID = this._network.blockchainID || '';
|
|
28
|
+
this._networkID = this._network.networkID || 0;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the base transaction from FlareJS UnsignedTx
|
|
32
|
+
* TODO: Implement proper FlareJS transaction extraction
|
|
33
|
+
*/
|
|
34
|
+
get flareTransaction() {
|
|
35
|
+
return this._flareTransaction;
|
|
36
|
+
}
|
|
37
|
+
get signature() {
|
|
38
|
+
if (this.credentials.length === 0) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
// TODO: Extract signatures from FlareJS credentials
|
|
42
|
+
// For now, return placeholder
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
get credentials() {
|
|
46
|
+
// TODO: Extract credentials from FlareJS transaction
|
|
47
|
+
// For now, return empty array
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
get hasCredentials() {
|
|
51
|
+
return this.credentials !== undefined && this.credentials.length > 0;
|
|
52
|
+
}
|
|
53
|
+
/** @inheritdoc */
|
|
54
|
+
canSign({ key }) {
|
|
55
|
+
// TODO: Implement proper signing validation for FlareJS
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Sign a Flare transaction using FlareJS
|
|
60
|
+
* @param {KeyPair} keyPair
|
|
61
|
+
*/
|
|
62
|
+
async sign(keyPair) {
|
|
63
|
+
const prv = keyPair.getPrivateKey();
|
|
64
|
+
if (!prv) {
|
|
65
|
+
throw new sdk_core_1.SigningError('Missing private key');
|
|
66
|
+
}
|
|
67
|
+
if (!this.flareTransaction) {
|
|
68
|
+
throw new sdk_core_1.InvalidTransactionError('empty transaction to sign');
|
|
69
|
+
}
|
|
70
|
+
if (!this.hasCredentials) {
|
|
71
|
+
throw new sdk_core_1.InvalidTransactionError('empty credentials to sign');
|
|
72
|
+
}
|
|
73
|
+
// TODO: Implement FlareJS signing process
|
|
74
|
+
// This will involve:
|
|
75
|
+
// 1. Creating FlareJS signature using private key
|
|
76
|
+
// 2. Attaching signature to appropriate credential
|
|
77
|
+
// 3. Updating transaction with signed credentials
|
|
78
|
+
throw new Error('FlareJS signing not yet implemented - placeholder');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Set memo from string
|
|
82
|
+
* @param {string} memo - Memo text
|
|
83
|
+
*/
|
|
84
|
+
setMemo(memo) {
|
|
85
|
+
this._memo = utils_1.default.stringToBytes(memo);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Set memo from various formats
|
|
89
|
+
* @param {string | Record<string, unknown> | Uint8Array} memo - Memo data
|
|
90
|
+
*/
|
|
91
|
+
setMemoData(memo) {
|
|
92
|
+
this._memo = utils_1.default.createMemoBytes(memo);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get memo as bytes (FlareJS format)
|
|
96
|
+
* @returns {Uint8Array} Memo bytes
|
|
97
|
+
*/
|
|
98
|
+
getMemoBytes() {
|
|
99
|
+
return this._memo;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get memo as string
|
|
103
|
+
* @returns {string} Memo string
|
|
104
|
+
*/
|
|
105
|
+
getMemoString() {
|
|
106
|
+
return utils_1.default.parseMemoBytes(this._memo);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if transaction has memo
|
|
110
|
+
* @returns {boolean} Whether memo exists and is not empty
|
|
111
|
+
*/
|
|
112
|
+
hasMemo() {
|
|
113
|
+
return this._memo.length > 0;
|
|
114
|
+
}
|
|
115
|
+
toHexString(byteArray) {
|
|
116
|
+
return buffer_1.Buffer.from(byteArray).toString('hex');
|
|
117
|
+
}
|
|
118
|
+
/** @inheritdoc */
|
|
119
|
+
toBroadcastFormat() {
|
|
120
|
+
if (!this.flareTransaction) {
|
|
121
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
122
|
+
}
|
|
123
|
+
// TODO: Implement FlareJS transaction serialization
|
|
124
|
+
// For now, return placeholder
|
|
125
|
+
return 'flare-tx-hex-placeholder';
|
|
126
|
+
}
|
|
127
|
+
toJson() {
|
|
128
|
+
if (!this.flareTransaction) {
|
|
129
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
id: this.id,
|
|
133
|
+
inputs: this.inputs,
|
|
134
|
+
fromAddresses: this.fromAddresses,
|
|
135
|
+
threshold: this._threshold,
|
|
136
|
+
locktime: this._locktime.toString(),
|
|
137
|
+
type: this.type,
|
|
138
|
+
signatures: this.signature,
|
|
139
|
+
outputs: this.outputs,
|
|
140
|
+
changeOutputs: this.changeOutputs,
|
|
141
|
+
sourceChain: this._network.blockchainID,
|
|
142
|
+
destinationChain: this._network.cChainBlockchainID,
|
|
143
|
+
memo: this.getMemoString(), // Include memo in JSON representation
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
setTransaction(tx) {
|
|
147
|
+
this._flareTransaction = tx;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Set the transaction type
|
|
151
|
+
* @param {TransactionType} transactionType The transaction type to be set
|
|
152
|
+
*/
|
|
153
|
+
setTransactionType(transactionType) {
|
|
154
|
+
const supportedTypes = [
|
|
155
|
+
sdk_core_1.TransactionType.Export,
|
|
156
|
+
sdk_core_1.TransactionType.Import,
|
|
157
|
+
sdk_core_1.TransactionType.AddValidator,
|
|
158
|
+
sdk_core_1.TransactionType.AddDelegator,
|
|
159
|
+
sdk_core_1.TransactionType.AddPermissionlessValidator,
|
|
160
|
+
sdk_core_1.TransactionType.AddPermissionlessDelegator,
|
|
161
|
+
];
|
|
162
|
+
if (!supportedTypes.includes(transactionType)) {
|
|
163
|
+
throw new Error(`Transaction type ${transactionType} is not supported`);
|
|
164
|
+
}
|
|
165
|
+
this._type = transactionType;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Returns the portion of the transaction that needs to be signed in Buffer format.
|
|
169
|
+
* Only needed for coins that support adding signatures directly (e.g. TSS).
|
|
170
|
+
*/
|
|
171
|
+
get signablePayload() {
|
|
172
|
+
if (!this.flareTransaction) {
|
|
173
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction for signing');
|
|
174
|
+
}
|
|
175
|
+
// TODO: Implement FlareJS signable payload extraction
|
|
176
|
+
// For now, return placeholder
|
|
177
|
+
return buffer_1.Buffer.from('flare-signable-payload');
|
|
178
|
+
}
|
|
179
|
+
get id() {
|
|
180
|
+
if (!this.flareTransaction) {
|
|
181
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction for ID generation');
|
|
182
|
+
}
|
|
183
|
+
// TODO: Implement FlareJS transaction ID generation
|
|
184
|
+
// For now, return placeholder
|
|
185
|
+
return 'flare-transaction-id-placeholder';
|
|
186
|
+
}
|
|
187
|
+
get fromAddresses() {
|
|
188
|
+
return this._fromAddresses.map((address) => {
|
|
189
|
+
// TODO: Format addresses using FlareJS utilities
|
|
190
|
+
return address;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
get rewardAddresses() {
|
|
194
|
+
return this._rewardAddresses.map((address) => {
|
|
195
|
+
// TODO: Format addresses using FlareJS utilities
|
|
196
|
+
return address;
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get the list of outputs. Amounts are expressed in absolute value.
|
|
201
|
+
*/
|
|
202
|
+
get outputs() {
|
|
203
|
+
switch (this.type) {
|
|
204
|
+
case sdk_core_1.TransactionType.Export:
|
|
205
|
+
// TODO: Extract export outputs from FlareJS transaction
|
|
206
|
+
return [];
|
|
207
|
+
case sdk_core_1.TransactionType.Import:
|
|
208
|
+
// TODO: Extract import outputs from FlareJS transaction
|
|
209
|
+
return [];
|
|
210
|
+
case sdk_core_1.TransactionType.AddValidator:
|
|
211
|
+
case sdk_core_1.TransactionType.AddPermissionlessValidator:
|
|
212
|
+
// TODO: Extract validator outputs from FlareJS transaction
|
|
213
|
+
return [
|
|
214
|
+
{
|
|
215
|
+
address: this._nodeID || 'placeholder-node-id',
|
|
216
|
+
value: this._stakeAmount?.toString() || '0',
|
|
217
|
+
},
|
|
218
|
+
];
|
|
219
|
+
case sdk_core_1.TransactionType.AddDelegator:
|
|
220
|
+
case sdk_core_1.TransactionType.AddPermissionlessDelegator:
|
|
221
|
+
// TODO: Extract delegator outputs from FlareJS transaction
|
|
222
|
+
return [
|
|
223
|
+
{
|
|
224
|
+
address: this._nodeID || 'placeholder-node-id',
|
|
225
|
+
value: this._stakeAmount?.toString() || '0',
|
|
226
|
+
},
|
|
227
|
+
];
|
|
228
|
+
default:
|
|
229
|
+
return [];
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
get fee() {
|
|
233
|
+
return { fee: '0', ...this._fee };
|
|
234
|
+
}
|
|
235
|
+
get changeOutputs() {
|
|
236
|
+
// TODO: Extract change outputs from FlareJS transaction
|
|
237
|
+
// For now, return empty array
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
240
|
+
get inputs() {
|
|
241
|
+
// TODO: Extract inputs from FlareJS transaction
|
|
242
|
+
// For now, return placeholder based on UTXOs
|
|
243
|
+
return this._utxos.map((utxo) => ({
|
|
244
|
+
id: utxo.txid + iface_1.INPUT_SEPARATOR + utxo.outputidx,
|
|
245
|
+
address: this.fromAddresses.sort().join(iface_1.ADDRESS_SEPARATOR),
|
|
246
|
+
value: utxo.amount,
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Flare wrapper to create signature and return it for credentials
|
|
251
|
+
* @param prv
|
|
252
|
+
* @return hexstring
|
|
253
|
+
*/
|
|
254
|
+
createSignature(prv) {
|
|
255
|
+
// TODO: Implement FlareJS signature creation
|
|
256
|
+
// This should use FlareJS signing utilities
|
|
257
|
+
const signval = utils_1.default.createSignature(this._network, this.signablePayload, prv);
|
|
258
|
+
return signval.toString('hex');
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Check if transaction is for C-chain (cross-chain)
|
|
262
|
+
*/
|
|
263
|
+
get isTransactionForCChain() {
|
|
264
|
+
return this.type === sdk_core_1.TransactionType.Export || this.type === sdk_core_1.TransactionType.Import;
|
|
265
|
+
}
|
|
266
|
+
/** @inheritdoc */
|
|
267
|
+
explainTransaction() {
|
|
268
|
+
const txJson = this.toJson();
|
|
269
|
+
const displayOrder = ['id', 'inputs', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs', 'fee', 'type'];
|
|
270
|
+
// Add memo to display order if present
|
|
271
|
+
if (this.hasMemo()) {
|
|
272
|
+
displayOrder.push('memo');
|
|
273
|
+
}
|
|
274
|
+
// Calculate total output amount
|
|
275
|
+
const outputAmount = txJson.outputs
|
|
276
|
+
.reduce((sum, output) => {
|
|
277
|
+
return sum + BigInt(output.value || '0');
|
|
278
|
+
}, BigInt(0))
|
|
279
|
+
.toString();
|
|
280
|
+
// Calculate total change amount
|
|
281
|
+
const changeAmount = txJson.changeOutputs
|
|
282
|
+
.reduce((sum, output) => {
|
|
283
|
+
return sum + BigInt(output.value || '0');
|
|
284
|
+
}, BigInt(0))
|
|
285
|
+
.toString();
|
|
286
|
+
let rewardAddresses;
|
|
287
|
+
const stakingTypes = [
|
|
288
|
+
sdk_core_1.TransactionType.AddValidator,
|
|
289
|
+
sdk_core_1.TransactionType.AddDelegator,
|
|
290
|
+
sdk_core_1.TransactionType.AddPermissionlessValidator,
|
|
291
|
+
sdk_core_1.TransactionType.AddPermissionlessDelegator,
|
|
292
|
+
];
|
|
293
|
+
if (stakingTypes.includes(txJson.type)) {
|
|
294
|
+
rewardAddresses = this.rewardAddresses;
|
|
295
|
+
displayOrder.splice(6, 0, 'rewardAddresses');
|
|
296
|
+
}
|
|
297
|
+
// Add cross-chain information for export/import
|
|
298
|
+
if (this.isTransactionForCChain) {
|
|
299
|
+
displayOrder.push('sourceChain', 'destinationChain');
|
|
300
|
+
}
|
|
301
|
+
const explanation = {
|
|
302
|
+
displayOrder,
|
|
303
|
+
id: txJson.id,
|
|
304
|
+
inputs: txJson.inputs,
|
|
305
|
+
outputs: txJson.outputs.map((o) => ({ address: o.address, amount: o.value })),
|
|
306
|
+
outputAmount,
|
|
307
|
+
changeOutputs: txJson.changeOutputs.map((o) => ({ address: o.address, amount: o.value })),
|
|
308
|
+
changeAmount,
|
|
309
|
+
rewardAddresses,
|
|
310
|
+
fee: this.fee,
|
|
311
|
+
type: txJson.type,
|
|
312
|
+
};
|
|
313
|
+
// Add memo to explanation if present
|
|
314
|
+
if (this.hasMemo()) {
|
|
315
|
+
explanation.memo = this.getMemoString();
|
|
316
|
+
}
|
|
317
|
+
return explanation;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
exports.Transaction = Transaction;
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLG1EQVE4QjtBQUU5QixtQ0FBZ0M7QUFDaEMsbUNBUWlCO0FBRWpCLG9EQUE0QjtBQUU1Qjs7O0dBR0c7QUFDSCxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQXNCOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFaYixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUM5QixxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFDaEMsV0FBTSxHQUFxQixFQUFFLENBQUM7UUFFOUIsU0FBSSxHQUE0QixFQUFFLENBQUM7UUFHbkMsVUFBSyxHQUFlLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxxQkFBcUI7UUFJaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBdUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLG9CQUFvQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQStCLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFD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QU0sQ0FBQyxJQUFJO1NBQ2xCLENBQUM7UUFFRixxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNuQixXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBNVdELGtDQTRXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVuc2lnbmVkVHgsIENyZWRlbnRpYWwgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBFbnRyeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25GZWUsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxhcmVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHtcbiAgQUREUkVTU19TRVBBUkFUT1IsXG4gIERlY29kZWRVdHhvT2JqLFxuICBJTlBVVF9TRVBBUkFUT1IsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFR4LFxuICBUeERhdGEsXG4gIEZscnBFbnRyeSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBGbGFyZSBQLWNoYWluIHRyYW5zYWN0aW9uIGltcGxlbWVudGF0aW9uIHVzaW5nIEZsYXJlSlNcbiAqIEJhc2VkIG9uIEFWQVggdHJhbnNhY3Rpb24gcGF0dGVybnMgYWRhcHRlZCBmb3IgRmxhcmUgbmV0d29ya1xuICovXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX2ZsYXJlVHJhbnNhY3Rpb246IFR4O1xuICBwdWJsaWMgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHVibGljIF9uZXR3b3JrOiBGbGFyZU5ldHdvcms7XG4gIHB1YmxpYyBfbmV0d29ya0lEOiBudW1iZXI7XG4gIHB1YmxpYyBfYXNzZXRJZDogc3RyaW5nO1xuICBwdWJsaWMgX2Jsb2NrY2hhaW5JRDogc3RyaW5nO1xuICBwdWJsaWMgX25vZGVJRDogc3RyaW5nO1xuICBwdWJsaWMgX3N0YXJ0VGltZTogYmlnaW50O1xuICBwdWJsaWMgX2VuZFRpbWU6IGJpZ2ludDtcbiAgcHVibGljIF9zdGFrZUFtb3VudDogYmlnaW50O1xuICBwdWJsaWMgX3RocmVzaG9sZCA9IDI7XG4gIHB1YmxpYyBfbG9ja3RpbWUgPSBCaWdJbnQoMCk7XG4gIHB1YmxpYyBfZnJvbUFkZHJlc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIF9yZXdhcmRBZGRyZXNzZXM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBfdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXTtcbiAgcHVibGljIF90bzogc3RyaW5nW107XG4gIHB1YmxpYyBfZmVlOiBQYXJ0aWFsPFRyYW5zYWN0aW9uRmVlPiA9IHt9O1xuICBwdWJsaWMgX2Jsc1B1YmxpY0tleTogc3RyaW5nO1xuICBwdWJsaWMgX2Jsc1NpZ25hdHVyZTogc3RyaW5nO1xuICBwdWJsaWMgX21lbW86IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSgpOyAvLyBGbGFyZUpTIG1lbW8gZmllbGRcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX25ldHdvcmsgPSBjb2luQ29uZmlnLm5ldHdvcmsgYXMgRmxhcmVOZXR3b3JrO1xuICAgIHRoaXMuX2Fzc2V0SWQgPSAnRkxSJzsgLy8gRGVmYXVsdCBGTFIgYXNzZXRcbiAgICB0aGlzLl9ibG9ja2NoYWluSUQgPSB0aGlzLl9uZXR3b3JrLmJsb2NrY2hhaW5JRCB8fCAnJztcbiAgICB0aGlzLl9uZXR3b3JrSUQgPSB0aGlzLl9uZXR3b3JrLm5ldHdvcmtJRCB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZSB0cmFuc2FjdGlvbiBmcm9tIEZsYXJlSlMgVW5zaWduZWRUeFxuICAgKiBUT0RPOiBJbXBsZW1lbnQgcHJvcGVyIEZsYXJlSlMgdHJhbnNhY3Rpb24gZXh0cmFjdGlvblxuICAgKi9cbiAgZ2V0IGZsYXJlVHJhbnNhY3Rpb24oKTogVW5zaWduZWRUeCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24gYXMgVW5zaWduZWRUeDtcbiAgfVxuXG4gIGdldCBzaWduYXR1cmUoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICAvLyBUT0RPOiBFeHRyYWN0IHNpZ25hdHVyZXMgZnJvbSBGbGFyZUpTIGNyZWRlbnRpYWxzXG4gICAgLy8gRm9yIG5vdywgcmV0dXJuIHBsYWNlaG9sZGVyXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0IGNyZWRlbnRpYWxzKCk6IENyZWRlbnRpYWxbXSB7XG4gICAgLy8gVE9ETzogRXh0cmFjdCBjcmVkZW50aWFscyBmcm9tIEZsYXJlSlMgdHJhbnNhY3Rpb25cbiAgICAvLyBGb3Igbm93LCByZXR1cm4gZW1wdHkgYXJyYXlcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXQgaGFzQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbih7IGtleSB9OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHByb3BlciBzaWduaW5nIHZhbGlkYXRpb24gZm9yIEZsYXJlSlNcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGEgRmxhcmUgdHJhbnNhY3Rpb24gdXNpbmcgRmxhcmVKU1xuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXJcbiAgICovXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBydiA9IGtleVBhaXIuZ2V0UHJpdmF0ZUtleSgpIGFzIEJ1ZmZlcjtcblxuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZsYXJlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgdHJhbnNhY3Rpb24gdG8gc2lnbicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5oYXNDcmVkZW50aWFscykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdlbXB0eSBjcmVkZW50aWFscyB0byBzaWduJyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogSW1wbGVtZW50IEZsYXJlSlMgc2lnbmluZyBwcm9jZXNzXG4gICAgLy8gVGhpcyB3aWxsIGludm9sdmU6XG4gICAgLy8gMS4gQ3JlYXRpbmcgRmxhcmVKUyBzaWduYXR1cmUgdXNpbmcgcHJpdmF0ZSBrZXlcbiAgICAvLyAyLiBBdHRhY2hpbmcgc2lnbmF0dXJlIHRvIGFwcHJvcHJpYXRlIGNyZWRlbnRpYWxcbiAgICAvLyAzLiBVcGRhdGluZyB0cmFuc2FjdGlvbiB3aXRoIHNpZ25lZCBjcmVkZW50aWFsc1xuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdGbGFyZUpTIHNpZ25pbmcgbm90IHlldCBpbXBsZW1lbnRlZCAtIHBsYWNlaG9sZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IG1lbW8gZnJvbSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSBNZW1vIHRleHRcbiAgICovXG4gIHNldE1lbW8obWVtbzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fbWVtbyA9IHV0aWxzLnN0cmluZ1RvQnl0ZXMobWVtbyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IG1lbW8gZnJvbSB2YXJpb3VzIGZvcm1hdHNcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFVpbnQ4QXJyYXl9IG1lbW8gLSBNZW1vIGRhdGFcbiAgICovXG4gIHNldE1lbW9EYXRhKG1lbW86IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgVWludDhBcnJheSk6IHZvaWQge1xuICAgIHRoaXMuX21lbW8gPSB1dGlscy5jcmVhdGVNZW1vQnl0ZXMobWVtbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG1lbW8gYXMgYnl0ZXMgKEZsYXJlSlMgZm9ybWF0KVxuICAgKiBAcmV0dXJucyB7VWludDhBcnJheX0gTWVtbyBieXRlc1xuICAgKi9cbiAgZ2V0TWVtb0J5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9tZW1vO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBtZW1vIGFzIHN0cmluZ1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBNZW1vIHN0cmluZ1xuICAgKi9cbiAgZ2V0TWVtb1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dGlscy5wYXJzZU1lbW9CeXRlcyh0aGlzLl9tZW1vKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0cmFuc2FjdGlvbiBoYXMgbWVtb1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBtZW1vIGV4aXN0cyBhbmQgaXMgbm90IGVtcHR5XG4gICAqL1xuICBoYXNNZW1vKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tZW1vLmxlbmd0aCA+IDA7XG4gIH1cblxuICB0b0hleFN0cmluZyhieXRlQXJyYXk6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShieXRlQXJyYXkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5mbGFyZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgRmxhcmVKUyB0cmFuc2FjdGlvbiBzZXJpYWxpemF0aW9uXG4gICAgLy8gRm9yIG5vdywgcmV0dXJuIHBsYWNlaG9sZGVyXG4gICAgcmV0dXJuICdmbGFyZS10eC1oZXgtcGxhY2Vob2xkZXInO1xuICB9XG5cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLmZsYXJlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGlucHV0czogdGhpcy5pbnB1dHMsXG4gICAgICBmcm9tQWRkcmVzc2VzOiB0aGlzLmZyb21BZGRyZXNzZXMsXG4gICAgICB0aHJlc2hvbGQ6IHRoaXMuX3RocmVzaG9sZCxcbiAgICAgIGxvY2t0aW1lOiB0aGlzLl9sb2NrdGltZS50b1N0cmluZygpLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgc2lnbmF0dXJlczogdGhpcy5zaWduYXR1cmUsXG4gICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiB0aGlzLmNoYW5nZU91dHB1dHMsXG4gICAgICBzb3VyY2VDaGFpbjogdGhpcy5fbmV0d29yay5ibG9ja2NoYWluSUQsXG4gICAgICBkZXN0aW5hdGlvbkNoYWluOiB0aGlzLl9uZXR3b3JrLmNDaGFpbkJsb2NrY2hhaW5JRCxcbiAgICAgIG1lbW86IHRoaXMuZ2V0TWVtb1N0cmluZygpLCAvLyBJbmNsdWRlIG1lbW8gaW4gSlNPTiByZXByZXNlbnRhdGlvblxuICAgIH07XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0eDogVHgpOiB2b2lkIHtcbiAgICB0aGlzLl9mbGFyZVRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICBjb25zdCBzdXBwb3J0ZWRUeXBlcyA9IFtcbiAgICAgIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQsXG4gICAgICBUcmFuc2FjdGlvblR5cGUuSW1wb3J0LFxuICAgICAgVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvcixcbiAgICAgIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3IsXG4gICAgICBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3IsXG4gICAgICBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NEZWxlZ2F0b3IsXG4gICAgXTtcblxuICAgIGlmICghc3VwcG9ydGVkVHlwZXMuaW5jbHVkZXModHJhbnNhY3Rpb25UeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUcmFuc2FjdGlvbiB0eXBlICR7dHJhbnNhY3Rpb25UeXBlfSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgfVxuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcG9ydGlvbiBvZiB0aGUgdHJhbnNhY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBzaWduZWQgaW4gQnVmZmVyIGZvcm1hdC5cbiAgICogT25seSBuZWVkZWQgZm9yIGNvaW5zIHRoYXQgc3VwcG9ydCBhZGRpbmcgc2lnbmF0dXJlcyBkaXJlY3RseSAoZS5nLiBUU1MpLlxuICAgKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIGlmICghdGhpcy5mbGFyZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGZvciBzaWduaW5nJyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogSW1wbGVtZW50IEZsYXJlSlMgc2lnbmFibGUgcGF5bG9hZCBleHRyYWN0aW9uXG4gICAgLy8gRm9yIG5vdywgcmV0dXJuIHBsYWNlaG9sZGVyXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKCdmbGFyZS1zaWduYWJsZS1wYXlsb2FkJyk7XG4gIH1cblxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZmxhcmVUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBmb3IgSUQgZ2VuZXJhdGlvbicpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IEltcGxlbWVudCBGbGFyZUpTIHRyYW5zYWN0aW9uIElEIGdlbmVyYXRpb25cbiAgICAvLyBGb3Igbm93LCByZXR1cm4gcGxhY2Vob2xkZXJcbiAgICByZXR1cm4gJ2ZsYXJlLXRyYW5zYWN0aW9uLWlkLXBsYWNlaG9sZGVyJztcbiAgfVxuXG4gIGdldCBmcm9tQWRkcmVzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvbUFkZHJlc3Nlcy5tYXAoKGFkZHJlc3MpID0+IHtcbiAgICAgIC8vIFRPRE86IEZvcm1hdCBhZGRyZXNzZXMgdXNpbmcgRmxhcmVKUyB1dGlsaXRpZXNcbiAgICAgIHJldHVybiBhZGRyZXNzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHJld2FyZEFkZHJlc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jld2FyZEFkZHJlc3Nlcy5tYXAoKGFkZHJlc3MpID0+IHtcbiAgICAgIC8vIFRPRE86IEZvcm1hdCBhZGRyZXNzZXMgdXNpbmcgRmxhcmVKUyB1dGlsaXRpZXNcbiAgICAgIHJldHVybiBhZGRyZXNzO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBvdXRwdXRzLiBBbW91bnRzIGFyZSBleHByZXNzZWQgaW4gYWJzb2x1dGUgdmFsdWUuXG4gICAqL1xuICBnZXQgb3V0cHV0cygpOiBFbnRyeVtdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRXhwb3J0OlxuICAgICAgICAvLyBUT0RPOiBFeHRyYWN0IGV4cG9ydCBvdXRwdXRzIGZyb20gRmxhcmVKUyB0cmFuc2FjdGlvblxuICAgICAgICByZXR1cm4gW107XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ6XG4gICAgICAgIC8vIFRPRE86IEV4dHJhY3QgaW1wb3J0IG91dHB1dHMgZnJvbSBGbGFyZUpTIHRyYW5zYWN0aW9uXG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvcjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yOlxuICAgICAgICAvLyBUT0RPOiBFeHRyYWN0IHZhbGlkYXRvciBvdXRwdXRzIGZyb20gRmxhcmVKUyB0cmFuc2FjdGlvblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuX25vZGVJRCB8fCAncGxhY2Vob2xkZXItbm9kZS1pZCcsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fc3Rha2VBbW91bnQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc0RlbGVnYXRvcjpcbiAgICAgICAgLy8gVE9ETzogRXh0cmFjdCBkZWxlZ2F0b3Igb3V0cHV0cyBmcm9tIEZsYXJlSlMgdHJhbnNhY3Rpb25cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLl9ub2RlSUQgfHwgJ3BsYWNlaG9sZGVyLW5vZGUtaWQnLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuX3N0YWtlQW1vdW50Py50b1N0cmluZygpIHx8ICcwJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmZWUoKTogVHJhbnNhY3Rpb25GZWUge1xuICAgIHJldHVybiB7IGZlZTogJzAnLCAuLi50aGlzLl9mZWUgfTtcbiAgfVxuXG4gIGdldCBjaGFuZ2VPdXRwdXRzKCk6IEVudHJ5W10ge1xuICAgIC8vIFRPRE86IEV4dHJhY3QgY2hhbmdlIG91dHB1dHMgZnJvbSBGbGFyZUpTIHRyYW5zYWN0aW9uXG4gICAgLy8gRm9yIG5vdywgcmV0dXJuIGVtcHR5IGFycmF5XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0IGlucHV0cygpOiBGbHJwRW50cnlbXSB7XG4gICAgLy8gVE9ETzogRXh0cmFjdCBpbnB1dHMgZnJvbSBGbGFyZUpTIHRyYW5zYWN0aW9uXG4gICAgLy8gRm9yIG5vdywgcmV0dXJuIHBsYWNlaG9sZGVyIGJhc2VkIG9uIFVUWE9zXG4gICAgcmV0dXJuIHRoaXMuX3V0eG9zLm1hcCgodXR4bykgPT4gKHtcbiAgICAgIGlkOiB1dHhvLnR4aWQgKyBJTlBVVF9TRVBBUkFUT1IgKyB1dHhvLm91dHB1dGlkeCxcbiAgICAgIGFkZHJlc3M6IHRoaXMuZnJvbUFkZHJlc3Nlcy5zb3J0KCkuam9pbihBRERSRVNTX1NFUEFSQVRPUiksXG4gICAgICB2YWx1ZTogdXR4by5hbW91bnQsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXJlIHdyYXBwZXIgdG8gY3JlYXRlIHNpZ25hdHVyZSBhbmQgcmV0dXJuIGl0IGZvciBjcmVkZW50aWFsc1xuICAgKiBAcGFyYW0gcHJ2XG4gICAqIEByZXR1cm4gaGV4c3RyaW5nXG4gICAqL1xuICBjcmVhdGVTaWduYXR1cmUocHJ2OiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IEltcGxlbWVudCBGbGFyZUpTIHNpZ25hdHVyZSBjcmVhdGlvblxuICAgIC8vIFRoaXMgc2hvdWxkIHVzZSBGbGFyZUpTIHNpZ25pbmcgdXRpbGl0aWVzXG4gICAgY29uc3Qgc2lnbnZhbCA9IHV0aWxzLmNyZWF0ZVNpZ25hdHVyZSh0aGlzLl9uZXR3b3JrLCB0aGlzLnNpZ25hYmxlUGF5bG9hZCwgcHJ2KTtcbiAgICByZXR1cm4gc2lnbnZhbC50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdHJhbnNhY3Rpb24gaXMgZm9yIEMtY2hhaW4gKGNyb3NzLWNoYWluKVxuICAgKi9cbiAgZ2V0IGlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkV4cG9ydCB8fCB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHR4SnNvbiA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdpbnB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJywgJ3R5cGUnXTtcblxuICAgIC8vIEFkZCBtZW1vIHRvIGRpc3BsYXkgb3JkZXIgaWYgcHJlc2VudFxuICAgIGlmICh0aGlzLmhhc01lbW8oKSkge1xuICAgICAgZGlzcGxheU9yZGVyLnB1c2goJ21lbW8nKTtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgdG90YWwgb3V0cHV0IGFtb3VudFxuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IHR4SnNvbi5vdXRwdXRzXG4gICAgICAucmVkdWNlKChzdW0sIG91dHB1dCkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtICsgQmlnSW50KG91dHB1dC52YWx1ZSB8fCAnMCcpO1xuICAgICAgfSwgQmlnSW50KDApKVxuICAgICAgLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgdG90YWwgY2hhbmdlIGFtb3VudFxuICAgIGNvbnN0IGNoYW5nZUFtb3VudCA9IHR4SnNvbi5jaGFuZ2VPdXRwdXRzXG4gICAgICAucmVkdWNlKChzdW0sIG91dHB1dCkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtICsgQmlnSW50KG91dHB1dC52YWx1ZSB8fCAnMCcpO1xuICAgICAgfSwgQmlnSW50KDApKVxuICAgICAgLnRvU3RyaW5nKCk7XG5cbiAgICBsZXQgcmV3YXJkQWRkcmVzc2VzO1xuICAgIGNvbnN0IHN0YWtpbmdUeXBlcyA9IFtcbiAgICAgIFRyYW5zYWN0aW9uVHlwZS5BZGRWYWxpZGF0b3IsXG4gICAgICBUcmFuc2FjdGlvblR5cGUuQWRkRGVsZWdhdG9yLFxuICAgICAgVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yLFxuICAgICAgVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzRGVsZWdhdG9yLFxuICAgIF07XG5cbiAgICBpZiAoc3Rha2luZ1R5cGVzLmluY2x1ZGVzKHR4SnNvbi50eXBlKSkge1xuICAgICAgcmV3YXJkQWRkcmVzc2VzID0gdGhpcy5yZXdhcmRBZGRyZXNzZXM7XG4gICAgICBkaXNwbGF5T3JkZXIuc3BsaWNlKDYsIDAsICdyZXdhcmRBZGRyZXNzZXMnKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgY3Jvc3MtY2hhaW4gaW5mb3JtYXRpb24gZm9yIGV4cG9ydC9pbXBvcnRcbiAgICBpZiAodGhpcy5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluKSB7XG4gICAgICBkaXNwbGF5T3JkZXIucHVzaCgnc291cmNlQ2hhaW4nLCAnZGVzdGluYXRpb25DaGFpbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uICYgeyBtZW1vPzogc3RyaW5nIH0gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdHhKc29uLmlkLFxuICAgICAgaW5wdXRzOiB0eEpzb24uaW5wdXRzLFxuICAgICAgb3V0cHV0czogdHhKc29uLm91dHB1dHMubWFwKChvKSA9PiAoeyBhZGRyZXNzOiBvLmFkZHJlc3MsIGFtb3VudDogby52YWx1ZSB9KSksXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiB0eEpzb24uY2hhbmdlT3V0cHV0cy5tYXAoKG8pID0+ICh7IGFkZHJlc3M6IG8uYWRkcmVzcywgYW1vdW50OiBvLnZhbHVlIH0pKSxcbiAgICAgIGNoYW5nZUFtb3VudCxcbiAgICAgIHJld2FyZEFkZHJlc3NlcyxcbiAgICAgIGZlZTogdGhpcy5mZWUsXG4gICAgICB0eXBlOiB0eEpzb24udHlwZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIG1lbW8gdG8gZXhwbGFuYXRpb24gaWYgcHJlc2VudFxuICAgIGlmICh0aGlzLmhhc01lbW8oKSkge1xuICAgICAgZXhwbGFuYXRpb24ubWVtbyA9IHRoaXMuZ2V0TWVtb1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBleHBsYW5hdGlvbjtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { AtomicTransactionBuilder } from './atomicTransactionBuilder';
|
|
4
|
+
export declare class ExportTxBuilder extends AtomicTransactionBuilder {
|
|
5
|
+
protected get transactionType(): TransactionType;
|
|
6
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
7
|
+
}
|
|
8
|
+
export declare class ImportTxBuilder extends AtomicTransactionBuilder {
|
|
9
|
+
protected get transactionType(): TransactionType;
|
|
10
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
11
|
+
}
|
|
12
|
+
export declare class ValidatorTxBuilder extends AtomicTransactionBuilder {
|
|
13
|
+
protected get transactionType(): TransactionType;
|
|
14
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
15
|
+
}
|
|
16
|
+
export declare class DelegatorTxBuilder extends AtomicTransactionBuilder {
|
|
17
|
+
protected get transactionType(): TransactionType;
|
|
18
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Factory for Flare P-chain transaction builders
|
|
22
|
+
*/
|
|
23
|
+
export declare class TransactionBuilderFactory {
|
|
24
|
+
protected _coinConfig: Readonly<CoinConfig>;
|
|
25
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
26
|
+
/**
|
|
27
|
+
* Create a transaction builder from a hex string
|
|
28
|
+
* @param txHex - Transaction hex string
|
|
29
|
+
*/
|
|
30
|
+
from(txHex: string): AtomicTransactionBuilder;
|
|
31
|
+
/**
|
|
32
|
+
* Create a transaction builder for a specific type
|
|
33
|
+
* @param type - Transaction type
|
|
34
|
+
*/
|
|
35
|
+
getBuilder(type: TransactionType): AtomicTransactionBuilder;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;gBAEW,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI7C;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACpC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAEhC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB;IAiB7C;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,wBAAwB;CAc5D"}
|