@bitgo/sdk-coin-icp 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -1
- package/dist/src/icp.js +2 -2
- package/dist/src/lib/iface.d.ts +170 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +31 -0
- package/dist/src/lib/index.d.ts +3 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +8 -2
- package/dist/src/lib/keyPair.js +4 -4
- package/dist/src/lib/protoDefinition.d.ts +2 -0
- package/dist/src/lib/protoDefinition.d.ts.map +1 -0
- package/dist/src/lib/protoDefinition.js +44 -0
- package/dist/src/lib/signedTransactionBuilder.d.ts +9 -0
- package/dist/src/lib/signedTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/signedTransactionBuilder.js +69 -0
- package/dist/src/lib/transaction.d.ts +45 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +236 -0
- package/dist/src/lib/transactionBuilder.d.ts +47 -31
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +98 -44
- package/dist/src/lib/transactionBuilderFactory.d.ts +15 -14
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +43 -26
- package/dist/src/lib/transferBuilder.d.ts +10 -25
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +95 -44
- package/dist/src/lib/unsignedTransactionBuilder.d.ts +11 -0
- package/dist/src/lib/unsignedTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/unsignedTransactionBuilder.js +94 -0
- package/dist/src/lib/utils.d.ts +273 -7
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +502 -53
- package/dist/src/ticp.d.ts +0 -4
- package/dist/src/ticp.d.ts.map +1 -1
- package/dist/src/ticp.js +1 -7
- package/package.json +12 -8
|
@@ -2,44 +2,61 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransactionBuilderFactory = void 0;
|
|
4
4
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
|
+
const transaction_1 = require("./transaction");
|
|
6
|
+
const transferBuilder_1 = require("./transferBuilder");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const iface_1 = require("./iface");
|
|
5
9
|
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
6
10
|
constructor(_coinConfig) {
|
|
7
11
|
super(_coinConfig);
|
|
8
12
|
}
|
|
9
13
|
/** @inheritdoc */
|
|
10
|
-
from() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
from(rawTransaction) {
|
|
15
|
+
const transaction = new transaction_1.Transaction(this._coinConfig, new utils_1.Utils());
|
|
16
|
+
transaction.fromRawTransaction(rawTransaction);
|
|
17
|
+
try {
|
|
18
|
+
switch (transaction.icpTransactionData.transactionType) {
|
|
19
|
+
case iface_1.OperationType.TRANSACTION:
|
|
20
|
+
return this.getTransferBuilder(transaction);
|
|
21
|
+
default:
|
|
22
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction: ' + e.message);
|
|
27
|
+
}
|
|
24
28
|
}
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Initialize the builder with the given transaction
|
|
31
|
+
*
|
|
32
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
33
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
34
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
35
|
+
*/
|
|
36
|
+
static initializeBuilder(tx, builder) {
|
|
37
|
+
if (tx) {
|
|
38
|
+
builder.initBuilder(tx);
|
|
39
|
+
}
|
|
40
|
+
return builder;
|
|
28
41
|
}
|
|
29
42
|
/** @inheritdoc */
|
|
30
|
-
|
|
31
|
-
|
|
43
|
+
getTransferBuilder(tx) {
|
|
44
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig, new utils_1.Utils()));
|
|
45
|
+
}
|
|
46
|
+
parseTransaction(rawTransaction, isSigned) {
|
|
47
|
+
if (!rawTransaction) {
|
|
48
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction is empty');
|
|
49
|
+
}
|
|
50
|
+
const transaction = new transaction_1.Transaction(this._coinConfig, new utils_1.Utils());
|
|
51
|
+
if (isSigned) {
|
|
52
|
+
return transaction.parseSignedTransaction(rawTransaction);
|
|
53
|
+
}
|
|
54
|
+
return transaction.parseUnsignedTransaction(rawTransaction);
|
|
32
55
|
}
|
|
33
56
|
/** @inheritdoc */
|
|
34
57
|
getWalletInitializationBuilder() {
|
|
35
58
|
throw new Error('method not implemented');
|
|
36
59
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Parse the transaction from a raw transaction
|
|
39
|
-
*/
|
|
40
|
-
parseTransaction(rawTransaction) {
|
|
41
|
-
throw new Error('method not implemented');
|
|
42
|
-
}
|
|
43
60
|
}
|
|
44
61
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBeUY7QUFFekYsK0NBQTRDO0FBRTVDLHVEQUFvRDtBQUNwRCxtQ0FBZ0M7QUFDaEMsbUNBQTJEO0FBRTNELE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLGNBQXNCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksYUFBSyxFQUFFLENBQUMsQ0FBQztRQUNuRSxXQUFXLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDO1lBQ0gsUUFBUSxXQUFXLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZELEtBQUsscUJBQWEsQ0FBQyxXQUFXO29CQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUM7b0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBK0IsRUFBMkIsRUFBRSxPQUFVO1FBQ3BHLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksYUFBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxjQUFzQixFQUFFLFFBQWlCO1FBQ3hELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksa0NBQXVCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxhQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQXZERCw4REF1REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uVHlwZSwgUGFyc2VkVHJhbnNhY3Rpb24gfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIG5ldyBVdGlscygpKTtcbiAgICB0cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uRGF0YS50cmFuc2FjdGlvblR5cGUpIHtcbiAgICAgICAgY2FzZSBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiAnICsgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIG5ldyBVdGlscygpKSk7XG4gIH1cblxuICBwYXJzZVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcsIGlzU2lnbmVkOiBib29sZWFuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgbmV3IFV0aWxzKCkpO1xuICAgIGlmIChpc1NpZ25lZCkge1xuICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBhcnNlU2lnbmVkVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ucGFyc2VVbnNpZ25lZFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,36 +1,21 @@
|
|
|
1
1
|
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
2
|
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
-
import {
|
|
3
|
+
import { BaseTransaction, BaseKey } from '@bitgo/sdk-core';
|
|
4
|
+
import { Utils } from './utils';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
4
6
|
export declare class TransferBuilder extends TransactionBuilder {
|
|
5
|
-
protected
|
|
6
|
-
constructor(_coinConfig: Readonly<CoinConfig
|
|
7
|
-
protected get transactionType(): TransactionType;
|
|
8
|
-
send(recipients: Recipient[]): this;
|
|
9
|
-
/** @inheritdoc */
|
|
10
|
-
validateTransaction(): void;
|
|
11
|
-
/** @inheritdoc */
|
|
12
|
-
sign(key: BaseKey): void;
|
|
13
|
-
/** @inheritdoc */
|
|
14
|
-
protected buildImplementation(): Promise<BaseTransaction>;
|
|
7
|
+
protected _utils: Utils;
|
|
8
|
+
constructor(_coinConfig: Readonly<CoinConfig>, utils: Utils);
|
|
15
9
|
/**
|
|
16
10
|
* Initialize the transaction builder fields using the decoded transaction data
|
|
17
|
-
*/
|
|
18
|
-
initBuilder(): void;
|
|
19
|
-
/**
|
|
20
|
-
* Validates all fields are defined
|
|
21
|
-
*/
|
|
22
|
-
private validateTransactionFields;
|
|
23
|
-
/**
|
|
24
|
-
* Build transfer programmable transaction
|
|
25
11
|
*
|
|
26
|
-
* @
|
|
12
|
+
* @param {Transaction} tx the transaction data
|
|
27
13
|
*/
|
|
28
|
-
|
|
29
|
-
/** @inheritdoc */
|
|
30
|
-
TransactionBuilder(): void;
|
|
14
|
+
initBuilder(tx: Transaction): void;
|
|
31
15
|
/** @inheritdoc */
|
|
32
|
-
|
|
16
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
17
|
+
protected buildIcpTransactionData(): void;
|
|
33
18
|
/** @inheritdoc */
|
|
34
|
-
|
|
19
|
+
protected signImplementation(key: BaseKey): BaseTransaction;
|
|
35
20
|
}
|
|
36
21
|
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,OAAO,EAAuC,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAe5C,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;gBAEZ,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK;IAK3D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAIlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAS3D,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAqEzC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe;CAiB5D"}
|
|
@@ -1,64 +1,115 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.TransferBuilder = void 0;
|
|
4
7
|
const transactionBuilder_1 = require("./transactionBuilder");
|
|
5
8
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
9
|
+
const unsignedTransactionBuilder_1 = require("./unsignedTransactionBuilder");
|
|
10
|
+
const iface_1 = require("./iface");
|
|
11
|
+
const signedTransactionBuilder_1 = require("./signedTransactionBuilder");
|
|
12
|
+
const keyPair_1 = require("./keyPair");
|
|
13
|
+
const assert_1 = __importDefault(require("assert"));
|
|
6
14
|
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
7
|
-
constructor(_coinConfig) {
|
|
15
|
+
constructor(_coinConfig, utils) {
|
|
8
16
|
super(_coinConfig);
|
|
9
|
-
|
|
10
|
-
get transactionType() {
|
|
11
|
-
return sdk_core_1.TransactionType.Send;
|
|
12
|
-
}
|
|
13
|
-
send(recipients) {
|
|
14
|
-
this.validateRecipients(recipients);
|
|
15
|
-
this._recipients = recipients;
|
|
16
|
-
return this;
|
|
17
|
-
}
|
|
18
|
-
/** @inheritdoc */
|
|
19
|
-
validateTransaction() {
|
|
20
|
-
throw new Error('method not implemented');
|
|
21
|
-
}
|
|
22
|
-
/** @inheritdoc */
|
|
23
|
-
sign(key) {
|
|
24
|
-
throw new Error('method not implemented');
|
|
25
|
-
}
|
|
26
|
-
/** @inheritdoc */
|
|
27
|
-
async buildImplementation() {
|
|
28
|
-
throw new Error('method not implemented');
|
|
17
|
+
this._utils = utils;
|
|
29
18
|
}
|
|
30
19
|
/**
|
|
31
20
|
* Initialize the transaction builder fields using the decoded transaction data
|
|
32
|
-
*/
|
|
33
|
-
initBuilder() {
|
|
34
|
-
throw new Error('method not implemented');
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Validates all fields are defined
|
|
38
|
-
*/
|
|
39
|
-
validateTransactionFields() {
|
|
40
|
-
throw new Error('method not implemented');
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Build transfer programmable transaction
|
|
44
21
|
*
|
|
45
|
-
* @
|
|
22
|
+
* @param {Transaction} tx the transaction data
|
|
46
23
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
24
|
+
initBuilder(tx) {
|
|
25
|
+
super.initBuilder(tx);
|
|
49
26
|
}
|
|
50
27
|
/** @inheritdoc */
|
|
51
|
-
|
|
52
|
-
|
|
28
|
+
async buildImplementation() {
|
|
29
|
+
this.validateTransaction(this._transaction);
|
|
30
|
+
this.buildIcpTransactionData();
|
|
31
|
+
const unsignedTransactionBuilder = new unsignedTransactionBuilder_1.UnsignedTransactionBuilder(this._transaction.icpTransaction);
|
|
32
|
+
const payloadsData = await unsignedTransactionBuilder.getUnsignedTransaction();
|
|
33
|
+
this._transaction.payloadsData = payloadsData;
|
|
34
|
+
return this._transaction;
|
|
53
35
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
36
|
+
buildIcpTransactionData() {
|
|
37
|
+
(0, assert_1.default)(this._sender, new sdk_core_1.BuildTransactionError('sender is required before building'));
|
|
38
|
+
(0, assert_1.default)(this._publicKey, new sdk_core_1.BuildTransactionError('sender public key is required before building'));
|
|
39
|
+
(0, assert_1.default)(this._amount, new sdk_core_1.BuildTransactionError('amount is required before building'));
|
|
40
|
+
(0, assert_1.default)(this._receiverId, new sdk_core_1.BuildTransactionError('receiver is required before building'));
|
|
41
|
+
(0, assert_1.default)(this._memo, new sdk_core_1.BuildTransactionError('memo is required before building'));
|
|
42
|
+
const publicKey = {
|
|
43
|
+
hex_bytes: this._publicKey,
|
|
44
|
+
curve_type: iface_1.CurveType.SECP256K1,
|
|
45
|
+
};
|
|
46
|
+
const senderOperation = {
|
|
47
|
+
type: iface_1.OperationType.TRANSACTION,
|
|
48
|
+
account: { address: this._sender },
|
|
49
|
+
amount: {
|
|
50
|
+
value: `-${this._amount}`,
|
|
51
|
+
currency: {
|
|
52
|
+
symbol: this._coinConfig.family,
|
|
53
|
+
decimals: this._coinConfig.decimalPlaces,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
const receiverOperation = {
|
|
58
|
+
type: iface_1.OperationType.TRANSACTION,
|
|
59
|
+
account: { address: this._receiverId },
|
|
60
|
+
amount: {
|
|
61
|
+
value: this._amount,
|
|
62
|
+
currency: {
|
|
63
|
+
symbol: this._coinConfig.family,
|
|
64
|
+
decimals: this._coinConfig.decimalPlaces,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
const feeOperation = {
|
|
69
|
+
type: iface_1.OperationType.FEE,
|
|
70
|
+
account: { address: this._sender },
|
|
71
|
+
amount: {
|
|
72
|
+
value: this._utils.gasData(),
|
|
73
|
+
currency: {
|
|
74
|
+
symbol: this._coinConfig.family,
|
|
75
|
+
decimals: this._coinConfig.decimalPlaces,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
const { metaData, ingressEndTime } = this._utils.getMetaData(this._memo);
|
|
80
|
+
const icpTransaction = {
|
|
81
|
+
public_keys: [publicKey],
|
|
82
|
+
operations: [senderOperation, receiverOperation, feeOperation],
|
|
83
|
+
metadata: metaData,
|
|
84
|
+
};
|
|
85
|
+
const icpTransactionData = {
|
|
86
|
+
senderAddress: this._sender,
|
|
87
|
+
receiverAddress: this._receiverId,
|
|
88
|
+
amount: this._amount,
|
|
89
|
+
fee: this._utils.gasData(),
|
|
90
|
+
senderPublicKeyHex: this._publicKey,
|
|
91
|
+
memo: this._memo,
|
|
92
|
+
transactionType: iface_1.OperationType.TRANSACTION,
|
|
93
|
+
expiryTime: ingressEndTime,
|
|
94
|
+
};
|
|
95
|
+
this._transaction.icpTransactionData = icpTransactionData;
|
|
96
|
+
this._transaction.icpTransaction = icpTransaction;
|
|
57
97
|
}
|
|
58
98
|
/** @inheritdoc */
|
|
59
|
-
|
|
60
|
-
|
|
99
|
+
signImplementation(key) {
|
|
100
|
+
this.validateKey(key);
|
|
101
|
+
if (!this.transaction.canSign(key)) {
|
|
102
|
+
throw new sdk_core_1.SigningError('Private key cannot sign the transaction');
|
|
103
|
+
}
|
|
104
|
+
const keyPair = new keyPair_1.KeyPair({ prv: key.key });
|
|
105
|
+
const keys = keyPair.getKeys();
|
|
106
|
+
if (!keys.prv) {
|
|
107
|
+
throw new sdk_core_1.SigningError('invalid private key');
|
|
108
|
+
}
|
|
109
|
+
const signedTransactionBuilder = new signedTransactionBuilder_1.SignedTransactionBuilder(this._transaction.unsignedTransaction, this._transaction.signaturePayload);
|
|
110
|
+
this._transaction.signedTransaction = signedTransactionBuilder.getSignTransaction();
|
|
111
|
+
return this._transaction;
|
|
61
112
|
}
|
|
62
113
|
}
|
|
63
114
|
exports.TransferBuilder = TransferBuilder;
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkRBQTBEO0FBQzFELDhDQUF1RjtBQUV2RixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBR3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLFVBQXVCO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFZO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QjtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxtQkFBbUI7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQjtRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLFdBQVc7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBckVELDBDQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlS2V5LCBSZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSwgQmFzZVRyYW5zYWN0aW9uIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfcmVjaXBpZW50czogUmVjaXBpZW50W107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gIH1cblxuICBzZW5kKHJlY2lwaWVudHM6IFJlY2lwaWVudFtdKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVJlY2lwaWVudHMocmVjaXBpZW50cyk7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IHJlY2lwaWVudHM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBzaWduKGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8QmFzZVRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFsbCBmaWVsZHMgYXJlIGRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUcmFuc2FjdGlvbkZpZWxkcygpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0cmFuc2ZlciBwcm9ncmFtbWFibGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkSWNwVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgVHJhbnNhY3Rpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb21JbXBsZW1lbnRhdGlvbigpOiBCYXNlVHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldCB0cmFuc2FjdGlvbigpOiBCYXNlVHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNkRBQTBEO0FBQzFELDhDQUFnRztBQUdoRyw2RUFBMEU7QUFDMUUsbUNBUWlCO0FBQ2pCLHlFQUFzRTtBQUN0RSx1Q0FBb0M7QUFDcEMsb0RBQTRCO0FBRTVCLE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFHckQsWUFBWSxXQUFpQyxFQUFFLEtBQVk7UUFDekQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSx1REFBMEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sWUFBWSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFUyx1QkFBdUI7UUFDL0IsSUFBQSxnQkFBTSxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxnQ0FBcUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBQSxnQkFBTSxFQUFDLElB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QUcsa0JBQWtCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLHVCQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLG1EQUF3QixDQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUNuQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFsSEQsMENBa0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgQmFzZUtleSwgU2lnbmluZ0Vycm9yLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBVbnNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgQ3VydmVUeXBlLFxuICBJY3BNZXRhZGF0YSxcbiAgSWNwT3BlcmF0aW9uLFxuICBJY3BQdWJsaWNLZXksXG4gIEljcFRyYW5zYWN0aW9uLFxuICBJY3BUcmFuc2FjdGlvbkRhdGEsXG4gIE9wZXJhdGlvblR5cGUsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgU2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3V0aWxzOiBVdGlscztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHV0aWxzOiBVdGlscykge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl91dGlscyA9IHV0aWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uKHRoaXMuX3RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLmJ1aWxkSWNwVHJhbnNhY3Rpb25EYXRhKCk7XG4gICAgY29uc3QgdW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIgPSBuZXcgVW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIodGhpcy5fdHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHBheWxvYWRzRGF0YSA9IGF3YWl0IHVuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLmdldFVuc2lnbmVkVHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5wYXlsb2Fkc0RhdGEgPSBwYXlsb2Fkc0RhdGE7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkSWNwVHJhbnNhY3Rpb25EYXRhKCk6IHZvaWQge1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3B1YmxpY0tleSwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignc2VuZGVyIHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9hbW91bnQsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2Ftb3VudCBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3JlY2VpdmVySWQsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3JlY2VpdmVyIGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBhc3NlcnQodGhpcy5fbWVtbywgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVtbyBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgY29uc3QgcHVibGljS2V5OiBJY3BQdWJsaWNLZXkgPSB7XG4gICAgICBoZXhfYnl0ZXM6IHRoaXMuX3B1YmxpY0tleSxcbiAgICAgIGN1cnZlX3R5cGU6IEN1cnZlVHlwZS5TRUNQMjU2SzEsXG4gICAgfTtcblxuICAgIGNvbnN0IHNlbmRlck9wZXJhdGlvbjogSWNwT3BlcmF0aW9uID0ge1xuICAgICAgdHlwZTogT3BlcmF0aW9uVHlwZS5UUkFOU0FDVElPTixcbiAgICAgIGFjY291bnQ6IHsgYWRkcmVzczogdGhpcy5fc2VuZGVyIH0sXG4gICAgICBhbW91bnQ6IHtcbiAgICAgICAgdmFsdWU6IGAtJHt0aGlzLl9hbW91bnR9YCxcbiAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICBzeW1ib2w6IHRoaXMuX2NvaW5Db25maWcuZmFtaWx5LFxuICAgICAgICAgIGRlY2ltYWxzOiB0aGlzLl9jb2luQ29uZmlnLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCByZWNlaXZlck9wZXJhdGlvbjogSWNwT3BlcmF0aW9uID0ge1xuICAgICAgdHlwZTogT3BlcmF0aW9uVHlwZS5UUkFOU0FDVElPTixcbiAgICAgIGFjY291bnQ6IHsgYWRkcmVzczogdGhpcy5fcmVjZWl2ZXJJZCB9LFxuICAgICAgYW1vdW50OiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLl9hbW91bnQsXG4gICAgICAgIGN1cnJlbmN5OiB7XG4gICAgICAgICAgc3ltYm9sOiB0aGlzLl9jb2luQ29uZmlnLmZhbWlseSxcbiAgICAgICAgICBkZWNpbWFsczogdGhpcy5fY29pbkNvbmZpZy5kZWNpbWFsUGxhY2VzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZmVlT3BlcmF0aW9uOiBJY3BPcGVyYXRpb24gPSB7XG4gICAgICB0eXBlOiBPcGVyYXRpb25UeXBlLkZFRSxcbiAgICAgIGFjY291bnQ6IHsgYWRkcmVzczogdGhpcy5fc2VuZGVyIH0sXG4gICAgICBhbW91bnQ6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuX3V0aWxzLmdhc0RhdGEoKSxcbiAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICBzeW1ib2w6IHRoaXMuX2NvaW5Db25maWcuZmFtaWx5LFxuICAgICAgICAgIGRlY2ltYWxzOiB0aGlzLl9jb2luQ29uZmlnLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCB7IG1ldGFEYXRhLCBpbmdyZXNzRW5kVGltZSB9OiB7IG1ldGFEYXRhOiBJY3BNZXRhZGF0YTsgaW5ncmVzc0VuZFRpbWU6IG51bWJlciB8IEJpZ0ludCB9ID1cbiAgICAgIHRoaXMuX3V0aWxzLmdldE1ldGFEYXRhKHRoaXMuX21lbW8pO1xuXG4gICAgY29uc3QgaWNwVHJhbnNhY3Rpb246IEljcFRyYW5zYWN0aW9uID0ge1xuICAgICAgcHVibGljX2tleXM6IFtwdWJsaWNLZXldLFxuICAgICAgb3BlcmF0aW9uczogW3NlbmRlck9wZXJhdGlvbiwgcmVjZWl2ZXJPcGVyYXRpb24sIGZlZU9wZXJhdGlvbl0sXG4gICAgICBtZXRhZGF0YTogbWV0YURhdGEsXG4gICAgfTtcbiAgICBjb25zdCBpY3BUcmFuc2FjdGlvbkRhdGE6IEljcFRyYW5zYWN0aW9uRGF0YSA9IHtcbiAgICAgIHNlbmRlckFkZHJlc3M6IHRoaXMuX3NlbmRlcixcbiAgICAgIHJlY2VpdmVyQWRkcmVzczogdGhpcy5fcmVjZWl2ZXJJZCxcbiAgICAgIGFtb3VudDogdGhpcy5fYW1vdW50LFxuICAgICAgZmVlOiB0aGlzLl91dGlscy5nYXNEYXRhKCksXG4gICAgICBzZW5kZXJQdWJsaWNLZXlIZXg6IHRoaXMuX3B1YmxpY0tleSxcbiAgICAgIG1lbW86IHRoaXMuX21lbW8sXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sXG4gICAgICBleHBpcnlUaW1lOiBpbmdyZXNzRW5kVGltZSxcbiAgICB9O1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uRGF0YSA9IGljcFRyYW5zYWN0aW9uRGF0YTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5pY3BUcmFuc2FjdGlvbiA9IGljcFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLnZhbGlkYXRlS2V5KGtleSk7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmNhblNpZ24oa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignUHJpdmF0ZSBrZXkgY2Fubm90IHNpZ24gdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignaW52YWxpZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIgPSBuZXcgU2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyKFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24udW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25hdHVyZVBheWxvYWRcbiAgICApO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLmdldFNpZ25UcmFuc2FjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IcpTransaction, SendArgs, HttpCanisterUpdate, SigningPayload, PayloadsData } from './iface';
|
|
2
|
+
export declare class UnsignedTransactionBuilder {
|
|
3
|
+
private _icpTransactionPayload;
|
|
4
|
+
constructor(icpTransactionPayload: IcpTransaction);
|
|
5
|
+
getUnsignedTransaction(): Promise<PayloadsData>;
|
|
6
|
+
getPayloads(payloads: SigningPayload[], ingressExpiries: bigint[], accountAddress: string, update: HttpCanisterUpdate): SigningPayload[];
|
|
7
|
+
getIngressExpiries(ingressStartTime: number | BigInt, ingressEndTime: number | BigInt, interval: number): bigint[];
|
|
8
|
+
getSendArgs(memo: number | BigInt, created_at_time: number, amount: string, fee: string, receiver: string): SendArgs;
|
|
9
|
+
getUpdate(sendArgs: SendArgs, publicKeyHex: string): Promise<HttpCanisterUpdate>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=unsignedTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsignedTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/unsignedTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,YAAY,EAIb,MAAM,SAAS,CAAC;AAOjB,qBAAa,0BAA0B;IACrC,OAAO,CAAC,sBAAsB,CAAiB;gBACnC,qBAAqB,EAAE,cAAc;IAI3C,sBAAsB,IAAI,OAAO,CAAC,YAAY,CAAC;IA4BrD,WAAW,CACT,QAAQ,EAAE,cAAc,EAAE,EAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,GACzB,cAAc,EAAE;IA+BnB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAWlH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAW9G,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAcvF"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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.UnsignedTransactionBuilder = void 0;
|
|
7
|
+
const iface_1 = require("./iface");
|
|
8
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
9
|
+
const MAX_INGRESS_TTL = 5 * 60 * 1000000000; // 5 minutes in nanoseconds
|
|
10
|
+
const PERMITTED_DRIFT = 60 * 1000000000; // 60 seconds in nanoseconds
|
|
11
|
+
const LEDGER_CANISTER_ID = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 2, 1, 1]); // Uint8Array value for "00000000000000020101" and the string value is "ryjl3-tyaaa-aaaaa-aaaba-cai"
|
|
12
|
+
class UnsignedTransactionBuilder {
|
|
13
|
+
constructor(icpTransactionPayload) {
|
|
14
|
+
this._icpTransactionPayload = icpTransactionPayload;
|
|
15
|
+
}
|
|
16
|
+
async getUnsignedTransaction() {
|
|
17
|
+
const interval = MAX_INGRESS_TTL - PERMITTED_DRIFT - 120 * 1000000000; // 120 seconds in milliseconds
|
|
18
|
+
const ingressExpiries = this.getIngressExpiries(this._icpTransactionPayload.metadata.ingress_start, this._icpTransactionPayload.metadata.ingress_end, interval);
|
|
19
|
+
const sendArgs = this.getSendArgs(this._icpTransactionPayload.metadata.memo, this._icpTransactionPayload.metadata.created_at_time, this._icpTransactionPayload.operations[1].amount.value, this._icpTransactionPayload.operations[2].amount.value, this._icpTransactionPayload.operations[1].account.address);
|
|
20
|
+
const update = await this.getUpdate(sendArgs, this._icpTransactionPayload.public_keys[0].hex_bytes);
|
|
21
|
+
const updates = [];
|
|
22
|
+
updates.push([iface_1.OperationType.TRANSACTION, update]);
|
|
23
|
+
const txn = { updates: updates, ingress_expiries: ingressExpiries };
|
|
24
|
+
const unsignedTransaction = utils_1.default.cborEncode(txn);
|
|
25
|
+
const payloads = [];
|
|
26
|
+
this.getPayloads(payloads, ingressExpiries, this._icpTransactionPayload.operations[0].account.address, update);
|
|
27
|
+
const payloadsData = {
|
|
28
|
+
payloads: payloads,
|
|
29
|
+
unsigned_transaction: unsignedTransaction,
|
|
30
|
+
};
|
|
31
|
+
return payloadsData;
|
|
32
|
+
}
|
|
33
|
+
getPayloads(payloads, ingressExpiries, accountAddress, update) {
|
|
34
|
+
for (const ingressExpiry of ingressExpiries) {
|
|
35
|
+
const clonedUpdate = {
|
|
36
|
+
canister_id: Buffer.from(update.canister_id),
|
|
37
|
+
method_name: update.method_name,
|
|
38
|
+
arg: update.arg,
|
|
39
|
+
sender: update.sender,
|
|
40
|
+
ingress_expiry: ingressExpiry,
|
|
41
|
+
};
|
|
42
|
+
const representationIndependentHash = utils_1.default.HttpCanisterUpdateRepresentationIndependentHash(clonedUpdate);
|
|
43
|
+
const transactionPayload = {
|
|
44
|
+
hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(representationIndependentHash)),
|
|
45
|
+
account_identifier: { address: accountAddress },
|
|
46
|
+
signature_type: iface_1.SignatureType.ECDSA,
|
|
47
|
+
};
|
|
48
|
+
payloads.push(transactionPayload);
|
|
49
|
+
const readState = utils_1.default.makeReadStateFromUpdate(clonedUpdate);
|
|
50
|
+
const readStateMessageId = utils_1.default.HttpReadStateRepresentationIndependentHash(readState);
|
|
51
|
+
const readStatePayload = {
|
|
52
|
+
hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(readStateMessageId)),
|
|
53
|
+
account_identifier: { address: accountAddress },
|
|
54
|
+
signature_type: iface_1.SignatureType.ECDSA,
|
|
55
|
+
};
|
|
56
|
+
payloads.push(readStatePayload);
|
|
57
|
+
}
|
|
58
|
+
return payloads;
|
|
59
|
+
}
|
|
60
|
+
getIngressExpiries(ingressStartTime, ingressEndTime, interval) {
|
|
61
|
+
const ingressExpiries = [];
|
|
62
|
+
for (let now = Number(ingressStartTime); now < Number(ingressEndTime); now += interval) {
|
|
63
|
+
const ingressExpiry = BigInt(now + (MAX_INGRESS_TTL - PERMITTED_DRIFT));
|
|
64
|
+
ingressExpiries.push(ingressExpiry);
|
|
65
|
+
}
|
|
66
|
+
return ingressExpiries;
|
|
67
|
+
}
|
|
68
|
+
getSendArgs(memo, created_at_time, amount, fee, receiver) {
|
|
69
|
+
const sendArgs = {
|
|
70
|
+
memo: { memo: memo },
|
|
71
|
+
payment: { receiverGets: { e8s: Number(amount) } },
|
|
72
|
+
maxFee: { e8s: -Number(fee) },
|
|
73
|
+
to: { hash: Buffer.from(receiver, 'hex') },
|
|
74
|
+
createdAtTime: { timestampNanos: Number(created_at_time) },
|
|
75
|
+
};
|
|
76
|
+
return sendArgs;
|
|
77
|
+
}
|
|
78
|
+
async getUpdate(sendArgs, publicKeyHex) {
|
|
79
|
+
const principalId = utils_1.default.getPrincipalIdFromPublicKey(publicKeyHex).toUint8Array();
|
|
80
|
+
const senderBlob = Buffer.from(principalId);
|
|
81
|
+
const canisterIdBuffer = Buffer.from(LEDGER_CANISTER_ID);
|
|
82
|
+
const args = await utils_1.default.toArg(sendArgs);
|
|
83
|
+
const update = {
|
|
84
|
+
canister_id: canisterIdBuffer,
|
|
85
|
+
method_name: iface_1.MethodName.SEND_PB,
|
|
86
|
+
arg: args,
|
|
87
|
+
sender: senderBlob,
|
|
88
|
+
ingress_expiry: 0n,
|
|
89
|
+
};
|
|
90
|
+
return update;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.UnsignedTransactionBuilder = UnsignedTransactionBuilder;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Vuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQVNpQjtBQUNqQixvREFBNEI7QUFFNUIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxVQUFZLENBQUMsQ0FBQywyQkFBMkI7QUFDMUUsTUFBTSxlQUFlLEdBQUcsRUFBRSxHQUFHLFVBQVksQ0FBQyxDQUFDLDRCQUE0QjtBQUN2RSxNQUFNLGtCQUFrQixHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9HQUFvRztBQUUvSyxNQUFhLDBCQUEwQjtJQUVyQyxZQUFZLHFCQUFxQztRQUMvQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcscUJBQXFCLENBQUM7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0I7UUFDMUIsTUFBTSxRQUFRLEdBQUcsZUFBZSxHQUFHLGVBQWUsR0FBRyxHQUFHLEdBQUcsVUFBWSxDQUFDLENBQUMsOEJBQThCO1FBQ3ZHLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxhQUFjLEVBQ25ELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBWSxFQUNqRCxRQUFRLENBQ1QsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUN6QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFB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QyxZQUFZLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLE1BQU0sZUFBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBdUI7WUFDakMsV0FBVyxFQUFFLGdCQUFnQjtZQUM3QixXQUFXLEVBQUUsa0JBQVUsQ0FBQyxPQUFPO1lBQy9CLEdBQUcsRUFBRSxJQUFJO1lBQ1QsTUFBTSxFQUFFLFVBQVU7WUFDbEIsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQTFHRCxnRUEwR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJY3BUcmFuc2FjdGlvbixcbiAgU2VuZEFyZ3MsXG4gIEh0dHBDYW5pc3RlclVwZGF0ZSxcbiAgU2lnbmluZ1BheWxvYWQsXG4gIFBheWxvYWRzRGF0YSxcbiAgU2lnbmF0dXJlVHlwZSxcbiAgT3BlcmF0aW9uVHlwZSxcbiAgTWV0aG9kTmFtZSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IE1BWF9JTkdSRVNTX1RUTCA9IDUgKiA2MCAqIDEwMDBfMDAwXzAwMDsgLy8gNSBtaW51dGVzIGluIG5hbm9zZWNvbmRzXG5jb25zdCBQRVJNSVRURURfRFJJRlQgPSA2MCAqIDEwMDBfMDAwXzAwMDsgLy8gNjAgc2Vjb25kcyBpbiBuYW5vc2Vjb25kc1xuY29uc3QgTEVER0VSX0NBTklTVEVSX0lEID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDEsIDFdKTsgLy8gVWludDhBcnJheSB2YWx1ZSBmb3IgXCIwMDAwMDAwMDAwMDAwMDAyMDEwMVwiIGFuZCB0aGUgc3RyaW5nIHZhbHVlIGlzIFwicnlqbDMtdHlhYWEtYWFhYWEtYWFhYmEtY2FpXCJcblxuZXhwb3J0IGNsYXNzIFVuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfaWNwVHJhbnNhY3Rpb25QYXlsb2FkOiBJY3BUcmFuc2FjdGlvbjtcbiAgY29uc3RydWN0b3IoaWNwVHJhbnNhY3Rpb25QYXlsb2FkOiBJY3BUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZCA9IGljcFRyYW5zYWN0aW9uUGF5bG9hZDtcbiAgfVxuXG4gIGFzeW5jIGdldFVuc2lnbmVkVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxQYXlsb2Fkc0RhdGE+IHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IE1BWF9JTkdSRVNTX1RUTCAtIFBFUk1JVFRFRF9EUklGVCAtIDEyMCAqIDEwMDBfMDAwXzAwMDsgLy8gMTIwIHNlY29uZHMgaW4gbWlsbGlzZWNvbmRzXG4gICAgY29uc3QgaW5ncmVzc0V4cGlyaWVzID0gdGhpcy5nZXRJbmdyZXNzRXhwaXJpZXMoXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEuaW5ncmVzc19zdGFydCEsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEuaW5ncmVzc19lbmQhLFxuICAgICAgaW50ZXJ2YWxcbiAgICApO1xuICAgIGNvbnN0IHNlbmRBcmdzID0gdGhpcy5nZXRTZW5kQXJncyhcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5tZW1vLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLmNyZWF0ZWRfYXRfdGltZSxcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5vcGVyYXRpb25zWzFdLmFtb3VudC52YWx1ZSxcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5vcGVyYXRpb25zWzJdLmFtb3VudC52YWx1ZSxcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5vcGVyYXRpb25zWzFdLmFjY291bnQuYWRkcmVzc1xuICAgICk7XG4gICAgY29uc3QgdXBkYXRlID0gYXdhaXQgdGhpcy5nZXRVcGRhdGUoc2VuZEFyZ3MsIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5wdWJsaWNfa2V5c1swXS5oZXhfYnl0ZXMpO1xuICAgIGNvbnN0IHVwZGF0ZXM6IFtzdHJpbmcsIEh0dHBDYW5pc3RlclVwZGF0ZV1bXSA9IFtdO1xuICAgIHVwZGF0ZXMucHVzaChbT3BlcmF0aW9uVHlwZS5UUkFOU0FDVElPTiwgdXBkYXRlXSk7XG4gICAgY29uc3QgdHhuID0geyB1cGRhdGVzOiB1cGRhdGVzLCBpbmdyZXNzX2V4cGlyaWVzOiBpbmdyZXNzRXhwaXJpZXMgfTtcbiAgICBjb25zdCB1bnNpZ25lZFRyYW5zYWN0aW9uID0gdXRpbHMuY2JvckVuY29kZSh0eG4pO1xuICAgIGNvbnN0IHBheWxvYWRzOiBTaWduaW5nUGF5bG9hZFtdID0gW107XG4gICAgdGhpcy5nZXRQYXlsb2FkcyhwYXlsb2FkcywgaW5ncmVzc0V4cGlyaWVzLCB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQub3BlcmF0aW9uc1swXS5hY2NvdW50LmFkZHJlc3MsIHVwZGF0ZSk7XG4gICAgY29uc3QgcGF5bG9hZHNEYXRhID0ge1xuICAgICAgcGF5bG9hZHM6IHBheWxvYWRzLFxuICAgICAgdW5zaWduZWRfdHJhbnNhY3Rpb246IHVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgfTtcbiAgICByZXR1cm4gcGF5bG9hZHNEYXRhO1xuICB9XG5cbiAgZ2V0UGF5bG9hZHMoXG4gICAgcGF5bG9hZHM6IFNpZ25pbmdQYXlsb2FkW10sXG4gICAgaW5ncmVzc0V4cGlyaWVzOiBiaWdpbnRbXSxcbiAgICBhY2NvdW50QWRkcmVzczogc3RyaW5nLFxuICAgIHVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlXG4gICk6IFNpZ25pbmdQYXlsb2FkW10ge1xuICAgIGZvciAoY29uc3QgaW5ncmVzc0V4cGlyeSBvZiBpbmdyZXNzRXhwaXJpZXMpIHtcbiAgICAgIGNvbnN0IGNsb25lZFVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlID0ge1xuICAgICAgICBjYW5pc3Rlcl9pZDogQnVmZmVyLmZyb20odXBkYXRlLmNhbmlzdGVyX2lkKSxcbiAgICAgICAgbWV0aG9kX25hbWU6IHVwZGF0ZS5tZXRob2RfbmFtZSxcbiAgICAgICAgYXJnOiB1cGRhdGUuYXJnLFxuICAgICAgICBzZW5kZXI6IHVwZGF0ZS5zZW5kZXIsXG4gICAgICAgIGluZ3Jlc3NfZXhwaXJ5OiBpbmdyZXNzRXhwaXJ5LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVwcmVzZW50YXRpb25JbmRlcGVuZGVudEhhc2ggPSB1dGlscy5IdHRwQ2FuaXN0ZXJVcGRhdGVSZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaChjbG9uZWRVcGRhdGUpO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25QYXlsb2FkOiBTaWduaW5nUGF5bG9hZCA9IHtcbiAgICAgICAgaGV4X2J5dGVzOiB1dGlscy5ibG9iVG9IZXgodXRpbHMubWFrZVNpZ25hdHVyZURhdGEocmVwcmVzZW50YXRpb25JbmRlcGVuZGVudEhhc2gpKSxcbiAgICAgICAgYWNjb3VudF9pZGVudGlmaWVyOiB7IGFkZHJlc3M6IGFjY291bnRBZGRyZXNzIH0sXG4gICAgICAgIHNpZ25hdHVyZV90eXBlOiBTaWduYXR1cmVUeXBlLkVDRFNBLFxuICAgICAgfTtcbiAgICAgIHBheWxvYWRzLnB1c2godHJhbnNhY3Rpb25QYXlsb2FkKTtcblxuICAgICAgY29uc3QgcmVhZFN0YXRlID0gdXRpbHMubWFrZVJlYWRTdGF0ZUZyb21VcGRhdGUoY2xvbmVkVXBkYXRlKTtcbiAgICAgIGNvbnN0IHJlYWRTdGF0ZU1lc3NhZ2VJZCA9IHV0aWxzLkh0dHBSZWFkU3RhdGVSZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaChyZWFkU3RhdGUpO1xuICAgICAgY29uc3QgcmVhZFN0YXRlUGF5bG9hZDogU2lnbmluZ1BheWxvYWQgPSB7XG4gICAgICAgIGhleF9ieXRlczogdXRpbHMuYmxvYlRvSGV4KHV0aWxzLm1ha2VTaWduYXR1cmVEYXRhKHJlYWRTdGF0ZU1lc3NhZ2VJZCkpLFxuICAgICAgICBhY2NvdW50X2lkZW50aWZpZXI6IHsgYWRkcmVzczogYWNjb3VudEFkZHJlc3MgfSxcbiAgICAgICAgc2lnbmF0dXJlX3R5cGU6IFNpZ25hdHVyZVR5cGUuRUNEU0EsXG4gICAgICB9O1xuICAgICAgcGF5bG9hZHMucHVzaChyZWFkU3RhdGVQYXlsb2FkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF5bG9hZHM7XG4gIH1cblxuICBnZXRJbmdyZXNzRXhwaXJpZXMoaW5ncmVzc1N0YXJ0VGltZTogbnVtYmVyIHwgQmlnSW50LCBpbmdyZXNzRW5kVGltZTogbnVtYmVyIHwgQmlnSW50LCBpbnRlcnZhbDogbnVtYmVyKTogYmlnaW50W10ge1xuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcmllczogYmlnaW50W10gPSBbXTtcblxuICAgIGZvciAobGV0IG5vdyA9IE51bWJlcihpbmdyZXNzU3RhcnRUaW1lKTsgbm93IDwgTnVtYmVyKGluZ3Jlc3NFbmRUaW1lKTsgbm93ICs9IGludGVydmFsKSB7XG4gICAgICBjb25zdCBpbmdyZXNzRXhwaXJ5ID0gQmlnSW50KG5vdyArIChNQVhfSU5HUkVTU19UVEwgLSBQRVJNSVRURURfRFJJRlQpKTtcbiAgICAgIGluZ3Jlc3NFeHBpcmllcy5wdXNoKGluZ3Jlc3NFeHBpcnkpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmdyZXNzRXhwaXJpZXM7XG4gIH1cblxuICBnZXRTZW5kQXJncyhtZW1vOiBudW1iZXIgfCBCaWdJbnQsIGNyZWF0ZWRfYXRfdGltZTogbnVtYmVyLCBhbW91bnQ6IHN0cmluZywgZmVlOiBzdHJpbmcsIHJlY2VpdmVyOiBzdHJpbmcpOiBTZW5kQXJncyB7XG4gICAgY29uc3Qgc2VuZEFyZ3M6IFNlbmRBcmdzID0ge1xuICAgICAgbWVtbzogeyBtZW1vOiBtZW1vIH0sXG4gICAgICBwYXltZW50OiB7IHJlY2VpdmVyR2V0czogeyBlOHM6IE51bWJlcihhbW91bnQpIH0gfSxcbiAgICAgIG1heEZlZTogeyBlOHM6IC1OdW1iZXIoZmVlKSB9LFxuICAgICAgdG86IHsgaGFzaDogQnVmZmVyLmZyb20ocmVjZWl2ZXIsICdoZXgnKSB9LFxuICAgICAgY3JlYXRlZEF0VGltZTogeyB0aW1lc3RhbXBOYW5vczogTnVtYmVyKGNyZWF0ZWRfYXRfdGltZSkgfSxcbiAgICB9O1xuICAgIHJldHVybiBzZW5kQXJncztcbiAgfVxuXG4gIGFzeW5jIGdldFVwZGF0ZShzZW5kQXJnczogU2VuZEFyZ3MsIHB1YmxpY0tleUhleDogc3RyaW5nKTogUHJvbWlzZTxIdHRwQ2FuaXN0ZXJVcGRhdGU+IHtcbiAgICBjb25zdCBwcmluY2lwYWxJZCA9IHV0aWxzLmdldFByaW5jaXBhbElkRnJvbVB1YmxpY0tleShwdWJsaWNLZXlIZXgpLnRvVWludDhBcnJheSgpO1xuICAgIGNvbnN0IHNlbmRlckJsb2IgPSBCdWZmZXIuZnJvbShwcmluY2lwYWxJZCk7XG4gICAgY29uc3QgY2FuaXN0ZXJJZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKExFREdFUl9DQU5JU1RFUl9JRCk7XG4gICAgY29uc3QgYXJncyA9IGF3YWl0IHV0aWxzLnRvQXJnKHNlbmRBcmdzKTtcbiAgICBjb25zdCB1cGRhdGU6IEh0dHBDYW5pc3RlclVwZGF0ZSA9IHtcbiAgICAgIGNhbmlzdGVyX2lkOiBjYW5pc3RlcklkQnVmZmVyLFxuICAgICAgbWV0aG9kX25hbWU6IE1ldGhvZE5hbWUuU0VORF9QQixcbiAgICAgIGFyZzogYXJncyxcbiAgICAgIHNlbmRlcjogc2VuZGVyQmxvYixcbiAgICAgIGluZ3Jlc3NfZXhwaXJ5OiAwbixcbiAgICB9O1xuICAgIHJldHVybiB1cGRhdGU7XG4gIH1cbn1cbiJdfQ==
|