@bitgo-beta/sdk-coin-avaxp 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 (137) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +7 -0
  3. package/.mocharc.yml +8 -0
  4. package/CHANGELOG.md +1091 -0
  5. package/LICENSE +191 -0
  6. package/README.md +39 -0
  7. package/dist/src/avaxp.d.ts +91 -0
  8. package/dist/src/avaxp.d.ts.map +1 -0
  9. package/dist/src/avaxp.js +343 -0
  10. package/dist/src/iface.d.ts +42 -0
  11. package/dist/src/iface.d.ts.map +1 -0
  12. package/dist/src/iface.js +3 -0
  13. package/dist/src/index.d.ts +6 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +45 -0
  16. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +21 -0
  17. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/atomicInCTransactionBuilder.js +49 -0
  19. package/dist/src/lib/atomicTransactionBuilder.d.ts +38 -0
  20. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/atomicTransactionBuilder.js +129 -0
  22. package/dist/src/lib/delegatorTxBuilder.d.ts +95 -0
  23. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/delegatorTxBuilder.js +285 -0
  25. package/dist/src/lib/deprecatedTransaction.d.ts +98 -0
  26. package/dist/src/lib/deprecatedTransaction.d.ts.map +1 -0
  27. package/dist/src/lib/deprecatedTransaction.js +344 -0
  28. package/dist/src/lib/deprecatedTransactionBuilder.d.ts +114 -0
  29. package/dist/src/lib/deprecatedTransactionBuilder.d.ts.map +1 -0
  30. package/dist/src/lib/deprecatedTransactionBuilder.js +210 -0
  31. package/dist/src/lib/errors.d.ts +8 -0
  32. package/dist/src/lib/errors.d.ts.map +1 -0
  33. package/dist/src/lib/errors.js +19 -0
  34. package/dist/src/lib/exportInCTxBuilder.d.ts +55 -0
  35. package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/exportInCTxBuilder.js +159 -0
  37. package/dist/src/lib/exportTxBuilder.d.ts +33 -0
  38. package/dist/src/lib/exportTxBuilder.d.ts.map +1 -0
  39. package/dist/src/lib/exportTxBuilder.js +88 -0
  40. package/dist/src/lib/iface.d.ts +68 -0
  41. package/dist/src/lib/iface.d.ts.map +1 -0
  42. package/dist/src/lib/iface.js +20 -0
  43. package/dist/src/lib/importInCTxBuilder.d.ts +44 -0
  44. package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/importInCTxBuilder.js +131 -0
  46. package/dist/src/lib/importTxBuilder.d.ts +18 -0
  47. package/dist/src/lib/importTxBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/importTxBuilder.js +67 -0
  49. package/dist/src/lib/index.d.ts +11 -0
  50. package/dist/src/lib/index.d.ts.map +1 -0
  51. package/dist/src/lib/index.js +37 -0
  52. package/dist/src/lib/keyPair.d.ts +58 -0
  53. package/dist/src/lib/keyPair.d.ts.map +1 -0
  54. package/dist/src/lib/keyPair.js +150 -0
  55. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +154 -0
  56. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/permissionlessValidatorTxBuilder.js +452 -0
  58. package/dist/src/lib/transaction.d.ts +78 -0
  59. package/dist/src/lib/transaction.d.ts.map +1 -0
  60. package/dist/src/lib/transaction.js +254 -0
  61. package/dist/src/lib/transactionBuilder.d.ts +71 -0
  62. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/transactionBuilder.js +138 -0
  64. package/dist/src/lib/transactionBuilderFactory.d.ts +57 -0
  65. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  66. package/dist/src/lib/transactionBuilderFactory.js +178 -0
  67. package/dist/src/lib/utils.d.ts +184 -0
  68. package/dist/src/lib/utils.d.ts.map +1 -0
  69. package/dist/src/lib/utils.js +378 -0
  70. package/dist/src/lib/utxoEngine.d.ts +53 -0
  71. package/dist/src/lib/utxoEngine.d.ts.map +1 -0
  72. package/dist/src/lib/utxoEngine.js +112 -0
  73. package/dist/src/lib/validatorTxBuilder.d.ts +37 -0
  74. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/validatorTxBuilder.js +69 -0
  76. package/dist/src/register.d.ts +3 -0
  77. package/dist/src/register.d.ts.map +1 -0
  78. package/dist/src/register.js +11 -0
  79. package/dist/src/tavaxp.d.ts +9 -0
  80. package/dist/src/tavaxp.d.ts.map +1 -0
  81. package/dist/src/tavaxp.js +14 -0
  82. package/dist/test/resources/avaxp.d.ts +259 -0
  83. package/dist/test/resources/avaxp.d.ts.map +1 -0
  84. package/dist/test/resources/avaxp.js +1093 -0
  85. package/dist/test/resources/errors.d.ts +19 -0
  86. package/dist/test/resources/errors.d.ts.map +1 -0
  87. package/dist/test/resources/errors.js +22 -0
  88. package/dist/test/resources/keychains.d.ts +18 -0
  89. package/dist/test/resources/keychains.d.ts.map +1 -0
  90. package/dist/test/resources/keychains.js +30 -0
  91. package/dist/test/resources/tx/exportC.d.ts +14 -0
  92. package/dist/test/resources/tx/exportC.d.ts.map +1 -0
  93. package/dist/test/resources/tx/exportC.js +21 -0
  94. package/dist/test/resources/tx/importC.d.ts +29 -0
  95. package/dist/test/resources/tx/importC.d.ts.map +1 -0
  96. package/dist/test/resources/tx/importC.js +42 -0
  97. package/dist/test/resources/tx/importP.d.ts +29 -0
  98. package/dist/test/resources/tx/importP.d.ts.map +1 -0
  99. package/dist/test/resources/tx/importP.js +42 -0
  100. package/dist/test/unit/avaxp.d.ts +2 -0
  101. package/dist/test/unit/avaxp.d.ts.map +1 -0
  102. package/dist/test/unit/avaxp.js +732 -0
  103. package/dist/test/unit/lib/exportC2PTxBuilder.d.ts +2 -0
  104. package/dist/test/unit/lib/exportC2PTxBuilder.d.ts.map +1 -0
  105. package/dist/test/unit/lib/exportC2PTxBuilder.js +125 -0
  106. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts +2 -0
  107. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts.map +1 -0
  108. package/dist/test/unit/lib/exportP2CTxBuilder.js +183 -0
  109. package/dist/test/unit/lib/importC2PTxBuilder.d.ts +2 -0
  110. package/dist/test/unit/lib/importC2PTxBuilder.d.ts.map +1 -0
  111. package/dist/test/unit/lib/importC2PTxBuilder.js +99 -0
  112. package/dist/test/unit/lib/importP2CTxBuilder.d.ts +2 -0
  113. package/dist/test/unit/lib/importP2CTxBuilder.d.ts.map +1 -0
  114. package/dist/test/unit/lib/importP2CTxBuilder.js +137 -0
  115. package/dist/test/unit/lib/keyPair.d.ts +2 -0
  116. package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
  117. package/dist/test/unit/lib/keyPair.js +186 -0
  118. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts +2 -0
  119. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
  120. package/dist/test/unit/lib/permissionlessValidatorTxBuilder.js +341 -0
  121. package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
  122. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
  123. package/dist/test/unit/lib/signFlowTestSuit.js +80 -0
  124. package/dist/test/unit/lib/transactionBuilderFactory.d.ts +2 -0
  125. package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +1 -0
  126. package/dist/test/unit/lib/transactionBuilderFactory.js +179 -0
  127. package/dist/test/unit/lib/utils.d.ts +2 -0
  128. package/dist/test/unit/lib/utils.d.ts.map +1 -0
  129. package/dist/test/unit/lib/utils.js +83 -0
  130. package/dist/test/unit/lib/utxoEngine.d.ts +2 -0
  131. package/dist/test/unit/lib/utxoEngine.d.ts.map +1 -0
  132. package/dist/test/unit/lib/utxoEngine.js +168 -0
  133. package/dist/test/unit/lib/validateTxBuilder.d.ts +2 -0
  134. package/dist/test/unit/lib/validateTxBuilder.d.ts.map +1 -0
  135. package/dist/test/unit/lib/validateTxBuilder.js +327 -0
  136. package/dist/tsconfig.tsbuildinfo +1 -0
  137. package/package.json +63 -0
@@ -0,0 +1,88 @@
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.ExportTxBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
9
+ const platformvm_1 = require("avalanche/dist/apis/platformvm");
10
+ const avalanche_1 = require("avalanche");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ const utxoEngine_1 = require("./utxoEngine");
13
+ class ExportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
14
+ constructor(_coinConfig) {
15
+ super(_coinConfig);
16
+ this._externalChainId = utils_1.default.cb58Decode(this.transaction._network.cChainBlockchainID);
17
+ }
18
+ get transactionType() {
19
+ return sdk_core_1.TransactionType.Export;
20
+ }
21
+ /**
22
+ * Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
23
+ *
24
+ * @param {BN | string} amount The withdrawal amount
25
+ */
26
+ amount(value) {
27
+ const valueBN = avalanche_1.BN.isBN(value) ? value : new avalanche_1.BN(value);
28
+ this.validateAmount(valueBN);
29
+ this._amount = valueBN;
30
+ return this;
31
+ }
32
+ /** @inheritdoc */
33
+ initBuilder(tx) {
34
+ super.initBuilder(tx);
35
+ const baseTx = tx.getUnsignedTx().getTransaction();
36
+ if (!this.verifyTxType(baseTx)) {
37
+ throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
38
+ }
39
+ // The ExportOutputs is a {@link exportedOutputs} result.
40
+ // It's expected to have only one outputs with the addresses of the sender.
41
+ const outputs = baseTx.getExportOutputs();
42
+ if (outputs.length != 1) {
43
+ throw new sdk_core_1.BuildTransactionError('Transaction can have one external output');
44
+ }
45
+ const output = outputs[0];
46
+ if (!output.getAssetID().equals(this.transaction._assetId)) {
47
+ throw new Error('The Asset ID of the output does not match the transaction');
48
+ }
49
+ const secpOut = output.getOutput();
50
+ this.transaction._locktime = secpOut.getLocktime();
51
+ this.transaction._threshold = secpOut.getThreshold();
52
+ // output addresses are the sender addresses
53
+ this.transaction._fromAddresses = secpOut.getAddresses();
54
+ this._externalChainId = baseTx.getDestinationChain();
55
+ this._amount = secpOut.getAmount();
56
+ this.transaction._utxos = (0, utxoEngine_1.deprecatedRecoverUtxos)(baseTx.getIns());
57
+ return this;
58
+ }
59
+ static verifyTxType(baseTx) {
60
+ return baseTx.getTypeID() === platformvm_1.PlatformVMConstants.EXPORTTX;
61
+ }
62
+ verifyTxType(baseTx) {
63
+ return ExportTxBuilder.verifyTxType(baseTx);
64
+ }
65
+ /**
66
+ * Create the internal avalanche transaction.
67
+ * @protected
68
+ */
69
+ buildAvaxTransaction() {
70
+ // if tx has credentials, tx shouldn't change
71
+ if (this.transaction.hasCredentials)
72
+ return;
73
+ const { inputs, outputs, credentials } = this.createInputOutput(this._amount.add(new avalanche_1.BN(this.transaction.fee.fee)));
74
+ this.transaction.setTransaction(new platformvm_1.Tx(new platformvm_1.UnsignedTx(new platformvm_1.ExportTx(this.transaction._networkID, this.transaction._blockchainID, outputs, inputs, undefined, this._externalChainId, this.exportedOutputs())), credentials));
75
+ }
76
+ /**
77
+ * Create the ExportedOut where the recipient address are the sender.
78
+ * Later a importTx should complete the operations signing with the same keys.
79
+ * @protected
80
+ */
81
+ exportedOutputs() {
82
+ return [
83
+ new platformvm_1.TransferableOutput(this.transaction._assetId, new platformvm_1.SECPTransferOutput(this._amount, this.transaction._fromAddresses, this.transaction._locktime, this.transaction._threshold)),
84
+ ];
85
+ }
86
+ }
87
+ exports.ExportTxBuilder = ExportTxBuilder;
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0VHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLHlFQUFzRTtBQUN0RSwrREFPd0M7QUFDeEMseUNBQStCO0FBRS9CLG9EQUE0QjtBQUM1Qiw2Q0FBc0Q7QUFHdEQsTUFBYSxlQUFnQixTQUFRLG1EQUF3QjtJQUczRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFrQjtRQUN2QixNQUFNLE9BQU8sR0FBRyxjQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxFQUFnQjtRQUMxQixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksdUJBQVksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7UUFDRCx5REFBeUQ7UUFDekQsMkVBQTJFO1FBQzNFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksZ0NBQXFCLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JELDRDQUE0QztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUksT0FBd0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFBLG1DQUFzQixFQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBd0I7UUFDMUMsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssZ0NBQW1CLENBQUMsUUFBUSxDQUFDO0lBQzdELENBQUM7SUFFRCxZQUFZLENBQUMsTUFBd0I7UUFDbkMsT0FBTyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDTyxvQkFBb0I7UUFDNUIsNkNBQTZDO1FBQzdDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUM1QyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxjQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUM3QixJQUFJLGVBQUssQ0FDUCxJQUFJLHVCQUFVLENBQ1osSUFBSSxxQkFBUSxDQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDOUIsT0FBTyxFQUNQLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQ3ZCLENBQ0YsRUFDRCxXQUFXLENBQ1osQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxlQUFlO1FBQ3ZCLE9BQU87WUFDTCxJQUFJLCtCQUFrQixDQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFDekIsSUFBSSwrQkFBa0IsQ0FDcEIsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUM1QixDQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXhHRCwwQ0F3R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIE5vdFN1cHBvcnRlZCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgRXhwb3J0VHgsXG4gIFBsYXRmb3JtVk1Db25zdGFudHMsXG4gIFNFQ1BUcmFuc2Zlck91dHB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUeCBhcyBQVk1UeCxcbiAgVW5zaWduZWRUeCxcbn0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvYXBpcy9wbGF0Zm9ybXZtJztcbmltcG9ydCB7IEJOIH0gZnJvbSAnYXZhbGFuY2hlJztcbmltcG9ydCB7IEFtb3VudE91dHB1dCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvZXZtL291dHB1dHMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZGVwcmVjYXRlZFJlY292ZXJVdHhvcyB9IGZyb20gJy4vdXR4b0VuZ2luZSc7XG5pbXBvcnQgeyBEZXByZWNhdGVkVHgsIERlcHJlY2F0ZWRCYXNlVHggfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIEV4cG9ydFR4QnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2Ftb3VudDogQk47XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IHV0aWxzLmNiNThEZWNvZGUodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkV4cG9ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbW91bnQgaXMgYSBsb25nIHRoYXQgc3BlY2lmaWVzIHRoZSBxdWFudGl0eSBvZiB0aGUgYXNzZXQgdGhhdCB0aGlzIG91dHB1dCBvd25zLiBNdXN0IGJlIHBvc2l0aXZlLlxuICAgKlxuICAgKiBAcGFyYW0ge0JOIHwgc3RyaW5nfSBhbW91bnQgVGhlIHdpdGhkcmF3YWwgYW1vdW50XG4gICAqL1xuICBhbW91bnQodmFsdWU6IEJOIHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdmFsdWVCTiA9IEJOLmlzQk4odmFsdWUpID8gdmFsdWUgOiBuZXcgQk4odmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGVBbW91bnQodmFsdWVCTik7XG4gICAgdGhpcy5fYW1vdW50ID0gdmFsdWVCTjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogRGVwcmVjYXRlZFR4KTogdGhpcyB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGJhc2VUeDogRGVwcmVjYXRlZEJhc2VUeCA9IHR4LmdldFVuc2lnbmVkVHgoKS5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4KSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgICAvLyBUaGUgRXhwb3J0T3V0cHV0cyBpcyBhIHtAbGluayBleHBvcnRlZE91dHB1dHN9IHJlc3VsdC5cbiAgICAvLyBJdCdzIGV4cGVjdGVkIHRvIGhhdmUgb25seSBvbmUgb3V0cHV0cyB3aXRoIHRoZSBhZGRyZXNzZXMgb2YgdGhlIHNlbmRlci5cbiAgICBjb25zdCBvdXRwdXRzID0gYmFzZVR4LmdldEV4cG9ydE91dHB1dHMoKTtcbiAgICBpZiAob3V0cHV0cy5sZW5ndGggIT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2FuIGhhdmUgb25lIGV4dGVybmFsIG91dHB1dCcpO1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdO1xuICAgIGlmICghb3V0cHV0LmdldEFzc2V0SUQoKS5lcXVhbHModGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEFzc2V0IElEIG9mIHRoZSBvdXRwdXQgZG9lcyBub3QgbWF0Y2ggdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNlY3BPdXQgPSBvdXRwdXQuZ2V0T3V0cHV0KCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUgPSBzZWNwT3V0LmdldExvY2t0aW1lKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gc2VjcE91dC5nZXRUaHJlc2hvbGQoKTtcbiAgICAvLyBvdXRwdXQgYWRkcmVzc2VzIGFyZSB0aGUgc2VuZGVyIGFkZHJlc3Nlc1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBzZWNwT3V0LmdldEFkZHJlc3NlcygpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IGJhc2VUeC5nZXREZXN0aW5hdGlvbkNoYWluKCk7XG4gICAgdGhpcy5fYW1vdW50ID0gKHNlY3BPdXQgYXMgQW1vdW50T3V0cHV0KS5nZXRBbW91bnQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcyA9IGRlcHJlY2F0ZWRSZWNvdmVyVXR4b3MoYmFzZVR4LmdldElucygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBEZXByZWNhdGVkQmFzZVR4KTogYmFzZVR4IGlzIEV4cG9ydFR4IHtcbiAgICByZXR1cm4gYmFzZVR4LmdldFR5cGVJRCgpID09PSBQbGF0Zm9ybVZNQ29uc3RhbnRzLkVYUE9SVFRYO1xuICB9XG5cbiAgdmVyaWZ5VHhUeXBlKGJhc2VUeDogRGVwcmVjYXRlZEJhc2VUeCk6IGJhc2VUeCBpcyBFeHBvcnRUeCB7XG4gICAgcmV0dXJuIEV4cG9ydFR4QnVpbGRlci52ZXJpZnlUeFR5cGUoYmFzZVR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGludGVybmFsIGF2YWxhbmNoZSB0cmFuc2FjdGlvbi5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkQXZheFRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIC8vIGlmIHR4IGhhcyBjcmVkZW50aWFscywgdHggc2hvdWxkbid0IGNoYW5nZVxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmhhc0NyZWRlbnRpYWxzKSByZXR1cm47XG4gICAgY29uc3QgeyBpbnB1dHMsIG91dHB1dHMsIGNyZWRlbnRpYWxzIH0gPSB0aGlzLmNyZWF0ZUlucHV0T3V0cHV0KHRoaXMuX2Ftb3VudC5hZGQobmV3IEJOKHRoaXMudHJhbnNhY3Rpb24uZmVlLmZlZSkpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IFBWTVR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgRXhwb3J0VHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBvdXRwdXRzLFxuICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkLFxuICAgICAgICAgICAgdGhpcy5leHBvcnRlZE91dHB1dHMoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgY3JlZGVudGlhbHNcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgRXhwb3J0ZWRPdXQgd2hlcmUgdGhlIHJlY2lwaWVudCBhZGRyZXNzIGFyZSB0aGUgc2VuZGVyLlxuICAgKiBMYXRlciBhIGltcG9ydFR4IHNob3VsZCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9ucyBzaWduaW5nIHdpdGggdGhlIHNhbWUga2V5cy5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGV4cG9ydGVkT3V0cHV0cygpOiBUcmFuc2ZlcmFibGVPdXRwdXRbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgIG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgICAgdGhpcy5fYW1vdW50LFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUsXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkXG4gICAgICAgIClcbiAgICAgICksXG4gICAgXTtcbiAgfVxufVxuIl19
@@ -0,0 +1,68 @@
1
+ import { TransactionExplanation as BaseTransactionExplanation, Entry, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { EVMBaseTx as DeprecatedEVMBaseTx, EVMOutput, Tx as EVMTx } from 'avalanche/dist/apis/evm';
3
+ import { BaseTx as DeprecatedPMVBaseTx, Tx as PVMTx, TransferableOutput as DeprecatedTransferableOutput } from 'avalanche/dist/apis/platformvm';
4
+ import { avaxSerial, pvmSerial, UnsignedTx, TransferableOutput } from '@bitgo-forks/avalanchejs';
5
+ export interface AvaxpEntry extends Entry {
6
+ id: string;
7
+ }
8
+ export interface TransactionExplanation extends BaseTransactionExplanation {
9
+ type: TransactionType;
10
+ rewardAddresses: string[];
11
+ inputs: Entry[];
12
+ }
13
+ /**
14
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
15
+ */
16
+ export declare enum MethodNames {
17
+ addDelegator = 0,
18
+ addValidator = 1
19
+ }
20
+ /**
21
+ * The transaction data returned from the toJson() function of a transaction
22
+ */
23
+ export interface TxData {
24
+ id: string;
25
+ inputs: Entry[];
26
+ type: TransactionType;
27
+ fromAddresses: string[];
28
+ threshold: number;
29
+ locktime: string;
30
+ signatures: string[];
31
+ outputs: Entry[];
32
+ changeOutputs: Entry[];
33
+ sourceChain?: string;
34
+ destinationChain?: string;
35
+ }
36
+ /**
37
+ * Decoded UTXO object. This is for a single utxo
38
+ *
39
+ * @param {number} outputID
40
+ * @param {string} amount Amount as a Big Number string
41
+ * @param {string} txid Transaction ID encoded as cb58
42
+ * @param {string} outputidx Output index as a string
43
+ */
44
+ export type DecodedUtxoObj = {
45
+ outputID: number;
46
+ amount: string;
47
+ txid: string;
48
+ outputidx: string;
49
+ threshold: number;
50
+ addresses: string[];
51
+ addressesIndex?: number[];
52
+ };
53
+ /**
54
+ * TypeId value for SECP256K1 Transfer Output
55
+ *
56
+ * {@link https://docs.avax.network/specs/platform-transaction-serialization#secp256k1-transfer-output-example }
57
+ */
58
+ export declare const SECP256K1_Transfer_Output = 7;
59
+ export declare const ADDRESS_SEPARATOR = "~";
60
+ export declare const INPUT_SEPARATOR = ":";
61
+ export type DeprecatedTx = PVMTx | EVMTx;
62
+ export type DeprecatedBaseTx = DeprecatedPMVBaseTx | DeprecatedEVMBaseTx;
63
+ export type Tx = DeprecatedTx | pvmSerial.BaseTx | UnsignedTx;
64
+ export type BaseTx = avaxSerial.BaseTx;
65
+ export type AvaxTx = avaxSerial.AvaxTx;
66
+ export type DeprecatedOutput = DeprecatedTransferableOutput | EVMOutput;
67
+ export type Output = TransferableOutput;
68
+ //# sourceMappingURL=iface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,SAAS,EAAE,EAAE,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EACL,MAAM,IAAI,mBAAmB,EAC7B,EAAE,IAAI,KAAK,EACX,kBAAkB,IAAI,4BAA4B,EACnD,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACjG,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,YAAY,IAAA;IACZ,YAAY,IAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC;AACzC,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AACzE,MAAM,MAAM,EAAE,GAAG,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC;AAC9D,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACvC,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACvC,MAAM,MAAM,gBAAgB,GAAG,4BAA4B,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,MAAM,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INPUT_SEPARATOR = exports.ADDRESS_SEPARATOR = exports.SECP256K1_Transfer_Output = exports.MethodNames = void 0;
4
+ /**
5
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
6
+ */
7
+ var MethodNames;
8
+ (function (MethodNames) {
9
+ MethodNames[MethodNames["addDelegator"] = 0] = "addDelegator";
10
+ MethodNames[MethodNames["addValidator"] = 1] = "addValidator";
11
+ })(MethodNames || (exports.MethodNames = MethodNames = {}));
12
+ /**
13
+ * TypeId value for SECP256K1 Transfer Output
14
+ *
15
+ * {@link https://docs.avax.network/specs/platform-transaction-serialization#secp256k1-transfer-output-example }
16
+ */
17
+ exports.SECP256K1_Transfer_Output = 7;
18
+ exports.ADDRESS_SEPARATOR = '~';
19
+ exports.INPUT_SEPARATOR = ':';
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlCQTs7R0FFRztBQUNILElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQiw2REFBWSxDQUFBO0lBQ1osNkRBQVksQ0FBQTtBQUNkLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFxQ0Q7Ozs7R0FJRztBQUNVLFFBQUEseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLFFBQUEsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLFFBQUEsZUFBZSxHQUFHLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIEVudHJ5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBFVk1CYXNlVHggYXMgRGVwcmVjYXRlZEVWTUJhc2VUeCwgRVZNT3V0cHV0LCBUeCBhcyBFVk1UeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvZXZtJztcbmltcG9ydCB7XG4gIEJhc2VUeCBhcyBEZXByZWNhdGVkUE1WQmFzZVR4LFxuICBUeCBhcyBQVk1UeCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0IGFzIERlcHJlY2F0ZWRUcmFuc2ZlcmFibGVPdXRwdXQsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBhdmF4U2VyaWFsLCBwdm1TZXJpYWwsIFVuc2lnbmVkVHgsIFRyYW5zZmVyYWJsZU91dHB1dCB9IGZyb20gJ0BiaXRnby1mb3Jrcy9hdmFsYW5jaGVqcyc7XG5leHBvcnQgaW50ZXJmYWNlIEF2YXhwRW50cnkgZXh0ZW5kcyBFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcmV3YXJkQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgaW5wdXRzOiBFbnRyeVtdO1xufVxuXG4vKipcbiAqIE1ldGhvZCBuYW1lcyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1ldGhvZC4gTmFtZXMgY2hhbmdlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRyYW5zYWN0aW9uIGUuZyAnYm9uZCcgZm9yIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIE1ldGhvZE5hbWVzIHtcbiAgYWRkRGVsZWdhdG9yLFxuICBhZGRWYWxpZGF0b3IsXG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogRW50cnlbXTtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBmcm9tQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBzdHJpbmc7XG4gIHNpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBvdXRwdXRzOiBFbnRyeVtdO1xuICBjaGFuZ2VPdXRwdXRzOiBFbnRyeVtdO1xuICBzb3VyY2VDaGFpbj86IHN0cmluZztcbiAgZGVzdGluYXRpb25DaGFpbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNvZGVkIFVUWE8gb2JqZWN0LiBUaGlzIGlzIGZvciBhIHNpbmdsZSB1dHhvXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG91dHB1dElEXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IEFtb3VudCBhcyBhIEJpZyBOdW1iZXIgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gdHhpZCBUcmFuc2FjdGlvbiBJRCBlbmNvZGVkIGFzIGNiNThcbiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRpZHggT3V0cHV0IGluZGV4IGFzIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIERlY29kZWRVdHhvT2JqID0ge1xuICBvdXRwdXRJRDogbnVtYmVyO1xuICBhbW91bnQ6IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xuICBvdXRwdXRpZHg6IHN0cmluZztcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGFkZHJlc3Nlczogc3RyaW5nW107XG4gIGFkZHJlc3Nlc0luZGV4PzogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIFR5cGVJZCB2YWx1ZSBmb3IgU0VDUDI1NksxIFRyYW5zZmVyIE91dHB1dFxuICpcbiAqIHtAbGluayBodHRwczovL2RvY3MuYXZheC5uZXR3b3JrL3NwZWNzL3BsYXRmb3JtLXRyYW5zYWN0aW9uLXNlcmlhbGl6YXRpb24jc2VjcDI1NmsxLXRyYW5zZmVyLW91dHB1dC1leGFtcGxlIH1cbiAqL1xuZXhwb3J0IGNvbnN0IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQgPSA3O1xuXG5leHBvcnQgY29uc3QgQUREUkVTU19TRVBBUkFUT1IgPSAnfic7XG5leHBvcnQgY29uc3QgSU5QVVRfU0VQQVJBVE9SID0gJzonO1xuZXhwb3J0IHR5cGUgRGVwcmVjYXRlZFR4ID0gUFZNVHggfCBFVk1UeDtcbmV4cG9ydCB0eXBlIERlcHJlY2F0ZWRCYXNlVHggPSBEZXByZWNhdGVkUE1WQmFzZVR4IHwgRGVwcmVjYXRlZEVWTUJhc2VUeDtcbmV4cG9ydCB0eXBlIFR4ID0gRGVwcmVjYXRlZFR4IHwgcHZtU2VyaWFsLkJhc2VUeCB8IFVuc2lnbmVkVHg7XG5leHBvcnQgdHlwZSBCYXNlVHggPSBhdmF4U2VyaWFsLkJhc2VUeDtcbmV4cG9ydCB0eXBlIEF2YXhUeCA9IGF2YXhTZXJpYWwuQXZheFR4O1xuZXhwb3J0IHR5cGUgRGVwcmVjYXRlZE91dHB1dCA9IERlcHJlY2F0ZWRUcmFuc2ZlcmFibGVPdXRwdXQgfCBFVk1PdXRwdXQ7XG5leHBvcnQgdHlwZSBPdXRwdXQgPSBUcmFuc2ZlcmFibGVPdXRwdXQ7XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { ImportTx, TransferableInput } from 'avalanche/dist/apis/evm';
4
+ import { BN } from 'avalanche';
5
+ import { Credential } from 'avalanche/dist/common';
6
+ import { DeprecatedBaseTx, DeprecatedTx } from './iface';
7
+ import { AtomicInCTransactionBuilder } from './atomicInCTransactionBuilder';
8
+ export declare class ImportInCTxBuilder extends AtomicInCTransactionBuilder {
9
+ constructor(_coinConfig: Readonly<CoinConfig>);
10
+ /**
11
+ * C-chain address who is target of the import.
12
+ * Address format is eth like
13
+ * @param {string} cAddress
14
+ */
15
+ to(cAddress: string): this;
16
+ protected get transactionType(): TransactionType;
17
+ /** @inheritdoc */
18
+ initBuilder(tx: DeprecatedTx): this;
19
+ static verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ImportTx;
20
+ verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ImportTx;
21
+ /**
22
+ * Build the import in C-chain transaction
23
+ * @protected
24
+ */
25
+ protected buildAvaxTransaction(): void;
26
+ /**
27
+ * Create inputs by mapping {@see utxoEngine.utxoToInput} result.
28
+ * Reorder sender to handle recover signer.
29
+ * TransferableInput is a EVM Tx.
30
+ * @return {
31
+ * inputs: TransferableInput[];
32
+ * credentials: Credential[];
33
+ * amount: BN;
34
+ * } where amount is the sum of inputs amount and credentials has signer address to be replaced with correct signature.
35
+ * @protected
36
+ *
37
+ */
38
+ protected createInputs(): {
39
+ inputs: TransferableInput[];
40
+ credentials: Credential[];
41
+ amount: BN;
42
+ };
43
+ }
44
+ //# sourceMappingURL=importInCTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/importInCTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAGL,QAAQ,EAIR,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,qBAAa,kBAAmB,SAAQ,2BAA2B;gBACrD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK1B,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IA6CnC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAIjE,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAI1D;;;OAGG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAuCtC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,YAAY,IAAI;QACxB,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;QAC1B,MAAM,EAAE,EAAE,CAAC;KACZ;CA8BF"}
@@ -0,0 +1,131 @@
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.ImportInCTxBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const evm_1 = require("avalanche/dist/apis/evm");
9
+ const utils_1 = require("avalanche/dist/utils");
10
+ const avalanche_1 = require("avalanche");
11
+ const utxoEngine_1 = require("./utxoEngine");
12
+ const atomicInCTransactionBuilder_1 = require("./atomicInCTransactionBuilder");
13
+ const utils_2 = __importDefault(require("./utils"));
14
+ class ImportInCTxBuilder extends atomicInCTransactionBuilder_1.AtomicInCTransactionBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ }
18
+ /**
19
+ * C-chain address who is target of the import.
20
+ * Address format is eth like
21
+ * @param {string} cAddress
22
+ */
23
+ to(cAddress) {
24
+ this.transaction._to = [utils_2.default.parseAddress(cAddress)];
25
+ return this;
26
+ }
27
+ get transactionType() {
28
+ return sdk_core_1.TransactionType.Import;
29
+ }
30
+ /** @inheritdoc */
31
+ initBuilder(tx) {
32
+ const baseTx = tx.getUnsignedTx().getTransaction();
33
+ if (baseTx.getNetworkID() !== this.transaction._networkID ||
34
+ !baseTx.getBlockchainID().equals(this.transaction._blockchainID)) {
35
+ throw new Error('Network or blockchain is not equals');
36
+ }
37
+ if (!this.verifyTxType(baseTx)) {
38
+ throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
39
+ }
40
+ // The outputs is a signler C-Chain address result.
41
+ // It's expected to have only one outputs to the destination C-Chain address.
42
+ const outputs = baseTx.getOuts();
43
+ if (outputs.length !== 1) {
44
+ throw new sdk_core_1.BuildTransactionError('Transaction can have one output');
45
+ }
46
+ const output = outputs[0];
47
+ if (!output.getAssetID().equals(this.transaction._assetId)) {
48
+ throw new Error('AssetID are not equals');
49
+ }
50
+ this.transaction._to = [output.getAddress()];
51
+ const input = baseTx.getImportInputs();
52
+ this.transaction._utxos = (0, utxoEngine_1.deprecatedRecoverUtxos)(input);
53
+ const totalInputAmount = input.reduce((t, i) => t.add(i.getInput().getAmount()), new avalanche_1.BN(0));
54
+ // it should be (output as AmountOutput).getAmount(), but it's not working.
55
+ const totalOutputAmount = new avalanche_1.BN(output.amount);
56
+ const feeSize = (0, utils_1.costImportTx)(tx.getUnsignedTx());
57
+ const fee = totalInputAmount.sub(totalOutputAmount);
58
+ const feeRate = fee.divn(feeSize);
59
+ this.transaction._fee = {
60
+ fee: fee.toString(),
61
+ feeRate: feeRate.toNumber(),
62
+ size: feeSize,
63
+ };
64
+ this.transaction.setTransaction(tx);
65
+ return this;
66
+ }
67
+ static verifyTxType(baseTx) {
68
+ return baseTx.getTypeID() === evm_1.EVMConstants.IMPORTTX;
69
+ }
70
+ verifyTxType(baseTx) {
71
+ return ImportInCTxBuilder.verifyTxType(baseTx);
72
+ }
73
+ /**
74
+ * Build the import in C-chain transaction
75
+ * @protected
76
+ */
77
+ buildAvaxTransaction() {
78
+ // if tx has credentials, tx shouldn't change
79
+ if (this.transaction.hasCredentials)
80
+ return;
81
+ if (this.transaction._to.length !== 1) {
82
+ throw new Error('to is required');
83
+ }
84
+ if (!this.transaction._fee.feeRate) {
85
+ throw new Error('fee rate is required');
86
+ }
87
+ const { inputs, amount, credentials } = this.createInputs();
88
+ const feeRate = new avalanche_1.BN(this.transaction._fee.feeRate);
89
+ const feeSize = (0, utils_1.costImportTx)(new evm_1.UnsignedTx(new evm_1.ImportTx(this.transaction._networkID, this.transaction._blockchainID, this._externalChainId, inputs, [
90
+ new evm_1.EVMOutput(this.transaction._to[0], amount, this.transaction._assetId),
91
+ ])));
92
+ const fee = feeRate.muln(feeSize);
93
+ this.transaction._fee.fee = fee.toString();
94
+ this.transaction._fee.size = feeSize;
95
+ this.transaction.setTransaction(new evm_1.Tx(new evm_1.UnsignedTx(new evm_1.ImportTx(this.transaction._networkID, this.transaction._blockchainID, this._externalChainId, inputs, [new evm_1.EVMOutput(this.transaction._to[0], amount.sub(fee), this.transaction._assetId)], fee)), credentials));
96
+ }
97
+ /**
98
+ * Create inputs by mapping {@see utxoEngine.utxoToInput} result.
99
+ * Reorder sender to handle recover signer.
100
+ * TransferableInput is a EVM Tx.
101
+ * @return {
102
+ * inputs: TransferableInput[];
103
+ * credentials: Credential[];
104
+ * amount: BN;
105
+ * } where amount is the sum of inputs amount and credentials has signer address to be replaced with correct signature.
106
+ * @protected
107
+ *
108
+ */
109
+ createInputs() {
110
+ const sender = this.transaction._fromAddresses.slice();
111
+ if (this.recoverSigner) {
112
+ // switch first and last signer.
113
+ const tmp = sender.pop();
114
+ sender.push(sender[0]);
115
+ if (tmp) {
116
+ sender[0] = tmp;
117
+ }
118
+ }
119
+ const { inputs, amount } = (0, utxoEngine_1.utxoToInput)(this.transaction._utxos, sender);
120
+ const result = { inputs: [], credentials: [] };
121
+ inputs.forEach((input) => {
122
+ const secpTransferInput = new evm_1.SECPTransferInput(input.amount);
123
+ input.signaturesIdx.forEach((signatureIdx, arrayIndex) => secpTransferInput.addSignatureIdx(signatureIdx, sender[arrayIndex]));
124
+ result.inputs.push(new evm_1.TransferableInput(input.txidBuf, input.outputIdx, this.transaction._assetId, secpTransferInput));
125
+ result.credentials.push((0, evm_1.SelectCredentialClass)(secpTransferInput.getCredentialID(), input.signatures));
126
+ });
127
+ return { ...result, amount };
128
+ }
129
+ }
130
+ exports.ImportInCTxBuilder = ImportInCTxBuilder;
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0SW5DVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbXBvcnRJbkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLGlEQVVpQztBQUNqQyxnREFBb0Q7QUFDcEQseUNBQStCO0FBRS9CLDZDQUFtRTtBQUVuRSwrRUFBNEU7QUFDNUUsb0RBQTRCO0FBRTVCLE1BQWEsa0JBQW1CLFNBQVEseURBQTJCO0lBQ2pFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsRUFBRSxDQUFDLFFBQWdCO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEVBQWdCO1FBQzFCLE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckUsSUFDRSxNQUFNLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO1lBQ3JELENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUNoRSxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSx1QkFBWSxD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Q0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FDcEcsQ0FBQztZQUVGLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUEsMkJBQXFCLEVBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDeEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBbEtELGdEQWtLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQge1xuICBFVk1Db25zdGFudHMsXG4gIFR4IGFzIEVWTVR4LFxuICBJbXBvcnRUeCxcbiAgVW5zaWduZWRUeCxcbiAgU0VDUFRyYW5zZmVySW5wdXQsXG4gIFNlbGVjdENyZWRlbnRpYWxDbGFzcyxcbiAgVHJhbnNmZXJhYmxlSW5wdXQsXG4gIEVWTU91dHB1dCxcbiAgQW1vdW50SW5wdXQsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvZXZtJztcbmltcG9ydCB7IGNvc3RJbXBvcnRUeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L3V0aWxzJztcbmltcG9ydCB7IEJOIH0gZnJvbSAnYXZhbGFuY2hlJztcbmltcG9ydCB7IENyZWRlbnRpYWwgfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9jb21tb24nO1xuaW1wb3J0IHsgZGVwcmVjYXRlZFJlY292ZXJVdHhvcywgdXR4b1RvSW5wdXQgfSBmcm9tICcuL3V0eG9FbmdpbmUnO1xuaW1wb3J0IHsgRGVwcmVjYXRlZEJhc2VUeCwgRGVwcmVjYXRlZFR4IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBBdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY0luQ1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRJbkNUeEJ1aWxkZXIgZXh0ZW5kcyBBdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQy1jaGFpbiBhZGRyZXNzIHdobyBpcyB0YXJnZXQgb2YgdGhlIGltcG9ydC5cbiAgICogQWRkcmVzcyBmb3JtYXQgaXMgZXRoIGxpa2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNBZGRyZXNzXG4gICAqL1xuICB0byhjQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdG8gPSBbdXRpbHMucGFyc2VBZGRyZXNzKGNBZGRyZXNzKV07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuSW1wb3J0O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBEZXByZWNhdGVkVHgpOiB0aGlzIHtcbiAgICBjb25zdCBiYXNlVHg6IERlcHJlY2F0ZWRCYXNlVHggPSB0eC5nZXRVbnNpZ25lZFR4KCkuZ2V0VHJhbnNhY3Rpb24oKTtcbiAgICBpZiAoXG4gICAgICBiYXNlVHguZ2V0TmV0d29ya0lEKCkgIT09IHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCB8fFxuICAgICAgIWJhc2VUeC5nZXRCbG9ja2NoYWluSUQoKS5lcXVhbHModGhpcy50cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklEKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIG9yIGJsb2NrY2hhaW4gaXMgbm90IGVxdWFscycpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4KSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cblxuICAgIC8vIFRoZSBvdXRwdXRzIGlzIGEgc2lnbmxlciBDLUNoYWluIGFkZHJlc3MgcmVzdWx0LlxuICAgIC8vIEl0J3MgZXhwZWN0ZWQgdG8gaGF2ZSBvbmx5IG9uZSBvdXRwdXRzIHRvIHRoZSBkZXN0aW5hdGlvbiBDLUNoYWluIGFkZHJlc3MuXG4gICAgY29uc3Qgb3V0cHV0cyA9IGJhc2VUeC5nZXRPdXRzKCk7XG4gICAgaWYgKG91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG5cbiAgICBpZiAoIW91dHB1dC5nZXRBc3NldElEKCkuZXF1YWxzKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0SUQgYXJlIG5vdCBlcXVhbHMnKTtcbiAgICB9XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdG8gPSBbb3V0cHV0LmdldEFkZHJlc3MoKV07XG5cbiAgICBjb25zdCBpbnB1dCA9IGJhc2VUeC5nZXRJbXBvcnRJbnB1dHMoKTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gZGVwcmVjYXRlZFJlY292ZXJVdHhvcyhpbnB1dCk7XG5cbiAgICBjb25zdCB0b3RhbElucHV0QW1vdW50ID0gaW5wdXQucmVkdWNlKCh0LCBpKSA9PiB0LmFkZCgoaS5nZXRJbnB1dCgpIGFzIEFtb3VudElucHV0KS5nZXRBbW91bnQoKSksIG5ldyBCTigwKSk7XG4gICAgLy8gaXQgc2hvdWxkIGJlIChvdXRwdXQgYXMgQW1vdW50T3V0cHV0KS5nZXRBbW91bnQoKSwgYnV0IGl0J3Mgbm90IHdvcmtpbmcuXG4gICAgY29uc3QgdG90YWxPdXRwdXRBbW91bnQgPSBuZXcgQk4oKG91dHB1dCBhcyBhbnkpLmFtb3VudCk7XG4gICAgY29uc3QgZmVlU2l6ZSA9IGNvc3RJbXBvcnRUeCh0eC5nZXRVbnNpZ25lZFR4KCkgYXMgVW5zaWduZWRUeCk7XG4gICAgY29uc3QgZmVlID0gdG90YWxJbnB1dEFtb3VudC5zdWIodG90YWxPdXRwdXRBbW91bnQpO1xuICAgIGNvbnN0IGZlZVJhdGUgPSBmZWUuZGl2bihmZWVTaXplKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUgPSB7XG4gICAgICBmZWU6IGZlZS50b1N0cmluZygpLFxuICAgICAgZmVlUmF0ZTogZmVlUmF0ZS50b051bWJlcigpLFxuICAgICAgc2l6ZTogZmVlU2l6ZSxcbiAgICB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHZlcmlmeVR4VHlwZShiYXNlVHg6IERlcHJlY2F0ZWRCYXNlVHgpOiBiYXNlVHggaXMgSW1wb3J0VHgge1xuICAgIHJldHVybiBiYXNlVHguZ2V0VHlwZUlEKCkgPT09IEVWTUNvbnN0YW50cy5JTVBPUlRUWDtcbiAgfVxuXG4gIHZlcmlmeVR4VHlwZShiYXNlVHg6IERlcHJlY2F0ZWRCYXNlVHgpOiBiYXNlVHggaXMgSW1wb3J0VHgge1xuICAgIHJldHVybiBJbXBvcnRJbkNUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKGJhc2VUeCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGltcG9ydCBpbiBDLWNoYWluIHRyYW5zYWN0aW9uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEF2YXhUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBpZiB0eCBoYXMgY3JlZGVudGlhbHMsIHR4IHNob3VsZG4ndCBjaGFuZ2VcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5oYXNDcmVkZW50aWFscykgcmV0dXJuO1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLl90by5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndG8gaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlUmF0ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmZWUgcmF0ZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCB7IGlucHV0cywgYW1vdW50LCBjcmVkZW50aWFscyB9ID0gdGhpcy5jcmVhdGVJbnB1dHMoKTtcblxuICAgIGNvbnN0IGZlZVJhdGUgPSBuZXcgQk4odGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZVJhdGUpO1xuICAgIGNvbnN0IGZlZVNpemUgPSBjb3N0SW1wb3J0VHgoXG4gICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgbmV3IEltcG9ydFR4KHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCwgdGhpcy50cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklELCB0aGlzLl9leHRlcm5hbENoYWluSWQsIGlucHV0cywgW1xuICAgICAgICAgIG5ldyBFVk1PdXRwdXQodGhpcy50cmFuc2FjdGlvbi5fdG9bMF0sIGFtb3VudCwgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCksXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBmZWUgPSBmZWVSYXRlLm11bG4oZmVlU2l6ZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IGZlZS50b1N0cmluZygpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5zaXplID0gZmVlU2l6ZTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IEVWTVR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgSW1wb3J0VHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICB0aGlzLl9leHRlcm5hbENoYWluSWQsXG4gICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICBbbmV3IEVWTU91dHB1dCh0aGlzLnRyYW5zYWN0aW9uLl90b1swXSwgYW1vdW50LnN1YihmZWUpLCB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKV0sXG4gICAgICAgICAgICBmZWVcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNyZWRlbnRpYWxzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgaW5wdXRzIGJ5IG1hcHBpbmcge0BzZWUgdXR4b0VuZ2luZS51dHhvVG9JbnB1dH0gcmVzdWx0LlxuICAgKiBSZW9yZGVyIHNlbmRlciB0byBoYW5kbGUgcmVjb3ZlciBzaWduZXIuXG4gICAqIFRyYW5zZmVyYWJsZUlucHV0IGlzIGEgRVZNIFR4LlxuICAgKiBAcmV0dXJuIHtcbiAgICogICAgIGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXTtcbiAgICogICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gICAqICAgICBhbW91bnQ6IEJOO1xuICAgKiAgIH0gd2hlcmUgYW1vdW50IGlzIHRoZSBzdW0gb2YgaW5wdXRzIGFtb3VudCBhbmQgY3JlZGVudGlhbHMgaGFzIHNpZ25lciBhZGRyZXNzIHRvIGJlIHJlcGxhY2VkIHdpdGggY29ycmVjdCBzaWduYXR1cmUuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbnB1dHMoKToge1xuICAgIGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXTtcbiAgICBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdO1xuICAgIGFtb3VudDogQk47XG4gIH0ge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMuc2xpY2UoKTtcbiAgICBpZiAodGhpcy5yZWNvdmVyU2lnbmVyKSB7XG4gICAgICAvLyBzd2l0Y2ggZmlyc3QgYW5kIGxhc3Qgc2lnbmVyLlxuICAgICAgY29uc3QgdG1wID0gc2VuZGVyLnBvcCgpO1xuICAgICAgc2VuZGVyLnB1c2goc2VuZGVyWzBdKTtcbiAgICAgIGlmICh0bXApIHtcbiAgICAgICAgc2VuZGVyWzBdID0gdG1wO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IGlucHV0cywgYW1vdW50IH0gPSB1dHhvVG9JbnB1dCh0aGlzLnRyYW5zYWN0aW9uLl91dHhvcywgc2VuZGVyKTtcbiAgICBjb25zdCByZXN1bHQ6IHtcbiAgICAgIGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXTtcbiAgICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gICAgfSA9IHsgaW5wdXRzOiBbXSwgY3JlZGVudGlhbHM6IFtdIH07XG5cbiAgICBpbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGlucHV0LmFtb3VudCk7XG4gICAgICBpbnB1dC5zaWduYXR1cmVzSWR4LmZvckVhY2goKHNpZ25hdHVyZUlkeCwgYXJyYXlJbmRleCkgPT5cbiAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KHNpZ25hdHVyZUlkeCwgc2VuZGVyW2FycmF5SW5kZXhdKVxuICAgICAgKTtcbiAgICAgIHJlc3VsdC5pbnB1dHMucHVzaChcbiAgICAgICAgbmV3IFRyYW5zZmVyYWJsZUlucHV0KGlucHV0LnR4aWRCdWYsIGlucHV0Lm91dHB1dElkeCwgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCwgc2VjcFRyYW5zZmVySW5wdXQpXG4gICAgICApO1xuXG4gICAgICByZXN1bHQuY3JlZGVudGlhbHMucHVzaChTZWxlY3RDcmVkZW50aWFsQ2xhc3Moc2VjcFRyYW5zZmVySW5wdXQuZ2V0Q3JlZGVudGlhbElEKCksIGlucHV0LnNpZ25hdHVyZXMpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7IC4uLnJlc3VsdCwgYW1vdW50IH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { AtomicTransactionBuilder } from './atomicTransactionBuilder';
4
+ import { ImportTx } from 'avalanche/dist/apis/platformvm';
5
+ import { DeprecatedTx, DeprecatedBaseTx } from './iface';
6
+ export declare class ImportTxBuilder extends AtomicTransactionBuilder {
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ protected get transactionType(): TransactionType;
9
+ initBuilder(tx: DeprecatedTx): this;
10
+ static verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ImportTx;
11
+ verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ImportTx;
12
+ /**
13
+ * Build the import transaction
14
+ * @protected
15
+ */
16
+ protected buildAvaxTransaction(): void;
17
+ }
18
+ //# sourceMappingURL=importTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/importTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAgD,MAAM,gCAAgC,CAAC;AAIxG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEzD,qBAAa,eAAgB,SAAQ,wBAAwB;gBAC/C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IA4BnC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAIjE,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAI1D;;;OAGG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;CAqBvC"}
@@ -0,0 +1,67 @@
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.ImportTxBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
9
+ const platformvm_1 = require("avalanche/dist/apis/platformvm");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ const avalanche_1 = require("avalanche");
12
+ const utxoEngine_1 = require("./utxoEngine");
13
+ class ImportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
14
+ constructor(_coinConfig) {
15
+ super(_coinConfig);
16
+ this._externalChainId = utils_1.default.cb58Decode(this.transaction._network.cChainBlockchainID);
17
+ }
18
+ get transactionType() {
19
+ return sdk_core_1.TransactionType.Import;
20
+ }
21
+ initBuilder(tx) {
22
+ super.initBuilder(tx);
23
+ const baseTx = tx.getUnsignedTx().getTransaction();
24
+ if (!this.verifyTxType(baseTx)) {
25
+ throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
26
+ }
27
+ // The regular change output is the tx output in Import tx.
28
+ // {@link createInputOutput} result a single item array.
29
+ // It's expected to have only one outputs with the addresses of the sender.
30
+ const outputs = baseTx.getOuts();
31
+ if (outputs.length !== 1) {
32
+ throw new sdk_core_1.BuildTransactionError('Transaction can have one external output');
33
+ }
34
+ const output = outputs[0];
35
+ if (!output.getAssetID().equals(this.transaction._assetId)) {
36
+ throw new Error('The Asset ID of the output does not match the transaction');
37
+ }
38
+ const secpOut = output.getOutput();
39
+ this.transaction._locktime = secpOut.getLocktime();
40
+ this.transaction._threshold = secpOut.getThreshold();
41
+ // output addresses are the sender addresses
42
+ this.transaction._fromAddresses = secpOut.getAddresses();
43
+ this._externalChainId = baseTx.getSourceChain();
44
+ this.transaction._utxos = (0, utxoEngine_1.deprecatedRecoverUtxos)(baseTx.getImportInputs());
45
+ return this;
46
+ }
47
+ static verifyTxType(baseTx) {
48
+ return baseTx.getTypeID() === platformvm_1.PlatformVMConstants.IMPORTTX;
49
+ }
50
+ verifyTxType(baseTx) {
51
+ return ImportTxBuilder.verifyTxType(baseTx);
52
+ }
53
+ /**
54
+ * Build the import transaction
55
+ * @protected
56
+ */
57
+ buildAvaxTransaction() {
58
+ // if tx has credentials, tx shouldn't change
59
+ if (this.transaction.hasCredentials)
60
+ return;
61
+ const { inputs, outputs, credentials } = this.createInputOutput(new avalanche_1.BN(this.transaction.fee.fee));
62
+ this.transaction.setTransaction(new platformvm_1.Tx(new platformvm_1.UnsignedTx(new platformvm_1.ImportTx(this.transaction._networkID, this.transaction._blockchainID, outputs, [], // P-Chain input
63
+ undefined, this._externalChainId, inputs)), credentials));
64
+ }
65
+ }
66
+ exports.ImportTxBuilder = ImportTxBuilder;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0VHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbXBvcnRUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQTRGO0FBQzVGLHlFQUFzRTtBQUN0RSwrREFBd0c7QUFDeEcsb0RBQTRCO0FBQzVCLHlDQUErQjtBQUMvQiw2Q0FBc0Q7QUFHdEQsTUFBYSxlQUFnQixTQUFRLG1EQUF3QjtJQUMzRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWdCO1FBQzFCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCx3REFBd0Q7UUFDeEQsMkVBQTJFO1FBQzNFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyRCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBQSxtQ0FBc0IsRUFBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQXdCO1FBQzFDLE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLGdDQUFtQixDQUFDLFFBQVEsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQXdCO1FBQ25DLE9BQU8sZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sb0JBQW9CO1FBQzVCLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztZQUFFLE9BQU87UUFDNUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksY0FBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQzdCLElBQUksZUFBSyxDQUNQLElBQUksdUJBQVUsQ0FDWixJQUFJLHFCQUFRLENBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUM5QixPQUFPLEVBQ1AsRUFBRSxFQUFFLGdCQUFnQjtRQUNwQixTQUFTLEVBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixNQUFNLENBQ1AsQ0FDRixFQUNELFdBQVcsQ0FDWixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2RUQsMENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBOb3RTdXBwb3J0ZWQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEltcG9ydFR4LCBQbGF0Zm9ybVZNQ29uc3RhbnRzLCBUeCBhcyBQVk1UeCwgVW5zaWduZWRUeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBCTiB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQgeyBkZXByZWNhdGVkUmVjb3ZlclV0eG9zIH0gZnJvbSAnLi91dHhvRW5naW5lJztcbmltcG9ydCB7IERlcHJlY2F0ZWRUeCwgRGVwcmVjYXRlZEJhc2VUeCB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgSW1wb3J0VHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IHV0aWxzLmNiNThEZWNvZGUodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkltcG9ydDtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBEZXByZWNhdGVkVHgpOiB0aGlzIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgYmFzZVR4OiBEZXByZWNhdGVkQmFzZVR4ID0gdHguZ2V0VW5zaWduZWRUeCgpLmdldFRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnZlcmlmeVR4VHlwZShiYXNlVHgpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHJlZ3VsYXIgY2hhbmdlIG91dHB1dCBpcyB0aGUgdHggb3V0cHV0IGluIEltcG9ydCB0eC5cbiAgICAvLyB7QGxpbmsgY3JlYXRlSW5wdXRPdXRwdXR9IHJlc3VsdCBhIHNpbmdsZSBpdGVtIGFycmF5LlxuICAgIC8vIEl0J3MgZXhwZWN0ZWQgdG8gaGF2ZSBvbmx5IG9uZSBvdXRwdXRzIHdpdGggdGhlIGFkZHJlc3NlcyBvZiB0aGUgc2VuZGVyLlxuICAgIGNvbnN0IG91dHB1dHMgPSBiYXNlVHguZ2V0T3V0cygpO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY2FuIGhhdmUgb25lIGV4dGVybmFsIG91dHB1dCcpO1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdO1xuICAgIGlmICghb3V0cHV0LmdldEFzc2V0SUQoKS5lcXVhbHModGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEFzc2V0IElEIG9mIHRoZSBvdXRwdXQgZG9lcyBub3QgbWF0Y2ggdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNlY3BPdXQgPSBvdXRwdXQuZ2V0T3V0cHV0KCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUgPSBzZWNwT3V0LmdldExvY2t0aW1lKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gc2VjcE91dC5nZXRUaHJlc2hvbGQoKTtcbiAgICAvLyBvdXRwdXQgYWRkcmVzc2VzIGFyZSB0aGUgc2VuZGVyIGFkZHJlc3Nlc1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBzZWNwT3V0LmdldEFkZHJlc3NlcygpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IGJhc2VUeC5nZXRTb3VyY2VDaGFpbigpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gZGVwcmVjYXRlZFJlY292ZXJVdHhvcyhiYXNlVHguZ2V0SW1wb3J0SW5wdXRzKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhdGljIHZlcmlmeVR4VHlwZShiYXNlVHg6IERlcHJlY2F0ZWRCYXNlVHgpOiBiYXNlVHggaXMgSW1wb3J0VHgge1xuICAgIHJldHVybiBiYXNlVHguZ2V0VHlwZUlEKCkgPT09IFBsYXRmb3JtVk1Db25zdGFudHMuSU1QT1JUVFg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBEZXByZWNhdGVkQmFzZVR4KTogYmFzZVR4IGlzIEltcG9ydFR4IHtcbiAgICByZXR1cm4gSW1wb3J0VHhCdWlsZGVyLnZlcmlmeVR4VHlwZShiYXNlVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBpbXBvcnQgdHJhbnNhY3Rpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkQXZheFRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIC8vIGlmIHR4IGhhcyBjcmVkZW50aWFscywgdHggc2hvdWxkbid0IGNoYW5nZVxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmhhc0NyZWRlbnRpYWxzKSByZXR1cm47XG4gICAgY29uc3QgeyBpbnB1dHMsIG91dHB1dHMsIGNyZWRlbnRpYWxzIH0gPSB0aGlzLmNyZWF0ZUlucHV0T3V0cHV0KG5ldyBCTih0aGlzLnRyYW5zYWN0aW9uLmZlZS5mZWUpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IFBWTVR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgSW1wb3J0VHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBvdXRwdXRzLFxuICAgICAgICAgICAgW10sIC8vIFAtQ2hhaW4gaW5wdXRcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCxcbiAgICAgICAgICAgIGlucHV0c1xuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgY3JlZGVudGlhbHNcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import Utils from './utils';
2
+ export * from './iface';
3
+ export { KeyPair } from './keyPair';
4
+ export { Transaction } from './transaction';
5
+ export { TransactionBuilder } from './transactionBuilder';
6
+ export { DeprecatedTransaction } from './deprecatedTransaction';
7
+ export { DeprecatedTransactionBuilder } from './deprecatedTransactionBuilder';
8
+ export { TransactionBuilderFactory } from './transactionBuilderFactory';
9
+ export * from './iface';
10
+ export { Utils };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,37 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.Utils = exports.TransactionBuilderFactory = exports.DeprecatedTransactionBuilder = exports.DeprecatedTransaction = exports.TransactionBuilder = exports.Transaction = exports.KeyPair = void 0;
21
+ const utils_1 = __importDefault(require("./utils"));
22
+ exports.Utils = utils_1.default;
23
+ __exportStar(require("./iface"), exports);
24
+ var keyPair_1 = require("./keyPair");
25
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
26
+ var transaction_1 = require("./transaction");
27
+ Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
28
+ var transactionBuilder_1 = require("./transactionBuilder");
29
+ Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
30
+ var deprecatedTransaction_1 = require("./deprecatedTransaction");
31
+ Object.defineProperty(exports, "DeprecatedTransaction", { enumerable: true, get: function () { return deprecatedTransaction_1.DeprecatedTransaction; } });
32
+ var deprecatedTransactionBuilder_1 = require("./deprecatedTransactionBuilder");
33
+ Object.defineProperty(exports, "DeprecatedTransactionBuilder", { enumerable: true, get: function () { return deprecatedTransactionBuilder_1.DeprecatedTransactionBuilder; } });
34
+ var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
35
+ Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
36
+ __exportStar(require("./iface"), exports);
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBU25CLGdCQVRGLGVBQUssQ0FTRTtBQVJkLDBDQUF3QjtBQUN4QixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLDZDQUE0QztBQUFuQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLGlFQUFnRTtBQUF2RCw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QiwrRUFBOEU7QUFBckUsNElBQUEsNEJBQTRCLE9BQUE7QUFDckMseUVBQXdFO0FBQS9ELHNJQUFBLHlCQUF5QixPQUFBO0FBQ2xDLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVdGlscyBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaWZhY2UnO1xuZXhwb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgRGVwcmVjYXRlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9kZXByZWNhdGVkVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgRGVwcmVjYXRlZFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vZGVwcmVjYXRlZFRyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vaWZhY2UnO1xuZXhwb3J0IHsgVXRpbHMgfTtcbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { DefaultKeys, KeyPairOptions, Secp256k1ExtendedKeyPair } from '@bitgo-beta/sdk-core';
2
+ export declare enum addressFormat {
3
+ testnet = "fuji",
4
+ mainnet = "avax"
5
+ }
6
+ export declare class KeyPair extends Secp256k1ExtendedKeyPair {
7
+ /**
8
+ * Public constructor. By default, creates a key pair with a random master seed.
9
+ *
10
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
11
+ */
12
+ constructor(source?: KeyPairOptions);
13
+ /**
14
+ * Build a keypair from a protocol private key or extended private key.
15
+ *
16
+ * @param {string} prv A raw private key
17
+ */
18
+ recordKeysFromPrivateKey(prv: string): void;
19
+ /**
20
+ * Build an ECPair from a protocol public key or extended public key.
21
+ *
22
+ * @param {string} pub A raw public key
23
+ */
24
+ recordKeysFromPublicKey(pub: string): void;
25
+ /**
26
+ * Default keys format is a pair of Uint8Array keys
27
+ *
28
+ * @returns { DefaultKeys } The keys in the defined format
29
+ */
30
+ getKeys(): DefaultKeys;
31
+ /**
32
+ * Get an Avalanche P-Chain public mainnet address
33
+ *
34
+ * @param {string} format - avalanche hrp - select Mainnet(avax) or Testnet(fuji) for the address
35
+ * @returns {string} The mainnet address derived from the public key
36
+ */
37
+ getAddress(format?: string): string;
38
+ /**
39
+ * Get a public address of public key.
40
+ *
41
+ * @param {string} hrp - select Mainnet(avax) or Testnet(fuji) for the address
42
+ * @returns {string} The address derived from the public key and hrp
43
+ */
44
+ getAvaxPAddress(hrp: string): string;
45
+ /**
46
+ * Get an Avalanche P-Chain public mainnet address
47
+ *
48
+ * @returns {Buffer} The address buffer derived from the public key
49
+ */
50
+ getAddressBuffer(): Buffer;
51
+ /**
52
+ * Use the safe Buffer instead of the regular buffer to derive the address buffer. Used in the OVC.
53
+ *
54
+ * @returns {Buffer}
55
+ */
56
+ getAddressSafeBuffer(): Buffer;
57
+ }
58
+ //# sourceMappingURL=keyPair.d.ts.map