@bitgo-beta/sdk-coin-stx 1.1.1-beta.232 → 1.1.1-beta.2321

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 (108) hide show
  1. package/dist/src/index.d.ts +2 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +25 -9
  4. package/dist/src/lib/abstractContractBuilder.js +4 -4
  5. package/dist/src/lib/btcAddressUtils.d.ts +30 -0
  6. package/dist/src/lib/btcAddressUtils.d.ts.map +1 -0
  7. package/dist/src/lib/btcAddressUtils.js +134 -0
  8. package/dist/src/lib/constants.d.ts +16 -1
  9. package/dist/src/lib/constants.d.ts.map +1 -1
  10. package/dist/src/lib/constants.js +30 -3
  11. package/dist/src/lib/contractBuilder.d.ts.map +1 -1
  12. package/dist/src/lib/contractBuilder.js +44 -12
  13. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts +62 -0
  14. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/fungibleTokenTransferBuilder.js +131 -0
  16. package/dist/src/lib/iface.d.ts +61 -0
  17. package/dist/src/lib/iface.d.ts.map +1 -1
  18. package/dist/src/lib/iface.js +1 -1
  19. package/dist/src/lib/index.d.ts +5 -0
  20. package/dist/src/lib/index.d.ts.map +1 -1
  21. package/dist/src/lib/index.js +28 -9
  22. package/dist/src/lib/keyPair.js +18 -19
  23. package/dist/src/lib/network.d.ts +16 -0
  24. package/dist/src/lib/network.d.ts.map +1 -0
  25. package/dist/src/lib/network.js +29 -0
  26. package/dist/src/lib/pox5Builder.d.ts +78 -0
  27. package/dist/src/lib/pox5Builder.d.ts.map +1 -0
  28. package/dist/src/lib/pox5Builder.js +148 -0
  29. package/dist/src/lib/sbtcWithdrawBuilder.d.ts +38 -0
  30. package/dist/src/lib/sbtcWithdrawBuilder.d.ts.map +1 -0
  31. package/dist/src/lib/sbtcWithdrawBuilder.js +150 -0
  32. package/dist/src/lib/sendmanyBuilder.js +12 -12
  33. package/dist/src/lib/transaction.d.ts.map +1 -1
  34. package/dist/src/lib/transaction.js +31 -15
  35. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  36. package/dist/src/lib/transactionBuilder.js +16 -17
  37. package/dist/src/lib/transactionBuilderFactory.d.ts +6 -0
  38. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  39. package/dist/src/lib/transactionBuilderFactory.js +23 -2
  40. package/dist/src/lib/transferBuilder.js +7 -7
  41. package/dist/src/lib/utils.d.ts +45 -3
  42. package/dist/src/lib/utils.d.ts.map +1 -1
  43. package/dist/src/lib/utils.js +199 -64
  44. package/dist/src/register.d.ts.map +1 -1
  45. package/dist/src/register.js +7 -1
  46. package/dist/src/sip10Token.d.ts +22 -0
  47. package/dist/src/sip10Token.d.ts.map +1 -0
  48. package/dist/src/sip10Token.js +130 -0
  49. package/dist/src/stx.d.ts +154 -2
  50. package/dist/src/stx.d.ts.map +1 -1
  51. package/dist/src/stx.js +489 -11
  52. package/dist/src/tstx.js +1 -1
  53. package/dist/src/tstxsignet.d.ts +20 -0
  54. package/dist/src/tstxsignet.d.ts.map +1 -0
  55. package/dist/src/tstxsignet.js +36 -0
  56. package/dist/test/fixtures.d.ts +119 -0
  57. package/dist/test/fixtures.d.ts.map +1 -0
  58. package/dist/test/fixtures.js +147 -0
  59. package/dist/test/unit/btcAddressUtils.d.ts +2 -0
  60. package/dist/test/unit/btcAddressUtils.d.ts.map +1 -0
  61. package/dist/test/unit/btcAddressUtils.js +82 -0
  62. package/dist/test/unit/keyPair.d.ts +2 -0
  63. package/dist/test/unit/keyPair.d.ts.map +1 -0
  64. package/dist/test/unit/keyPair.js +144 -0
  65. package/dist/test/unit/network.d.ts +2 -0
  66. package/dist/test/unit/network.d.ts.map +1 -0
  67. package/dist/test/unit/network.js +50 -0
  68. package/dist/test/unit/resources.d.ts +97 -0
  69. package/dist/test/unit/resources.d.ts.map +1 -0
  70. package/dist/test/unit/resources.js +144 -0
  71. package/dist/test/unit/sip10Token.d.ts +2 -0
  72. package/dist/test/unit/sip10Token.d.ts.map +1 -0
  73. package/dist/test/unit/sip10Token.js +374 -0
  74. package/dist/test/unit/stx.d.ts +2 -0
  75. package/dist/test/unit/stx.d.ts.map +1 -0
  76. package/dist/test/unit/stx.js +624 -0
  77. package/dist/test/unit/transaction.d.ts +2 -0
  78. package/dist/test/unit/transaction.d.ts.map +1 -0
  79. package/dist/test/unit/transaction.js +83 -0
  80. package/dist/test/unit/transactionBuilder/contractBuilder.d.ts +2 -0
  81. package/dist/test/unit/transactionBuilder/contractBuilder.d.ts.map +1 -0
  82. package/dist/test/unit/transactionBuilder/contractBuilder.js +463 -0
  83. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts +2 -0
  84. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts.map +1 -0
  85. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.js +191 -0
  86. package/dist/test/unit/transactionBuilder/pox5Builder.d.ts +2 -0
  87. package/dist/test/unit/transactionBuilder/pox5Builder.d.ts.map +1 -0
  88. package/dist/test/unit/transactionBuilder/pox5Builder.js +418 -0
  89. package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.d.ts +2 -0
  90. package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.d.ts.map +1 -0
  91. package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.js +306 -0
  92. package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts +2 -0
  93. package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts.map +1 -0
  94. package/dist/test/unit/transactionBuilder/sendmanyBuilder.js +140 -0
  95. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  96. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  97. package/dist/test/unit/transactionBuilder/transferBuilder.js +347 -0
  98. package/dist/test/unit/tstxsignet.d.ts +2 -0
  99. package/dist/test/unit/tstxsignet.d.ts.map +1 -0
  100. package/dist/test/unit/tstxsignet.js +60 -0
  101. package/dist/test/unit/util.d.ts +2 -0
  102. package/dist/test/unit/util.d.ts.map +1 -0
  103. package/dist/test/unit/util.js +340 -0
  104. package/dist/tsconfig.tsbuildinfo +1 -0
  105. package/package.json +16 -12
  106. package/.eslintignore +0 -5
  107. package/.mocharc.yml +0 -8
  108. package/CHANGELOG.md +0 -127
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Pox5Builder = void 0;
4
+ const transactions_1 = require("@stacks/transactions");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ const contractBuilder_1 = require("./contractBuilder");
7
+ const constants_1 = require("./constants");
8
+ const utils_1 = require("./utils");
9
+ function byteBuffer(value, field, expectedLength) {
10
+ // String inputs are hexadecimal, with an optional 0x prefix; use Buffer for text bytes.
11
+ let buffer;
12
+ if (Buffer.isBuffer(value)) {
13
+ buffer = value;
14
+ }
15
+ else if (value instanceof Uint8Array) {
16
+ buffer = Buffer.from(value);
17
+ }
18
+ else {
19
+ const hex = value.startsWith('0x') ? value.slice(2) : value;
20
+ if (hex.length % 2 !== 0 || !/^[0-9a-f]*$/i.test(hex)) {
21
+ throw new sdk_core_1.InvalidParameterValueError(`${field} must be an even-length hexadecimal string`);
22
+ }
23
+ buffer = Buffer.from(hex, 'hex');
24
+ }
25
+ if (expectedLength !== undefined && buffer.length !== expectedLength) {
26
+ throw new sdk_core_1.InvalidParameterValueError(`${field} must be exactly ${expectedLength} bytes`);
27
+ }
28
+ return buffer;
29
+ }
30
+ function optionalBuffer(value) {
31
+ return value === undefined ? (0, transactions_1.noneCV)() : (0, transactions_1.someCV)((0, transactions_1.bufferCV)(byteBuffer(value, 'signerCalldata')));
32
+ }
33
+ function lockupValue(lockup) {
34
+ if (lockup.kind === 'sbtc') {
35
+ // PoX-5 ABI represents an sBTC lockup as err uint and an L1 BTC lockup as ok tuple.
36
+ return (0, transactions_1.responseErrorCV)((0, transactions_1.uintCV)(lockup.sbtcSats));
37
+ }
38
+ if (lockup.outputs.length === 0 || lockup.outputs.length > 10) {
39
+ throw new sdk_core_1.InvalidParameterValueError('btc lockup outputs must contain between 1 and 10 outputs');
40
+ }
41
+ for (const [index, output] of lockup.outputs.entries()) {
42
+ if (output.leafHashes.length > 14) {
43
+ throw new sdk_core_1.InvalidParameterValueError(`btc lockup output ${index} has more than 14 merkle siblings`);
44
+ }
45
+ }
46
+ return (0, transactions_1.responseOkCV)((0, transactions_1.tupleCV)({
47
+ outputs: (0, transactions_1.listCV)(lockup.outputs.map((output) => (0, transactions_1.tupleCV)({
48
+ height: (0, transactions_1.uintCV)(output.height),
49
+ tx: (0, transactions_1.bufferCV)(byteBuffer(output.tx, 'tx')),
50
+ 'output-index': (0, transactions_1.uintCV)(output.outputIndex),
51
+ header: (0, transactions_1.bufferCV)(byteBuffer(output.header, 'header', 80)),
52
+ 'leaf-hashes': (0, transactions_1.listCV)(output.leafHashes.map((hash) => (0, transactions_1.bufferCV)(byteBuffer(hash, 'leafHash', 32)))),
53
+ 'tx-count': (0, transactions_1.uintCV)(output.txCount),
54
+ 'tx-index': (0, transactions_1.uintCV)(output.txIndex),
55
+ amount: (0, transactions_1.uintCV)(output.amount),
56
+ 'unlock-burn-height': (0, transactions_1.uintCV)(output.unlockBurnHeight),
57
+ }))),
58
+ 'staker-unlock-bytes': (0, transactions_1.bufferCV)(byteBuffer(lockup.unlockBytes, 'unlockBytes')),
59
+ }));
60
+ }
61
+ class Pox5Builder extends contractBuilder_1.ContractBuilder {
62
+ constructor(coinConfig) {
63
+ super(coinConfig);
64
+ this._contractAddress = coinConfig.network.stakingContractAddress;
65
+ this._contractName = constants_1.CONTRACT_NAME_POX5;
66
+ }
67
+ static isValidContractCall(coinConfig, payload) {
68
+ return (coinConfig.network.stakingContractAddress === (0, transactions_1.addressToString)(payload.contractAddress) &&
69
+ payload.contractName.content === constants_1.CONTRACT_NAME_POX5);
70
+ }
71
+ registerForBond(params) {
72
+ this.functionName(constants_1.FUNCTION_NAME_REGISTER_FOR_BOND);
73
+ this.functionArgs([
74
+ (0, transactions_1.uintCV)(params.bondIndex),
75
+ (0, utils_1.contractPrincipalCVFromString)(params.signerManager),
76
+ (0, transactions_1.uintCV)(params.amountUstx),
77
+ lockupValue(params.lockup),
78
+ optionalBuffer(params.signerCalldata),
79
+ ]);
80
+ return this;
81
+ }
82
+ updateBondRegistration(params) {
83
+ this.functionName(constants_1.FUNCTION_NAME_UPDATE_BOND_REGISTRATION);
84
+ this.functionArgs([
85
+ (0, utils_1.contractPrincipalCVFromString)(params.signerManager),
86
+ (0, utils_1.contractPrincipalCVFromString)(params.oldSignerManager),
87
+ optionalBuffer(params.signerCalldata),
88
+ ]);
89
+ return this;
90
+ }
91
+ announceL1EarlyExit(params) {
92
+ this.functionName(constants_1.FUNCTION_NAME_ANNOUNCE_L1_EARLY_EXIT);
93
+ this.functionArgs([
94
+ (0, utils_1.standardPrincipalCVFromString)(params.staker),
95
+ (0, utils_1.contractPrincipalCVFromString)(params.oldSignerManager),
96
+ ]);
97
+ return this;
98
+ }
99
+ stake(params) {
100
+ this.functionName(constants_1.FUNCTION_NAME_STAKE);
101
+ this.functionArgs([
102
+ (0, utils_1.contractPrincipalCVFromString)(params.signerManager),
103
+ (0, transactions_1.uintCV)(params.amountUstx),
104
+ (0, transactions_1.uintCV)(params.numCycles),
105
+ (0, transactions_1.uintCV)(params.startBurnHt),
106
+ optionalBuffer(params.signerCalldata),
107
+ ]);
108
+ return this;
109
+ }
110
+ stakeUpdate(params) {
111
+ this.functionName(constants_1.FUNCTION_NAME_STAKE_UPDATE);
112
+ this.functionArgs([
113
+ (0, utils_1.contractPrincipalCVFromString)(params.signerManager),
114
+ (0, utils_1.contractPrincipalCVFromString)(params.oldSignerManager),
115
+ // The PoX-5 ABI uses uint values; omitted values intentionally encode zero.
116
+ (0, transactions_1.uintCV)(params.cyclesToExtend ?? 0),
117
+ (0, transactions_1.uintCV)(params.amountIncrease ?? 0),
118
+ optionalBuffer(params.signerCalldata),
119
+ ]);
120
+ return this;
121
+ }
122
+ unstake(oldSignerManager) {
123
+ this.functionName(constants_1.FUNCTION_NAME_UNSTAKE);
124
+ this.functionArgs([(0, utils_1.contractPrincipalCVFromString)(oldSignerManager)]);
125
+ return this;
126
+ }
127
+ calculateRewards(bondIndices) {
128
+ this.functionName(constants_1.FUNCTION_NAME_CALCULATE_REWARDS);
129
+ this.functionArgs([(0, transactions_1.listCV)(bondIndices.map((bondIndex) => (0, transactions_1.uintCV)(bondIndex)))]);
130
+ return this;
131
+ }
132
+ claimRewards(params) {
133
+ this.functionName(constants_1.FUNCTION_NAME_CLAIM_REWARDS);
134
+ this.functionArgs([(0, transactions_1.listCV)(params.bondIndices.map((bondIndex) => (0, transactions_1.uintCV)(bondIndex))), (0, transactions_1.uintCV)(params.rewardCycle)]);
135
+ return this;
136
+ }
137
+ claimStakerRewardsForSigner(params) {
138
+ this.functionName(constants_1.FUNCTION_NAME_CLAIM_STAKER_REWARDS);
139
+ this.functionArgs([
140
+ (0, utils_1.standardPrincipalCVFromString)(params.staker),
141
+ (0, transactions_1.uintCV)(params.rewardCycle),
142
+ params.bondIndex === undefined ? (0, transactions_1.noneCV)() : (0, transactions_1.someCV)((0, transactions_1.uintCV)(params.bondIndex)),
143
+ ]);
144
+ return this;
145
+ }
146
+ }
147
+ exports.Pox5Builder = Pox5Builder;
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG94NUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3BveDVCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQVk4QjtBQUM5QixtREFBa0U7QUFDbEUsdURBQW9EO0FBQ3BELDJDQVdxQjtBQUNyQixtQ0FBdUY7QUEwRXZGLFNBQVMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsS0FBYSxFQUFFLGNBQXVCO0lBQzFFLHdGQUF3RjtJQUN4RixJQUFJLE1BQWMsQ0FBQztJQUNuQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUN2QyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLElBQUkscUNBQTBCLENBQUMsR0FBRyxLQUFLLDRDQUE0QyxDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxjQUFjLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDckUsTUFBTSxJQUFJ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TSxFQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDMUIsTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUEscUJBQU0sR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFBLHFCQUFNLEVBQUMsSUFBQSxxQkFBTSxFQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3RSxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQWpHRCxrQ0FpR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBTdGFja3NOZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgYnVmZmVyQ1YsXG4gIENvbnRyYWN0Q2FsbFBheWxvYWQsXG4gIENsYXJpdHlWYWx1ZSxcbiAgbGlzdENWLFxuICBub25lQ1YsXG4gIHJlc3BvbnNlRXJyb3JDVixcbiAgcmVzcG9uc2VPa0NWLFxuICBzb21lQ1YsXG4gIHR1cGxlQ1YsXG4gIHVpbnRDVixcbiAgYWRkcmVzc1RvU3RyaW5nLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vY29udHJhY3RCdWlsZGVyJztcbmltcG9ydCB7XG4gIENPTlRSQUNUX05BTUVfUE9YNSxcbiAgRlVOQ1RJT05fTkFNRV9BTk5PVU5DRV9MMV9FQVJMWV9FWElULFxuICBGVU5DVElPTl9OQU1FX0NBTENVTEFURV9SRVdBUkRTLFxuICBGVU5DVElPTl9OQU1FX0NMQUlNX1JFV0FSRFMsXG4gIEZVTkNUSU9OX05BTUVfQ0xBSU1fU1RBS0VSX1JFV0FSRFMsXG4gIEZVTkNUSU9OX05BTUVfUkVHSVNURVJfRk9SX0JPTkQsXG4gIEZVTkNUSU9OX05BTUVfU1RBS0UsXG4gIEZVTkNUSU9OX05BTUVfU1RBS0VfVVBEQVRFLFxuICBGVU5DVElPTl9OQU1FX1VOU1RBS0UsXG4gIEZVTkNUSU9OX05BTUVfVVBEQVRFX0JPTkRfUkVHSVNUUkFUSU9OLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjb250cmFjdFByaW5jaXBhbENWRnJvbVN0cmluZywgc3RhbmRhcmRQcmluY2lwYWxDVkZyb21TdHJpbmcgfSBmcm9tICcuL3V0aWxzJztcblxudHlwZSBJbnRlZ2VyID0gYmlnaW50IHwgbnVtYmVyIHwgc3RyaW5nO1xudHlwZSBCeXRlVmFsdWUgPSBCdWZmZXIgfCBVaW50OEFycmF5IHwgc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBveDVMb2NrdXBPdXRwdXQge1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgdHg6IEJ5dGVWYWx1ZTtcbiAgb3V0cHV0SW5kZXg6IG51bWJlcjtcbiAgaGVhZGVyOiBCeXRlVmFsdWU7XG4gIGxlYWZIYXNoZXM6IEJ5dGVWYWx1ZVtdO1xuICB0eENvdW50OiBudW1iZXI7XG4gIHR4SW5kZXg6IG51bWJlcjtcbiAgYW1vdW50OiBJbnRlZ2VyO1xuICB1bmxvY2tCdXJuSGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFBveDVMb2NrdXAgPVxuICB8IHtcbiAgICAgIGtpbmQ6ICdidGMnO1xuICAgICAgb3V0cHV0czogUG94NUxvY2t1cE91dHB1dFtdO1xuICAgICAgdW5sb2NrQnl0ZXM6IEJ5dGVWYWx1ZTtcbiAgICB9XG4gIHwge1xuICAgICAga2luZDogJ3NidGMnO1xuICAgICAgc2J0Y1NhdHM6IEludGVnZXI7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBQb3g1UmVnaXN0ZXJGb3JCb25kUGFyYW1zIHtcbiAgYm9uZEluZGV4OiBJbnRlZ2VyO1xuICBzaWduZXJNYW5hZ2VyOiBzdHJpbmc7XG4gIGFtb3VudFVzdHg6IEludGVnZXI7XG4gIGxvY2t1cDogUG94NUxvY2t1cDtcbiAgc2lnbmVyQ2FsbGRhdGE/OiBCeXRlVmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG94NVVwZGF0ZUJvbmRSZWdpc3RyYXRpb25QYXJhbXMge1xuICBzaWduZXJNYW5hZ2VyOiBzdHJpbmc7XG4gIG9sZFNpZ25lck1hbmFnZXI6IHN0cmluZztcbiAgc2lnbmVyQ2FsbGRhdGE/OiBCeXRlVmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG94NUFubm91bmNlTDFFYXJseUV4aXRQYXJhbXMge1xuICBzdGFrZXI6IHN0cmluZztcbiAgb2xkU2lnbmVyTWFuYWdlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBveDVTdGFrZVBhcmFtcyB7XG4gIHNpZ25lck1hbmFnZXI6IHN0cmluZztcbiAgYW1vdW50VXN0eDogSW50ZWdlcjtcbiAgbnVtQ3ljbGVzOiBJbnRlZ2VyO1xuICBzdGFydEJ1cm5IdDogSW50ZWdlcjtcbiAgc2lnbmVyQ2FsbGRhdGE/OiBCeXRlVmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG94NVN0YWtlVXBkYXRlUGFyYW1zIHtcbiAgc2lnbmVyTWFuYWdlcjogc3RyaW5nO1xuICBvbGRTaWduZXJNYW5hZ2VyOiBzdHJpbmc7XG4gIGN5Y2xlc1RvRXh0ZW5kPzogSW50ZWdlcjtcbiAgYW1vdW50SW5jcmVhc2U/OiBJbnRlZ2VyO1xuICBzaWduZXJDYWxsZGF0YT86IEJ5dGVWYWx1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3g1Q2xhaW1SZXdhcmRzUGFyYW1zIHtcbiAgYm9uZEluZGljZXM6IEludGVnZXJbXTtcbiAgcmV3YXJkQ3ljbGU6IEludGVnZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG94NUNsYWltU3Rha2VyUmV3YXJkc1BhcmFtcyB7XG4gIHN0YWtlcjogc3RyaW5nO1xuICByZXdhcmRDeWNsZTogSW50ZWdlcjtcbiAgYm9uZEluZGV4PzogSW50ZWdlcjtcbn1cblxuZnVuY3Rpb24gYnl0ZUJ1ZmZlcih2YWx1ZTogQnl0ZVZhbHVlLCBmaWVsZDogc3RyaW5nLCBleHBlY3RlZExlbmd0aD86IG51bWJlcik6IEJ1ZmZlciB7XG4gIC8vIFN0cmluZyBpbnB1dHMgYXJlIGhleGFkZWNpbWFsLCB3aXRoIGFuIG9wdGlvbmFsIDB4IHByZWZpeDsgdXNlIEJ1ZmZlciBmb3IgdGV4dCBieXRlcy5cbiAgbGV0IGJ1ZmZlcjogQnVmZmVyO1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIGJ1ZmZlciA9IHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBoZXggPSB2YWx1ZS5zdGFydHNXaXRoKCcweCcpID8gdmFsdWUuc2xpY2UoMikgOiB2YWx1ZTtcbiAgICBpZiAoaGV4Lmxlbmd0aCAlIDIgIT09IDAgfHwgIS9eWzAtOWEtZl0qJC9pLnRlc3QoaGV4KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKGAke2ZpZWxkfSBtdXN0IGJlIGFuIGV2ZW4tbGVuZ3RoIGhleGFkZWNpbWFsIHN0cmluZ2ApO1xuICAgIH1cbiAgICBidWZmZXIgPSBCdWZmZXIuZnJvbShoZXgsICdoZXgnKTtcbiAgfVxuICBpZiAoZXhwZWN0ZWRMZW5ndGggIT09IHVuZGVmaW5lZCAmJiBidWZmZXIubGVuZ3RoICE9PSBleHBlY3RlZExlbmd0aCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcihgJHtmaWVsZH0gbXVzdCBiZSBleGFjdGx5ICR7ZXhwZWN0ZWRMZW5ndGh9IGJ5dGVzYCk7XG4gIH1cbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cblxuZnVuY3Rpb24gb3B0aW9uYWxCdWZmZXIodmFsdWU6IEJ5dGVWYWx1ZSB8IHVuZGVmaW5lZCk6IENsYXJpdHlWYWx1ZSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbm9uZUNWKCkgOiBzb21lQ1YoYnVmZmVyQ1YoYnl0ZUJ1ZmZlcih2YWx1ZSwgJ3NpZ25lckNhbGxkYXRhJykpKTtcbn1cblxuZnVuY3Rpb24gbG9ja3VwVmFsdWUobG9ja3VwOiBQb3g1TG9ja3VwKTogQ2xhcml0eVZhbHVlIHtcbiAgaWYgKGxvY2t1cC5raW5kID09PSAnc2J0YycpIHtcbiAgICAvLyBQb1gtNSBBQkkgcmVwcmVzZW50cyBhbiBzQlRDIGxvY2t1cCBhcyBlcnIgdWludCBhbmQgYW4gTDEgQlRDIGxvY2t1cCBhcyBvayB0dXBsZS5cbiAgICByZXR1cm4gcmVzcG9uc2VFcnJvckNWKHVpbnRDVihsb2NrdXAuc2J0Y1NhdHMpKTtcbiAgfVxuICBpZiAobG9ja3VwLm91dHB1dHMubGVuZ3RoID09PSAwIHx8IGxvY2t1cC5vdXRwdXRzLmxlbmd0aCA+IDEwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdidGMgbG9ja3VwIG91dHB1dHMgbXVzdCBjb250YWluIGJldHdlZW4gMSBhbmQgMTAgb3V0cHV0cycpO1xuICB9XG4gIGZvciAoY29uc3QgW2luZGV4LCBvdXRwdXRdIG9mIGxvY2t1cC5vdXRwdXRzLmVudHJpZXMoKSkge1xuICAgIGlmIChvdXRwdXQubGVhZkhhc2hlcy5sZW5ndGggPiAxNCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKGBidGMgbG9ja3VwIG91dHB1dCAke2luZGV4fSBoYXMgbW9yZSB0aGFuIDE0IG1lcmtsZSBzaWJsaW5nc2ApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzcG9uc2VPa0NWKFxuICAgIHR1cGxlQ1Yoe1xuICAgICAgb3V0cHV0czogbGlzdENWKFxuICAgICAgICBsb2NrdXAub3V0cHV0cy5tYXAoKG91dHB1dCkgPT5cbiAgICAgICAgICB0dXBsZUNWKHtcbiAgICAgICAgICAgIGhlaWdodDogdWludENWKG91dHB1dC5oZWlnaHQpLFxuICAgICAgICAgICAgdHg6IGJ1ZmZlckNWKGJ5dGVCdWZmZXIob3V0cHV0LnR4LCAndHgnKSksXG4gICAgICAgICAgICAnb3V0cHV0LWluZGV4JzogdWludENWKG91dHB1dC5vdXRwdXRJbmRleCksXG4gICAgICAgICAgICBoZWFkZXI6IGJ1ZmZlckNWKGJ5dGVCdWZmZXIob3V0cHV0LmhlYWRlciwgJ2hlYWRlcicsIDgwKSksXG4gICAgICAgICAgICAnbGVhZi1oYXNoZXMnOiBsaXN0Q1Yob3V0cHV0LmxlYWZIYXNoZXMubWFwKChoYXNoKSA9PiBidWZmZXJDVihieXRlQnVmZmVyKGhhc2gsICdsZWFmSGFzaCcsIDMyKSkpKSxcbiAgICAgICAgICAgICd0eC1jb3VudCc6IHVpbnRDVihvdXRwdXQudHhDb3VudCksXG4gICAgICAgICAgICAndHgtaW5kZXgnOiB1aW50Q1Yob3V0cHV0LnR4SW5kZXgpLFxuICAgICAgICAgICAgYW1vdW50OiB1aW50Q1Yob3V0cHV0LmFtb3VudCksXG4gICAgICAgICAgICAndW5sb2NrLWJ1cm4taGVpZ2h0JzogdWludENWKG91dHB1dC51bmxvY2tCdXJuSGVpZ2h0KSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgJ3N0YWtlci11bmxvY2stYnl0ZXMnOiBidWZmZXJDVihieXRlQnVmZmVyKGxvY2t1cC51bmxvY2tCeXRlcywgJ3VubG9ja0J5dGVzJykpLFxuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBjbGFzcyBQb3g1QnVpbGRlciBleHRlbmRzIENvbnRyYWN0QnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gKGNvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnN0YWtpbmdDb250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fY29udHJhY3ROYW1lID0gQ09OVFJBQ1RfTkFNRV9QT1g1O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkQ29udHJhY3RDYWxsKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCBwYXlsb2FkOiBDb250cmFjdENhbGxQYXlsb2FkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrKS5zdGFraW5nQ29udHJhY3RBZGRyZXNzID09PSBhZGRyZXNzVG9TdHJpbmcocGF5bG9hZC5jb250cmFjdEFkZHJlc3MpICYmXG4gICAgICBwYXlsb2FkLmNvbnRyYWN0TmFtZS5jb250ZW50ID09PSBDT05UUkFDVF9OQU1FX1BPWDVcbiAgICApO1xuICB9XG5cbiAgcmVnaXN0ZXJGb3JCb25kKHBhcmFtczogUG94NVJlZ2lzdGVyRm9yQm9uZFBhcmFtcyk6IHRoaXMge1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lKEZVTkNUSU9OX05BTUVfUkVHSVNURVJfRk9SX0JPTkQpO1xuICAgIHRoaXMuZnVuY3Rpb25BcmdzKFtcbiAgICAgIHVpbnRDVihwYXJhbXMuYm9uZEluZGV4KSxcbiAgICAgIGNvbnRyYWN0UHJpbmNpcGFsQ1ZGcm9tU3RyaW5nKHBhcmFtcy5zaWduZXJNYW5hZ2VyKSxcbiAgICAgIHVpbnRDVihwYXJhbXMuYW1vdW50VXN0eCksXG4gICAgICBsb2NrdXBWYWx1ZShwYXJhbXMubG9ja3VwKSxcbiAgICAgIG9wdGlvbmFsQnVmZmVyKHBhcmFtcy5zaWduZXJDYWxsZGF0YSksXG4gICAgXSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVCb25kUmVnaXN0cmF0aW9uKHBhcmFtczogUG94NVVwZGF0ZUJvbmRSZWdpc3RyYXRpb25QYXJhbXMpOiB0aGlzIHtcbiAgICB0aGlzLmZ1bmN0aW9uTmFtZShGVU5DVElPTl9OQU1FX1VQREFURV9CT05EX1JFR0lTVFJBVElPTik7XG4gICAgdGhpcy5mdW5jdGlvbkFyZ3MoW1xuICAgICAgY29udHJhY3RQcmluY2lwYWxDVkZyb21TdHJpbmcocGFyYW1zLnNpZ25lck1hbmFnZXIpLFxuICAgICAgY29udHJhY3RQcmluY2lwYWxDVkZyb21TdHJpbmcocGFyYW1zLm9sZFNpZ25lck1hbmFnZXIpLFxuICAgICAgb3B0aW9uYWxCdWZmZXIocGFyYW1zLnNpZ25lckNhbGxkYXRhKSxcbiAgICBdKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFubm91bmNlTDFFYXJseUV4aXQocGFyYW1zOiBQb3g1QW5ub3VuY2VMMUVhcmx5RXhpdFBhcmFtcyk6IHRoaXMge1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lKEZVTkNUSU9OX05BTUVfQU5OT1VOQ0VfTDFfRUFSTFlfRVhJVCk7XG4gICAgdGhpcy5mdW5jdGlvbkFyZ3MoW1xuICAgICAgc3RhbmRhcmRQcmluY2lwYWxDVkZyb21TdHJpbmcocGFyYW1zLnN0YWtlciksXG4gICAgICBjb250cmFjdFByaW5jaXBhbENWRnJvbVN0cmluZyhwYXJhbXMub2xkU2lnbmVyTWFuYWdlciksXG4gICAgXSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGFrZShwYXJhbXM6IFBveDVTdGFrZVBhcmFtcyk6IHRoaXMge1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lKEZVTkNUSU9OX05BTUVfU1RBS0UpO1xuICAgIHRoaXMuZnVuY3Rpb25BcmdzKFtcbiAgICAgIGNvbnRyYWN0UHJpbmNpcGFsQ1ZGcm9tU3RyaW5nKHBhcmFtcy5zaWduZXJNYW5hZ2VyKSxcbiAgICAgIHVpbnRDVihwYXJhbXMuYW1vdW50VXN0eCksXG4gICAgICB1aW50Q1YocGFyYW1zLm51bUN5Y2xlcyksXG4gICAgICB1aW50Q1YocGFyYW1zLnN0YXJ0QnVybkh0KSxcbiAgICAgIG9wdGlvbmFsQnVmZmVyKHBhcmFtcy5zaWduZXJDYWxsZGF0YSksXG4gICAgXSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGFrZVVwZGF0ZShwYXJhbXM6IFBveDVTdGFrZVVwZGF0ZVBhcmFtcyk6IHRoaXMge1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lKEZVTkNUSU9OX05BTUVfU1RBS0VfVVBEQVRFKTtcbiAgICB0aGlzLmZ1bmN0aW9uQXJncyhbXG4gICAgICBjb250cmFjdFByaW5jaXBhbENWRnJvbVN0cmluZyhwYXJhbXMuc2lnbmVyTWFuYWdlciksXG4gICAgICBjb250cmFjdFByaW5jaXBhbENWRnJvbVN0cmluZyhwYXJhbXMub2xkU2lnbmVyTWFuYWdlciksXG4gICAgICAvLyBUaGUgUG9YLTUgQUJJIHVzZXMgdWludCB2YWx1ZXM7IG9taXR0ZWQgdmFsdWVzIGludGVudGlvbmFsbHkgZW5jb2RlIHplcm8uXG4gICAgICB1aW50Q1YocGFyYW1zLmN5Y2xlc1RvRXh0ZW5kID8/IDApLFxuICAgICAgdWludENWKHBhcmFtcy5hbW91bnRJbmNyZWFzZSA/PyAwKSxcbiAgICAgIG9wdGlvbmFsQnVmZmVyKHBhcmFtcy5zaWduZXJDYWxsZGF0YSksXG4gICAgXSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1bnN0YWtlKG9sZFNpZ25lck1hbmFnZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lKEZVTkNUSU9OX05BTUVfVU5TVEFLRSk7XG4gICAgdGhpcy5mdW5jdGlvbkFyZ3MoW2NvbnRyYWN0UHJpbmNpcGFsQ1ZGcm9tU3RyaW5nKG9sZFNpZ25lck1hbmFnZXIpXSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjYWxjdWxhdGVSZXdhcmRzKGJvbmRJbmRpY2VzOiBJbnRlZ2VyW10pOiB0aGlzIHtcbiAgICB0aGlzLmZ1bmN0aW9uTmFtZShGVU5DVElPTl9OQU1FX0NBTENVTEFURV9SRVdBUkRTKTtcbiAgICB0aGlzLmZ1bmN0aW9uQXJncyhbbGlzdENWKGJvbmRJbmRpY2VzLm1hcCgoYm9uZEluZGV4KSA9PiB1aW50Q1YoYm9uZEluZGV4KSkpXSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjbGFpbVJld2FyZHMocGFyYW1zOiBQb3g1Q2xhaW1SZXdhcmRzUGFyYW1zKTogdGhpcyB7XG4gICAgdGhpcy5mdW5jdGlvbk5hbWUoRlVOQ1RJT05fTkFNRV9DTEFJTV9SRVdBUkRTKTtcbiAgICB0aGlzLmZ1bmN0aW9uQXJncyhbbGlzdENWKHBhcmFtcy5ib25kSW5kaWNlcy5tYXAoKGJvbmRJbmRleCkgPT4gdWludENWKGJvbmRJbmRleCkpKSwgdWludENWKHBhcmFtcy5yZXdhcmRDeWNsZSldKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNsYWltU3Rha2VyUmV3YXJkc0ZvclNpZ25lcihwYXJhbXM6IFBveDVDbGFpbVN0YWtlclJld2FyZHNQYXJhbXMpOiB0aGlzIHtcbiAgICB0aGlzLmZ1bmN0aW9uTmFtZShGVU5DVElPTl9OQU1FX0NMQUlNX1NUQUtFUl9SRVdBUkRTKTtcbiAgICB0aGlzLmZ1bmN0aW9uQXJncyhbXG4gICAgICBzdGFuZGFyZFByaW5jaXBhbENWRnJvbVN0cmluZyhwYXJhbXMuc3Rha2VyKSxcbiAgICAgIHVpbnRDVihwYXJhbXMucmV3YXJkQ3ljbGUpLFxuICAgICAgcGFyYW1zLmJvbmRJbmRleCA9PT0gdW5kZWZpbmVkID8gbm9uZUNWKCkgOiBzb21lQ1YodWludENWKHBhcmFtcy5ib25kSW5kZXgpKSxcbiAgICBdKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { Transaction } from './transaction';
3
+ import { SbtcWithdrawParams } from './iface';
4
+ import { ContractCallPayload } from '@stacks/transactions/dist/payload';
5
+ import { AbstractContractBuilder } from './abstractContractBuilder';
6
+ export declare class SbtcWithdrawBuilder extends AbstractContractBuilder {
7
+ private _withdrawParams;
8
+ private _isDeserialized;
9
+ constructor(_coinConfig: Readonly<CoinConfig>);
10
+ /**
11
+ * Check whether a deserialized contract-call payload matches the sBTC withdrawal contract.
12
+ */
13
+ static isValidContractCall(coinConfig: Readonly<CoinConfig>, payload: ContractCallPayload): boolean;
14
+ /**
15
+ * Set withdrawal parameters.
16
+ *
17
+ * @param {SbtcWithdrawParams} params - amount (satoshis), btcAddress, maxFee
18
+ * @returns {this}
19
+ */
20
+ withdraw(params: SbtcWithdrawParams): this;
21
+ initBuilder(tx: Transaction): void;
22
+ /**
23
+ * Get the withdrawal params decoded from the deserialized/built transaction, including the
24
+ * raw sBTC recipient version and hash bytes (as opposed to a btcAddress string, which cannot
25
+ * be recovered from the on-chain args alone).
26
+ */
27
+ getWithdrawParams(): {
28
+ amount: string;
29
+ maxFee: string;
30
+ recipientVersion: number;
31
+ recipientHashBytes: Buffer;
32
+ } | undefined;
33
+ /** @inheritdoc */
34
+ protected buildImplementation(): Promise<Transaction>;
35
+ private withdrawParamsToFunctionArgs;
36
+ private withdrawParamsToPostCondition;
37
+ }
38
+ //# sourceMappingURL=sbtcWithdrawBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sbtcWithdrawBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/sbtcWithdrawBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAoD,MAAM,qBAAqB,CAAC;AAiB/G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAMpE,qBAAa,mBAAoB,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,eAAe,CAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;OAEG;WACW,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAS1G;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAc1C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAuClC;;;;OAIG;IACH,iBAAiB,IACb;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,GACxF,SAAS;IAsBb,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAqB3D,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,6BAA6B;CAqBtC"}
@@ -0,0 +1,150 @@
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.SbtcWithdrawBuilder = void 0;
7
+ const statics_1 = require("@bitgo-beta/statics");
8
+ const bn_js_1 = __importDefault(require("bn.js"));
9
+ const transactions_1 = require("@stacks/transactions");
10
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
+ const utils_1 = require("./utils");
12
+ const constants_1 = require("./constants");
13
+ const abstractContractBuilder_1 = require("./abstractContractBuilder");
14
+ const btcAddressUtils_1 = require("./btcAddressUtils");
15
+ const SBTC_TOKEN_CONTRACT_NAME = 'sbtc-token';
16
+ const SBTC_TOKEN_ASSET_NAME = 'sbtc-token';
17
+ class SbtcWithdrawBuilder extends abstractContractBuilder_1.AbstractContractBuilder {
18
+ constructor(_coinConfig) {
19
+ super(_coinConfig);
20
+ this._isDeserialized = false;
21
+ }
22
+ /**
23
+ * Check whether a deserialized contract-call payload matches the sBTC withdrawal contract.
24
+ */
25
+ static isValidContractCall(coinConfig, payload) {
26
+ return (coinConfig.network.sbtcWithdrawalContractAddress ===
27
+ (0, transactions_1.addressToString)(payload.contractAddress) &&
28
+ constants_1.CONTRACT_NAME_SBTC_WITHDRAWAL === payload.contractName.content &&
29
+ constants_1.FUNCTION_NAME_INITIATE_WITHDRAWAL === payload.functionName.content);
30
+ }
31
+ /**
32
+ * Set withdrawal parameters.
33
+ *
34
+ * @param {SbtcWithdrawParams} params - amount (satoshis), btcAddress, maxFee
35
+ * @returns {this}
36
+ */
37
+ withdraw(params) {
38
+ if (!params.amount || !(0, utils_1.isValidAmount)(params.amount) || params.amount === '0') {
39
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing amount, got: ' + params.amount);
40
+ }
41
+ if (!params.btcAddress || !(0, btcAddressUtils_1.isValidBtcAddress)(params.btcAddress)) {
42
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing btcAddress, got: ' + params.btcAddress);
43
+ }
44
+ if (!params.maxFee || !(0, utils_1.isValidAmount)(params.maxFee) || params.maxFee === '0') {
45
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing maxFee, got: ' + params.maxFee);
46
+ }
47
+ this._withdrawParams = params;
48
+ return this;
49
+ }
50
+ initBuilder(tx) {
51
+ super.initBuilder(tx);
52
+ const payload = tx.stxTransaction.payload;
53
+ const args = payload.functionArgs;
54
+ if (args.length !== 3) {
55
+ throw new sdk_core_1.BuildTransactionError('Invalid number of function args for sBTC withdrawal');
56
+ }
57
+ // args[0] = uint (amount)
58
+ if (args[0].type !== transactions_1.ClarityType.UInt) {
59
+ throw new sdk_core_1.BuildTransactionError('Expected uint for amount argument');
60
+ }
61
+ const amount = args[0].value.toString();
62
+ // args[1] = tuple { version: (buff 1), hashbytes: (buff 32) }
63
+ if (args[1].type !== transactions_1.ClarityType.Tuple) {
64
+ throw new sdk_core_1.BuildTransactionError('Expected tuple for recipient argument');
65
+ }
66
+ const versionBuf = args[1].data['version'];
67
+ const hashbytesBuf = args[1].data['hashbytes'];
68
+ if (versionBuf?.type !== transactions_1.ClarityType.Buffer || hashbytesBuf?.type !== transactions_1.ClarityType.Buffer) {
69
+ throw new sdk_core_1.BuildTransactionError('Expected buffer fields in recipient tuple');
70
+ }
71
+ // args[2] = uint (max-fee)
72
+ if (args[2].type !== transactions_1.ClarityType.UInt) {
73
+ throw new sdk_core_1.BuildTransactionError('Expected uint for max-fee argument');
74
+ }
75
+ const maxFee = args[2].value.toString();
76
+ this._withdrawParams = {
77
+ amount,
78
+ btcAddress: '', // not needed for rebuild; function args are preserved from the original tx
79
+ maxFee,
80
+ };
81
+ this._isDeserialized = true;
82
+ }
83
+ /**
84
+ * Get the withdrawal params decoded from the deserialized/built transaction, including the
85
+ * raw sBTC recipient version and hash bytes (as opposed to a btcAddress string, which cannot
86
+ * be recovered from the on-chain args alone).
87
+ */
88
+ getWithdrawParams() {
89
+ if (!this._withdrawParams) {
90
+ return undefined;
91
+ }
92
+ const payload = this.transaction.stxTransaction.payload;
93
+ const recipientTuple = payload.functionArgs[1];
94
+ if (recipientTuple?.type !== transactions_1.ClarityType.Tuple) {
95
+ return undefined;
96
+ }
97
+ const versionBuf = recipientTuple.data['version'];
98
+ const hashbytesBuf = recipientTuple.data['hashbytes'];
99
+ if (versionBuf?.type !== transactions_1.ClarityType.Buffer || hashbytesBuf?.type !== transactions_1.ClarityType.Buffer) {
100
+ return undefined;
101
+ }
102
+ return {
103
+ amount: this._withdrawParams.amount,
104
+ maxFee: this._withdrawParams.maxFee,
105
+ recipientVersion: versionBuf.buffer[0],
106
+ recipientHashBytes: Buffer.from(hashbytesBuf.buffer),
107
+ };
108
+ }
109
+ /** @inheritdoc */
110
+ async buildImplementation() {
111
+ if (!this._withdrawParams) {
112
+ throw new sdk_core_1.BuildTransactionError('Withdrawal params are not set. Use withdraw() to set them.');
113
+ }
114
+ const network = this._coinConfig.network;
115
+ this._contractAddress = network.sbtcWithdrawalContractAddress;
116
+ this._contractName = constants_1.CONTRACT_NAME_SBTC_WITHDRAWAL;
117
+ this._functionName = constants_1.FUNCTION_NAME_INITIATE_WITHDRAWAL;
118
+ // For deserialized transactions, function args are already preserved from the original tx.
119
+ // For fresh builds, construct them from the withdraw params.
120
+ if (!this._isDeserialized) {
121
+ this._functionArgs = this.withdrawParamsToFunctionArgs(this._withdrawParams);
122
+ }
123
+ this._postConditionMode = transactions_1.PostConditionMode.Deny;
124
+ this._postConditions = this.withdrawParamsToPostCondition(this._withdrawParams);
125
+ return await super.buildImplementation();
126
+ }
127
+ withdrawParamsToFunctionArgs(params) {
128
+ const decoded = (0, btcAddressUtils_1.decodeBtcAddress)(params.btcAddress);
129
+ return [
130
+ (0, transactions_1.uintCV)(params.amount),
131
+ (0, transactions_1.tupleCV)({
132
+ version: (0, transactions_1.bufferCV)(Buffer.from([decoded.version])),
133
+ hashbytes: (0, transactions_1.bufferCV)(decoded.hashBytes),
134
+ }),
135
+ (0, transactions_1.uintCV)(params.maxFee),
136
+ ];
137
+ }
138
+ withdrawParamsToPostCondition(params) {
139
+ const amount = new bn_js_1.default(params.amount).add(new bn_js_1.default(params.maxFee));
140
+ const network = this._coinConfig.network;
141
+ const sbtcContractAddress = network.sbtcWithdrawalContractAddress;
142
+ return [
143
+ (0, transactions_1.makeStandardFungiblePostCondition)((0, utils_1.getSTXAddressFromPubKeys)(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
144
+ ? transactions_1.AddressVersion.MainnetMultiSig
145
+ : transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, amount.toString(), (0, transactions_1.createAssetInfo)(sbtcContractAddress, SBTC_TOKEN_CONTRACT_NAME, SBTC_TOKEN_ASSET_NAME)),
146
+ ];
147
+ }
148
+ }
149
+ exports.SbtcWithdrawBuilder = SbtcWithdrawBuilder;
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2J0Y1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2J0Y1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBK0c7QUFDL0csa0RBQTJCO0FBQzNCLHVEQWE4QjtBQUM5QixtREFBNkQ7QUFFN0QsbUNBQWtFO0FBRWxFLDJDQUErRjtBQUUvRix1RUFBb0U7QUFDcEUsdURBQXdFO0FBRXhFLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDO0FBQzlDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDO0FBRTNDLE1BQWEsbUJBQW9CLFNBQVEsaURBQXVCO0lBSTlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSGIsb0JBQWUsR0FBRyxLQUFLLENBQUM7SUFJaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQWdDLEVBQUUsT0FBNEI7UUFDOUYsT0FBTyxDQUNKLFVBQVUsQ0FBQyxPQUE4QixDQUFDLDZCQUE2QjtZQUN0RSxJQUFBLDhCQUFlLEVBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQyx5Q0FBNkIsS0FBSyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU87WUFDOUQsNkNBQWlDLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsTUFBMEI7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDN0UsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtDQUFrQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RixD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QUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUE2QixDQUFDO1FBQy9ELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLDZCQUE2QixDQUFDO1FBRWxFLE9BQU87WUFDTCxJQUFBLGdEQUFpQyxFQUMvQixJQUFBLGdDQUF3QixFQUN0QixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUsscUJBQVcsQ0FBQyxPQUFPO2dCQUNuRCxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlO2dCQUNoQyxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlLEVBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsY0FBYyxFQUM3RixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUMsT0FBTyxFQUNULG9DQUFxQixDQUFDLEtBQUssRUFDM0IsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUNqQixJQUFBLDhCQUFlLEVBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLENBQUMsQ0FDdEY7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbktELGtEQW1LQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIE5ldHdvcmtUeXBlLCBTdGFja3NOZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5pbXBvcnQge1xuICBBZGRyZXNzSGFzaE1vZGUsXG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQWRkcmVzc1ZlcnNpb24sXG4gIGJ1ZmZlckNWLFxuICBDbGFyaXR5VHlwZSxcbiAgY3JlYXRlQXNzZXRJbmZvLFxuICBGdW5naWJsZUNvbmRpdGlvbkNvZGUsXG4gIG1ha2VTdGFuZGFyZEZ1bmdpYmxlUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG4gIHR1cGxlQ1YsXG4gIHVpbnRDVixcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cywgaXNWYWxpZEFtb3VudCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU2J0Y1dpdGhkcmF3UGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDT05UUkFDVF9OQU1FX1NCVENfV0lUSERSQVdBTCwgRlVOQ1RJT05fTkFNRV9JTklUSUFURV9XSVRIRFJBV0FMIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29udHJhY3RDYWxsUGF5bG9hZCB9IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zL2Rpc3QvcGF5bG9hZCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuaW1wb3J0IHsgZGVjb2RlQnRjQWRkcmVzcywgaXNWYWxpZEJ0Y0FkZHJlc3MgfSBmcm9tICcuL2J0Y0FkZHJlc3NVdGlscyc7XG5cbmNvbnN0IFNCVENfVE9LRU5fQ09OVFJBQ1RfTkFNRSA9ICdzYnRjLXRva2VuJztcbmNvbnN0IFNCVENfVE9LRU5fQVNTRVRfTkFNRSA9ICdzYnRjLXRva2VuJztcblxuZXhwb3J0IGNsYXNzIFNidGNXaXRoZHJhd0J1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB7XG4gIHByaXZhdGUgX3dpdGhkcmF3UGFyYW1zOiBTYnRjV2l0aGRyYXdQYXJhbXMgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2lzRGVzZXJpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgYSBkZXNlcmlhbGl6ZWQgY29udHJhY3QtY2FsbCBwYXlsb2FkIG1hdGNoZXMgdGhlIHNCVEMgd2l0aGRyYXdhbCBjb250cmFjdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZENvbnRyYWN0Q2FsbChjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPiwgcGF5bG9hZDogQ29udHJhY3RDYWxsUGF5bG9hZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAoY29pbkNvbmZpZy5uZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yaykuc2J0Y1dpdGhkcmF3YWxDb250cmFjdEFkZHJlc3MgPT09XG4gICAgICAgIGFkZHJlc3NUb1N0cmluZyhwYXlsb2FkLmNvbnRyYWN0QWRkcmVzcykgJiZcbiAgICAgIENPTlRSQUNUX05BTUVfU0JUQ19XSVRIRFJBV0FMID09PSBwYXlsb2FkLmNvbnRyYWN0TmFtZS5jb250ZW50ICYmXG4gICAgICBGVU5DVElPTl9OQU1FX0lOSVRJQVRFX1dJVEhEUkFXQUwgPT09IHBheWxvYWQuZnVuY3Rpb25OYW1lLmNvbnRlbnRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB3aXRoZHJhd2FsIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7U2J0Y1dpdGhkcmF3UGFyYW1zfSBwYXJhbXMgLSBhbW91bnQgKHNhdG9zaGlzKSwgYnRjQWRkcmVzcywgbWF4RmVlXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgd2l0aGRyYXcocGFyYW1zOiBTYnRjV2l0aGRyYXdQYXJhbXMpOiB0aGlzIHtcbiAgICBpZiAoIXBhcmFtcy5hbW91bnQgfHwgIWlzVmFsaWRBbW91bnQocGFyYW1zLmFtb3VudCkgfHwgcGFyYW1zLmFtb3VudCA9PT0gJzAnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50LCBnb3Q6ICcgKyBwYXJhbXMuYW1vdW50KTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMuYnRjQWRkcmVzcyB8fCAhaXNWYWxpZEJ0Y0FkZHJlc3MocGFyYW1zLmJ0Y0FkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYnRjQWRkcmVzcywgZ290OiAnICsgcGFyYW1zLmJ0Y0FkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5tYXhGZWUgfHwgIWlzVmFsaWRBbW91bnQocGFyYW1zLm1heEZlZSkgfHwgcGFyYW1zLm1heEZlZSA9PT0gJzAnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgbWF4RmVlLCBnb3Q6ICcgKyBwYXJhbXMubWF4RmVlKTtcbiAgICB9XG4gICAgdGhpcy5fd2l0aGRyYXdQYXJhbXMgPSBwYXJhbXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHR4LnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZDtcbiAgICBjb25zdCBhcmdzID0gcGF5bG9hZC5mdW5jdGlvbkFyZ3M7XG5cbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDMpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgbnVtYmVyIG9mIGZ1bmN0aW9uIGFyZ3MgZm9yIHNCVEMgd2l0aGRyYXdhbCcpO1xuICAgIH1cblxuICAgIC8vIGFyZ3NbMF0gPSB1aW50IChhbW91bnQpXG4gICAgaWYgKGFyZ3NbMF0udHlwZSAhPT0gQ2xhcml0eVR5cGUuVUludCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRXhwZWN0ZWQgdWludCBmb3IgYW1vdW50IGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGNvbnN0IGFtb3VudCA9IGFyZ3NbMF0udmFsdWUudG9TdHJpbmcoKTtcblxuICAgIC8vIGFyZ3NbMV0gPSB0dXBsZSB7IHZlcnNpb246IChidWZmIDEpLCBoYXNoYnl0ZXM6IChidWZmIDMyKSB9XG4gICAgaWYgKGFyZ3NbMV0udHlwZSAhPT0gQ2xhcml0eVR5cGUuVHVwbGUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0V4cGVjdGVkIHR1cGxlIGZvciByZWNpcGllbnQgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgdmVyc2lvbkJ1ZiA9IGFyZ3NbMV0uZGF0YVsndmVyc2lvbiddO1xuICAgIGNvbnN0IGhhc2hieXRlc0J1ZiA9IGFyZ3NbMV0uZGF0YVsnaGFzaGJ5dGVzJ107XG4gICAgaWYgKHZlcnNpb25CdWY/LnR5cGUgIT09IENsYXJpdHlUeXBlLkJ1ZmZlciB8fCBoYXNoYnl0ZXNCdWY/LnR5cGUgIT09IENsYXJpdHlUeXBlLkJ1ZmZlcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRXhwZWN0ZWQgYnVmZmVyIGZpZWxkcyBpbiByZWNpcGllbnQgdHVwbGUnKTtcbiAgICB9XG5cbiAgICAvLyBhcmdzWzJdID0gdWludCAobWF4LWZlZSlcbiAgICBpZiAoYXJnc1syXS50eXBlICE9PSBDbGFyaXR5VHlwZS5VSW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCB1aW50IGZvciBtYXgtZmVlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGNvbnN0IG1heEZlZSA9IGFyZ3NbMl0udmFsdWUudG9TdHJpbmcoKTtcblxuICAgIHRoaXMuX3dpdGhkcmF3UGFyYW1zID0ge1xuICAgICAgYW1vdW50LFxuICAgICAgYnRjQWRkcmVzczogJycsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYnVpbGQ7IGZ1bmN0aW9uIGFyZ3MgYXJlIHByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW5hbCB0eFxuICAgICAgbWF4RmVlLFxuICAgIH07XG4gICAgdGhpcy5faXNEZXNlcmlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2l0aGRyYXdhbCBwYXJhbXMgZGVjb2RlZCBmcm9tIHRoZSBkZXNlcmlhbGl6ZWQvYnVpbHQgdHJhbnNhY3Rpb24sIGluY2x1ZGluZyB0aGVcbiAgICogcmF3IHNCVEMgcmVjaXBpZW50IHZlcnNpb24gYW5kIGhhc2ggYnl0ZXMgKGFzIG9wcG9zZWQgdG8gYSBidGNBZGRyZXNzIHN0cmluZywgd2hpY2ggY2Fubm90XG4gICAqIGJlIHJlY292ZXJlZCBmcm9tIHRoZSBvbi1jaGFpbiBhcmdzIGFsb25lKS5cbiAgICovXG4gIGdldFdpdGhkcmF3UGFyYW1zKCk6XG4gICAgfCB7IGFtb3VudDogc3RyaW5nOyBtYXhGZWU6IHN0cmluZzsgcmVjaXBpZW50VmVyc2lvbjogbnVtYmVyOyByZWNpcGllbnRIYXNoQnl0ZXM6IEJ1ZmZlciB9XG4gICAgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fd2l0aGRyYXdQYXJhbXMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnRyYW5zYWN0aW9uLnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZDtcbiAgICBjb25zdCByZWNpcGllbnRUdXBsZSA9IHBheWxvYWQuZnVuY3Rpb25BcmdzWzFdO1xuICAgIGlmIChyZWNpcGllbnRUdXBsZT8udHlwZSAhPT0gQ2xhcml0eVR5cGUuVHVwbGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHZlcnNpb25CdWYgPSByZWNpcGllbnRUdXBsZS5kYXRhWyd2ZXJzaW9uJ107XG4gICAgY29uc3QgaGFzaGJ5dGVzQnVmID0gcmVjaXBpZW50VHVwbGUuZGF0YVsnaGFzaGJ5dGVzJ107XG4gICAgaWYgKHZlcnNpb25CdWY/LnR5cGUgIT09IENsYXJpdHlUeXBlLkJ1ZmZlciB8fCBoYXNoYnl0ZXNCdWY/LnR5cGUgIT09IENsYXJpdHlUeXBlLkJ1ZmZlcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFtb3VudDogdGhpcy5fd2l0aGRyYXdQYXJhbXMuYW1vdW50LFxuICAgICAgbWF4RmVlOiB0aGlzLl93aXRoZHJhd1BhcmFtcy5tYXhGZWUsXG4gICAgICByZWNpcGllbnRWZXJzaW9uOiB2ZXJzaW9uQnVmLmJ1ZmZlclswXSxcbiAgICAgIHJlY2lwaWVudEhhc2hCeXRlczogQnVmZmVyLmZyb20oaGFzaGJ5dGVzQnVmLmJ1ZmZlciksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgaWYgKCF0aGlzLl93aXRoZHJhd1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignV2l0aGRyYXdhbCBwYXJhbXMgYXJlIG5vdCBzZXQuIFVzZSB3aXRoZHJhdygpIHRvIHNldCB0aGVtLicpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ldHdvcmsgPSB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrO1xuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9IG5ldHdvcmsuc2J0Y1dpdGhkcmF3YWxDb250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fY29udHJhY3ROYW1lID0gQ09OVFJBQ1RfTkFNRV9TQlRDX1dJVEhEUkFXQUw7XG4gICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gRlVOQ1RJT05fTkFNRV9JTklUSUFURV9XSVRIRFJBV0FMO1xuXG4gICAgLy8gRm9yIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvbnMsIGZ1bmN0aW9uIGFyZ3MgYXJlIGFscmVhZHkgcHJlc2VydmVkIGZyb20gdGhlIG9yaWdpbmFsIHR4LlxuICAgIC8vIEZvciBmcmVzaCBidWlsZHMsIGNvbnN0cnVjdCB0aGVtIGZyb20gdGhlIHdpdGhkcmF3IHBhcmFtcy5cbiAgICBpZiAoIXRoaXMuX2lzRGVzZXJpYWxpemVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbkFyZ3MgPSB0aGlzLndpdGhkcmF3UGFyYW1zVG9GdW5jdGlvbkFyZ3ModGhpcy5fd2l0aGRyYXdQYXJhbXMpO1xuICAgIH1cblxuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25Nb2RlID0gUG9zdENvbmRpdGlvbk1vZGUuRGVueTtcbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9ucyA9IHRoaXMud2l0aGRyYXdQYXJhbXNUb1Bvc3RDb25kaXRpb24odGhpcy5fd2l0aGRyYXdQYXJhbXMpO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHdpdGhkcmF3UGFyYW1zVG9GdW5jdGlvbkFyZ3MocGFyYW1zOiBTYnRjV2l0aGRyYXdQYXJhbXMpIHtcbiAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlQnRjQWRkcmVzcyhwYXJhbXMuYnRjQWRkcmVzcyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHVpbnRDVihwYXJhbXMuYW1vdW50KSxcbiAgICAgIHR1cGxlQ1Yoe1xuICAgICAgICB2ZXJzaW9uOiBidWZmZXJDVihCdWZmZXIuZnJvbShbZGVjb2RlZC52ZXJzaW9uXSkpLFxuICAgICAgICBoYXNoYnl0ZXM6IGJ1ZmZlckNWKGRlY29kZWQuaGFzaEJ5dGVzKSxcbiAgICAgIH0pLFxuICAgICAgdWludENWKHBhcmFtcy5tYXhGZWUpLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHdpdGhkcmF3UGFyYW1zVG9Qb3N0Q29uZGl0aW9uKHBhcmFtczogU2J0Y1dpdGhkcmF3UGFyYW1zKTogUG9zdENvbmRpdGlvbltdIHtcbiAgICBjb25zdCBhbW91bnQgPSBuZXcgQmlnTnVtKHBhcmFtcy5hbW91bnQpLmFkZChuZXcgQmlnTnVtKHBhcmFtcy5tYXhGZWUpKTtcbiAgICBjb25zdCBuZXR3b3JrID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yaztcbiAgICBjb25zdCBzYnRjQ29udHJhY3RBZGRyZXNzID0gbmV0d29yay5zYnRjV2l0aGRyYXdhbENvbnRyYWN0QWRkcmVzcztcblxuICAgIHJldHVybiBbXG4gICAgICBtYWtlU3RhbmRhcmRGdW5naWJsZVBvc3RDb25kaXRpb24oXG4gICAgICAgIGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cyhcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cyxcbiAgICAgICAgICB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVFxuICAgICAgICAgICAgPyBBZGRyZXNzVmVyc2lvbi5NYWlubmV0TXVsdGlTaWdcbiAgICAgICAgICAgIDogQWRkcmVzc1ZlcnNpb24uVGVzdG5ldE11bHRpU2lnLFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aCA+IDEgPyBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJTSCA6IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlBLSCxcbiAgICAgICAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzXG4gICAgICAgICkuYWRkcmVzcyxcbiAgICAgICAgRnVuZ2libGVDb25kaXRpb25Db2RlLkVxdWFsLFxuICAgICAgICBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgY3JlYXRlQXNzZXRJbmZvKHNidGNDb250cmFjdEFkZHJlc3MsIFNCVENfVE9LRU5fQ09OVFJBQ1RfTkFNRSwgU0JUQ19UT0tFTl9BU1NFVF9OQU1FKVxuICAgICAgKSxcbiAgICBdO1xuICB9XG59XG4iXX0=
@@ -16,30 +16,30 @@ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder
16
16
  super(_coinConfig);
17
17
  this._sendParams = [];
18
18
  this.sendParamsToFunctionArgs = (sendParams) => [
19
- transactions_1.listCV(sendParams.map((recipient) => transactions_1.tupleCV({
20
- to: transactions_1.standardPrincipalCV(recipient.address),
21
- ustx: transactions_1.uintCV(recipient.amount),
22
- memo: transactions_1.bufferCVFromString(recipient.memo || ''),
19
+ (0, transactions_1.listCV)(sendParams.map((recipient) => (0, transactions_1.tupleCV)({
20
+ to: (0, transactions_1.standardPrincipalCV)(recipient.address),
21
+ ustx: (0, transactions_1.uintCV)(recipient.amount),
22
+ memo: (0, transactions_1.bufferCVFromString)(recipient.memo || ''),
23
23
  }))),
24
24
  ];
25
25
  }
26
26
  static isValidContractCall(coinConfig, payload) {
27
27
  return (coinConfig.network.sendmanymemoContractAddress ===
28
- transactions_1.addressToString(payload.contractAddress) &&
28
+ (0, transactions_1.addressToString)(payload.contractAddress) &&
29
29
  constants_1.CONTRACT_NAME_SENDMANY === payload.contractName.content &&
30
30
  constants_1.FUNCTION_NAME_SENDMANY === payload.functionName.content);
31
31
  }
32
32
  sendParamsToPostcondition(sendParams) {
33
33
  const sum = sendParams.reduce((current, next) => current.add(new bn_js_1.default(next.amount)), new bn_js_1.default(0));
34
34
  return [
35
- transactions_1.makeStandardSTXPostCondition(utils_1.getSTXAddressFromPubKeys(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
35
+ (0, transactions_1.makeStandardSTXPostCondition)((0, utils_1.getSTXAddressFromPubKeys)(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
36
36
  ? transactions_1.AddressVersion.MainnetMultiSig
37
- : transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, sum),
37
+ : transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, sum.toString()),
38
38
  ];
39
39
  }
40
40
  initBuilder(tx) {
41
41
  super.initBuilder(tx);
42
- this._sendParams = utils_1.functionArgsToSendParams(tx.stxTransaction.payload.functionArgs);
42
+ this._sendParams = (0, utils_1.functionArgsToSendParams)(tx.stxTransaction.payload.functionArgs);
43
43
  }
44
44
  /**
45
45
  * Set a transfer
@@ -48,13 +48,13 @@ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder
48
48
  * @returns {TransactionBuilder} This transaction builder
49
49
  */
50
50
  send({ address, amount, memo }) {
51
- if (!address || !utils_1.isValidAddress(address)) {
51
+ if (!address || !(0, utils_1.isValidAddress)(address)) {
52
52
  throw new sdk_core_1.BuildTransactionError('Invalid or missing address, got: ' + address);
53
53
  }
54
- if (!amount || !utils_1.isValidAmount(amount)) {
54
+ if (!amount || !(0, utils_1.isValidAmount)(amount)) {
55
55
  throw new sdk_core_1.BuildTransactionError('Invalid or missing amount, got: ' + amount);
56
56
  }
57
- if (!!memo && !utils_1.isValidMemo(memo)) {
57
+ if (!!memo && !(0, utils_1.isValidMemo)(memo)) {
58
58
  throw new sdk_core_1.BuildTransactionError('Invalid memo, got: ' + memo);
59
59
  }
60
60
  this._sendParams.push({ address, amount, memo });
@@ -72,4 +72,4 @@ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder
72
72
  }
73
73
  }
74
74
  exports.SendmanyBuilder = SendmanyBuilder;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZG1hbnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZW5kbWFueUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaURBQStHO0FBQy9HLGtEQUEyQjtBQUMzQix1REFjOEI7QUFDOUIsbURBQTZEO0FBRTdELG1DQU1pQjtBQUVqQiwyQ0FBNkU7QUFFN0UsdUVBQW9FO0FBRXBFLE1BQWEsZUFBZ0IsU0FBUSxpREFBdUI7SUFHMUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFlL0IsNkJBQXdCLEdBQUcsQ0FBQyxVQUF3QixFQUFrQixFQUFFLENBQUM7WUFDL0UscUJBQU0sQ0FDSixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FDM0Isc0JBQU8sQ0FBQztnQkFDTixFQUFFLEVBQUUsa0NBQW1CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDMUMsSUFBSSxFQUFFLHFCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsSUFBSSxFQUFFLGlDQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQy9DLENBQUMsQ0FDSCxDQUNGO1NBQ0YsQ0FBQztJQXJCRixDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQWdDLEVBQUUsT0FBNEI7UUFDOUYsT0FBTyxDQUNKLFVBQVUsQ0FBQyxPQUE4QixDQUFDLDJCQUEyQjtZQUNwRSw4QkFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDMUMsa0NBQXNCLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3ZELGtDQUFzQixLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQWNPLHlCQUF5QixDQUFDLFVBQXdCO1FBQ3hELE1BQU0sR0FBRyxHQUFXLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsT0FBTztZQUNMLDJDQUE0QixDQUMxQixnQ0FBd0IsQ0FDdEIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHFCQUFXLENBQUMsT0FBTztnQkFDbkQsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZTtnQkFDaEMsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZSxFQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyw4QkFBZSxDQUFDLGNBQWMsRUFDN0YsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDLE9BQU8sRUFDVCxvQ0FBcUIsQ0FBQyxLQUFLLEVBQzNCLEdBQUcsQ0FDSjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLGdDQUF3QixDQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBK0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBYztRQUN4QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsbUNBQW1DLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDaEY7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMscUJBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsa0NBQWtDLEdBQUcsTUFBTSxDQUFDLENBQUM7U0FDOUU7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBOEIsQ0FBQywyQkFBMkIsQ0FBQztRQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLGtDQUFzQixDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsa0NBQXNCLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBaUIsQ0FBQyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFsRkQsMENBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc1RvU3RyaW5nLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgYnVmZmVyQ1ZGcm9tU3RyaW5nLFxuICBDbGFyaXR5VmFsdWUsXG4gIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZSxcbiAgbGlzdENWLFxuICBtYWtlU3RhbmRhcmRTVFhQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uTW9kZSxcbiAgc3RhbmRhcmRQcmluY2lwYWxDVixcbiAgdHVwbGVDVixcbiAgdWludENWLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgZnVuY3Rpb25BcmdzVG9TZW5kUGFyYW1zLFxuICBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkQW1vdW50LFxuICBpc1ZhbGlkTWVtbyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTZW5kUGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZLCBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29udHJhY3RDYWxsUGF5bG9hZCB9IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zL2Rpc3QvcGF5bG9hZCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgU2VuZG1hbnlCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBwcml2YXRlIF9zZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDb250cmFjdENhbGwoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHBheWxvYWQ6IENvbnRyYWN0Q2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKGNvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcyA9PT1cbiAgICAgICAgYWRkcmVzc1RvU3RyaW5nKHBheWxvYWQuY29udHJhY3RBZGRyZXNzKSAmJlxuICAgICAgQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5jb250cmFjdE5hbWUuY29udGVudCAmJlxuICAgICAgRlVOQ1RJT05fTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5mdW5jdGlvbk5hbWUuY29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNlbmRQYXJhbXNUb0Z1bmN0aW9uQXJncyA9IChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10pOiBDbGFyaXR5VmFsdWVbXSA9PiBbXG4gICAgbGlzdENWKFxuICAgICAgc2VuZFBhcmFtcy5tYXAoKHJlY2lwaWVudCkgPT5cbiAgICAgICAgdHVwbGVDVih7XG4gICAgICAgICAgdG86IHN0YW5kYXJkUHJpbmNpcGFsQ1YocmVjaXBpZW50LmFkZHJlc3MpLFxuICAgICAgICAgIHVzdHg6IHVpbnRDVihyZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICBtZW1vOiBidWZmZXJDVkZyb21TdHJpbmcocmVjaXBpZW50Lm1lbW8gfHwgJycpLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICksXG4gIF07XG5cbiAgcHJpdmF0ZSBzZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHNlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgY29uc3Qgc3VtOiBCaWdOdW0gPSBzZW5kUGFyYW1zLnJlZHVjZSgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudC5hZGQobmV3IEJpZ051bShuZXh0LmFtb3VudCkpLCBuZXcgQmlnTnVtKDApKTtcbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVN0YW5kYXJkU1RYUG9zdENvbmRpdGlvbihcbiAgICAgICAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzKFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLFxuICAgICAgICAgIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICAgICAgICA/IEFkZHJlc3NWZXJzaW9uLk1haW5uZXRNdWx0aVNpZ1xuICAgICAgICAgICAgOiBBZGRyZXNzVmVyc2lvbi5UZXN0bmV0TXVsdGlTaWcsXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID4gMSA/IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlNIIDogQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyUEtILFxuICAgICAgICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXNcbiAgICAgICAgKS5hZGRyZXNzLFxuICAgICAgICBGdW5naWJsZUNvbmRpdGlvbkNvZGUuRXF1YWwsXG4gICAgICAgIHN1bVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuX3NlbmRQYXJhbXMgPSBmdW5jdGlvbkFyZ3NUb1NlbmRQYXJhbXMoKHR4LnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZCkuZnVuY3Rpb25BcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IGEgdHJhbnNmZXJcbiAgICpcbiAgICogQHBhcmFtIHtTZW5kUGFyYW1zfSBzZW5kUGFyYW1zIC0gdGhlIHNlbmRlciBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZCh7IGFkZHJlc3MsIGFtb3VudCwgbWVtbyB9OiBTZW5kUGFyYW1zKTogdGhpcyB7XG4gICAgaWYgKCFhZGRyZXNzIHx8ICFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFkZHJlc3MsIGdvdDogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIWFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50LCBnb3Q6ICcgKyBhbW91bnQpO1xuICAgIH1cbiAgICBpZiAoISFtZW1vICYmICFpc1ZhbGlkTWVtbyhtZW1vKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBtZW1vLCBnb3Q6ICcgKyBtZW1vKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZW5kUGFyYW1zLnB1c2goeyBhZGRyZXNzLCBhbW91bnQsIG1lbW8gfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9ICh0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrKS5zZW5kbWFueW1lbW9Db250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fY29udHJhY3ROYW1lID0gQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWTtcbiAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZO1xuICAgIHRoaXMuX2Z1bmN0aW9uQXJncyA9IHRoaXMuc2VuZFBhcmFtc1RvRnVuY3Rpb25BcmdzKHRoaXMuX3NlbmRQYXJhbXMpO1xuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25Nb2RlID0gUG9zdENvbmRpdGlvbk1vZGUuRGVueTtcbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9ucyA9IHRoaXMuc2VuZFBhcmFtc1RvUG9zdGNvbmRpdGlvbih0aGlzLl9zZW5kUGFyYW1zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZG1hbnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZW5kbWFueUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaURBQStHO0FBQy9HLGtEQUEyQjtBQUMzQix1REFjOEI7QUFDOUIsbURBQTZEO0FBRTdELG1DQU1pQjtBQUVqQiwyQ0FBNkU7QUFFN0UsdUVBQW9FO0FBRXBFLE1BQWEsZUFBZ0IsU0FBUSxpREFBdUI7SUFHMUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFlL0IsNkJBQXdCLEdBQUcsQ0FBQyxVQUF3QixFQUFrQixFQUFFLENBQUM7WUFDL0UsSUFBQSxxQkFBTSxFQUNKLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUMzQixJQUFBLHNCQUFPLEVBQUM7Z0JBQ04sRUFBRSxFQUFFLElBQUEsa0NBQW1CLEVBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDMUMsSUFBSSxFQUFFLElBQUEscUJBQU0sRUFBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM5QixJQUFJLEVBQUUsSUFBQSxpQ0FBa0IsRUFBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzthQUMvQyxDQUFDLENBQ0gsQ0FDRjtTQUNGLENBQUM7SUFyQkYsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFnQyxFQUFFLE9BQTRCO1FBQzlGLE9BQU8sQ0FDSixVQUFVLENBQUMsT0FBOEIsQ0FBQywyQkFBMkI7WUFDcEUsSUFBQSw4QkFBZSxFQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDMUMsa0NBQXNCLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ3ZELGtDQUFzQixLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN4RCxDQUFDO0lB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a0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc1RvU3RyaW5nLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgYnVmZmVyQ1ZGcm9tU3RyaW5nLFxuICBDbGFyaXR5VmFsdWUsXG4gIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZSxcbiAgbGlzdENWLFxuICBtYWtlU3RhbmRhcmRTVFhQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uTW9kZSxcbiAgc3RhbmRhcmRQcmluY2lwYWxDVixcbiAgdHVwbGVDVixcbiAgdWludENWLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgZnVuY3Rpb25BcmdzVG9TZW5kUGFyYW1zLFxuICBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMsXG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkQW1vdW50LFxuICBpc1ZhbGlkTWVtbyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTZW5kUGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZLCBGVU5DVElPTl9OQU1FX1NFTkRNQU5ZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29udHJhY3RDYWxsUGF5bG9hZCB9IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zL2Rpc3QvcGF5bG9hZCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgU2VuZG1hbnlCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBwcml2YXRlIF9zZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDb250cmFjdENhbGwoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHBheWxvYWQ6IENvbnRyYWN0Q2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKGNvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcyA9PT1cbiAgICAgICAgYWRkcmVzc1RvU3RyaW5nKHBheWxvYWQuY29udHJhY3RBZGRyZXNzKSAmJlxuICAgICAgQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5jb250cmFjdE5hbWUuY29udGVudCAmJlxuICAgICAgRlVOQ1RJT05fTkFNRV9TRU5ETUFOWSA9PT0gcGF5bG9hZC5mdW5jdGlvbk5hbWUuY29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNlbmRQYXJhbXNUb0Z1bmN0aW9uQXJncyA9IChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10pOiBDbGFyaXR5VmFsdWVbXSA9PiBbXG4gICAgbGlzdENWKFxuICAgICAgc2VuZFBhcmFtcy5tYXAoKHJlY2lwaWVudCkgPT5cbiAgICAgICAgdHVwbGVDVih7XG4gICAgICAgICAgdG86IHN0YW5kYXJkUHJpbmNpcGFsQ1YocmVjaXBpZW50LmFkZHJlc3MpLFxuICAgICAgICAgIHVzdHg6IHVpbnRDVihyZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICBtZW1vOiBidWZmZXJDVkZyb21TdHJpbmcocmVjaXBpZW50Lm1lbW8gfHwgJycpLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICksXG4gIF07XG5cbiAgcHJpdmF0ZSBzZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHNlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgY29uc3Qgc3VtOiBCaWdOdW0gPSBzZW5kUGFyYW1zLnJlZHVjZSgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudC5hZGQobmV3IEJpZ051bShuZXh0LmFtb3VudCkpLCBuZXcgQmlnTnVtKDApKTtcbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVN0YW5kYXJkU1RYUG9zdENvbmRpdGlvbihcbiAgICAgICAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzKFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLFxuICAgICAgICAgIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICAgICAgICA/IEFkZHJlc3NWZXJzaW9uLk1haW5uZXRNdWx0aVNpZ1xuICAgICAgICAgICAgOiBBZGRyZXNzVmVyc2lvbi5UZXN0bmV0TXVsdGlTaWcsXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID4gMSA/IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlNIIDogQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyUEtILFxuICAgICAgICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXNcbiAgICAgICAgKS5hZGRyZXNzLFxuICAgICAgICBGdW5naWJsZUNvbmRpdGlvbkNvZGUuRXF1YWwsXG4gICAgICAgIHN1bS50b1N0cmluZygpXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5fc2VuZFBhcmFtcyA9IGZ1bmN0aW9uQXJnc1RvU2VuZFBhcmFtcygodHguc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkKS5mdW5jdGlvbkFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgYSB0cmFuc2ZlclxuICAgKlxuICAgKiBAcGFyYW0ge1NlbmRQYXJhbXN9IHNlbmRQYXJhbXMgLSB0aGUgc2VuZGVyIGFkZHJlc3NcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZW5kKHsgYWRkcmVzcywgYW1vdW50LCBtZW1vIH06IFNlbmRQYXJhbXMpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MgfHwgIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYWRkcmVzcywgZ290OiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICghYW1vdW50IHx8ICFpc1ZhbGlkQW1vdW50KGFtb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQsIGdvdDogJyArIGFtb3VudCk7XG4gICAgfVxuICAgIGlmICghIW1lbW8gJiYgIWlzVmFsaWRNZW1vKG1lbW8pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG1lbW8sIGdvdDogJyArIG1lbW8pO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbmRQYXJhbXMucHVzaCh7IGFkZHJlc3MsIGFtb3VudCwgbWVtbyB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gKHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcztcbiAgICB0aGlzLl9jb250cmFjdE5hbWUgPSBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZO1xuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IEZVTkNUSU9OX05BTUVfU0VORE1BTlk7XG4gICAgdGhpcy5fZnVuY3Rpb25BcmdzID0gdGhpcy5zZW5kUGFyYW1zVG9GdW5jdGlvbkFyZ3ModGhpcy5fc2VuZFBhcmFtcyk7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbk1vZGUgPSBQb3N0Q29uZGl0aW9uTW9kZS5EZW55O1xuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25zID0gdGhpcy5zZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHRoaXMuX3NlbmRQYXJhbXMpO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,OAAO,EACP,eAAe,EAKf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAmD,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAoB;IAC3C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxG,IAAI,SAAS,IAAI,MAAM,EAAE,CAexB;IAED,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAchB,OAAO,CAAC,cAAc;IA+BtB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB,iBAAiB,IAAI,MAAM;IAO3B,IAAI,cAAc,IAAI,iBAAiB,CAEtC;IAED,IAAI,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAEtC;IAED,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,oBAAoB,IAAI,IAAI;CA8C7B"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAeL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EACL,OAAO,EACP,eAAe,EAKf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,aAAa,EAAmD,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAoB;IAC3C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxG,IAAI,SAAS,IAAI,MAAM,EAAE,CAexB;IAED,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAchB,OAAO,CAAC,cAAc;IA+BtB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB,iBAAiB,IAAI,MAAM;IAO3B,IAAI,cAAc,IAAI,iBAAiB,CAEtC;IAED,IAAI,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAEtC;IAED,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,oBAAoB,IAAI,IAAI;CA6D7B"}