@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.
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +25 -9
- package/dist/src/lib/abstractContractBuilder.js +4 -4
- package/dist/src/lib/btcAddressUtils.d.ts +30 -0
- package/dist/src/lib/btcAddressUtils.d.ts.map +1 -0
- package/dist/src/lib/btcAddressUtils.js +134 -0
- package/dist/src/lib/constants.d.ts +16 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +30 -3
- package/dist/src/lib/contractBuilder.d.ts.map +1 -1
- package/dist/src/lib/contractBuilder.js +44 -12
- package/dist/src/lib/fungibleTokenTransferBuilder.d.ts +62 -0
- package/dist/src/lib/fungibleTokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/fungibleTokenTransferBuilder.js +131 -0
- package/dist/src/lib/iface.d.ts +61 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +5 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +28 -9
- package/dist/src/lib/keyPair.js +18 -19
- package/dist/src/lib/network.d.ts +16 -0
- package/dist/src/lib/network.d.ts.map +1 -0
- package/dist/src/lib/network.js +29 -0
- package/dist/src/lib/pox5Builder.d.ts +78 -0
- package/dist/src/lib/pox5Builder.d.ts.map +1 -0
- package/dist/src/lib/pox5Builder.js +148 -0
- package/dist/src/lib/sbtcWithdrawBuilder.d.ts +38 -0
- package/dist/src/lib/sbtcWithdrawBuilder.d.ts.map +1 -0
- package/dist/src/lib/sbtcWithdrawBuilder.js +150 -0
- package/dist/src/lib/sendmanyBuilder.js +12 -12
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +31 -15
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +16 -17
- package/dist/src/lib/transactionBuilderFactory.d.ts +6 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +23 -2
- package/dist/src/lib/transferBuilder.js +7 -7
- package/dist/src/lib/utils.d.ts +45 -3
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +199 -64
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +7 -1
- package/dist/src/sip10Token.d.ts +22 -0
- package/dist/src/sip10Token.d.ts.map +1 -0
- package/dist/src/sip10Token.js +130 -0
- package/dist/src/stx.d.ts +154 -2
- package/dist/src/stx.d.ts.map +1 -1
- package/dist/src/stx.js +489 -11
- package/dist/src/tstx.js +1 -1
- package/dist/src/tstxsignet.d.ts +20 -0
- package/dist/src/tstxsignet.d.ts.map +1 -0
- package/dist/src/tstxsignet.js +36 -0
- package/dist/test/fixtures.d.ts +119 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +147 -0
- package/dist/test/unit/btcAddressUtils.d.ts +2 -0
- package/dist/test/unit/btcAddressUtils.d.ts.map +1 -0
- package/dist/test/unit/btcAddressUtils.js +82 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +144 -0
- package/dist/test/unit/network.d.ts +2 -0
- package/dist/test/unit/network.d.ts.map +1 -0
- package/dist/test/unit/network.js +50 -0
- package/dist/test/unit/resources.d.ts +97 -0
- package/dist/test/unit/resources.d.ts.map +1 -0
- package/dist/test/unit/resources.js +144 -0
- package/dist/test/unit/sip10Token.d.ts +2 -0
- package/dist/test/unit/sip10Token.d.ts.map +1 -0
- package/dist/test/unit/sip10Token.js +374 -0
- package/dist/test/unit/stx.d.ts +2 -0
- package/dist/test/unit/stx.d.ts.map +1 -0
- package/dist/test/unit/stx.js +624 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +83 -0
- package/dist/test/unit/transactionBuilder/contractBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/contractBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/contractBuilder.js +463 -0
- package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.js +191 -0
- package/dist/test/unit/transactionBuilder/pox5Builder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/pox5Builder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/pox5Builder.js +418 -0
- package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.js +306 -0
- package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/sendmanyBuilder.js +140 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +347 -0
- package/dist/test/unit/tstxsignet.d.ts +2 -0
- package/dist/test/unit/tstxsignet.d.ts.map +1 -0
- package/dist/test/unit/tstxsignet.js +60 -0
- package/dist/test/unit/util.d.ts +2 -0
- package/dist/test/unit/util.d.ts.map +1 -0
- package/dist/test/unit/util.js +340 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -12
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- 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,
|
|
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,
|
|
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"}
|