@bitgo-beta/sdk-coin-icp 1.0.1-beta.96 → 1.0.1-beta.97

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.
Files changed (34) hide show
  1. package/dist/src/lib/iface.d.ts +165 -0
  2. package/dist/src/lib/iface.d.ts.map +1 -0
  3. package/dist/src/lib/iface.js +31 -0
  4. package/dist/src/lib/index.d.ts +3 -0
  5. package/dist/src/lib/index.d.ts.map +1 -1
  6. package/dist/src/lib/index.js +8 -2
  7. package/dist/src/lib/protoDefinition.d.ts +2 -0
  8. package/dist/src/lib/protoDefinition.d.ts.map +1 -0
  9. package/dist/src/lib/protoDefinition.js +44 -0
  10. package/dist/src/lib/signedTransactionBuilder.d.ts +9 -0
  11. package/dist/src/lib/signedTransactionBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/signedTransactionBuilder.js +69 -0
  13. package/dist/src/lib/transaction.d.ts +42 -0
  14. package/dist/src/lib/transaction.d.ts.map +1 -0
  15. package/dist/src/lib/transaction.js +169 -0
  16. package/dist/src/lib/transactionBuilder.d.ts +47 -31
  17. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  18. package/dist/src/lib/transactionBuilder.js +98 -44
  19. package/dist/src/lib/transactionBuilderFactory.d.ts +15 -12
  20. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  21. package/dist/src/lib/transactionBuilderFactory.js +38 -24
  22. package/dist/src/lib/transferBuilder.d.ts +10 -25
  23. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  24. package/dist/src/lib/transferBuilder.js +95 -44
  25. package/dist/src/lib/unsignedTransactionBuilder.d.ts +12 -0
  26. package/dist/src/lib/unsignedTransactionBuilder.d.ts.map +1 -0
  27. package/dist/src/lib/unsignedTransactionBuilder.js +105 -0
  28. package/dist/src/lib/utils.d.ts +261 -7
  29. package/dist/src/lib/utils.d.ts.map +1 -1
  30. package/dist/src/lib/utils.js +453 -52
  31. package/dist/src/ticp.d.ts +0 -4
  32. package/dist/src/ticp.d.ts.map +1 -1
  33. package/dist/src/ticp.js +1 -7
  34. package/package.json +11 -7
@@ -2,44 +2,58 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TransactionBuilderFactory = void 0;
4
4
  const sdk_core_1 = require("@bitgo-beta/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
- throw new Error('method not implemented');
12
- }
13
- /** @inheritdoc */
14
- getTransferBuilder() {
15
- throw new Error('method not implemented');
16
- }
17
- /** @inheritdoc */
18
- getStakingBuilder() {
19
- throw new Error('method not implemented');
20
- }
21
- /** @inheritdoc */
22
- getUnstakingBuilder() {
23
- throw new Error('method not implemented');
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
- /** @inheritdoc */
26
- getCustomTransactionBuilder() {
27
- throw new Error('method not implemented');
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
- getTokenTransferBuilder() {
31
- throw new Error('method not implemented');
32
- }
33
- /** @inheritdoc */
34
- getWalletInitializationBuilder() {
35
- throw new Error('method not implemented');
43
+ getTransferBuilder(tx) {
44
+ return TransactionBuilderFactory.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig, new utils_1.Utils()));
36
45
  }
46
+ //TODO WIN-4723 need to implement the following method
37
47
  /**
38
48
  * Parse the transaction from a raw transaction
39
49
  */
40
50
  parseTransaction(rawTransaction) {
41
51
  throw new Error('method not implemented');
42
52
  }
53
+ /** @inheritdoc */
54
+ getWalletInitializationBuilder() {
55
+ throw new Error('method not implemented');
56
+ }
43
57
  }
