@bitgo/sdk-coin-avaxp 2.2.0-rc.8 → 3.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/.mocharc.yml +8 -0
  2. package/CHANGELOG.md +200 -0
  3. package/dist/src/avaxp.d.ts +9 -1
  4. package/dist/src/avaxp.d.ts.map +1 -1
  5. package/dist/src/avaxp.js +23 -4
  6. package/dist/src/lib/atomicTransactionBuilder.d.ts +33 -0
  7. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -0
  8. package/dist/src/lib/atomicTransactionBuilder.js +122 -0
  9. package/dist/src/lib/delegatorTxBuilder.d.ts +12 -12
  10. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -1
  11. package/dist/src/lib/delegatorTxBuilder.js +37 -30
  12. package/dist/src/lib/exportTxBuilder.d.ts +34 -0
  13. package/dist/src/lib/exportTxBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/exportTxBuilder.js +88 -0
  15. package/dist/src/lib/iface.d.ts +13 -2
  16. package/dist/src/lib/iface.d.ts.map +1 -1
  17. package/dist/src/lib/iface.js +8 -2
  18. package/dist/src/lib/importInCTxBuilder.d.ts +48 -0
  19. package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/importInCTxBuilder.js +152 -0
  21. package/dist/src/lib/importTxBuilder.d.ts +18 -0
  22. package/dist/src/lib/importTxBuilder.d.ts.map +1 -0
  23. package/dist/src/lib/importTxBuilder.js +67 -0
  24. package/dist/src/lib/keyPair.d.ts.map +1 -1
  25. package/dist/src/lib/keyPair.js +10 -30
  26. package/dist/src/lib/transaction.d.ts +9 -4
  27. package/dist/src/lib/transaction.d.ts.map +1 -1
  28. package/dist/src/lib/transaction.js +61 -74
  29. package/dist/src/lib/transactionBuilder.d.ts +59 -18
  30. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  31. package/dist/src/lib/transactionBuilder.js +86 -48
  32. package/dist/src/lib/transactionBuilderFactory.d.ts +23 -2
  33. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  34. package/dist/src/lib/transactionBuilderFactory.js +66 -9
  35. package/dist/src/lib/utils.d.ts +26 -4
  36. package/dist/src/lib/utils.d.ts.map +1 -1
  37. package/dist/src/lib/utils.js +60 -14
  38. package/dist/src/lib/utxoEngine.d.ts +45 -0
  39. package/dist/src/lib/utxoEngine.d.ts.map +1 -0
  40. package/dist/src/lib/utxoEngine.js +89 -0
  41. package/dist/src/lib/validatorTxBuilder.d.ts +3 -6
  42. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -1
  43. package/dist/src/lib/validatorTxBuilder.js +3 -7
  44. package/dist/test/resources/avaxp.d.ts +178 -0
  45. package/dist/test/resources/avaxp.d.ts.map +1 -0
  46. package/dist/test/resources/avaxp.js +953 -0
  47. package/dist/test/resources/errors.d.ts +18 -0
  48. package/dist/test/resources/errors.d.ts.map +1 -0
  49. package/dist/test/resources/errors.js +21 -0
  50. package/dist/test/resources/keychains.d.ts +18 -0
  51. package/dist/test/resources/keychains.d.ts.map +1 -0
  52. package/dist/test/resources/keychains.js +30 -0
  53. package/dist/test/resources/tx/importC.d.ts +29 -0
  54. package/dist/test/resources/tx/importC.d.ts.map +1 -0
  55. package/dist/test/resources/tx/importC.js +42 -0
  56. package/dist/test/resources/tx/importP.d.ts +29 -0
  57. package/dist/test/resources/tx/importP.d.ts.map +1 -0
  58. package/dist/test/resources/tx/importP.js +42 -0
  59. package/dist/test/unit/avaxp.d.ts +2 -0
  60. package/dist/test/unit/avaxp.d.ts.map +1 -0
  61. package/dist/test/unit/avaxp.js +553 -0
  62. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts +2 -0
  63. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts.map +1 -0
  64. package/dist/test/unit/lib/exportP2CTxBuilder.js +173 -0
  65. package/dist/test/unit/lib/importC2PTxBuilder.d.ts +2 -0
  66. package/dist/test/unit/lib/importC2PTxBuilder.d.ts.map +1 -0
  67. package/dist/test/unit/lib/importC2PTxBuilder.js +85 -0
  68. package/dist/test/unit/lib/importP2CTxBuilder.d.ts +2 -0
  69. package/dist/test/unit/lib/importP2CTxBuilder.d.ts.map +1 -0
  70. package/dist/test/unit/lib/importP2CTxBuilder.js +125 -0
  71. package/dist/test/unit/lib/keyPair.d.ts +2 -0
  72. package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
  73. package/dist/test/unit/lib/keyPair.js +172 -0
  74. package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
  75. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
  76. package/dist/test/unit/lib/signFlowTestSuit.js +80 -0
  77. package/dist/test/unit/lib/transactionBuilderFactory.d.ts +2 -0
  78. package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +1 -0
  79. package/dist/test/unit/lib/transactionBuilderFactory.js +114 -0
  80. package/dist/test/unit/lib/utils.d.ts +2 -0
  81. package/dist/test/unit/lib/utils.d.ts.map +1 -0
  82. package/dist/test/unit/lib/utils.js +69 -0
  83. package/dist/test/unit/lib/utxoEngine.d.ts +2 -0
  84. package/dist/test/unit/lib/utxoEngine.d.ts.map +1 -0
  85. package/dist/test/unit/lib/utxoEngine.js +168 -0
  86. package/dist/test/unit/lib/validateTxBuilder.d.ts +2 -0
  87. package/dist/test/unit/lib/validateTxBuilder.d.ts.map +1 -0
  88. package/dist/test/unit/lib/validateTxBuilder.js +303 -0
  89. package/dist/tsconfig.tsbuildinfo +2066 -1462
  90. package/package.json +7 -8
  91. package/dist/src/lib/transferBuilder.d.ts +0 -18
  92. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  93. package/dist/src/lib/transferBuilder.js +0 -31
