@bitgo-beta/sdk-coin-vet 0.0.0-semantic-release-managed

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 (102) hide show
  1. package/.eslintignore +5 -0
  2. package/.mocharc.yml +8 -0
  3. package/CHANGELOG.md +170 -0
  4. package/LICENSE +191 -0
  5. package/README.md +30 -0
  6. package/dist/src/index.d.ts +7 -0
  7. package/dist/src/index.d.ts.map +1 -0
  8. package/dist/src/index.js +23 -0
  9. package/dist/src/lib/constants.d.ts +13 -0
  10. package/dist/src/lib/constants.d.ts.map +1 -0
  11. package/dist/src/lib/constants.js +16 -0
  12. package/dist/src/lib/iface.d.ts +34 -0
  13. package/dist/src/lib/iface.d.ts.map +1 -0
  14. package/dist/src/lib/iface.js +3 -0
  15. package/dist/src/lib/index.d.ts +25 -0
  16. package/dist/src/lib/index.d.ts.map +1 -0
  17. package/dist/src/lib/index.js +83 -0
  18. package/dist/src/lib/keyPair.d.ts +26 -0
  19. package/dist/src/lib/keyPair.d.ts.map +1 -0
  20. package/dist/src/lib/keyPair.js +65 -0
  21. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
  22. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
  23. package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
  24. package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
  25. package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
  26. package/dist/src/lib/transaction/burnNftTransaction.js +124 -0
  27. package/dist/src/lib/transaction/claimRewards.d.ts +58 -0
  28. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  29. package/dist/src/lib/transaction/claimRewards.js +242 -0
  30. package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
  31. package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
  32. package/dist/src/lib/transaction/exitDelegation.js +124 -0
  33. package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
  34. package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
  35. package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
  36. package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
  37. package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
  38. package/dist/src/lib/transaction/nftTransaction.js +108 -0
  39. package/dist/src/lib/transaction/stakingTransaction.d.ts +21 -0
  40. package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
  41. package/dist/src/lib/transaction/stakingTransaction.js +136 -0
  42. package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
  43. package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
  44. package/dist/src/lib/transaction/tokenTransaction.js +95 -0
  45. package/dist/src/lib/transaction/transaction.d.ts +106 -0
  46. package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
  47. package/dist/src/lib/transaction/transaction.js +468 -0
  48. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
  49. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  50. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
  51. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +65 -0
  52. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/transactionBuilder/burnNftBuilder.js +130 -0
  54. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
  55. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  56. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +145 -0
  57. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +65 -0
  58. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  59. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +132 -0
  60. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
  61. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  62. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
  63. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
  64. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  65. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
  66. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +72 -0
  67. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  68. package/dist/src/lib/transactionBuilder/stakingBuilder.js +129 -0
  69. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
  70. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  71. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
  72. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +54 -0
  73. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  74. package/dist/src/lib/transactionBuilder/transactionBuilder.js +155 -0
  75. package/dist/src/lib/transactionBuilder/transferBuilder.d.ts +10 -0
  76. package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
  77. package/dist/src/lib/transactionBuilder/transferBuilder.js +45 -0
  78. package/dist/src/lib/transactionBuilderFactory.d.ts +71 -0
  79. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  80. package/dist/src/lib/transactionBuilderFactory.js +155 -0
  81. package/dist/src/lib/types.d.ts +15 -0
  82. package/dist/src/lib/types.d.ts.map +1 -0
  83. package/dist/src/lib/types.js +3 -0
  84. package/dist/src/lib/utils.d.ts +31 -0
  85. package/dist/src/lib/utils.d.ts.map +1 -0
  86. package/dist/src/lib/utils.js +152 -0
  87. package/dist/src/register.d.ts +3 -0
  88. package/dist/src/register.d.ts.map +1 -0
  89. package/dist/src/register.js +19 -0
  90. package/dist/src/tvet.d.ts +20 -0
  91. package/dist/src/tvet.d.ts.map +1 -0
  92. package/dist/src/tvet.js +30 -0
  93. package/dist/src/vet.d.ts +53 -0
  94. package/dist/src/vet.d.ts.map +1 -0
  95. package/dist/src/vet.js +267 -0
  96. package/dist/src/vetNFTCollection.d.ts +18 -0
  97. package/dist/src/vetNFTCollection.d.ts.map +1 -0
  98. package/dist/src/vetNFTCollection.js +52 -0
  99. package/dist/src/vetToken.d.ts +19 -0
  100. package/dist/src/vetToken.d.ts.map +1 -0
  101. package/dist/src/vetToken.js +52 -0
  102. package/package.json +61 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Interface = exports.Utils = exports.Constants = exports.TransactionBuilderFactory = exports.ClaimRewardsBuilder = exports.ExitDelegationBuilder = exports.BurnNftBuilder = exports.NFTTransactionBuilder = exports.StakingBuilder = exports.FlushTokenTransactionBuilder = exports.AddressInitializationBuilder = exports.TransferBuilder = exports.TransactionBuilder = exports.NFTTransaction = exports.ClaimRewardsTransaction = exports.BurnNftTransaction = exports.ExitDelegationTransaction = exports.StakingTransaction = exports.TokenTransaction = exports.FlushTokenTransaction = exports.AddressInitializationTransaction = exports.Transaction = exports.KeyPair = void 0;