44
58
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBcUU7QUFHckUsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQjtRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiwyQkFBMkI7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUJBQXVCO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsY0FBc0I7UUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQTlDRCw4REE4Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTdGFraW5nQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRVbnN0YWtpbmdCdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdGhlIHRyYW5zYWN0aW9uIGZyb20gYSByYXcgdHJhbnNhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcGFyc2VUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBOEY7QUFFOUYsK0NBQTRDO0FBRTVDLHVEQUFvRDtBQUNwRCxtQ0FBZ0M7QUFDaEMsbUNBQXdDO0FBRXhDLE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLGNBQXNCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksYUFBSyxFQUFFLENBQUMsQ0FBQztRQUNuRSxXQUFXLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDO1lBQ0gsUUFBUSxXQUFXLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZELEtBQUsscUJBQWEsQ0FBQyxXQUFXO29CQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUM7b0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBK0IsRUFBMkIsRUFBRSxPQUFVO1FBQ3BHLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksYUFBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxjQUFzQjtRQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQXBERCw4REFvREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wZXJhdGlvblR5cGUgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIG5ldyBVdGlscygpKTtcbiAgICB0cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uRGF0YS50cmFuc2FjdGlvblR5cGUpIHtcbiAgICAgICAgY2FzZSBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiAnICsgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcsIG5ldyBVdGlscygpKSk7XG4gIH1cblxuICAvL1RPRE8gV0lOLTQ3MjMgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBtZXRob2RcbiAgLyoqXG4gICAqIFBhcnNlIHRoZSB0cmFuc2FjdGlvbiBmcm9tIGEgcmF3IHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuIl19
@@ -1,36 +1,21 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
2
  import { TransactionBuilder } from './transactionBuilder';
3
- import { BaseKey, Recipient, TransactionType, BaseTransaction } from '@bitgo-beta/sdk-core';
3
+ import { BaseTransaction, BaseKey } from '@bitgo-beta/sdk-core';
4
+ import { Utils } from './utils';
5
+ import { Transaction } from './transaction';
4
6
  export declare class TransferBuilder extends TransactionBuilder {
5
- protected _recipients: Recipient[];
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
- * @protected
12
+ * @param {Transaction} tx the transaction data
27
13
  */
28
- protected buildIcpTransaction(): void;
29
- /** @inheritdoc */
30
- TransactionBuilder(): void;
14
+ initBuilder(tx: Transaction): void;
31
15
  /** @inheritdoc */
32
- fromImplementation(): BaseTransaction;
16
+ protected buildImplementation(): Promise<Transaction>;
17
+ protected buildIcpTransactionData(): void;
33
18
  /** @inheritdoc */
34
- get transaction(): BaseTransaction;
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,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5F,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;gBAEvB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAMnC,kBAAkB;IAClB,mBAAmB,IAAI,IAAI;IAI3B,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAIxB,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;IAI/D;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAIjC;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAIrC,kBAAkB;IAClB,kBAAkB,IAAI,IAAI;IAI1B,kBAAkB;IAClB,kBAAkB,IAAI,eAAe;IAIrC,kBAAkB;IAClB,IAAI,WAAW,IAAI,eAAe,CAEjC;CACF"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,OAAO,EAAuC,MAAM,sBAAsB,CAAC;AACrG,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-beta/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
- * @protected
22
+ * @param {Transaction} tx the transaction data
46
23
  */
47
- buildIcpTransaction() {
48
- throw new Error('method not implemented');
24
+ initBuilder(tx) {
25
+ super.initBuilder(tx);
49
26
  }
50
27
  /** @inheritdoc */
51
- TransactionBuilder() {
52
- throw new Error('method not implemented');
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
- /** @inheritdoc */
55
- fromImplementation() {
56
- throw new Error('method not implemented');
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
- get transaction() {
60
- throw new Error('method not implemented');
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkRBQTBEO0FBQzFELG1EQUE0RjtBQUU1RixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBR3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLFVBQXVCO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFZO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QjtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxtQkFBbUI7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQjtRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLFdBQVc7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBckVELDBDQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VLZXksIFJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlLCBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3JlY2lwaWVudHM6IFJlY2lwaWVudFtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgc2VuZChyZWNpcGllbnRzOiBSZWNpcGllbnRbXSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHMpO1xuICAgIHRoaXMuX3JlY2lwaWVudHMgPSByZWNpcGllbnRzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2lnbihrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPEJhc2VUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgZmllbGRzIGFyZSBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdHJhbnNmZXIgcHJvZ3JhbW1hYmxlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEljcFRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIFRyYW5zYWN0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tSW1wbGVtZW50YXRpb24oKTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgdHJhbnNhY3Rpb24oKTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNkRBQTBEO0FBQzFELG1EQUFxRztBQUdyRyw2RUFBMEU7QUFDMUUsbUNBUWlCO0FBQ2pCLHlFQUFzRTtBQUN0RSx1Q0FBb0M7QUFDcEMsb0RBQTRCO0FBRTVCLE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFHckQsWUFBWSxXQUFpQyxFQUFFLEtBQVk7UUFDekQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSx1REFBMEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sWUFBWSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFUyx1QkFBdUI7UUFDL0IsSUFBQSxnQkFBTSxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxnQ0FBcUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBQSxnQkFBTSxFQUFDLElB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QUcsa0JBQWtCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLHVCQUFZLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLG1EQUF3QixDQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUNuQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFsSEQsMENBa0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uLCBCYXNlS2V5LCBTaWduaW5nRXJyb3IsIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3Vuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7XG4gIEN1cnZlVHlwZSxcbiAgSWNwTWV0YWRhdGEsXG4gIEljcE9wZXJhdGlvbixcbiAgSWNwUHVibGljS2V5LFxuICBJY3BUcmFuc2FjdGlvbixcbiAgSWNwVHJhbnNhY3Rpb25EYXRhLFxuICBPcGVyYXRpb25UeXBlLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF91dGlsczogVXRpbHM7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCB1dGlsczogVXRpbHMpIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdXRpbHMgPSB1dGlscztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbih0aGlzLl90cmFuc2FjdGlvbik7XG4gICAgdGhpcy5idWlsZEljcFRyYW5zYWN0aW9uRGF0YSgpO1xuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyID0gbmV3IFVuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyKHRoaXMuX3RyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBwYXlsb2Fkc0RhdGEgPSBhd2FpdCB1bnNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlci5nZXRVbnNpZ25lZFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ucGF5bG9hZHNEYXRhID0gcGF5bG9hZHNEYXRhO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEljcFRyYW5zYWN0aW9uRGF0YSgpOiB2b2lkIHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9wdWJsaWNLZXksIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBwdWJsaWMga2V5IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBhc3NlcnQodGhpcy5fYW1vdW50LCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhbW91bnQgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9yZWNlaXZlcklkLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdyZWNlaXZlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX21lbW8sIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lbW8gaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGNvbnN0IHB1YmxpY0tleTogSWNwUHVibGljS2V5ID0ge1xuICAgICAgaGV4X2J5dGVzOiB0aGlzLl9wdWJsaWNLZXksXG4gICAgICBjdXJ2ZV90eXBlOiBDdXJ2ZVR5cGUuU0VDUDI1NksxLFxuICAgIH07XG5cbiAgICBjb25zdCBzZW5kZXJPcGVyYXRpb246IEljcE9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6IE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sXG4gICAgICBhY2NvdW50OiB7IGFkZHJlc3M6IHRoaXMuX3NlbmRlciB9LFxuICAgICAgYW1vdW50OiB7XG4gICAgICAgIHZhbHVlOiBgLSR7dGhpcy5fYW1vdW50fWAsXG4gICAgICAgIGN1cnJlbmN5OiB7XG4gICAgICAgICAgc3ltYm9sOiB0aGlzLl9jb2luQ29uZmlnLmZhbWlseSxcbiAgICAgICAgICBkZWNpbWFsczogdGhpcy5fY29pbkNvbmZpZy5kZWNpbWFsUGxhY2VzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVjZWl2ZXJPcGVyYXRpb246IEljcE9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6IE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sXG4gICAgICBhY2NvdW50OiB7IGFkZHJlc3M6IHRoaXMuX3JlY2VpdmVySWQgfSxcbiAgICAgIGFtb3VudDoge1xuICAgICAgICB2YWx1ZTogdGhpcy5fYW1vdW50LFxuICAgICAgICBjdXJyZW5jeToge1xuICAgICAgICAgIHN5bWJvbDogdGhpcy5fY29pbkNvbmZpZy5mYW1pbHksXG4gICAgICAgICAgZGVjaW1hbHM6IHRoaXMuX2NvaW5Db25maWcuZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGZlZU9wZXJhdGlvbjogSWNwT3BlcmF0aW9uID0ge1xuICAgICAgdHlwZTogT3BlcmF0aW9uVHlwZS5GRUUsXG4gICAgICBhY2NvdW50OiB7IGFkZHJlc3M6IHRoaXMuX3NlbmRlciB9LFxuICAgICAgYW1vdW50OiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLl91dGlscy5nYXNEYXRhKCksXG4gICAgICAgIGN1cnJlbmN5OiB7XG4gICAgICAgICAgc3ltYm9sOiB0aGlzLl9jb2luQ29uZmlnLmZhbWlseSxcbiAgICAgICAgICBkZWNpbWFsczogdGhpcy5fY29pbkNvbmZpZy5kZWNpbWFsUGxhY2VzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgeyBtZXRhRGF0YSwgaW5ncmVzc0VuZFRpbWUgfTogeyBtZXRhRGF0YTogSWNwTWV0YWRhdGE7IGluZ3Jlc3NFbmRUaW1lOiBudW1iZXIgfCBCaWdJbnQgfSA9XG4gICAgICB0aGlzLl91dGlscy5nZXRNZXRhRGF0YSh0aGlzLl9tZW1vKTtcblxuICAgIGNvbnN0IGljcFRyYW5zYWN0aW9uOiBJY3BUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHB1YmxpY19rZXlzOiBbcHVibGljS2V5XSxcbiAgICAgIG9wZXJhdGlvbnM6IFtzZW5kZXJPcGVyYXRpb24sIHJlY2VpdmVyT3BlcmF0aW9uLCBmZWVPcGVyYXRpb25dLFxuICAgICAgbWV0YWRhdGE6IG1ldGFEYXRhLFxuICAgIH07XG4gICAgY29uc3QgaWNwVHJhbnNhY3Rpb25EYXRhOiBJY3BUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBzZW5kZXJBZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICByZWNlaXZlckFkZHJlc3M6IHRoaXMuX3JlY2VpdmVySWQsXG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIGZlZTogdGhpcy5fdXRpbHMuZ2FzRGF0YSgpLFxuICAgICAgc2VuZGVyUHVibGljS2V5SGV4OiB0aGlzLl9wdWJsaWNLZXksXG4gICAgICBtZW1vOiB0aGlzLl9tZW1vLFxuICAgICAgdHJhbnNhY3Rpb25UeXBlOiBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OLFxuICAgICAgZXhwaXJ5VGltZTogaW5ncmVzc0VuZFRpbWUsXG4gICAgfTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5pY3BUcmFuc2FjdGlvbkRhdGEgPSBpY3BUcmFuc2FjdGlvbkRhdGE7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb24gPSBpY3BUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy52YWxpZGF0ZUtleShrZXkpO1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5jYW5TaWduKGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1ByaXZhdGUga2V5IGNhbm5vdCBzaWduIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ2ludmFsaWQgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyID0gbmV3IFNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlcihcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLnVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5zaWduYXR1cmVQYXlsb2FkXG4gICAgKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zaWduZWRUcmFuc2FjdGlvbiA9IHNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlci5nZXRTaWduVHJhbnNhY3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,12 @@
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
+ toArg(args: SendArgs): Promise<Uint8Array>;
10
+ getUpdate(sendArgs: SendArgs, publicKeyHex: string): Promise<HttpCanisterUpdate>;
11
+ }
12
+ //# 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;AASjB,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,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAS1C,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAcvF"}
@@ -0,0 +1,105 @@
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 protobufjs_1 = __importDefault(require("protobufjs"));
9
+ const utils_1 = __importDefault(require("./utils"));
10
+ const protoDefinition_1 = require("./protoDefinition");
11
+ const MAX_INGRESS_TTL = 5 * 60 * 1000000000; // 5 minutes in nanoseconds
12
+ const PERMITTED_DRIFT = 60 * 1000000000; // 60 seconds in nanoseconds
13
+ 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"
14
+ class UnsignedTransactionBuilder {
15
+ constructor(icpTransactionPayload) {
16
+ this._icpTransactionPayload = icpTransactionPayload;
17
+ }
18
+ async getUnsignedTransaction() {
19
+ const interval = MAX_INGRESS_TTL - PERMITTED_DRIFT - 120 * 1000000000; // 120 seconds in milliseconds
20
+ const ingressExpiries = this.getIngressExpiries(this._icpTransactionPayload.metadata.ingress_start, this._icpTransactionPayload.metadata.ingress_end, interval);
21
+ 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);
22
+ const update = await this.getUpdate(sendArgs, this._icpTransactionPayload.public_keys[0].hex_bytes);
23
+ const updates = [];
24
+ updates.push([iface_1.OperationType.TRANSACTION, update]);
25
+ const txn = { updates: updates, ingress_expiries: ingressExpiries };
26
+ const unsignedTransaction = utils_1.default.cborEncode(txn);
27
+ const payloads = [];
28
+ this.getPayloads(payloads, ingressExpiries, this._icpTransactionPayload.operations[0].account.address, update);
29
+ const payloadsData = {
30
+ payloads: payloads,
31
+ unsigned_transaction: unsignedTransaction,
32
+ };
33
+ return payloadsData;
34
+ }
35
+ getPayloads(payloads, ingressExpiries, accountAddress, update) {
36
+ for (const ingressExpiry of ingressExpiries) {
37
+ const clonedUpdate = {
38
+ canister_id: Buffer.from(update.canister_id),
39
+ method_name: update.method_name,
40
+ arg: update.arg,
41
+ sender: update.sender,
42
+ ingress_expiry: ingressExpiry,
43
+ };
44
+ const representationIndependentHash = utils_1.default.HttpCanisterUpdateRepresentationIndependentHash(clonedUpdate);
45
+ const transactionPayload = {
46
+ hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(representationIndependentHash)),
47
+ account_identifier: { address: accountAddress },
48
+ signature_type: iface_1.SignatureType.ECDSA,
49
+ };
50
+ payloads.push(transactionPayload);
51
+ const readState = utils_1.default.makeReadStateFromUpdate(clonedUpdate);
52
+ const readStateMessageId = utils_1.default.HttpReadStateRepresentationIndependentHash(readState);
53
+ const readStatePayload = {
54
+ hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(readStateMessageId)),
55
+ account_identifier: { address: accountAddress },
56
+ signature_type: iface_1.SignatureType.ECDSA,
57
+ };
58
+ payloads.push(readStatePayload);
59
+ }
60
+ return payloads;
61
+ }
62
+ getIngressExpiries(ingressStartTime, ingressEndTime, interval) {
63
+ const ingressExpiries = [];
64
+ for (let now = Number(ingressStartTime); now < Number(ingressEndTime); now += interval) {
65
+ const ingressExpiry = BigInt(now + (MAX_INGRESS_TTL - PERMITTED_DRIFT));
66
+ ingressExpiries.push(ingressExpiry);
67
+ }
68
+ return ingressExpiries;
69
+ }
70
+ getSendArgs(memo, created_at_time, amount, fee, receiver) {
71
+ const sendArgs = {
72
+ memo: { memo: memo },
73
+ payment: { receiverGets: { e8s: Number(amount) } },
74
+ maxFee: { e8s: -Number(fee) },
75
+ to: { hash: Buffer.from(receiver, 'hex') },
76
+ createdAtTime: { timestampNanos: Number(created_at_time) },
77
+ };
78
+ return sendArgs;
79
+ }
80
+ async toArg(args) {
81
+ const root = await protobufjs_1.default.parse(protoDefinition_1.protoDefinition).root;
82
+ const SendRequestMessage = root.lookupType('SendRequest');
83
+ const errMsg = SendRequestMessage.verify(args);
84
+ if (errMsg)
85
+ throw new Error(errMsg);
86
+ const message = SendRequestMessage.create(args);
87
+ return SendRequestMessage.encode(message).finish();
88
+ }
89
+ async getUpdate(sendArgs, publicKeyHex) {
90
+ const principalId = utils_1.default.getPrincipalIdFromPublicKey(publicKeyHex).toUint8Array();
91
+ const senderBlob = Buffer.from(principalId);
92
+ const canisterIdBuffer = Buffer.from(LEDGER_CANISTER_ID);
93
+ const args = await this.toArg(sendArgs);
94
+ const update = {
95
+ canister_id: canisterIdBuffer,
96
+ method_name: iface_1.MethodName.SEND_PB,
97
+ arg: args,
98
+ sender: senderBlob,
99
+ ingress_expiry: 0n,
100
+ };
101
+ return update;
102
+ }
103
+ }
104
+ exports.UnsignedTransactionBuilder = UnsignedTransactionBuilder;
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Vuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQVNpQjtBQUNqQiw0REFBa0M7QUFDbEMsb0RBQTRCO0FBQzVCLHVEQUFvRDtBQUVwRCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLFVBQVksQ0FBQyxDQUFDLDJCQUEyQjtBQUMxRSxNQUFNLGVBQWUsR0FBRyxFQUFFLEdBQUcsVUFBWSxDQUFDLENBQUMsNEJBQTRCO0FBQ3ZFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0dBQW9HO0FBRS9LLE1BQWEsMEJBQTBCO0lBRXJDLFlBQVkscUJBQXFDO1FBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixNQUFNLFFBQVEsR0FBRyxlQUFlLEdBQUcsZUFBZSxHQUFHLEdBQUcsR0FBRyxVQUFZLENBQUMsQ0FBQyw4QkFBOEI7UUFDdkcsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFDbEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQ2hELFFBQVEsQ0FDVCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQ3pD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LFxuICBIdHRwQ2FuaXN0ZXJVcGRhdGUsXG4gIFNpZ25pbmdQYXlsb2FkLFxuICBQYXlsb2Fkc0RhdGEsXG4gIFNpZ25hdHVyZVR5cGUsXG4gIE9wZXJhdGlvblR5cGUsXG4gIE1ldGhvZE5hbWUsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHByb3RvYnVmIGZyb20gJ3Byb3RvYnVmanMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgcHJvdG9EZWZpbml0aW9uIH0gZnJvbSAnLi9wcm90b0RlZmluaXRpb24nO1xuXG5jb25zdCBNQVhfSU5HUkVTU19UVEwgPSA1ICogNjAgKiAxMDAwXzAwMF8wMDA7IC8vIDUgbWludXRlcyBpbiBuYW5vc2Vjb25kc1xuY29uc3QgUEVSTUlUVEVEX0RSSUZUID0gNjAgKiAxMDAwXzAwMF8wMDA7IC8vIDYwIHNlY29uZHMgaW4gbmFub3NlY29uZHNcbmNvbnN0IExFREdFUl9DQU5JU1RFUl9JRCA9IG5ldyBVaW50OEFycmF5KFswLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAxLCAxXSk7IC8vIFVpbnQ4QXJyYXkgdmFsdWUgZm9yIFwiMDAwMDAwMDAwMDAwMDAwMjAxMDFcIiBhbmQgdGhlIHN0cmluZyB2YWx1ZSBpcyBcInJ5amwzLXR5YWFhLWFhYWFhLWFhYWJhLWNhaVwiXG5cbmV4cG9ydCBjbGFzcyBVbnNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2ljcFRyYW5zYWN0aW9uUGF5bG9hZDogSWNwVHJhbnNhY3Rpb247XG4gIGNvbnN0cnVjdG9yKGljcFRyYW5zYWN0aW9uUGF5bG9hZDogSWNwVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQgPSBpY3BUcmFuc2FjdGlvblBheWxvYWQ7XG4gIH1cblxuICBhc3luYyBnZXRVbnNpZ25lZFRyYW5zYWN0aW9uKCk6IFByb21pc2U8UGF5bG9hZHNEYXRhPiB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBNQVhfSU5HUkVTU19UVEwgLSBQRVJNSVRURURfRFJJRlQgLSAxMjAgKiAxMDAwXzAwMF8wMDA7IC8vIDEyMCBzZWNvbmRzIGluIG1pbGxpc2Vjb25kc1xuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcmllcyA9IHRoaXMuZ2V0SW5ncmVzc0V4cGlyaWVzKFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLmluZ3Jlc3Nfc3RhcnQsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEuaW5ncmVzc19lbmQsXG4gICAgICBpbnRlcnZhbFxuICAgICk7XG4gICAgY29uc3Qgc2VuZEFyZ3MgPSB0aGlzLmdldFNlbmRBcmdzKFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLm1lbW8sXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEuY3JlYXRlZF9hdF90aW1lLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMV0uYW1vdW50LnZhbHVlLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMl0uYW1vdW50LnZhbHVlLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMV0uYWNjb3VudC5hZGRyZXNzXG4gICAgKTtcbiAgICBjb25zdCB1cGRhdGUgPSBhd2FpdCB0aGlzLmdldFVwZGF0ZShzZW5kQXJncywgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLnB1YmxpY19rZXlzWzBdLmhleF9ieXRlcyk7XG4gICAgY29uc3QgdXBkYXRlczogW3N0cmluZywgSHR0cENhbmlzdGVyVXBkYXRlXVtdID0gW107XG4gICAgdXBkYXRlcy5wdXNoKFtPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OLCB1cGRhdGVdKTtcbiAgICBjb25zdCB0eG4gPSB7IHVwZGF0ZXM6IHVwZGF0ZXMsIGluZ3Jlc3NfZXhwaXJpZXM6IGluZ3Jlc3NFeHBpcmllcyB9O1xuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb24gPSB1dGlscy5jYm9yRW5jb2RlKHR4bik7XG4gICAgY29uc3QgcGF5bG9hZHM6IFNpZ25pbmdQYXlsb2FkW10gPSBbXTtcbiAgICB0aGlzLmdldFBheWxvYWRzKHBheWxvYWRzLCBpbmdyZXNzRXhwaXJpZXMsIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5vcGVyYXRpb25zWzBdLmFjY291bnQuYWRkcmVzcywgdXBkYXRlKTtcbiAgICBjb25zdCBwYXlsb2Fkc0RhdGEgPSB7XG4gICAgICBwYXlsb2FkczogcGF5bG9hZHMsXG4gICAgICB1bnNpZ25lZF90cmFuc2FjdGlvbjogdW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICB9O1xuICAgIHJldHVybiBwYXlsb2Fkc0RhdGE7XG4gIH1cblxuICBnZXRQYXlsb2FkcyhcbiAgICBwYXlsb2FkczogU2lnbmluZ1BheWxvYWRbXSxcbiAgICBpbmdyZXNzRXhwaXJpZXM6IGJpZ2ludFtdLFxuICAgIGFjY291bnRBZGRyZXNzOiBzdHJpbmcsXG4gICAgdXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGVcbiAgKTogU2lnbmluZ1BheWxvYWRbXSB7XG4gICAgZm9yIChjb25zdCBpbmdyZXNzRXhwaXJ5IG9mIGluZ3Jlc3NFeHBpcmllcykge1xuICAgICAgY29uc3QgY2xvbmVkVXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUgPSB7XG4gICAgICAgIGNhbmlzdGVyX2lkOiBCdWZmZXIuZnJvbSh1cGRhdGUuY2FuaXN0ZXJfaWQpLFxuICAgICAgICBtZXRob2RfbmFtZTogdXBkYXRlLm1ldGhvZF9uYW1lLFxuICAgICAgICBhcmc6IHVwZGF0ZS5hcmcsXG4gICAgICAgIHNlbmRlcjogdXBkYXRlLnNlbmRlcixcbiAgICAgICAgaW5ncmVzc19leHBpcnk6IGluZ3Jlc3NFeHBpcnksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaCA9IHV0aWxzLkh0dHBDYW5pc3RlclVwZGF0ZVJlcHJlc2VudGF0aW9uSW5kZXBlbmRlbnRIYXNoKGNsb25lZFVwZGF0ZSk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvblBheWxvYWQ6IFNpZ25pbmdQYXlsb2FkID0ge1xuICAgICAgICBoZXhfYnl0ZXM6IHV0aWxzLmJsb2JUb0hleCh1dGlscy5tYWtlU2lnbmF0dXJlRGF0YShyZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaCkpLFxuICAgICAgICBhY2NvdW50X2lkZW50aWZpZXI6IHsgYWRkcmVzczogYWNjb3VudEFkZHJlc3MgfSxcbiAgICAgICAgc2lnbmF0dXJlX3R5cGU6IFNpZ25hdHVyZVR5cGUuRUNEU0EsXG4gICAgICB9O1xuICAgICAgcGF5bG9hZHMucHVzaCh0cmFuc2FjdGlvblBheWxvYWQpO1xuXG4gICAgICBjb25zdCByZWFkU3RhdGUgPSB1dGlscy5tYWtlUmVhZFN0YXRlRnJvbVVwZGF0ZShjbG9uZWRVcGRhdGUpO1xuICAgICAgY29uc3QgcmVhZFN0YXRlTWVzc2FnZUlkID0gdXRpbHMuSHR0cFJlYWRTdGF0ZVJlcHJlc2VudGF0aW9uSW5kZXBlbmRlbnRIYXNoKHJlYWRTdGF0ZSk7XG4gICAgICBjb25zdCByZWFkU3RhdGVQYXlsb2FkOiBTaWduaW5nUGF5bG9hZCA9IHtcbiAgICAgICAgaGV4X2J5dGVzOiB1dGlscy5ibG9iVG9IZXgodXRpbHMubWFrZVNpZ25hdHVyZURhdGEocmVhZFN0YXRlTWVzc2FnZUlkKSksXG4gICAgICAgIGFjY291bnRfaWRlbnRpZmllcjogeyBhZGRyZXNzOiBhY2NvdW50QWRkcmVzcyB9LFxuICAgICAgICBzaWduYXR1cmVfdHlwZTogU2lnbmF0dXJlVHlwZS5FQ0RTQSxcbiAgICAgIH07XG4gICAgICBwYXlsb2Fkcy5wdXNoKHJlYWRTdGF0ZVBheWxvYWQpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkcztcbiAgfVxuXG4gIGdldEluZ3Jlc3NFeHBpcmllcyhpbmdyZXNzU3RhcnRUaW1lOiBudW1iZXIgfCBCaWdJbnQsIGluZ3Jlc3NFbmRUaW1lOiBudW1iZXIgfCBCaWdJbnQsIGludGVydmFsOiBudW1iZXIpOiBiaWdpbnRbXSB7XG4gICAgY29uc3QgaW5ncmVzc0V4cGlyaWVzOiBiaWdpbnRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgbm93ID0gTnVtYmVyKGluZ3Jlc3NTdGFydFRpbWUpOyBub3cgPCBOdW1iZXIoaW5ncmVzc0VuZFRpbWUpOyBub3cgKz0gaW50ZXJ2YWwpIHtcbiAgICAgIGNvbnN0IGluZ3Jlc3NFeHBpcnkgPSBCaWdJbnQobm93ICsgKE1BWF9JTkdSRVNTX1RUTCAtIFBFUk1JVFRFRF9EUklGVCkpO1xuICAgICAgaW5ncmVzc0V4cGlyaWVzLnB1c2goaW5ncmVzc0V4cGlyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZ3Jlc3NFeHBpcmllcztcbiAgfVxuXG4gIGdldFNlbmRBcmdzKG1lbW86IG51bWJlciB8IEJpZ0ludCwgY3JlYXRlZF9hdF90aW1lOiBudW1iZXIsIGFtb3VudDogc3RyaW5nLCBmZWU6IHN0cmluZywgcmVjZWl2ZXI6IHN0cmluZyk6IFNlbmRBcmdzIHtcbiAgICBjb25zdCBzZW5kQXJnczogU2VuZEFyZ3MgPSB7XG4gICAgICBtZW1vOiB7IG1lbW86IG1lbW8gfSxcbiAgICAgIHBheW1lbnQ6IHsgcmVjZWl2ZXJHZXRzOiB7IGU4czogTnVtYmVyKGFtb3VudCkgfSB9LFxuICAgICAgbWF4RmVlOiB7IGU4czogLU51bWJlcihmZWUpIH0sXG4gICAgICB0bzogeyBoYXNoOiBCdWZmZXIuZnJvbShyZWNlaXZlciwgJ2hleCcpIH0sXG4gICAgICBjcmVhdGVkQXRUaW1lOiB7IHRpbWVzdGFtcE5hbm9zOiBOdW1iZXIoY3JlYXRlZF9hdF90aW1lKSB9LFxuICAgIH07XG4gICAgcmV0dXJuIHNlbmRBcmdzO1xuICB9XG5cbiAgYXN5bmMgdG9BcmcoYXJnczogU2VuZEFyZ3MpOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgICBjb25zdCByb290ID0gYXdhaXQgcHJvdG9idWYucGFyc2UocHJvdG9EZWZpbml0aW9uKS5yb290O1xuICAgIGNvbnN0IFNlbmRSZXF1ZXN0TWVzc2FnZSA9IHJvb3QubG9va3VwVHlwZSgnU2VuZFJlcXVlc3QnKTtcbiAgICBjb25zdCBlcnJNc2cgPSBTZW5kUmVxdWVzdE1lc3NhZ2UudmVyaWZ5KGFyZ3MpO1xuICAgIGlmIChlcnJNc2cpIHRocm93IG5ldyBFcnJvcihlcnJNc2cpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBTZW5kUmVxdWVzdE1lc3NhZ2UuY3JlYXRlKGFyZ3MpO1xuICAgIHJldHVybiBTZW5kUmVxdWVzdE1lc3NhZ2UuZW5jb2RlKG1lc3NhZ2UpLmZpbmlzaCgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXBkYXRlKHNlbmRBcmdzOiBTZW5kQXJncywgcHVibGljS2V5SGV4OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBDYW5pc3RlclVwZGF0ZT4ge1xuICAgIGNvbnN0IHByaW5jaXBhbElkID0gdXRpbHMuZ2V0UHJpbmNpcGFsSWRGcm9tUHVibGljS2V5KHB1YmxpY0tleUhleCkudG9VaW50OEFycmF5KCk7XG4gICAgY29uc3Qgc2VuZGVyQmxvYiA9IEJ1ZmZlci5mcm9tKHByaW5jaXBhbElkKTtcbiAgICBjb25zdCBjYW5pc3RlcklkQnVmZmVyID0gQnVmZmVyLmZyb20oTEVER0VSX0NBTklTVEVSX0lEKTtcbiAgICBjb25zdCBhcmdzID0gYXdhaXQgdGhpcy50b0FyZyhzZW5kQXJncyk7XG4gICAgY29uc3QgdXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUgPSB7XG4gICAgICBjYW5pc3Rlcl9pZDogY2FuaXN0ZXJJZEJ1ZmZlcixcbiAgICAgIG1ldGhvZF9uYW1lOiBNZXRob2ROYW1lLlNFTkRfUEIsXG4gICAgICBhcmc6IGFyZ3MsXG4gICAgICBzZW5kZXI6IHNlbmRlckJsb2IsXG4gICAgICBpbmdyZXNzX2V4cGlyeTogMG4sXG4gICAgfTtcbiAgICByZXR1cm4gdXBkYXRlO1xuICB9XG59XG4iXX0=