package/.mocharc.yml ADDED
@@ -0,0 +1,8 @@
1
+ require: 'ts-node/register'
2
+ timeout: '60000'
3
+ reporter: 'min'
4
+ reporter-option:
5
+ - 'cdn=true'
6
+ - 'json=false'
7
+ exit: true
8
+ spec: ['test/unit/**/*.ts']
package/CHANGELOG.md CHANGED
@@ -3,6 +3,206 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.0.0-rc.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.30...@bitgo/sdk-coin-avaxp@3.0.0-rc.0) (2022-09-20)
7
+
8
+
9
+ ### Features
10
+
11
+ * **sdk-core:** capitalize transaction type enum ([bce263e](https://github.com/BitGo/BitGoJS/commit/bce263e01ebf70119ddefd572f55c3a69f15751c))
12
+
13
+
14
+ ### BREAKING CHANGES
15
+
16
+ * **sdk-core:** change to upper case first char of addDelegator and addValidator
17
+ BG-56847
18
+
19
+
20
+
21
+
22
+
23
+ # [2.2.0-rc.30](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.29...@bitgo/sdk-coin-avaxp@2.2.0-rc.30) (2022-09-16)
24
+
25
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
26
+
27
+
28
+
29
+
30
+
31
+ # [2.2.0-rc.29](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.28...@bitgo/sdk-coin-avaxp@2.2.0-rc.29) (2022-09-16)
32
+
33
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
34
+
35
+
36
+
37
+
38
+
39
+ # [2.2.0-rc.28](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.27...@bitgo/sdk-coin-avaxp@2.2.0-rc.28) (2022-09-15)
40
+
41
+
42
+ ### Features
43
+
44
+ * **sdk-coin-avaxp:** implement tx builder for import in c chain ([4d7856b](https://github.com/BitGo/BitGoJS/commit/4d7856b5417220ff8fccafefe05551b9b93246c1))
45
+
46
+
47
+
48
+
49
+
50
+ # [2.2.0-rc.27](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.26...@bitgo/sdk-coin-avaxp@2.2.0-rc.27) (2022-09-14)
51
+
52
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
53
+
54
+
55
+
56
+
57
+
58
+ # [2.2.0-rc.26](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.25...@bitgo/sdk-coin-avaxp@2.2.0-rc.26) (2022-09-14)
59
+
60
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
61
+
62
+
63
+
64
+
65
+
66
+ # [2.2.0-rc.25](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.24...@bitgo/sdk-coin-avaxp@2.2.0-rc.25) (2022-09-13)
67
+
68
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
69
+
70
+
71
+
72
+
73
+
74
+ # [2.2.0-rc.23](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.22...@bitgo/sdk-coin-avaxp@2.2.0-rc.23) (2022-09-08)
75
+
76
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
77
+
78
+
79
+
80
+
81
+
82
+ # [2.2.0-rc.21](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.20...@bitgo/sdk-coin-avaxp@2.2.0-rc.21) (2022-09-07)
83
+
84
+
85
+ ### Features
86
+
87
+ * **sdk-coin-avaxp:** implement tx builder for import on p ([f52d124](https://github.com/BitGo/BitGoJS/commit/f52d124a1dbf4be9fe7010eaa2460aa6a60a56ea))
88
+
89
+
90
+
91
+
92
+
93
+ # [2.2.0-rc.20](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.19...@bitgo/sdk-coin-avaxp@2.2.0-rc.20) (2022-09-07)
94
+
95
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
96
+
97
+
98
+
99
+
100
+
101
+ # [2.2.0-rc.19](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.18...@bitgo/sdk-coin-avaxp@2.2.0-rc.19) (2022-09-06)
102
+
103
+
104
+ ### Features
105
+
106
+ * **sdk-coin-avaxp:** implement export tx builder ([483d9ce](https://github.com/BitGo/BitGoJS/commit/483d9ce67b75ca5eb4c1330f59820b18043cdb6c))
107
+
108
+
109
+
110
+
111
+
112
+ # [2.2.0-rc.18](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.17...@bitgo/sdk-coin-avaxp@2.2.0-rc.18) (2022-09-01)
113
+
114
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
115
+
116
+
117
+
118
+
119
+
120
+ # [2.2.0-rc.17](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.16...@bitgo/sdk-coin-avaxp@2.2.0-rc.17) (2022-08-31)
121
+
122
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
123
+
124
+
125
+
126
+
127
+
128
+ # [2.2.0-rc.16](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.15...@bitgo/sdk-coin-avaxp@2.2.0-rc.16) (2022-08-30)
129
+
130
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
131
+
132
+
133
+
134
+
135
+
136
+ # [2.2.0-rc.15](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.14...@bitgo/sdk-coin-avaxp@2.2.0-rc.15) (2022-08-26)
137
+
138
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
139
+
140
+
141
+
142
+
143
+
144
+ # [2.2.0-rc.14](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.13...@bitgo/sdk-coin-avaxp@2.2.0-rc.14) (2022-08-25)
145
+
146
+
147
+ ### Bug Fixes
148
+
149
+ * **sdk-coin-avaxp:** run unit test with account lib ([7b392ab](https://github.com/BitGo/BitGoJS/commit/7b392ab55faba52251586ad0bcb5f80ca05c45ef))
150
+
151
+
152
+
153
+
154
+
155
+ # [2.2.0-rc.13](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.12...@bitgo/sdk-coin-avaxp@2.2.0-rc.13) (2022-08-23)
156
+
157
+
158
+ ### Bug Fixes
159
+
160
+ * **core:** fix bip32/ecpair, API vs Interface ([bec9c1e](https://github.com/BitGo/BitGoJS/commit/bec9c1e6ff0c23108dc27e171abdd3e4d2cfdfb1))
161
+
162
+
163
+ ### Features
164
+
165
+ * update to work with bitcoinjs-lib@6 ([1950934](https://github.com/BitGo/BitGoJS/commit/1950934d9426385ee12b204cc7456327e4480618))
166
+
167
+
168
+
169
+
170
+
171
+ # [2.2.0-rc.12](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.11...@bitgo/sdk-coin-avaxp@2.2.0-rc.12) (2022-08-22)
172
+
173
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
174
+
175
+
176
+
177
+
178
+
179
+ # [2.2.0-rc.11](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.10...@bitgo/sdk-coin-avaxp@2.2.0-rc.11) (2022-08-17)
180
+
181
+
182
+ ### Bug Fixes
183
+
184
+ * **root:** align versions of bitcoinjs-lib ([b7eb929](https://github.com/BitGo/BitGoJS/commit/b7eb92998836a5945627ef1c80d74414b11f4867))
185
+
186
+
187
+
188
+
189
+
190
+ # [2.2.0-rc.10](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.9...@bitgo/sdk-coin-avaxp@2.2.0-rc.10) (2022-08-17)
191
+
192
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
193
+
194
+
195
+
196
+
197
+
198
+ # [2.2.0-rc.9](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.8...@bitgo/sdk-coin-avaxp@2.2.0-rc.9) (2022-08-15)
199
+
200
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
201
+
202
+
203
+
204
+
205
+
6
206
  # [2.2.0-rc.8](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.7...@bitgo/sdk-coin-avaxp@2.2.0-rc.8) (2022-08-12)
7
207
 
8
208
  **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
@@ -20,6 +20,14 @@ export declare class AvaxP extends BaseCoin {
20
20
  * @param params.keychains public keys to generate the wallet
21
21
  */
22
22
  isWalletAddress(params: VerifyAddressOptions): boolean;
23
+ /**
24
+ * Validate that two multisig address arrays have the same elements, order doesnt matter
25
+ * @param addressArray1
26
+ * @param addressArray2
27
+ * @returns true if address arrays have the same addresses
28
+ * @private
29
+ */
30
+ private adressesArraysMatch;
23
31
  /**
24
32
  * Generate Avaxp key pair
25
33
  *
@@ -41,7 +49,7 @@ export declare class AvaxP extends BaseCoin {
41
49
  * @returns is it valid?
42
50
  */
43
51
  isValidPrv(prv: string): boolean;
44
- isValidAddress(address: string): boolean;
52
+ isValidAddress(address: string | string[]): boolean;
45
53
  /**
46
54
  * Signs Avaxp transaction
47
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"avaxp.d.ts","sourceRoot":"","sources":["../../src/avaxp.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAIvB,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AAGjB,qBAAa,KAAM,SAAQ,QAAQ;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAGlB,SAAS,IAAI,UAAU;IAGvB,WAAW,IAAI,MAAM;IAGrB,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC,eAAe,IAAI,OAAO;IAIpB,iBAAiB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IA0ChF;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IAiBtD;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBhF,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKtE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAInF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAcrG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIvD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1E,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"avaxp.d.ts","sourceRoot":"","sources":["../../src/avaxp.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAIvB,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AAGjB,qBAAa,KAAM,SAAQ,QAAQ;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAGlB,SAAS,IAAI,UAAU;IAGvB,WAAW,IAAI,MAAM;IAGrB,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC,eAAe,IAAI,OAAO;IAIpB,iBAAiB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IA0ChF;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IA6BtD;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAQnD;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBhF,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKtE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAInF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAcrG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIvD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1E,OAAO,CAAC,UAAU;CAGnB"}
package/dist/src/avaxp.js CHANGED
@@ -75,8 +75,8 @@ class AvaxP extends sdk_core_1.BaseCoin {
75
75
  throw new Error('Tx memo does not match with expected txParams memo');
76
76
  }
77
77
  switch (explainedTx.type) {
78
- case sdk_core_1.TransactionType.addDelegator:
79
- case sdk_core_1.TransactionType.addValidator:
78
+ case sdk_core_1.TransactionType.AddDelegator:
79
+ case sdk_core_1.TransactionType.AddValidator:
80
80
  if (!params.txParams.recipients || params.txParams.recipients.length === 0) {
81
81
  const filteredRecipients = [{ address: stakingOptions.nodeID, amount: stakingOptions.amount }];
82
82
  const filteredOutputs = explainedTx.outputs.map((output) => lodash_1.default.pick(output, ['address', 'amount']));
@@ -107,12 +107,28 @@ class AvaxP extends sdk_core_1.BaseCoin {
107
107
  if (!keychains || keychains.length !== 3) {
108
108
  throw new Error('Invalid keychains');
109
109
  }
110
+ // multisig addresses are separated by ~
111
+ const splitAddresses = address.split('~');
112
+ // derive addresses from keychain
110
113
  const unlockAddresses = keychains.map((keychain) => new AvaxpLib.KeyPair({ pub: keychain.pub }).getAddress(this._staticsCoin.network.type));
111
- if (!unlockAddresses.some((unlockAddress) => unlockAddress === address)) {
114
+ if (splitAddresses.length !== unlockAddresses.length) {
115
+ throw new sdk_core_1.UnexpectedAddressError(`address validation failure: multisig address length does not match`);
116
+ }
117
+ if (!this.adressesArraysMatch(splitAddresses, unlockAddresses)) {
112
118
  throw new sdk_core_1.UnexpectedAddressError(`address validation failure: ${address} is not of this wallet`);
113
119
  }
114
120
  return true;
115
121
  }
122
+ /**
123
+ * Validate that two multisig address arrays have the same elements, order doesnt matter
124
+ * @param addressArray1
125
+ * @param addressArray2
126
+ * @returns true if address arrays have the same addresses
127
+ * @private
128
+ */
129
+ adressesArraysMatch(addressArray1, addressArray2) {
130
+ return JSON.stringify(addressArray1.sort()) === JSON.stringify(addressArray2.sort());
131
+ }
116
132
  /**
117
133
  * Generate Avaxp key pair
118
134
  *
@@ -161,6 +177,9 @@ class AvaxP extends sdk_core_1.BaseCoin {
161
177
  }
162
178
  }
163
179
  isValidAddress(address) {
180
+ if (address === undefined) {
181
+ return false;
182
+ }
164
183
  return AvaxpLib.Utils.isValidAddress(address);
165
184
  }
166
185
  /**
@@ -226,4 +245,4 @@ class AvaxP extends sdk_core_1.BaseCoin {
226
245
  }
227
246
  }
228
247
  exports.AvaxP = AvaxP;
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZheHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZheHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFrRztBQUNsRyw4Q0FleUI7QUFDekIsZ0RBQWtDO0FBT2xDLG9EQUF1QjtBQUV2QixNQUFhLEtBQU0sU0FBUSxtQkFBUTtJQUdqQyxZQUFZLEtBQWdCLEVBQUUsV0FBdUM7UUFDbkUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBQ0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQXFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FB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QTBCLENBQUMsQ0FBQztTQUNwRDtRQUNELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQy9CLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2QztRQUNELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUEyQixFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLElBQUksUUFBUSxDQUFDLHlCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0Y7QUE1TkQsc0JBNE5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXZhbGFuY2hlTmV0d29yaywgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBDb2luRmFtaWx5LCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEtleVBhaXIsXG4gIFZlcmlmeUFkZHJlc3NPcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IsXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIEZlZUVzdGltYXRlT3B0aW9ucyxcbiAgU2lnbmluZ0Vycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBBdmF4cExpYiBmcm9tICcuL2xpYic7XG5pbXBvcnQge1xuICBBdmF4cFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uRmVlLFxuICBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zLFxuICBBdmF4cFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgY2xhc3MgQXZheFAgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgQXZheFAoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cbiAgZ2V0RmFtaWx5KCk6IENvaW5GYW1pbHkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICBzdXBwb3J0c1N0YWtpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IEF2YXhwVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhQcmVidWlsZCAmJiBwYXJhbXMudHhQcmVidWlsZC50eEhleDtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9XG4gICAgbGV0IHR4O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5mcm9tKHR4SGV4KTtcbiAgICAgIHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBleHBsYWluZWRUeCA9IHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgY29uc3QgeyB0eXBlLCBzdGFraW5nT3B0aW9ucywgbWVtbyB9ID0gcGFyYW1zLnR4UGFyYW1zO1xuICAgIGlmICghdHlwZSB8fCBleHBsYWluZWRUeC50eXBlICE9PSBUcmFuc2FjdGlvblR5cGVbdHlwZV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggdHlwZSBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHR5cGUnKTtcbiAgICB9XG4gICAgaWYgKG1lbW8gJiYgZXhwbGFpbmVkVHgubWVtbyAhPT0gbWVtby52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBtZW1vIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgbWVtbycpO1xuICAgIH1cbiAgICBzd2l0Y2ggKGV4cGxhaW5lZFR4LnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLmFkZERlbGVnYXRvcjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLmFkZFZhbGlkYXRvcjpcbiAgICAgICAgaWYgKCFwYXJhbXMudHhQYXJhbXMucmVjaXBpZW50cyB8fCBwYXJhbXMudHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSBbeyBhZGRyZXNzOiBzdGFraW5nT3B0aW9ucy5ub2RlSUQsIGFtb3VudDogc3Rha2luZ09wdGlvbnMuYW1vdW50IH1dO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHMubWFwKChvdXRwdXQpID0+IF8ucGljayhvdXRwdXQsIFsnYWRkcmVzcycsICdhbW91bnQnXSkpO1xuXG4gICAgICAgICAgaWYgKCFfLmlzRXF1YWwoZmlsdGVyZWRPdXRwdXRzLCBmaWx0ZXJlZFJlY2lwaWVudHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3Rha2luZ09wdGlvbnMuYW1vdW50ICE9PSBleHBsYWluZWRUeC5vdXRwdXRBbW91bnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggdG90YWwgYW1vdW50IGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdG90YWwgYW1vdW50IGZpZWxkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFkZHJlc3MgaXMgdmFsaWQsIHRoZW4gbWFrZSBzdXJlIGl0IG1hdGNoZXMgdGhlIHJvb3QgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcy5hZGRyZXNzIGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHBhcmFtcy5rZXljaGFpbnMgcHVibGljIGtleXMgdG8gZ2VuZXJhdGUgdGhlIHdhbGxldFxuICAgKi9cbiAgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVmVyaWZ5QWRkcmVzc09wdGlvbnMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGFkZHJlc3MsIGtleWNoYWlucyB9ID0gcGFyYW1zO1xuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cbiAgICBpZiAoIWtleWNoYWlucyB8fCBrZXljaGFpbnMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5Y2hhaW5zJyk7XG4gICAgfVxuICAgIGNvbnN0IHVubG9ja0FkZHJlc3NlcyA9IGtleWNoYWlucy5tYXAoKGtleWNoYWluKSA9PlxuICAgICAgbmV3IEF2YXhwTGliLktleVBhaXIoeyBwdWI6IGtleWNoYWluLnB1YiB9KS5nZXRBZGRyZXNzKHRoaXMuX3N0YXRpY3NDb2luLm5ldHdvcmsudHlwZSlcbiAgICApO1xuXG4gICAgaWYgKCF1bmxvY2tBZGRyZXNzZXMuc29tZSgodW5sb2NrQWRkcmVzcykgPT4gdW5sb2NrQWRkcmVzcyA9PT0gYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3Qgb2YgdGhpcyB3YWxsZXRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLyoqXG4gICAqIEdlbmVyYXRlIEF2YXhwIGtleSBwYWlyXG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBzZWVkIC0gU2VlZCBmcm9tIHdoaWNoIHRoZSBuZXcga2V5cGFpciBzaG91bGQgYmUgZ2VuZXJhdGVkLCBvdGhlcndpc2UgYSByYW5kb20gc2VlZCBpcyB1c2VkXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCB3aXRoIGdlbmVyYXRlZCBwdWIgYW5kIHBydlxuICAgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBBdmF4cExpYi5LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuXG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnB1YixcbiAgICAgIHBydjoga2V5cy5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHVibGljIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgcHViIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHJpdmF0ZSBrZXkgZm9yIHRoZSBjb2luXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgdGhlIHBydiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZFBydihwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgQXZheHBMaWIuS2V5UGFpcih7IHBydiB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXZheHBMaWIuVXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgQXZheHAgdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IEF2YXhwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICAvLyBkZXNlcmlhbGl6ZSByYXcgdHJhbnNhY3Rpb24gKG5vdGU6IGZyb21BZGRyZXNzIGhhcyBvbmNoYWluIG9yZGVyKVxuICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpLmZyb20ocGFyYW1zLnR4UHJlYnVpbGQudHhIZXgpO1xuICAgIGNvbnN0IGtleSA9IHBhcmFtcy5wcnY7XG5cbiAgICAvLyBwdXNoIHRoZSBrZXlwYWlyIHRvIHNpZ25lciBhcnJheVxuICAgIHR4QnVpbGRlci5zaWduKHsga2V5IH0pO1xuXG4gICAgLy8gYnVpbGQgdGhlIHRyYW5zYWN0aW9uXG4gICAgY29uc3QgdHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGJ1aWxkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoID49IDJcbiAgICAgID8geyB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSB9XG4gICAgICA6IHsgaGFsZlNpZ25lZDogeyB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSB9IH07XG4gIH1cblxuICBhc3luYyBmZWVFc3RpbWF0ZShwYXJhbXM6IEZlZUVzdGltYXRlT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25GZWU+IHtcbiAgICAvLyBzdGFraW5nIHRyYW5zYWN0aW9ucyBhcmUgZmVlLWxlc3NcbiAgICByZXR1cm4geyBmZWU6ICcwJyB9O1xuICB9XG5cbiAgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucz4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCdwYXJzZVRyYW5zYWN0aW9uIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgQXZheHAgdHJhbnNhY3Rpb24gZnJvbSB0eEhleFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKi9cbiAgYXN5bmMgZXhwbGFpblRyYW5zYWN0aW9uKHBhcmFtczogRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8QXZheHBMaWIuVHJhbnNhY3Rpb25FeHBsYW5hdGlvbj4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4SGV4ID8/IHBhcmFtcz8uaGFsZlNpZ25lZD8udHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHRyYW5zYWN0aW9uIGhleCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbSh0eEhleCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgcmV0dXJuIHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVjb3ZlcnlTaWduYXR1cmUobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEF2YXhwTGliLlV0aWxzLnJlY292ZXJ5U2lnbmF0dXJlKHRoaXMuX3N0YXRpY3NDb2luLm5ldHdvcmsgYXMgQXZhbGFuY2hlTmV0d29yaywgbWVzc2FnZSwgc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCBwcnYgPSBuZXcgQXZheHBMaWIuS2V5UGFpcihrZXkpLmdldFByaXZhdGVLZXkoKTtcbiAgICBpZiAoIXBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShtZXNzYWdlLCAnaGV4Jyk7XG4gICAgfVxuICAgIHJldHVybiBBdmF4cExpYi5VdGlscy5jcmVhdGVTaWduYXR1cmUodGhpcy5fc3RhdGljc0NvaW4ubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrLCBtZXNzYWdlLCBwcnYpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IEF2YXhwTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cbn1cbiJdfQ==
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZheHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZheHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFrRztBQUNsRyw4Q0FleUI7QUFDekIsZ0RBQWtDO0FBT2xDLG9EQUF1QjtBQUV2QixNQUFhLEtBQU0sU0FBUSxtQkFBUTtJQUdqQyxZQUFZLEtBQWdCLEVBQUUsV0FBdUM7UUFDbkUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBQ0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQXFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FB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TUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ2xELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQTJCLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQVksRUFBRSxPQUF3QjtRQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSx1QkFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDcEQ7UUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQixPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBMkIsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxJQUFJLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBdlBELHNCQXVQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF2YWxhbmNoZU5ldHdvcmssIEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiwgQ29pbkZhbWlseSwgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBLZXlQYWlyLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBGZWVFc3RpbWF0ZU9wdGlvbnMsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgQXZheHBMaWIgZnJvbSAnLi9saWInO1xuaW1wb3J0IHtcbiAgQXZheHBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgQXZheHBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNsYXNzIEF2YXhQIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEF2YXhQKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5uYW1lO1xuICB9XG4gIGdldEZhbWlseSgpOiBDb2luRmFtaWx5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZ1bGxOYW1lO1xuICB9XG4gIGdldEJhc2VGYWN0b3IoKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMuX3N0YXRpY3NDb2luLmRlY2ltYWxQbGFjZXMpO1xuICB9XG5cbiAgc3VwcG9ydHNTdGFraW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBBdmF4cFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4UHJlYnVpbGQgJiYgcGFyYW1zLnR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGxldCB0eDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbSh0eEhleCk7XG4gICAgICB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcblxuICAgIGNvbnN0IHsgdHlwZSwgc3Rha2luZ09wdGlvbnMsIG1lbW8gfSA9IHBhcmFtcy50eFBhcmFtcztcbiAgICBpZiAoIXR5cGUgfHwgZXhwbGFpbmVkVHgudHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlW3R5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHR5cGUgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyB0eXBlJyk7XG4gICAgfVxuICAgIGlmIChtZW1vICYmIGV4cGxhaW5lZFR4Lm1lbW8gIT09IG1lbW8udmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggbWVtbyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIG1lbW8nKTtcbiAgICB9XG4gICAgc3dpdGNoIChleHBsYWluZWRUeC50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BZGRWYWxpZGF0b3I6XG4gICAgICAgIGlmICghcGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMgfHwgcGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRSZWNpcGllbnRzID0gW3sgYWRkcmVzczogc3Rha2luZ09wdGlvbnMubm9kZUlELCBhbW91bnQ6IHN0YWtpbmdPcHRpb25zLmFtb3VudCB9XTtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZE91dHB1dHMgPSBleHBsYWluZWRUeC5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiBfLnBpY2sob3V0cHV0LCBbJ2FkZHJlc3MnLCAnYW1vdW50J10pKTtcblxuICAgICAgICAgIGlmICghXy5pc0VxdWFsKGZpbHRlcmVkT3V0cHV0cywgZmlsdGVyZWRSZWNpcGllbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YWtpbmdPcHRpb25zLmFtb3VudCAhPT0gZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHggdHlwZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhZGRyZXNzIGlzIHZhbGlkLCB0aGVuIG1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSByb290IGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMuYWRkcmVzcyBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBwYXJhbXMua2V5Y2hhaW5zIHB1YmxpYyBrZXlzIHRvIGdlbmVyYXRlIHRoZSB3YWxsZXRcbiAgICovXG4gIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBhZGRyZXNzLCBrZXljaGFpbnMgfSA9IHBhcmFtcztcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cbiAgICBpZiAoIWtleWNoYWlucyB8fCBrZXljaGFpbnMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5Y2hhaW5zJyk7XG4gICAgfVxuXG4gICAgLy8gbXVsdGlzaWcgYWRkcmVzc2VzIGFyZSBzZXBhcmF0ZWQgYnkgflxuICAgIGNvbnN0IHNwbGl0QWRkcmVzc2VzID0gYWRkcmVzcy5zcGxpdCgnficpO1xuXG4gICAgLy8gZGVyaXZlIGFkZHJlc3NlcyBmcm9tIGtleWNoYWluXG4gICAgY29uc3QgdW5sb2NrQWRkcmVzc2VzID0ga2V5Y2hhaW5zLm1hcCgoa2V5Y2hhaW4pID0+XG4gICAgICBuZXcgQXZheHBMaWIuS2V5UGFpcih7IHB1Yjoga2V5Y2hhaW4ucHViIH0pLmdldEFkZHJlc3ModGhpcy5fc3RhdGljc0NvaW4ubmV0d29yay50eXBlKVxuICAgICk7XG5cbiAgICBpZiAoc3BsaXRBZGRyZXNzZXMubGVuZ3RoICE9PSB1bmxvY2tBZGRyZXNzZXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6IG11bHRpc2lnIGFkZHJlc3MgbGVuZ3RoIGRvZXMgbm90IG1hdGNoYCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFkcmVzc2VzQXJyYXlzTWF0Y2goc3BsaXRBZGRyZXNzZXMsIHVubG9ja0FkZHJlc3NlcykpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3Qgb2YgdGhpcyB3YWxsZXRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IHR3byBtdWx0aXNpZyBhZGRyZXNzIGFycmF5cyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLCBvcmRlciBkb2VzbnQgbWF0dGVyXG4gICAqIEBwYXJhbSBhZGRyZXNzQXJyYXkxXG4gICAqIEBwYXJhbSBhZGRyZXNzQXJyYXkyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWRkcmVzcyBhcnJheXMgaGF2ZSB0aGUgc2FtZSBhZGRyZXNzZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYWRyZXNzZXNBcnJheXNNYXRjaChhZGRyZXNzQXJyYXkxOiBzdHJpbmdbXSwgYWRkcmVzc0FycmF5Mjogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYWRkcmVzc0FycmF5MS5zb3J0KCkpID09PSBKU09OLnN0cmluZ2lmeShhZGRyZXNzQXJyYXkyLnNvcnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgQXZheHAga2V5IHBhaXJcbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJ9IHNlZWQgLSBTZWVkIGZyb20gd2hpY2ggdGhlIG5ldyBrZXlwYWlyIHNob3VsZCBiZSBnZW5lcmF0ZWQsIG90aGVyd2lzZSBhIHJhbmRvbSBzZWVkIGlzIHVzZWRcbiAgICogQHJldHVybnMge09iamVjdH0gb2JqZWN0IHdpdGggZ2VuZXJhdGVkIHB1YiBhbmQgcHJ2XG4gICAqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEF2YXhwTGliLktleVBhaXIoeyBzZWVkIH0pIDogbmV3IEF2YXhwTGliLktleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG5cbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIHRoZSBwcnYgdG8gYmUgY2hlY2tlZFxuICAgKiBAcmV0dXJucyBpcyBpdCB2YWxpZD9cbiAgICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEF2YXhwTGliLktleVBhaXIoeyBwdWIgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwcml2YXRlIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHJ2KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgcHJ2IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBBdmF4cExpYi5VdGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBBdmF4cCB0cmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogQXZheHBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIC8vIGRlc2VyaWFsaXplIHJhdyB0cmFuc2FjdGlvbiAobm90ZTogZnJvbUFkZHJlc3MgaGFzIG9uY2hhaW4gb3JkZXIpXG4gICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbShwYXJhbXMudHhQcmVidWlsZC50eEhleCk7XG4gICAgY29uc3Qga2V5ID0gcGFyYW1zLnBydjtcblxuICAgIC8vIHB1c2ggdGhlIGtleXBhaXIgdG8gc2lnbmVyIGFycmF5XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXkgfSk7XG5cbiAgICAvLyBidWlsZCB0aGUgdHJhbnNhY3Rpb25cbiAgICBjb25zdCB0cmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFcnJvciB3aGlsZSB0cnlpbmcgdG8gYnVpbGQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGggPj0gMlxuICAgICAgPyB7IHR4SGV4OiB0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpIH1cbiAgICAgIDogeyBoYWxmU2lnbmVkOiB7IHR4SGV4OiB0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpIH0gfTtcbiAgfVxuXG4gIGFzeW5jIGZlZUVzdGltYXRlKHBhcmFtczogRmVlRXN0aW1hdGVPcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkZlZT4ge1xuICAgIC8vIHN0YWtpbmcgdHJhbnNhY3Rpb25zIGFyZSBmZWUtbGVzc1xuICAgIHJldHVybiB7IGZlZTogJzAnIH07XG4gIH1cblxuICBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zPiB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoJ3BhcnNlVHJhbnNhY3Rpb24gbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGxhaW4gYSBBdmF4cCB0cmFuc2FjdGlvbiBmcm9tIHR4SGV4XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxBdmF4cExpYi5UcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhIZXggPz8gcGFyYW1zPy5oYWxmU2lnbmVkPy50eEhleDtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdHJhbnNhY3Rpb24gaGV4Jyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5mcm9tKHR4SGV4KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRyYW5zYWN0aW9uOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICByZWNvdmVyeVNpZ25hdHVyZShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQXZheHBMaWIuVXRpbHMucmVjb3ZlcnlTaWduYXR1cmUodGhpcy5fc3RhdGljc0NvaW4ubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrLCBtZXNzYWdlLCBzaWduYXR1cmUpO1xuICB9XG5cbiAgYXN5bmMgc2lnbk1lc3NhZ2Uoa2V5OiBLZXlQYWlyLCBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IHBydiA9IG5ldyBBdmF4cExpYi5LZXlQYWlyKGtleSkuZ2V0UHJpdmF0ZUtleSgpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdJbnZhbGlkIGtleSBwYWlyIG9wdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKG1lc3NhZ2UsICdoZXgnKTtcbiAgICB9XG4gICAgcmV0dXJuIEF2YXhwTGliLlV0aWxzLmNyZWF0ZVNpZ25hdHVyZSh0aGlzLl9zdGF0aWNzQ29pbi5uZXR3b3JrIGFzIEF2YWxhbmNoZU5ldHdvcmssIG1lc3NhZ2UsIHBydik7XG4gIH1cblxuICBwcml2YXRlIGdldEJ1aWxkZXIoKTogQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gICAgcmV0dXJuIG5ldyBBdmF4cExpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="bn.js" />
3
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
4
+ import { BN, Buffer as BufferAvax } from 'avalanche';
5
+ import { TransactionBuilder } from './transactionBuilder';
6
+ import { TransferableInput, TransferableOutput } from 'avalanche/dist/apis/platformvm';
7
+ import { Credential } from 'avalanche/dist/common';
8
+ /**
9
+ * Cross-chain transactions (export and import) are atomic operations.
10
+ */
11
+ export declare abstract class AtomicTransactionBuilder extends TransactionBuilder {
12
+ protected _externalChainId: BufferAvax;
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ /**
15
+ * The internal chain is the one set for the coin in coinConfig.network. The external chain is the other chain involved.
16
+ * The external chain id is the source on import and the destination on export.
17
+ *
18
+ * @param {string} chainId - id of the external chain
19
+ */
20
+ externalChainId(chainId: string | Buffer): this;
21
+ /**
22
+ * Threshold must be 2 and since output always get reordered we want to make sure we can always add signatures in the correct location
23
+ * To find the correct location for the signature, we use the output's addresses to create the signatureIdx in the order that we desire
24
+ * 0: user key, 1: hsm key, 2: recovery key
25
+ * @protected
26
+ */
27
+ protected createInputOutput(amount: BN): {
28
+ inputs: TransferableInput[];
29
+ outputs: TransferableOutput[];
30
+ credentials: Credential[];
31
+ };
32
+ }
33
+ //# sourceMappingURL=atomicTransactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomicTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/atomicTransactionBuilder.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAIL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD;;GAEG;AACH,8BAAsB,wBAAyB,SAAQ,kBAAkB;IACvE,SAAS,CAAC,gBAAgB,EAAE,UAAU,CAAC;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ/C;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,GAAG;QACvC,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3B;CAmHF"}
@@ -0,0 +1,122 @@
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.AtomicTransactionBuilder = void 0;
7
+ const avalanche_1 = require("avalanche");
8
+ const utils_1 = __importDefault(require("./utils"));
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const platformvm_1 = require("avalanche/dist/apis/platformvm");
11
+ const sdk_core_1 = require("@bitgo/sdk-core");
12
+ const iface_1 = require("./iface");
13
+ /**
14
+ * Cross-chain transactions (export and import) are atomic operations.
15
+ */
16
+ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
17
+ constructor(_coinConfig) {
18
+ super(_coinConfig);
19
+ this.transaction._fee.fee = this.transaction._network.txFee;
20
+ }
21
+ /**
22
+ * The internal chain is the one set for the coin in coinConfig.network. The external chain is the other chain involved.
23
+ * The external chain id is the source on import and the destination on export.
24
+ *
25
+ * @param {string} chainId - id of the external chain
26
+ */
27
+ externalChainId(chainId) {
28
+ const newTargetChainId = typeof chainId === 'string' ? utils_1.default.cb58Decode(chainId) : avalanche_1.Buffer.from(chainId);
29
+ this.validateChainId(newTargetChainId);
30
+ this._externalChainId = newTargetChainId;
31
+ return this;
32
+ }
33
+ // region utxo engine
34
+ /**
35
+ * Threshold must be 2 and since output always get reordered we want to make sure we can always add signatures in the correct location
36
+ * To find the correct location for the signature, we use the output's addresses to create the signatureIdx in the order that we desire
37
+ * 0: user key, 1: hsm key, 2: recovery key
38
+ * @protected
39
+ */
40
+ createInputOutput(amount) {
41
+ const inputs = [];
42
+ const outputs = [];
43
+ // amount spent so far
44
+ let currentTotal = new avalanche_1.BN(0);
45
+ // delegating and validating have no fees
46
+ const totalTarget = amount.clone();
47
+ const credentials = [];
48
+ /*
49
+ A = user key
50
+ B = hsm key
51
+ C = backup key
52
+ bitgoAddresses = bitgo addresses [ A, B, C ]
53
+ utxo.addresses = IMS addresses [ B, C, A ]
54
+ utxo.addressesIndex = [ 2, 0, 1 ]
55
+ we pick 0, 1 for non-recovery
56
+ we pick 1, 2 for recovery
57
+ */
58
+ this.transaction._utxos.forEach((utxo) => {
59
+ // in WP, output.addressesIndex is empty, so fill it
60
+ if (!utxo.addressesIndex || utxo.addressesIndex.length === 0) {
61
+ const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
62
+ utxo.addressesIndex = this.transaction._fromAddresses.map((a) => utxoAddresses.findIndex((u) => a.equals(u)));
63
+ }
64
+ // in OVC, output.addressesIndex is defined correctly from the previous iteration
65
+ });
66
+ // validate the utxos
67
+ this.transaction._utxos.forEach((utxo) => {
68
+ var _a;
69
+ if (!utxo) {
70
+ throw new sdk_core_1.BuildTransactionError('Utxo is undefined');
71
+ }
72
+ // addressesIndex should never have a mismatch
73
+ if ((_a = utxo.addressesIndex) === null || _a === void 0 ? void 0 : _a.includes(-1)) {
74
+ throw new sdk_core_1.BuildTransactionError('Addresses are inconsistent: ' + utxo.txid);
75
+ }
76
+ if (utxo.threshold !== this.transaction._threshold) {
77
+ throw new sdk_core_1.BuildTransactionError('Threshold is inconsistent');
78
+ }
79
+ });
80
+ this.transaction._utxos.forEach((utxo, i) => {
81
+ var _a;
82
+ if (utxo.outputID === iface_1.SECP256K1_Transfer_Output) {
83
+ const txidBuf = utils_1.default.cb58Decode(utxo.txid);
84
+ const amt = new avalanche_1.BN(utxo.amount);
85
+ const outputidx = utils_1.default.cb58Decode(utxo.outputidx);
86
+ const addressesIndex = (_a = utxo.addressesIndex) !== null && _a !== void 0 ? _a : [];
87
+ // either user (0) or recovery (2)
88
+ const firstIndex = this.recoverSigner ? 2 : 0;
89
+ const bitgoIndex = 1;
90
+ currentTotal = currentTotal.add(amt);
91
+ const secpTransferInput = new platformvm_1.SECPTransferInput(amt);
92
+ // if user/backup > bitgo
93
+ if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
94
+ secpTransferInput.addSignatureIdx(addressesIndex[bitgoIndex], this.transaction._fromAddresses[bitgoIndex]);
95
+ secpTransferInput.addSignatureIdx(addressesIndex[firstIndex], this.transaction._fromAddresses[firstIndex]);
96
+ credentials.push(platformvm_1.SelectCredentialClass(secpTransferInput.getCredentialID(), // 9
97
+ ['', this.transaction._fromAddresses[firstIndex].toString('hex')].map(utils_1.default.createSig)));
98
+ }
99
+ else {
100
+ secpTransferInput.addSignatureIdx(addressesIndex[firstIndex], this.transaction._fromAddresses[firstIndex]);
101
+ secpTransferInput.addSignatureIdx(addressesIndex[bitgoIndex], this.transaction._fromAddresses[bitgoIndex]);
102
+ credentials.push(platformvm_1.SelectCredentialClass(secpTransferInput.getCredentialID(), [this.transaction._fromAddresses[firstIndex].toString('hex'), ''].map(utils_1.default.createSig)));
103
+ }
104
+ const input = new platformvm_1.TransferableInput(txidBuf, outputidx, this.transaction._assetId, secpTransferInput);
105
+ inputs.push(input);
106
+ }
107
+ });
108
+ if (currentTotal.lt(totalTarget)) {
109
+ throw new sdk_core_1.BuildTransactionError(`Utxo outputs get ${currentTotal.toString()} and ${totalTarget.toString()} is required`);
110
+ }
111
+ else if (currentTotal.gt(totalTarget)) {
112
+ outputs.push(new platformvm_1.TransferableOutput(this.transaction._assetId, new platformvm_1.SECPTransferOutput(currentTotal.sub(totalTarget), this.transaction._fromAddresses, this.transaction._locktime, this.transaction._threshold)));
113
+ }
114
+ return {
115
+ inputs,
116
+ outputs,
117
+ credentials,
118
+ };
119
+ }
120
+ }
121
+ exports.AtomicTransactionBuilder = AtomicTransactionBuilder;
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EseUNBQXFEO0FBQ3JELG9EQUE0QjtBQUM1Qiw2REFBMEQ7QUFDMUQsK0RBTXdDO0FBRXhDLDhDQUF3RDtBQUN4RCxtQ0FBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsT0FBd0I7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCOzs7OztPQUtHO0lBQ08saUJBQWlCLENBQUMsTUFBVTtRQUtwQyxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUF5QixFQUFFLENBQUM7UUFFekMsc0JBQXNCO1FBQ3RCLElBQUksWUFBWSxHQUFPLElBQUksY0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpDLHlDQUF5QztRQUN6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SyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxNQUFNLElBQUksZ0NBQXFCLENBQzdCLG9CQUFvQixZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsV0FBVyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQ3hGLENBQUM7U0FDSDthQUFNLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN2QyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksK0JBQWtCLENBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6QixJQUFJLCtCQUFrQixDQUNwQixZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUM1QixDQUNGLENBQ0YsQ0FBQztTQUNIO1FBQ0QsT0FBTztZQUNMLE1BQU07WUFDTixPQUFPO1lBQ1AsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0NBR0Y7QUFuSkQsNERBbUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJOLCBCdWZmZXIgYXMgQnVmZmVyQXZheCB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBTRUNQVHJhbnNmZXJJbnB1dCxcbiAgU0VDUFRyYW5zZmVyT3V0cHV0LFxuICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MsXG4gIFRyYW5zZmVyYWJsZUlucHV0LFxuICBUcmFuc2ZlcmFibGVPdXRwdXQsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsIH0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvY29tbW9uJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQ3Jvc3MtY2hhaW4gdHJhbnNhY3Rpb25zIChleHBvcnQgYW5kIGltcG9ydCkgYXJlIGF0b21pYyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9leHRlcm5hbENoYWluSWQ6IEJ1ZmZlckF2YXg7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWUgPSB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLnR4RmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBjaGFpbiBpcyB0aGUgb25lIHNldCBmb3IgdGhlIGNvaW4gaW4gY29pbkNvbmZpZy5uZXR3b3JrLiBUaGUgZXh0ZXJuYWwgY2hhaW4gaXMgdGhlIG90aGVyIGNoYWluIGludm9sdmVkLlxuICAgKiBUaGUgZXh0ZXJuYWwgY2hhaW4gaWQgaXMgdGhlIHNvdXJjZSBvbiBpbXBvcnQgYW5kIHRoZSBkZXN0aW5hdGlvbiBvbiBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpbklkIC0gaWQgb2YgdGhlIGV4dGVybmFsIGNoYWluXG4gICAqL1xuICBleHRlcm5hbENoYWluSWQoY2hhaW5JZDogc3RyaW5nIHwgQnVmZmVyKTogdGhpcyB7XG4gICAgY29uc3QgbmV3VGFyZ2V0Q2hhaW5JZCA9IHR5cGVvZiBjaGFpbklkID09PSAnc3RyaW5nJyA/IHV0aWxzLmNiNThEZWNvZGUoY2hhaW5JZCkgOiBCdWZmZXJBdmF4LmZyb20oY2hhaW5JZCk7XG4gICAgdGhpcy52YWxpZGF0ZUNoYWluSWQobmV3VGFyZ2V0Q2hhaW5JZCk7XG4gICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkID0gbmV3VGFyZ2V0Q2hhaW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlZ2lvbiB1dHhvIGVuZ2luZVxuICAvKipcbiAgICogVGhyZXNob2xkIG11c3QgYmUgMiBhbmQgc2luY2Ugb3V0cHV0IGFsd2F5cyBnZXQgcmVvcmRlcmVkIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGNhbiBhbHdheXMgYWRkIHNpZ25hdHVyZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb25cbiAgICogVG8gZmluZCB0aGUgY29ycmVjdCBsb2NhdGlvbiBmb3IgdGhlIHNpZ25hdHVyZSwgd2UgdXNlIHRoZSBvdXRwdXQncyBhZGRyZXNzZXMgdG8gY3JlYXRlIHRoZSBzaWduYXR1cmVJZHggaW4gdGhlIG9yZGVyIHRoYXQgd2UgZGVzaXJlXG4gICAqIDA6IHVzZXIga2V5LCAxOiBoc20ga2V5LCAyOiByZWNvdmVyeSBrZXlcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUlucHV0T3V0cHV0KGFtb3VudDogQk4pOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdO1xuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdID0gW107XG5cbiAgICAvLyBhbW91bnQgc3BlbnQgc28gZmFyXG4gICAgbGV0IGN1cnJlbnRUb3RhbDogQk4gPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBkZWxlZ2F0aW5nIGFuZCB2YWxpZGF0aW5nIGhhdmUgbm8gZmVlc1xuICAgIGNvbnN0IHRvdGFsVGFyZ2V0ID0gYW1vdW50LmNsb25lKCk7XG5cbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gW107XG5cbiAgICAvKlxuICAgIEEgPSB1c2VyIGtleVxuICAgIEIgPSBoc20ga2V5XG4gICAgQyA9IGJhY2t1cCBrZXlcbiAgICBiaXRnb0FkZHJlc3NlcyA9IGJpdGdvIGFkZHJlc3NlcyBbIEEsIEIsIEMgXVxuICAgIHV0eG8uYWRkcmVzc2VzID0gSU1TIGFkZHJlc3NlcyBbIEIsIEMsIEEgXVxuICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBbIDIsIDAsIDEgXVxuICAgIHdlIHBpY2sgMCwgMSBmb3Igbm9uLXJlY292ZXJ5XG4gICAgd2UgcGljayAxLCAyIGZvciByZWNvdmVyeVxuICAgICovXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgLy8gaW4gV1AsIG91dHB1dC5hZGRyZXNzZXNJbmRleCBpcyBlbXB0eSwgc28gZmlsbCBpdFxuICAgICAgaWYgKCF1dHhvLmFkZHJlc3Nlc0luZGV4IHx8IHV0eG8uYWRkcmVzc2VzSW5kZXgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHV0eG9BZGRyZXNzZXM6IEJ1ZmZlckF2YXhbXSA9IHV0eG8uYWRkcmVzc2VzLm1hcCgoYSkgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcbiAgICAgICAgdXR4by5hZGRyZXNzZXNJbmRleCA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhKSA9PiB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gYS5lcXVhbHModSkpKTtcbiAgICAgIH1cbiAgICAgIC8vIGluIE9WQywgb3V0cHV0LmFkZHJlc3Nlc0luZGV4IGlzIGRlZmluZWQgY29ycmVjdGx5IGZyb20gdGhlIHByZXZpb3VzIGl0ZXJhdGlvblxuICAgIH0pO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIHV0eG9zXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCF1dHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1V0eG8gaXMgdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICAvLyBhZGRyZXNzZXNJbmRleCBzaG91bGQgbmV2ZXIgaGF2ZSBhIG1pc21hdGNoXG4gICAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleD8uaW5jbHVkZXMoLTEpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FkZHJlc3NlcyBhcmUgaW5jb25zaXN0ZW50OiAnICsgdXR4by50eGlkKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLnRocmVzaG9sZCAhPT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RocmVzaG9sZCBpcyBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8sIGkpID0+IHtcbiAgICAgIGlmICh1dHhvLm91dHB1dElEID09PSBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IHR4aWRCdWYgPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8udHhpZCk7XG4gICAgICAgIGNvbnN0IGFtdDogQk4gPSBuZXcgQk4odXR4by5hbW91bnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRpZHggPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8ub3V0cHV0aWR4KTtcbiAgICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgICAgIC8vIGVpdGhlciB1c2VyICgwKSBvciByZWNvdmVyeSAoMilcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcbiAgICAgICAgY3VycmVudFRvdGFsID0gY3VycmVudFRvdGFsLmFkZChhbXQpO1xuXG4gICAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGFtdCk7XG5cbiAgICAgICAgLy8gaWYgdXNlci9iYWNrdXAgPiBiaXRnb1xuICAgICAgICBpZiAoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0gPCBhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSkge1xuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tiaXRnb0luZGV4XSk7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKTtcbiAgICAgICAgICBjcmVkZW50aWFscy5wdXNoKFxuICAgICAgICAgICAgU2VsZWN0Q3JlZGVudGlhbENsYXNzKFxuICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSwgLy8gOVxuICAgICAgICAgICAgICBbJycsIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0udG9TdHJpbmcoJ2hleCcpXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKTtcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbYml0Z29JbmRleF0pO1xuICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmdldENyZWRlbnRpYWxJRCgpLFxuICAgICAgICAgICAgICBbdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyksICcnXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dDogVHJhbnNmZXJhYmxlSW5wdXQgPSBuZXcgVHJhbnNmZXJhYmxlSW5wdXQoXG4gICAgICAgICAgdHhpZEJ1ZixcbiAgICAgICAgICBvdXRwdXRpZHgsXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCxcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dFxuICAgICAgICApO1xuICAgICAgICBpbnB1dHMucHVzaChpbnB1dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY3VycmVudFRvdGFsLmx0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYFV0eG8gb3V0cHV0cyBnZXQgJHtjdXJyZW50VG90YWwudG9TdHJpbmcoKX0gYW5kICR7dG90YWxUYXJnZXQudG9TdHJpbmcoKX0gaXMgcmVxdWlyZWRgXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFRvdGFsLmd0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgb3V0cHV0cy5wdXNoKFxuICAgICAgICBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgICAgIGN1cnJlbnRUb3RhbC5zdWIodG90YWxUYXJnZXQpLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIGNyZWRlbnRpYWxzLFxuICAgIH07XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -2,9 +2,9 @@
2
2
  import { TransactionType } from '@bitgo/sdk-core';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
4
4
  import { TransactionBuilder } from './transactionBuilder';
5
- import { AddDelegatorTx, BaseTx, ParseableOutput, TransferableInput, TransferableOutput, Tx } from 'avalanche/dist/apis/platformvm';
5
+ import { AddDelegatorTx, ParseableOutput, TransferableInput, TransferableOutput } from 'avalanche/dist/apis/platformvm';
6
6
  import { BN } from 'avalanche';
7
- import { DecodedUtxoObj } from './iface';
7
+ import { Tx, BaseTx } from './iface';
8
8
  import { Credential } from 'avalanche/dist/common';
9
9
  export declare class DelegatorTxBuilder extends TransactionBuilder {
10
10
  protected _nodeID: string;
@@ -21,6 +21,11 @@ export declare class DelegatorTxBuilder extends TransactionBuilder {
21
21
  * @protected
22
22
  */
23
23
  protected get transactionType(): TransactionType;
24
+ /**
25
+ * Addresses where reward should be deposit
26
+ * @param {string | string[]} address - single address or array of addresses to receive rewards
27
+ */
28
+ rewardAddresses(address: string | string[]): this;
24
29
  /**
25
30
  *
26
31
  * @param nodeID
@@ -41,9 +46,6 @@ export declare class DelegatorTxBuilder extends TransactionBuilder {
41
46
  * @param value
42
47
  */
43
48
  stakeAmount(value: BN | string): this;
44
- /**
45
- * region Validators
46
- */
47
49
  /**
48
50
  * validates a correct NodeID is used
49
51
  * @param nodeID
@@ -63,6 +65,7 @@ export declare class DelegatorTxBuilder extends TransactionBuilder {
63
65
  * @param amount
64
66
  */
65
67
  validateStakeAmount(amount: BN): void;
68
+ /** @inheritdoc */
66
69
  initBuilder(tx: Tx): this;
67
70
  static verifyTxType(baseTx: BaseTx): baseTx is AddDelegatorTx;
68
71
  verifyTxType(baseTx: BaseTx): baseTx is AddDelegatorTx;
@@ -71,16 +74,13 @@ export declare class DelegatorTxBuilder extends TransactionBuilder {
71
74
  * @protected
72
75
  */
73
76
  protected buildAvaxpTransaction(): void;
74
- protected stakeTransferOut(): TransferableOutput;
75
- protected rewardOwnersOutput(): ParseableOutput;
76
77
  /**
77
- * Inputs can be controlled but outputs get reordered in transactions
78
- * In order to make sure that the mapping is always correct we create an addressIndx which matches to the appropiate
79
- * signatureIdx
80
- * @param inputs
78
+ * Create the StakeOut where the recipient address are the sender.
81
79
  * @protected
80
+ *
82
81
  */
83
- protected recoverUtxos(utxos: TransferableInput[]): DecodedUtxoObj[];
82
+ protected stakeTransferOut(): TransferableOutput;
83
+ protected rewardOwnersOutput(): ParseableOutput;
84
84
  /**
85
85
  * Threshold must be 2 and since output always get reordered we want to make sure we can always add signatures in the correct location
86
86
  * To find the correct location for the signature, we use the ouput's addresses to create the signatureIdx in the order that we desire