37
+ const Constants = __importStar(require("./constants"));
38
+ exports.Constants = Constants;
39
+ const Utils = __importStar(require("./utils"));
40
+ exports.Utils = Utils;
41
+ const Interface = __importStar(require("./iface"));
42
+ exports.Interface = Interface;
43
+ var keyPair_1 = require("./keyPair");
44
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
45
+ var transaction_1 = require("./transaction/transaction");
46
+ Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
47
+ var addressInitializationTransaction_1 = require("./transaction/addressInitializationTransaction");
48
+ Object.defineProperty(exports, "AddressInitializationTransaction", { enumerable: true, get: function () { return addressInitializationTransaction_1.AddressInitializationTransaction; } });
49
+ var flushTokenTransaction_1 = require("./transaction/flushTokenTransaction");
50
+ Object.defineProperty(exports, "FlushTokenTransaction", { enumerable: true, get: function () { return flushTokenTransaction_1.FlushTokenTransaction; } });
51
+ var tokenTransaction_1 = require("./transaction/tokenTransaction");
52
+ Object.defineProperty(exports, "TokenTransaction", { enumerable: true, get: function () { return tokenTransaction_1.TokenTransaction; } });
53
+ var stakingTransaction_1 = require("./transaction/stakingTransaction");
54
+ Object.defineProperty(exports, "StakingTransaction", { enumerable: true, get: function () { return stakingTransaction_1.StakingTransaction; } });
55
+ var exitDelegation_1 = require("./transaction/exitDelegation");
56
+ Object.defineProperty(exports, "ExitDelegationTransaction", { enumerable: true, get: function () { return exitDelegation_1.ExitDelegationTransaction; } });
57
+ var burnNftTransaction_1 = require("./transaction/burnNftTransaction");
58
+ Object.defineProperty(exports, "BurnNftTransaction", { enumerable: true, get: function () { return burnNftTransaction_1.BurnNftTransaction; } });
59
+ var claimRewards_1 = require("./transaction/claimRewards");
60
+ Object.defineProperty(exports, "ClaimRewardsTransaction", { enumerable: true, get: function () { return claimRewards_1.ClaimRewardsTransaction; } });
61
+ var nftTransaction_1 = require("./transaction/nftTransaction");
62
+ Object.defineProperty(exports, "NFTTransaction", { enumerable: true, get: function () { return nftTransaction_1.NFTTransaction; } });
63
+ var transactionBuilder_1 = require("./transactionBuilder/transactionBuilder");
64
+ Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
65
+ var transferBuilder_1 = require("./transactionBuilder/transferBuilder");
66
+ Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
67
+ var addressInitializationBuilder_1 = require("./transactionBuilder/addressInitializationBuilder");
68
+ Object.defineProperty(exports, "AddressInitializationBuilder", { enumerable: true, get: function () { return addressInitializationBuilder_1.AddressInitializationBuilder; } });
69
+ var flushTokenTransactionBuilder_1 = require("./transactionBuilder/flushTokenTransactionBuilder");
70
+ Object.defineProperty(exports, "FlushTokenTransactionBuilder", { enumerable: true, get: function () { return flushTokenTransactionBuilder_1.FlushTokenTransactionBuilder; } });
71
+ var stakingBuilder_1 = require("./transactionBuilder/stakingBuilder");
72
+ Object.defineProperty(exports, "StakingBuilder", { enumerable: true, get: function () { return stakingBuilder_1.StakingBuilder; } });
73
+ var nftTransactionBuilder_1 = require("./transactionBuilder/nftTransactionBuilder");
74
+ Object.defineProperty(exports, "NFTTransactionBuilder", { enumerable: true, get: function () { return nftTransactionBuilder_1.NFTTransactionBuilder; } });
75
+ var burnNftBuilder_1 = require("./transactionBuilder/burnNftBuilder");
76
+ Object.defineProperty(exports, "BurnNftBuilder", { enumerable: true, get: function () { return burnNftBuilder_1.BurnNftBuilder; } });
77
+ var exitDelegationBuilder_1 = require("./transactionBuilder/exitDelegationBuilder");
78
+ Object.defineProperty(exports, "ExitDelegationBuilder", { enumerable: true, get: function () { return exitDelegationBuilder_1.ExitDelegationBuilder; } });
79
+ var claimRewardsBuilder_1 = require("./transactionBuilder/claimRewardsBuilder");
80
+ Object.defineProperty(exports, "ClaimRewardsBuilder", { enumerable: true, get: function () { return claimRewardsBuilder_1.ClaimRewardsBuilder; } });
81
+ var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
82
+ Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQXdCaEMsOEJBQVM7QUF2QmxCLCtDQUFpQztBQXVCYixzQkFBSztBQXRCekIsbURBQXFDO0FBc0JWLDhCQUFTO0FBcEJwQyxxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLHlEQUF3RDtBQUEvQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsbUdBQWtHO0FBQXpGLG9KQUFBLGdDQUFnQyxPQUFBO0FBQ3pDLDZFQUE0RTtBQUFuRSw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QixtRUFBa0U7QUFBekQsb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsdUVBQXNFO0FBQTdELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLCtEQUF5RTtBQUFoRSwySEFBQSx5QkFBeUIsT0FBQTtBQUNsQyx1RUFBc0U7QUFBN0Qsd0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsMkRBQXFFO0FBQTVELHVIQUFBLHVCQUF1QixPQUFBO0FBQ2hDLCtEQUE4RDtBQUFyRCxnSEFBQSxjQUFjLE9BQUE7QUFDdkIsOEVBQTZFO0FBQXBFLHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHdFQUF1RTtBQUE5RCxrSEFBQSxlQUFlLE9BQUE7QUFDeEIsa0dBQWlHO0FBQXhGLDRJQUFBLDRCQUE0QixPQUFBO0FBQ3JDLGtHQUFpRztBQUF4Riw0SUFBQSw0QkFBNEIsT0FBQTtBQUNyQyxzRUFBcUU7QUFBNUQsZ0hBQUEsY0FBYyxPQUFBO0FBQ3ZCLG9GQUFtRjtBQUExRSw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QixzRUFBcUU7QUFBNUQsZ0hBQUEsY0FBYyxPQUFBO0FBQ3ZCLG9GQUFtRjtBQUExRSw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QixnRkFBK0U7QUFBdEUsMEhBQUEsbUJBQW1CLE9BQUE7QUFDNUIseUVBQXdFO0FBQS9ELHNJQUFBLHlCQUF5QixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQ29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBBZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vYWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgRmx1c2hUb2tlblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9mbHVzaFRva2VuVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdG9rZW5UcmFuc2FjdGlvbic7XG5leHBvcnQgeyBTdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3N0YWtpbmdUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9leGl0RGVsZWdhdGlvbic7XG5leHBvcnQgeyBCdXJuTmZ0VHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL2J1cm5OZnRUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vY2xhaW1SZXdhcmRzJztcbmV4cG9ydCB7IE5GVFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9uZnRUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNmZXJCdWlsZGVyJztcbmV4cG9ydCB7IEFkZHJlc3NJbml0aWFsaXphdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9hZGRyZXNzSW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmV4cG9ydCB7IEZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9mbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFN0YWtpbmdCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2luZ0J1aWxkZXInO1xuZXhwb3J0IHsgTkZUVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvbmZ0VHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IEJ1cm5OZnRCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvYnVybk5mdEJ1aWxkZXInO1xuZXhwb3J0IHsgRXhpdERlbGVnYXRpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvZXhpdERlbGVnYXRpb25CdWlsZGVyJztcbmV4cG9ydCB7IENsYWltUmV3YXJkc0J1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9jbGFpbVJld2FyZHNCdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0IHsgQ29uc3RhbnRzLCBVdGlscywgSW50ZXJmYWNlIH07XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { DefaultKeys, KeyPairOptions, Secp256k1ExtendedKeyPair } from '@bitgo-beta/sdk-core';
2
+ /**
3
+ * Ethereum keys and address management.
4
+ */
5
+ export declare class KeyPair extends Secp256k1ExtendedKeyPair {
6
+ /**
7
+ * Public constructor. By default, creates a key pair with a random master seed.
8
+ *
9
+ * @param { KeyPairOptions } source Either a master seed, a private key (extended or raw), or a public key
10
+ * (extended, compressed, or uncompressed)
11
+ */
12
+ constructor(source?: KeyPairOptions);
13
+ /**
14
+ * Ethereum default keys format is raw private and uncompressed public key
15
+ *
16
+ * @returns { DefaultKeys } The keys in the protocol default key format
17
+ */
18
+ getKeys(): DefaultKeys;
19
+ /**
20
+ * Get an Ethereum public address
21
+ *
22
+ * @returns {string} The address derived from the public key
23
+ */
24
+ getAddress(): string;
25
+ }
26
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAIX,cAAc,EACd,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAM9B;;GAEG;AACH,qBAAa,OAAQ,SAAQ,wBAAwB;IACnD;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,cAAc;IAoBnC;;;;OAIG;IACH,OAAO,IAAI,WAAW;IAStB;;;;OAIG;IACH,UAAU,IAAI,MAAM;CAIrB"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyPair = void 0;
4
+ const ethereumjs_util_1 = require("ethereumjs-util");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ const crypto_1 = require("crypto");
7
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
8
+ const DEFAULT_SEED_SIZE_BYTES = 64;
9
+ /**
10
+ * Ethereum keys and address management.
11
+ */
12
+ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
13
+ /**
14
+ * Public constructor. By default, creates a key pair with a random master seed.
15
+ *
16
+ * @param { KeyPairOptions } source Either a master seed, a private key (extended or raw), or a public key
17
+ * (extended, compressed, or uncompressed)
18
+ */
19
+ constructor(source) {
20
+ super(source);
21
+ if (!source) {
22
+ const seed = (0, crypto_1.randomBytes)(DEFAULT_SEED_SIZE_BYTES);
23
+ this.hdNode = secp256k1_1.bip32.fromSeed(seed);
24
+ }
25
+ else if ((0, sdk_core_1.isSeed)(source)) {
26
+ this.hdNode = secp256k1_1.bip32.fromSeed(source.seed);
27
+ }
28
+ else if ((0, sdk_core_1.isPrivateKey)(source)) {
29
+ this.recordKeysFromPrivateKey(source.prv);
30
+ }
31
+ else if ((0, sdk_core_1.isPublicKey)(source)) {
32
+ this.recordKeysFromPublicKey(source.pub);
33
+ }
34
+ else {
35
+ throw new Error('Invalid key pair options');
36
+ }
37
+ if (this.hdNode) {
38
+ this.keyPair = sdk_core_1.Secp256k1ExtendedKeyPair.toKeyPair(this.hdNode);
39
+ }
40
+ }
41
+ /**
42
+ * Ethereum default keys format is raw private and uncompressed public key
43
+ *
44
+ * @returns { DefaultKeys } The keys in the protocol default key format
45
+ */
46
+ getKeys() {
47
+ return {
48
+ pub: this.getPublicKey({ compressed: this.hdNode !== undefined })
49
+ .toString('hex')
50
+ .toUpperCase(),
51
+ prv: this.getPrivateKey()?.toString('hex').toUpperCase(),
52
+ };
53
+ }
54
+ /**
55
+ * Get an Ethereum public address
56
+ *
57
+ * @returns {string} The address derived from the public key
58
+ */
59
+ getAddress() {
60
+ const publicKey = Buffer.from(this.getKeys().pub, 'hex'); // first two characters identify a public key
61
+ return (0, ethereumjs_util_1.addHexPrefix)((0, ethereumjs_util_1.pubToAddress)(publicKey, true).toString('hex'));
62
+ }
63
+ }
64
+ exports.KeyPair = KeyPair;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBNkQ7QUFDN0QsbURBTzhCO0FBQzlCLG1DQUFxQztBQUNyQyxxREFBOEM7QUFFOUMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFFbkM7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSxtQ0FBd0I7SUFDbkQ7Ozs7O09BS0c7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVcsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBQSxpQkFBTSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksSUFBQSx1QkFBWSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFBLHNCQUFXLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLG1DQUF3QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTztRQUNMLE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2lCQUM5RCxRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUNmLFdBQVcsRUFBRTtZQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUU7U0FDekQsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVTtRQUNSLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLDZDQUE2QztRQUN2RyxPQUFPLElBQUEsOEJBQVksRUFBQyxJQUFBLDhCQUFZLEVBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRjtBQWxERCwwQkFrREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRIZXhQcmVmaXgsIHB1YlRvQWRkcmVzcyB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQge1xuICBEZWZhdWx0S2V5cyxcbiAgaXNQcml2YXRlS2V5LFxuICBpc1B1YmxpY0tleSxcbiAgaXNTZWVkLFxuICBLZXlQYWlyT3B0aW9ucyxcbiAgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5cbmNvbnN0IERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTID0gNjQ7XG5cbi8qKlxuICogRXRoZXJldW0ga2V5cyBhbmQgYWRkcmVzcyBtYW5hZ2VtZW50LlxuICovXG5leHBvcnQgY2xhc3MgS2V5UGFpciBleHRlbmRzIFNlY3AyNTZrMUV4dGVuZGVkS2V5UGFpciB7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSAoZXh0ZW5kZWQgb3IgcmF3KSwgb3IgYSBwdWJsaWMga2V5XG4gICAqICAgICAoZXh0ZW5kZWQsIGNvbXByZXNzZWQsIG9yIHVuY29tcHJlc3NlZClcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgc3VwZXIoc291cmNlKTtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgY29uc3Qgc2VlZCA9IHJhbmRvbUJ5dGVzKERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTKTtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbVNlZWQoc2VlZCk7XG4gICAgfSBlbHNlIGlmIChpc1NlZWQoc291cmNlKSkge1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tU2VlZChzb3VyY2Uuc2VlZCk7XG4gICAgfSBlbHNlIGlmIChpc1ByaXZhdGVLZXkoc291cmNlKSkge1xuICAgICAgdGhpcy5yZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkoc291cmNlLnBydik7XG4gICAgfSBlbHNlIGlmIChpc1B1YmxpY0tleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHVibGljS2V5KHNvdXJjZS5wdWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhkTm9kZSkge1xuICAgICAgdGhpcy5rZXlQYWlyID0gU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLnRvS2V5UGFpcih0aGlzLmhkTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV0aGVyZXVtIGRlZmF1bHQga2V5cyBmb3JtYXQgaXMgcmF3IHByaXZhdGUgYW5kIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5XG4gICAqXG4gICAqIEByZXR1cm5zIHsgRGVmYXVsdEtleXMgfSBUaGUga2V5cyBpbiB0aGUgcHJvdG9jb2wgZGVmYXVsdCBrZXkgZm9ybWF0XG4gICAqL1xuICBnZXRLZXlzKCk6IERlZmF1bHRLZXlzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHViOiB0aGlzLmdldFB1YmxpY0tleSh7IGNvbXByZXNzZWQ6IHRoaXMuaGROb2RlICE9PSB1bmRlZmluZWQgfSlcbiAgICAgICAgLnRvU3RyaW5nKCdoZXgnKVxuICAgICAgICAudG9VcHBlckNhc2UoKSxcbiAgICAgIHBydjogdGhpcy5nZXRQcml2YXRlS2V5KCk/LnRvU3RyaW5nKCdoZXgnKS50b1VwcGVyQ2FzZSgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIEV0aGVyZXVtIHB1YmxpYyBhZGRyZXNzXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleVxuICAgKi9cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IEJ1ZmZlci5mcm9tKHRoaXMuZ2V0S2V5cygpLnB1YiwgJ2hleCcpOyAvLyBmaXJzdCB0d28gY2hhcmFjdGVycyBpZGVudGlmeSBhIHB1YmxpYyBrZXlcbiAgICByZXR1cm4gYWRkSGV4UHJlZml4KHB1YlRvQWRkcmVzcyhwdWJsaWNLZXksIHRydWUpLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { Transaction as VetTransaction } from '@vechain/sdk-core';
3
+ import { Transaction } from './transaction';
4
+ import { VetTransactionData } from '../iface';
5
+ export declare class AddressInitializationTransaction extends Transaction {
6
+ private _baseAddress;
7
+ private _feeAddress;
8
+ private _salt;
9
+ private _initCode;
10
+ private _deployedAddress;
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ get baseAddress(): string;
13
+ set baseAddress(address: string);
14
+ get feeAddress(): string;
15
+ set feeAddress(address: string);
16
+ get salt(): string;
17
+ set salt(salt: string);
18
+ get initCode(): string;
19
+ set initCode(initCode: string);
20
+ get deployedAddress(): string;
21
+ set deployedAddress(address: string);
22
+ /** @inheritdoc */
23
+ build(): Promise<void>;
24
+ /** @inheritdoc */
25
+ buildClauses(): void;
26
+ /** @inheritdoc */
27
+ toJson(): VetTransactionData;
28
+ /** @inheritdoc */
29
+ fromDeserializedSignedTransaction(signedTx: VetTransaction): void;
30
+ }
31
+ //# sourceMappingURL=addressInitializationTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addressInitializationTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/addressInitializationTransaction.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EAAE,WAAW,IAAI,cAAc,EAAa,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,qBAAa,gCAAiC,SAAQ,WAAW;IAC/D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,EAE9B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAE7B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAEpB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAE5B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAElC;IAED,kBAAkB;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B,kBAAkB;IAClB,YAAY,IAAI,IAAI;IAUpB,kBAAkB;IAClB,MAAM,IAAI,kBAAkB;IAmB5B,kBAAkB;IAClB,iCAAiC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CAmDlE"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AddressInitializationTransaction = void 0;
40
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
41
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
42
+ const ethUtil = __importStar(require("ethereumjs-util"));
43
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
44
+ const sdk_core_2 = require("@vechain/sdk-core");
45
+ const transaction_1 = require("./transaction");
46
+ class AddressInitializationTransaction extends transaction_1.Transaction {
47
+ constructor(_coinConfig) {
48
+ super(_coinConfig);
49
+ this._type = sdk_core_1.TransactionType.AddressInitialization;
50
+ }
51
+ get baseAddress() {
52
+ return this._baseAddress;
53
+ }
54
+ set baseAddress(address) {
55
+ this._baseAddress = address;
56
+ }
57
+ get feeAddress() {
58
+ return this._feeAddress;
59
+ }
60
+ set feeAddress(address) {
61
+ this._feeAddress = address;
62
+ }
63
+ get salt() {
64
+ return this._salt;
65
+ }
66
+ set salt(salt) {
67
+ this._salt = salt;
68
+ }
69
+ get initCode() {
70
+ return this._initCode;
71
+ }
72
+ set initCode(initCode) {
73
+ this._initCode = initCode;
74
+ }
75
+ get deployedAddress() {
76
+ return this._deployedAddress;
77
+ }
78
+ set deployedAddress(address) {
79
+ this._deployedAddress = address;
80
+ }
81
+ /** @inheritdoc */
82
+ async build() {
83
+ super.build();
84
+ if (this._salt && this._initCode) {
85
+ const saltBuffer = ethUtil.setLengthLeft(ethUtil.toBuffer(this._salt), 32);
86
+ const { createForwarderParams, createForwarderTypes } = (0, abstract_eth_1.getCreateForwarderParamsAndTypes)(this._baseAddress, saltBuffer, this._feeAddress);
87
+ // Hash the wallet base address and fee address if present with the given salt, so the address directly relies on the base address and fee address
88
+ const calculationSalt = ethUtil.bufferToHex(ethereumjs_abi_1.default.soliditySHA3(createForwarderTypes, createForwarderParams));
89
+ this.deployedAddress = (0, abstract_eth_1.calculateForwarderV1Address)(this._contract, calculationSalt, this._initCode);
90
+ }
91
+ }
92
+ /** @inheritdoc */
93
+ buildClauses() {
94
+ this._clauses = [
95
+ {
96
+ to: this._contract,
97
+ value: '0x0',
98
+ data: this._transactionData,
99
+ },
100
+ ];
101
+ }
102
+ /** @inheritdoc */
103
+ toJson() {
104
+ const json = {
105
+ id: this.id,
106
+ chainTag: this.chainTag,
107
+ blockRef: this.blockRef,
108
+ expiration: this.expiration,
109
+ gasPriceCoef: this.gasPriceCoef,
110
+ gas: this.gas,
111
+ dependsOn: this.dependsOn,
112
+ nonce: this.nonce,
113
+ data: this.transactionData,
114
+ value: '0',
115
+ sender: this.sender,
116
+ to: this.contract,
117
+ deployedAddress: this.deployedAddress,
118
+ };
119
+ return json;
120
+ }
121
+ /** @inheritdoc */
122
+ fromDeserializedSignedTransaction(signedTx) {
123
+ try {
124
+ if (!signedTx || !signedTx.body) {
125
+ throw new sdk_core_1.InvalidTransactionError('Invalid transaction: missing transaction body');
126
+ }
127
+ // Store the raw transaction
128
+ this.rawTransaction = signedTx;
129
+ // Set transaction body properties
130
+ const body = signedTx.body;
131
+ this.chainTag = typeof body.chainTag === 'number' ? body.chainTag : 0;
132
+ this.blockRef = body.blockRef || '0x0';
133
+ this.expiration = typeof body.expiration === 'number' ? body.expiration : 64;
134
+ this.clauses = body.clauses || [];
135
+ this.gasPriceCoef = typeof body.gasPriceCoef === 'number' ? body.gasPriceCoef : 128;
136
+ this.gas = typeof body.gas === 'number' ? body.gas : Number(body.gas) || 0;
137
+ this.dependsOn = body.dependsOn || null;
138
+ this.nonce = String(body.nonce);
139
+ // Set data from clauses
140
+ this.contract = body.clauses[0]?.to || '0x0';
141
+ this.transactionData = body.clauses[0]?.data || '0x0';
142
+ this.type = sdk_core_1.TransactionType.AddressInitialization;
143
+ const { baseAddress, addressCreationSalt, feeAddress } = (0, abstract_eth_1.decodeForwarderCreationData)(this.transactionData);
144
+ this.baseAddress = baseAddress;
145
+ this.salt = addressCreationSalt;
146
+ this.feeAddress = feeAddress;
147
+ const forwarderImplementationAddress = this._coinConfig.network
148
+ .forwarderImplementationAddress;
149
+ this.initCode = (0, abstract_eth_1.getProxyInitcode)(forwarderImplementationAddress);
150
+ // Set sender address
151
+ if (signedTx.origin) {
152
+ this.sender = signedTx.origin.toString().toLowerCase();
153
+ }
154
+ // Set signatures if present
155
+ if (signedTx.signature) {
156
+ // First signature is sender's signature
157
+ this.senderSignature = Buffer.from(signedTx.signature.slice(0, sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
158
+ // If there's additional signature data, it's the fee payer's signature
159
+ if (signedTx.signature.length > sdk_core_2.Secp256k1.SIGNATURE_LENGTH) {
160
+ this.feePayerSignature = Buffer.from(signedTx.signature.slice(sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
161
+ }
162
+ }
163
+ }
164
+ catch (e) {
165
+ throw new sdk_core_1.InvalidTransactionError(`Failed to deserialize transaction: ${e.message}`);
166
+ }
167
+ }
168
+ }
169
+ exports.AddressInitializationTransaction = AddressInitializationTransaction;
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0luaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2FkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFnRjtBQUNoRiwyREFLa0M7QUFFbEMseURBQTJDO0FBQzNDLG9FQUF5QztBQUN6QyxnREFBNkU7QUFDN0UsK0NBQTRDO0FBRzVDLE1BQWEsZ0NBQWlDLFNBQVEseUJBQVc7SUFPL0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLHFCQUFxQixDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE9BQWU7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsT0FBZTtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQWdCO1FB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ZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQge1xuICBnZXRDcmVhdGVGb3J3YXJkZXJQYXJhbXNBbmRUeXBlcyxcbiAgY2FsY3VsYXRlRm9yd2FyZGVyVjFBZGRyZXNzLFxuICBkZWNvZGVGb3J3YXJkZXJDcmVhdGlvbkRhdGEsXG4gIGdldFByb3h5SW5pdGNvZGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBFdGhlcmV1bU5ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCAqIGFzIGV0aFV0aWwgZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCBFdGhlcmV1bUFiaSBmcm9tICdldGhlcmV1bWpzLWFiaSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBWZXRUcmFuc2FjdGlvbiwgU2VjcDI1NmsxIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFZldFRyYW5zYWN0aW9uRGF0YSB9IGZyb20gJy4uL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9iYXNlQWRkcmVzczogc3RyaW5nO1xuICBwcml2YXRlIF9mZWVBZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NhbHQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfaW5pdENvZGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfZGVwbG95ZWRBZGRyZXNzOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgZ2V0IGJhc2VBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jhc2VBZGRyZXNzO1xuICB9XG5cbiAgc2V0IGJhc2VBZGRyZXNzKGFkZHJlc3M6IHN0cmluZykge1xuICAgIHRoaXMuX2Jhc2VBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIGdldCBmZWVBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZlZUFkZHJlc3M7XG4gIH1cblxuICBzZXQgZmVlQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9mZWVBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIGdldCBzYWx0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NhbHQ7XG4gIH1cblxuICBzZXQgc2FsdChzYWx0OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zYWx0ID0gc2FsdDtcbiAgfVxuXG4gIGdldCBpbml0Q29kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pbml0Q29kZTtcbiAgfVxuXG4gIHNldCBpbml0Q29kZShpbml0Q29kZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faW5pdENvZGUgPSBpbml0Q29kZTtcbiAgfVxuXG4gIGdldCBkZXBsb3llZEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVwbG95ZWRBZGRyZXNzO1xuICB9XG5cbiAgc2V0IGRlcGxveWVkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZXBsb3llZEFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmJ1aWxkKCk7XG4gICAgaWYgKHRoaXMuX3NhbHQgJiYgdGhpcy5faW5pdENvZGUpIHtcbiAgICAgIGNvbnN0IHNhbHRCdWZmZXIgPSBldGhVdGlsLnNldExlbmd0aExlZnQoZXRoVXRpbC50b0J1ZmZlcih0aGlzLl9zYWx0KSwgMzIpO1xuXG4gICAgICBjb25zdCB7IGNyZWF0ZUZvcndhcmRlclBhcmFtcywgY3JlYXRlRm9yd2FyZGVyVHlwZXMgfSA9IGdldENyZWF0ZUZvcndhcmRlclBhcmFtc0FuZFR5cGVzKFxuICAgICAgICB0aGlzLl9iYXNlQWRkcmVzcyxcbiAgICAgICAgc2FsdEJ1ZmZlcixcbiAgICAgICAgdGhpcy5fZmVlQWRkcmVzc1xuICAgICAgKTtcblxuICAgICAgLy8gSGFzaCB0aGUgd2FsbGV0IGJhc2UgYWRkcmVzcyBhbmQgZmVlIGFkZHJlc3MgaWYgcHJlc2VudCB3aXRoIHRoZSBnaXZlbiBzYWx0LCBzbyB0aGUgYWRkcmVzcyBkaXJlY3RseSByZWxpZXMgb24gdGhlIGJhc2UgYWRkcmVzcyBhbmQgZmVlIGFkZHJlc3NcbiAgICAgIGNvbnN0IGNhbGN1bGF0aW9uU2FsdCA9IGV0aFV0aWwuYnVmZmVyVG9IZXgoXG4gICAgICAgIEV0aGVyZXVtQWJpLnNvbGlkaXR5U0hBMyhjcmVhdGVGb3J3YXJkZXJUeXBlcywgY3JlYXRlRm9yd2FyZGVyUGFyYW1zKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGVwbG95ZWRBZGRyZXNzID0gY2FsY3VsYXRlRm9yd2FyZGVyVjFBZGRyZXNzKHRoaXMuX2NvbnRyYWN0LCBjYWxjdWxhdGlvblNhbHQsIHRoaXMuX2luaXRDb2RlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYnVpbGRDbGF1c2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2NsYXVzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHRvOiB0aGlzLl9jb250cmFjdCxcbiAgICAgICAgdmFsdWU6ICcweDAnLFxuICAgICAgICBkYXRhOiB0aGlzLl90cmFuc2FjdGlvbkRhdGEsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFZldFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgY29uc3QganNvbjogVmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBjaGFpblRhZzogdGhpcy5jaGFpblRhZyxcbiAgICAgIGJsb2NrUmVmOiB0aGlzLmJsb2NrUmVmLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5leHBpcmF0aW9uLFxuICAgICAgZ2FzUHJpY2VDb2VmOiB0aGlzLmdhc1ByaWNlQ29lZixcbiAgICAgIGdhczogdGhpcy5nYXMsXG4gICAgICBkZXBlbmRzT246IHRoaXMuZGVwZW5kc09uLFxuICAgICAgbm9uY2U6IHRoaXMubm9uY2UsXG4gICAgICBkYXRhOiB0aGlzLnRyYW5zYWN0aW9uRGF0YSxcbiAgICAgIHZhbHVlOiAnMCcsXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgdG86IHRoaXMuY29udHJhY3QsXG4gICAgICBkZXBsb3llZEFkZHJlc3M6IHRoaXMuZGVwbG95ZWRBZGRyZXNzLFxuICAgIH07XG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4OiBWZXRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXNpZ25lZFR4IHx8ICFzaWduZWRUeC5ib2R5KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0cmFuc2FjdGlvbiBib2R5Jyk7XG4gICAgICB9XG5cbiAgICAgIC8vIFN0b3JlIHRoZSByYXcgdHJhbnNhY3Rpb25cbiAgICAgIHRoaXMucmF3VHJhbnNhY3Rpb24gPSBzaWduZWRUeDtcblxuICAgICAgLy8gU2V0IHRyYW5zYWN0aW9uIGJvZHkgcHJvcGVydGllc1xuICAgICAgY29uc3QgYm9keSA9IHNpZ25lZFR4LmJvZHk7XG4gICAgICB0aGlzLmNoYWluVGFnID0gdHlwZW9mIGJvZHkuY2hhaW5UYWcgPT09ICdudW1iZXInID8gYm9keS5jaGFpblRhZyA6IDA7XG4gICAgICB0aGlzLmJsb2NrUmVmID0gYm9keS5ibG9ja1JlZiB8fCAnMHgwJztcbiAgICAgIHRoaXMuZXhwaXJhdGlvbiA9IHR5cGVvZiBib2R5LmV4cGlyYXRpb24gPT09ICdudW1iZXInID8gYm9keS5leHBpcmF0aW9uIDogNjQ7XG4gICAgICB0aGlzLmNsYXVzZXMgPSBib2R5LmNsYXVzZXMgfHwgW107XG4gICAgICB0aGlzLmdhc1ByaWNlQ29lZiA9IHR5cGVvZiBib2R5Lmdhc1ByaWNlQ29lZiA9PT0gJ251bWJlcicgPyBib2R5Lmdhc1ByaWNlQ29lZiA6IDEyODtcbiAgICAgIHRoaXMuZ2FzID0gdHlwZW9mIGJvZHkuZ2FzID09PSAnbnVtYmVyJyA/IGJvZHkuZ2FzIDogTnVtYmVyKGJvZHkuZ2FzKSB8fCAwO1xuICAgICAgdGhpcy5kZXBlbmRzT24gPSBib2R5LmRlcGVuZHNPbiB8fCBudWxsO1xuICAgICAgdGhpcy5ub25jZSA9IFN0cmluZyhib2R5Lm5vbmNlKTtcbiAgICAgIC8vIFNldCBkYXRhIGZyb20gY2xhdXNlc1xuICAgICAgdGhpcy5jb250cmFjdCA9IGJvZHkuY2xhdXNlc1swXT8udG8gfHwgJzB4MCc7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRGF0YSA9IGJvZHkuY2xhdXNlc1swXT8uZGF0YSB8fCAnMHgwJztcbiAgICAgIHRoaXMudHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb247XG4gICAgICBjb25zdCB7IGJhc2VBZGRyZXNzLCBhZGRyZXNzQ3JlYXRpb25TYWx0LCBmZWVBZGRyZXNzIH0gPSBkZWNvZGVGb3J3YXJkZXJDcmVhdGlvbkRhdGEodGhpcy50cmFuc2FjdGlvbkRhdGEpO1xuXG4gICAgICB0aGlzLmJhc2VBZGRyZXNzID0gYmFzZUFkZHJlc3MgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5zYWx0ID0gYWRkcmVzc0NyZWF0aW9uU2FsdCBhcyBzdHJpbmc7XG4gICAgICB0aGlzLmZlZUFkZHJlc3MgPSBmZWVBZGRyZXNzIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGZvcndhcmRlckltcGxlbWVudGF0aW9uQWRkcmVzcyA9ICh0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKVxuICAgICAgICAuZm9yd2FyZGVySW1wbGVtZW50YXRpb25BZGRyZXNzIGFzIHN0cmluZztcbiAgICAgIHRoaXMuaW5pdENvZGUgPSBnZXRQcm94eUluaXRjb2RlKGZvcndhcmRlckltcGxlbWVudGF0aW9uQWRkcmVzcyk7XG5cbiAgICAgIC8vIFNldCBzZW5kZXIgYWRkcmVzc1xuICAgICAgaWYgKHNpZ25lZFR4Lm9yaWdpbikge1xuICAgICAgICB0aGlzLnNlbmRlciA9IHNpZ25lZFR4Lm9yaWdpbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCBzaWduYXR1cmVzIGlmIHByZXNlbnRcbiAgICAgIGlmIChzaWduZWRUeC5zaWduYXR1cmUpIHtcbiAgICAgICAgLy8gRmlyc3Qgc2lnbmF0dXJlIGlzIHNlbmRlcidzIHNpZ25hdHVyZVxuICAgICAgICB0aGlzLnNlbmRlclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNpZ25lZFR4LnNpZ25hdHVyZS5zbGljZSgwLCBTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkpO1xuXG4gICAgICAgIC8vIElmIHRoZXJlJ3MgYWRkaXRpb25hbCBzaWduYXR1cmUgZGF0YSwgaXQncyB0aGUgZmVlIHBheWVyJ3Mgc2lnbmF0dXJlXG4gICAgICAgIGlmIChzaWduZWRUeC5zaWduYXR1cmUubGVuZ3RoID4gU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpIHtcbiAgICAgICAgICB0aGlzLmZlZVBheWVyU2lnbmF0dXJlID0gQnVmZmVyLmZyb20oc2lnbmVkVHguc2lnbmF0dXJlLnNsaWNlKFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEZhaWxlZCB0byBkZXNlcmlhbGl6ZSB0cmFuc2FjdGlvbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { Transaction as VetTransaction } from '@vechain/sdk-core';
3
+ import { Transaction } from './transaction';
4
+ import { VetTransactionData } from '../iface';
5
+ export declare class BurnNftTransaction extends Transaction {
6
+ private _tokenId;
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ get tokenId(): string;
9
+ set tokenId(id: string);
10
+ /** @inheritdoc */
11
+ build(): Promise<void>;
12
+ /** @inheritdoc */
13
+ buildClauses(): void;
14
+ /**
15
+ * Generates the transaction data for burning NFT by encoding the burn method call.
16
+ *
17
+ * @private
18
+ * @returns {string} The encoded transaction data as a hex string
19
+ */
20
+ private getBurnNftData;
21
+ /** @inheritdoc */
22
+ toJson(): VetTransactionData;
23
+ /** @inheritdoc */
24
+ fromDeserializedSignedTransaction(signedTx: VetTransaction): void;
25
+ }
26
+ //# sourceMappingURL=burnNftTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"burnNftTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/burnNftTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,IAAI,cAAc,EAAa,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAK9C,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,EAAE,EAAE,MAAM,EAErB;IAED,kBAAkB;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,kBAAkB;IAClB,YAAY,IAAI,IAAI;IAcpB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAWtB,kBAAkB;IAClB,MAAM,IAAI,kBAAkB;IAkB5B,kBAAkB;IAClB,iCAAiC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CAmDlE"}
@@ -0,0 +1,124 @@
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.BurnNftTransaction = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const sdk_core_2 = require("@vechain/sdk-core");
9
+ const transaction_1 = require("./transaction");
10
+ const constants_1 = require("../constants");
11
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
12
+ const ethereumjs_util_1 = require("ethereumjs-util");
13
+ class BurnNftTransaction extends transaction_1.Transaction {
14
+ constructor(_coinConfig) {
15
+ super(_coinConfig);
16
+ this._type = sdk_core_1.TransactionType.StakingWithdraw;
17
+ }
18
+ get tokenId() {
19
+ return this._tokenId;
20
+ }
21
+ set tokenId(id) {
22
+ this._tokenId = id;
23
+ }
24
+ /** @inheritdoc */
25
+ async build() {
26
+ this.buildClauses();
27
+ await this.buildRawTransaction();
28
+ this.generateTxnIdAndSetSender();
29
+ this.loadInputsAndOutputs();
30
+ }
31
+ /** @inheritdoc */
32
+ buildClauses() {
33
+ if (!this._contract || !this._tokenId) {
34
+ throw new sdk_core_1.InvalidTransactionError('Missing required burn NFT parameters');
35
+ }
36
+ this._clauses = [
37
+ {
38
+ to: this._contract,
39
+ value: '0x0',
40
+ data: this._transactionData || this.getBurnNftData(),
41
+ },
42
+ ];
43
+ }
44
+ /**
45
+ * Generates the transaction data for burning NFT by encoding the burn method call.
46
+ *
47
+ * @private
48
+ * @returns {string} The encoded transaction data as a hex string
49
+ */
50
+ getBurnNftData() {
51
+ const methodName = 'burn';
52
+ const types = ['uint256'];
53
+ const params = [this._tokenId];
54
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
55
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
56
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
57
+ }
58
+ /** @inheritdoc */
59
+ toJson() {
60
+ const json = {
61
+ id: this.id,
62
+ chainTag: this.chainTag,
63
+ blockRef: this.blockRef,
64
+ expiration: this.expiration,
65
+ gasPriceCoef: this.gasPriceCoef,
66
+ gas: this.gas,
67
+ dependsOn: this.dependsOn,
68
+ nonce: this.nonce,
69
+ data: this.transactionData || this.getBurnNftData(),
70
+ value: '0',
71
+ sender: this.sender,
72
+ to: this.contract,
73
+ };
74
+ return json;
75
+ }
76
+ /** @inheritdoc */
77
+ fromDeserializedSignedTransaction(signedTx) {
78
+ try {
79
+ if (!signedTx || !signedTx.body) {
80
+ throw new sdk_core_1.InvalidTransactionError('Invalid transaction: missing transaction body');
81
+ }
82
+ // Store the raw transaction
83
+ this.rawTransaction = signedTx;
84
+ // Set transaction body properties
85
+ const body = signedTx.body;
86
+ this.chainTag = typeof body.chainTag === 'number' ? body.chainTag : 0;
87
+ this.blockRef = body.blockRef || '0x0';
88
+ this.expiration = typeof body.expiration === 'number' ? body.expiration : 64;
89
+ this.clauses = body.clauses || [];
90
+ this.gasPriceCoef = typeof body.gasPriceCoef === 'number' ? body.gasPriceCoef : 128;
91
+ this.gas = typeof body.gas === 'number' ? body.gas : Number(body.gas) || 0;
92
+ this.dependsOn = body.dependsOn || null;
93
+ this.nonce = String(body.nonce);
94
+ // Set data from clauses
95
+ this.contract = body.clauses[0]?.to || '0x0';
96
+ this.transactionData = body.clauses[0]?.data || '0x0';
97
+ this.type = sdk_core_1.TransactionType.StakingWithdraw;
98
+ // Extract tokenId from transaction data
99
+ if (this.transactionData.startsWith(constants_1.BURN_NFT_METHOD_ID)) {
100
+ const tokenIdHex = this.transactionData.slice(constants_1.BURN_NFT_METHOD_ID.length);
101
+ // Convert hex to decimal
102
+ this.tokenId = parseInt(tokenIdHex, 16).toString();
103
+ }
104
+ // Set sender address
105
+ if (signedTx.signature && signedTx.origin) {
106
+ this.sender = signedTx.origin.toString().toLowerCase();
107
+ }
108
+ // Set signatures if present
109
+ if (signedTx.signature) {
110
+ // First signature is sender's signature
111
+ this.senderSignature = Buffer.from(signedTx.signature.slice(0, sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
112
+ // If there's additional signature data, it's the fee payer's signature
113
+ if (signedTx.signature.length > sdk_core_2.Secp256k1.SIGNATURE_LENGTH) {
114
+ this.feePayerSignature = Buffer.from(signedTx.signature.slice(sdk_core_2.Secp256k1.SIGNATURE_LENGTH));
115
+ }
116
+ }
117
+ }
118
+ catch (e) {
119
+ throw new sdk_core_1.InvalidTransactionError(`Failed to deserialize transaction: ${e.message}`);
120
+ }
121
+ }
122
+ }
123
+ exports.BurnNftTransaction = BurnNftTransaction;
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVybk5mdFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbi9idXJuTmZ0VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQWdGO0FBRWhGLGdEQUE2RTtBQUM3RSwrQ0FBNEM7QUFFNUMsNENBQWtEO0FBQ2xELG9FQUF5QztBQUN6QyxxREFBK0M7QUFFL0MsTUFBYSxrQkFBbUIsU0FBUSx5QkFBVztJQUdqRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLLENBQUMsS0FBSztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2Q7Z0JBQ0UsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUNsQixLQUFLLEVBQUUsS0FB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SyxDQUFDLENBQUMsRUFBRSxvQkFBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFFNUYsdUVBQXVFO2dCQUN2RSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLG9CQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0JBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzdGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksa0NBQXVCLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEvSEQsZ0RBK0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIGFzIFZldFRyYW5zYWN0aW9uLCBTZWNwMjU2azEgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVmV0VHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IHsgQlVSTl9ORlRfTUVUSE9EX0lEIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBFdGhlcmV1bUFiaSBmcm9tICdldGhlcmV1bWpzLWFiaSc7XG5pbXBvcnQgeyBhZGRIZXhQcmVmaXggfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgQnVybk5mdFRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF90b2tlbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3O1xuICB9XG5cbiAgZ2V0IHRva2VuSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5JZDtcbiAgfVxuXG4gIHNldCB0b2tlbklkKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90b2tlbklkID0gaWQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5idWlsZENsYXVzZXMoKTtcbiAgICBhd2FpdCB0aGlzLmJ1aWxkUmF3VHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLmdlbmVyYXRlVHhuSWRBbmRTZXRTZW5kZXIoKTtcbiAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYnVpbGRDbGF1c2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udHJhY3QgfHwgIXRoaXMuX3Rva2VuSWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyByZXF1aXJlZCBidXJuIE5GVCBwYXJhbWV0ZXJzJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xhdXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdG86IHRoaXMuX2NvbnRyYWN0LFxuICAgICAgICB2YWx1ZTogJzB4MCcsXG4gICAgICAgIGRhdGE6IHRoaXMuX3RyYW5zYWN0aW9uRGF0YSB8fCB0aGlzLmdldEJ1cm5OZnREYXRhKCksXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGZvciBidXJuaW5nIE5GVCBieSBlbmNvZGluZyB0aGUgYnVybiBtZXRob2QgY2FsbC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YSBhcyBhIGhleCBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZ2V0QnVybk5mdERhdGEoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ2J1cm4nO1xuICAgIGNvbnN0IHR5cGVzID0gWyd1aW50MjU2J107XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX3Rva2VuSWRdO1xuXG4gICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gYWRkSGV4UHJlZml4KEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFZldFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgY29uc3QganNvbjogVmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBjaGFpblRhZzogdGhpcy5jaGFpblRhZyxcbiAgICAgIGJsb2NrUmVmOiB0aGlzLmJsb2NrUmVmLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5leHBpcmF0aW9uLFxuICAgICAgZ2FzUHJpY2VDb2VmOiB0aGlzLmdhc1ByaWNlQ29lZixcbiAgICAgIGdhczogdGhpcy5nYXMsXG4gICAgICBkZXBlbmRzT246IHRoaXMuZGVwZW5kc09uLFxuICAgICAgbm9uY2U6IHRoaXMubm9uY2UsXG4gICAgICBkYXRhOiB0aGlzLnRyYW5zYWN0aW9uRGF0YSB8fCB0aGlzLmdldEJ1cm5OZnREYXRhKCksXG4gICAgICB2YWx1ZTogJzAnLFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIHRvOiB0aGlzLmNvbnRyYWN0LFxuICAgIH07XG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4OiBWZXRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXNpZ25lZFR4IHx8ICFzaWduZWRUeC5ib2R5KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0cmFuc2FjdGlvbiBib2R5Jyk7XG4gICAgICB9XG5cbiAgICAgIC8vIFN0b3JlIHRoZSByYXcgdHJhbnNhY3Rpb25cbiAgICAgIHRoaXMucmF3VHJhbnNhY3Rpb24gPSBzaWduZWRUeDtcblxuICAgICAgLy8gU2V0IHRyYW5zYWN0aW9uIGJvZHkgcHJvcGVydGllc1xuICAgICAgY29uc3QgYm9keSA9IHNpZ25lZFR4LmJvZHk7XG4gICAgICB0aGlzLmNoYWluVGFnID0gdHlwZW9mIGJvZHkuY2hhaW5UYWcgPT09ICdudW1iZXInID8gYm9keS5jaGFpblRhZyA6IDA7XG4gICAgICB0aGlzLmJsb2NrUmVmID0gYm9keS5ibG9ja1JlZiB8fCAnMHgwJztcbiAgICAgIHRoaXMuZXhwaXJhdGlvbiA9IHR5cGVvZiBib2R5LmV4cGlyYXRpb24gPT09ICdudW1iZXInID8gYm9keS5leHBpcmF0aW9uIDogNjQ7XG4gICAgICB0aGlzLmNsYXVzZXMgPSBib2R5LmNsYXVzZXMgfHwgW107XG4gICAgICB0aGlzLmdhc1ByaWNlQ29lZiA9IHR5cGVvZiBib2R5Lmdhc1ByaWNlQ29lZiA9PT0gJ251bWJlcicgPyBib2R5Lmdhc1ByaWNlQ29lZiA6IDEyODtcbiAgICAgIHRoaXMuZ2FzID0gdHlwZW9mIGJvZHkuZ2FzID09PSAnbnVtYmVyJyA/IGJvZHkuZ2FzIDogTnVtYmVyKGJvZHkuZ2FzKSB8fCAwO1xuICAgICAgdGhpcy5kZXBlbmRzT24gPSBib2R5LmRlcGVuZHNPbiB8fCBudWxsO1xuICAgICAgdGhpcy5ub25jZSA9IFN0cmluZyhib2R5Lm5vbmNlKTtcblxuICAgICAgLy8gU2V0IGRhdGEgZnJvbSBjbGF1c2VzXG4gICAgICB0aGlzLmNvbnRyYWN0ID0gYm9keS5jbGF1c2VzWzBdPy50byB8fCAnMHgwJztcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25EYXRhID0gYm9keS5jbGF1c2VzWzBdPy5kYXRhIHx8ICcweDAnO1xuICAgICAgdGhpcy50eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcblxuICAgICAgLy8gRXh0cmFjdCB0b2tlbklkIGZyb20gdHJhbnNhY3Rpb24gZGF0YVxuICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb25EYXRhLnN0YXJ0c1dpdGgoQlVSTl9ORlRfTUVUSE9EX0lEKSkge1xuICAgICAgICBjb25zdCB0b2tlbklkSGV4ID0gdGhpcy50cmFuc2FjdGlvbkRhdGEuc2xpY2UoQlVSTl9ORlRfTUVUSE9EX0lELmxlbmd0aCk7XG4gICAgICAgIC8vIENvbnZlcnQgaGV4IHRvIGRlY2ltYWxcbiAgICAgICAgdGhpcy50b2tlbklkID0gcGFyc2VJbnQodG9rZW5JZEhleCwgMTYpLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCBzZW5kZXIgYWRkcmVzc1xuICAgICAgaWYgKHNpZ25lZFR4LnNpZ25hdHVyZSAmJiBzaWduZWRUeC5vcmlnaW4pIHtcbiAgICAgICAgdGhpcy5zZW5kZXIgPSBzaWduZWRUeC5vcmlnaW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgc2lnbmF0dXJlcyBpZiBwcmVzZW50XG4gICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlKSB7XG4gICAgICAgIC8vIEZpcnN0IHNpZ25hdHVyZSBpcyBzZW5kZXIncyBzaWduYXR1cmVcbiAgICAgICAgdGhpcy5zZW5kZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzaWduZWRUeC5zaWduYXR1cmUuc2xpY2UoMCwgU2VjcDI1NmsxLlNJR05BVFVSRV9MRU5HVEgpKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSdzIGFkZGl0aW9uYWwgc2lnbmF0dXJlIGRhdGEsIGl0J3MgdGhlIGZlZSBwYXllcidzIHNpZ25hdHVyZVxuICAgICAgICBpZiAoc2lnbmVkVHguc2lnbmF0dXJlLmxlbmd0aCA+IFNlY3AyNTZrMS5TSUdOQVRVUkVfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5mZWVQYXllclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNpZ25lZFR4LnNpZ25hdHVyZS5zbGljZShTZWNwMjU2azEuU0lHTkFUVVJFX0xFTkdUSCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gZGVzZXJpYWxpemUgdHJhbnNhY3Rpb246ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuIl19