@bitgo-beta/sdk-coin-stx 1.1.1-beta.202 → 1.1.1-beta.2021
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 +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +24 -9
- package/dist/src/lib/abstractContractBuilder.js +2 -2
- 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 +4 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +8 -3
- package/dist/src/lib/contractBuilder.js +10 -10
- 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 +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +24 -9
- package/dist/src/lib/keyPair.js +18 -19
- package/dist/src/lib/sbtcWithdrawBuilder.d.ts +27 -0
- package/dist/src/lib/sbtcWithdrawBuilder.d.ts.map +1 -0
- package/dist/src/lib/sbtcWithdrawBuilder.js +124 -0
- package/dist/src/lib/sendmanyBuilder.js +11 -11
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +31 -15
- package/dist/src/lib/transactionBuilder.js +12 -12
- package/dist/src/lib/transactionBuilderFactory.d.ts +4 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +16 -2
- package/dist/src/lib/transferBuilder.js +4 -4
- package/dist/src/lib/utils.d.ts +40 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +171 -63
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/sip10Token.d.ts +22 -0
- package/dist/src/sip10Token.d.ts.map +1 -0
- package/dist/src/sip10Token.js +128 -0
- package/dist/src/stx.d.ts +146 -2
- package/dist/src/stx.d.ts.map +1 -1
- package/dist/src/stx.js +420 -11
- package/dist/src/tstx.js +1 -1
- 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/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 +470 -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 +421 -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 +187 -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/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 -107
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FungibleTokenTransferBuilder = void 0;
|
|
7
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const transactions_1 = require("@stacks/transactions");
|
|
10
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
11
|
+
const abstractContractBuilder_1 = require("./abstractContractBuilder");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
class FungibleTokenTransferBuilder extends abstractContractBuilder_1.AbstractContractBuilder {
|
|
15
|
+
constructor(_coinConfig) {
|
|
16
|
+
super(_coinConfig);
|
|
17
|
+
}
|
|
18
|
+
initBuilder(tx) {
|
|
19
|
+
super.initBuilder(tx);
|
|
20
|
+
this._fungibleTokenTransferParams = (0, utils_1.functionArgsToTokenTransferParams)(tx.stxTransaction.payload.functionArgs);
|
|
21
|
+
this.contractAddress(this._contractAddress);
|
|
22
|
+
this.contractName(this._contractName);
|
|
23
|
+
this.functionName(this._functionName);
|
|
24
|
+
this.functionArgs(this._functionArgs);
|
|
25
|
+
}
|
|
26
|
+
/** @inheritdoc */
|
|
27
|
+
async buildImplementation() {
|
|
28
|
+
this._postConditionMode = transactions_1.PostConditionMode.Deny;
|
|
29
|
+
this._postConditions = this.tokenTransferParamsToPostCondition(this._fungibleTokenTransferParams);
|
|
30
|
+
await super.buildImplementation();
|
|
31
|
+
this.transaction.setTransactionType(sdk_core_1.TransactionType.Send);
|
|
32
|
+
return this.transaction;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Function to check if a transaction is a fungible token contract call
|
|
36
|
+
*
|
|
37
|
+
* @param {ContractCallPayload} payload
|
|
38
|
+
* @returns {Boolean}
|
|
39
|
+
*/
|
|
40
|
+
static isFungibleTokenTransferContractCall(payload) {
|
|
41
|
+
return constants_1.FUNCTION_NAME_TRANSFER === payload.functionName.content;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Set the token name
|
|
45
|
+
*
|
|
46
|
+
* @param {String} tokenName name of the token (@define-fungible-token value)
|
|
47
|
+
* @returns {FungibleTokenTransferBuilder} This token transfer builder
|
|
48
|
+
*/
|
|
49
|
+
tokenName(tokenName) {
|
|
50
|
+
this._tokenName = tokenName;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate contract address
|
|
55
|
+
*
|
|
56
|
+
* @param {String} address contract address
|
|
57
|
+
* @returns {FungibleTokenTransferBuilder} This token transfer builder
|
|
58
|
+
*/
|
|
59
|
+
contractAddress(address) {
|
|
60
|
+
if (!(0, utils_1.isValidAddress)(address)) {
|
|
61
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid address');
|
|
62
|
+
}
|
|
63
|
+
this._contractAddress = address;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Validate contract name
|
|
68
|
+
*
|
|
69
|
+
* @param {String} name contract name
|
|
70
|
+
* @returns {FungibleTokenTransferBuilder} This token transfer builder
|
|
71
|
+
*/
|
|
72
|
+
contractName(name) {
|
|
73
|
+
if (name.length === 0) {
|
|
74
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid name');
|
|
75
|
+
}
|
|
76
|
+
this._contractName = name;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validate function name
|
|
81
|
+
*
|
|
82
|
+
* @param {String} name function name
|
|
83
|
+
* @returns {FungibleTokenTransferBuilder} This token transfer builder
|
|
84
|
+
*/
|
|
85
|
+
functionName(name) {
|
|
86
|
+
if (name.length === 0) {
|
|
87
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid name');
|
|
88
|
+
}
|
|
89
|
+
if (!(0, utils_1.isValidContractFunctionName)(name)) {
|
|
90
|
+
throw new sdk_core_1.InvalidParameterValueError(`${name} is not supported contract function name`);
|
|
91
|
+
}
|
|
92
|
+
this._functionName = name;
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validate function arguments
|
|
97
|
+
*
|
|
98
|
+
* @param {ClarityValue[]} args array of clarity value as arguments
|
|
99
|
+
* @returns {FungibleTokenTransferBuilder} This token transfer builder
|
|
100
|
+
*/
|
|
101
|
+
functionArgs(args) {
|
|
102
|
+
if (args.length < 3) {
|
|
103
|
+
throw new sdk_core_1.InvalidParameterValueError('Invalid number of arguments');
|
|
104
|
+
}
|
|
105
|
+
this._functionArgs = args;
|
|
106
|
+
this._fungibleTokenTransferParams = (0, utils_1.functionArgsToTokenTransferParams)(this._functionArgs);
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Function to convert token transfer params to post condition
|
|
111
|
+
*
|
|
112
|
+
* @param {TokenTransferParams} tokenTransferParams
|
|
113
|
+
* @returns {PostCondition[]} returns stx fungible post condition
|
|
114
|
+
*/
|
|
115
|
+
tokenTransferParamsToPostCondition(tokenTransferParams) {
|
|
116
|
+
if (!this._tokenName) {
|
|
117
|
+
const contractTokenName = (0, utils_1.findContractTokenNameUsingContract)(this._contractAddress, this._contractName);
|
|
118
|
+
if (contractTokenName) {
|
|
119
|
+
this.tokenName(contractTokenName);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const amount = new bn_js_1.default(tokenTransferParams.amount);
|
|
123
|
+
return [
|
|
124
|
+
(0, transactions_1.makeStandardFungiblePostCondition)((0, utils_1.getSTXAddressFromPubKeys)(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
|
|
125
|
+
? transactions_1.AddressVersion.MainnetMultiSig
|
|
126
|
+
: transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, amount, `${this._contractAddress}.${this._contractName}::${this._tokenName}`),
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.FungibleTokenTransferBuilder = FungibleTokenTransferBuilder;
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBMEU7QUFDMUUsbURBQW1GO0FBQ25GLHVEQVM4QjtBQUM5QixrREFBMkI7QUFFM0IsdUVBQW9FO0FBRXBFLG1DQU1pQjtBQUVqQiwyQ0FBcUQ7QUFFckQsTUFBYSw0QkFBNkIsU0FBUSxpREFBdUI7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUEseUNBQWlDLEVBQ2xFLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBK0IsQ0FBQyxZQUFZLENBQ2hFLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBaUIsQ0FBQyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDbEcsTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVB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LENBQUMsZUFBZTtnQkFDaEMsQ0FBQyxDQUFDLDZCQUFjLENBQUMsZUFBZSxFQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyw4QkFBZSxDQUFDLGNBQWMsRUFDN0YsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDLE9BQU8sRUFDVCxvQ0FBcUIsQ0FBQyxLQUFLLEVBQzNCLE1BQU0sRUFDTixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDckU7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMUlELG9FQTBJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQWRkcmVzc0hhc2hNb2RlLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgQ2xhcml0eVZhbHVlLFxuICBDb250cmFjdENhbGxQYXlsb2FkLFxuICBGdW5naWJsZUNvbmRpdGlvbkNvZGUsXG4gIG1ha2VTdGFuZGFyZEZ1bmdpYmxlUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCBCaWdOdW0gZnJvbSAnYm4uanMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciB9IGZyb20gJy4vYWJzdHJhY3RDb250cmFjdEJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7XG4gIGZpbmRDb250cmFjdFRva2VuTmFtZVVzaW5nQ29udHJhY3QsXG4gIGZ1bmN0aW9uQXJnc1RvVG9rZW5UcmFuc2ZlclBhcmFtcyxcbiAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzLFxuICBpc1ZhbGlkQWRkcmVzcyxcbiAgaXNWYWxpZENvbnRyYWN0RnVuY3Rpb25OYW1lLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRva2VuVHJhbnNmZXJQYXJhbXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEZVTkNUSU9OX05BTUVfVFJBTlNGRVIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBGdW5naWJsZVRva2VuVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBwcml2YXRlIF9mdW5naWJsZVRva2VuVHJhbnNmZXJQYXJhbXM6IFRva2VuVHJhbnNmZXJQYXJhbXM7XG4gIHByaXZhdGUgX3Rva2VuTmFtZTogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5fZnVuZ2libGVUb2tlblRyYW5zZmVyUGFyYW1zID0gZnVuY3Rpb25BcmdzVG9Ub2tlblRyYW5zZmVyUGFyYW1zKFxuICAgICAgKHR4LnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZCkuZnVuY3Rpb25BcmdzXG4gICAgKTtcbiAgICB0aGlzLmNvbnRyYWN0QWRkcmVzcyh0aGlzLl9jb250cmFjdEFkZHJlc3MpO1xuICAgIHRoaXMuY29udHJhY3ROYW1lKHRoaXMuX2NvbnRyYWN0TmFtZSk7XG4gICAgdGhpcy5mdW5jdGlvbk5hbWUodGhpcy5fZnVuY3Rpb25OYW1lKTtcbiAgICB0aGlzLmZ1bmN0aW9uQXJncyh0aGlzLl9mdW5jdGlvbkFyZ3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9uTW9kZSA9IFBvc3RDb25kaXRpb25Nb2RlLkRlbnk7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbnMgPSB0aGlzLnRva2VuVHJhbnNmZXJQYXJhbXNUb1Bvc3RDb25kaXRpb24odGhpcy5fZnVuZ2libGVUb2tlblRyYW5zZmVyUGFyYW1zKTtcbiAgICBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgdHJhbnNhY3Rpb24gaXMgYSBmdW5naWJsZSB0b2tlbiBjb250cmFjdCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7Q29udHJhY3RDYWxsUGF5bG9hZH0gcGF5bG9hZFxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNGdW5naWJsZVRva2VuVHJhbnNmZXJDb250cmFjdENhbGwocGF5bG9hZDogQ29udHJhY3RDYWxsUGF5bG9hZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGVU5DVElPTl9OQU1FX1RSQU5TRkVSID09PSBwYXlsb2FkLmZ1bmN0aW9uTmFtZS5jb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdG9rZW4gbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gdG9rZW5OYW1lIG5hbWUgb2YgdGhlIHRva2VuIChAZGVmaW5lLWZ1bmdpYmxlLXRva2VuIHZhbHVlKVxuICAgKiBAcmV0dXJucyB7RnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlcn0gVGhpcyB0b2tlbiB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICB0b2tlbk5hbWUodG9rZW5OYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl90b2tlbk5hbWUgPSB0b2tlbk5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgY29udHJhY3QgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyBjb250cmFjdCBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtGdW5naWJsZVRva2VuVHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRva2VuIHRyYW5zZmVyIGJ1aWxkZXJcbiAgICovXG4gIGNvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdEFkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGNvbnRyYWN0IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgY29udHJhY3QgbmFtZVxuICAgKiBAcmV0dXJucyB7RnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlcn0gVGhpcyB0b2tlbiB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICBjb250cmFjdE5hbWUobmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKG5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgbmFtZScpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdE5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGZ1bmN0aW9uIG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgZnVuY3Rpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7RnVuZ2libGVUb2tlblRyYW5zZmVyQnVpbGRlcn0gVGhpcyB0b2tlbiB0cmFuc2ZlciBidWlsZGVyXG4gICAqL1xuICBmdW5jdGlvbk5hbWUobmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKG5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgbmFtZScpO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRDb250cmFjdEZ1bmN0aW9uTmFtZShuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKGAke25hbWV9IGlzIG5vdCBzdXBwb3J0ZWQgY29udHJhY3QgZnVuY3Rpb24gbmFtZWApO1xuICAgIH1cbiAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGZ1bmN0aW9uIGFyZ3VtZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge0NsYXJpdHlWYWx1ZVtdfSBhcmdzIGFycmF5IG9mIGNsYXJpdHkgdmFsdWUgYXMgYXJndW1lbnRzXG4gICAqIEByZXR1cm5zIHtGdW5naWJsZVRva2VuVHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRva2VuIHRyYW5zZmVyIGJ1aWxkZXJcbiAgICovXG4gIGZ1bmN0aW9uQXJncyhhcmdzOiBDbGFyaXR5VmFsdWVbXSk6IHRoaXMge1xuICAgIGlmIChhcmdzLmxlbmd0aCA8IDMpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzJyk7XG4gICAgfVxuICAgIHRoaXMuX2Z1bmN0aW9uQXJncyA9IGFyZ3M7XG4gICAgdGhpcy5fZnVuZ2libGVUb2tlblRyYW5zZmVyUGFyYW1zID0gZnVuY3Rpb25BcmdzVG9Ub2tlblRyYW5zZmVyUGFyYW1zKHRoaXMuX2Z1bmN0aW9uQXJncyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gY29udmVydCB0b2tlbiB0cmFuc2ZlciBwYXJhbXMgdG8gcG9zdCBjb25kaXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtUb2tlblRyYW5zZmVyUGFyYW1zfSB0b2tlblRyYW5zZmVyUGFyYW1zXG4gICAqIEByZXR1cm5zIHtQb3N0Q29uZGl0aW9uW119IHJldHVybnMgc3R4IGZ1bmdpYmxlIHBvc3QgY29uZGl0aW9uXG4gICAqL1xuICBwcml2YXRlIHRva2VuVHJhbnNmZXJQYXJhbXNUb1Bvc3RDb25kaXRpb24odG9rZW5UcmFuc2ZlclBhcmFtczogVG9rZW5UcmFuc2ZlclBhcmFtcyk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgaWYgKCF0aGlzLl90b2tlbk5hbWUpIHtcbiAgICAgIGNvbnN0IGNvbnRyYWN0VG9rZW5OYW1lID0gZmluZENvbnRyYWN0VG9rZW5OYW1lVXNpbmdDb250cmFjdCh0aGlzLl9jb250cmFjdEFkZHJlc3MsIHRoaXMuX2NvbnRyYWN0TmFtZSk7XG4gICAgICBpZiAoY29udHJhY3RUb2tlbk5hbWUpIHtcbiAgICAgICAgdGhpcy50b2tlbk5hbWUoY29udHJhY3RUb2tlbk5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBhbW91bnQ6IEJpZ051bSA9IG5ldyBCaWdOdW0odG9rZW5UcmFuc2ZlclBhcmFtcy5hbW91bnQpO1xuICAgIHJldHVybiBbXG4gICAgICBtYWtlU3RhbmRhcmRGdW5naWJsZVBvc3RDb25kaXRpb24oXG4gICAgICAgIGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cyhcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cyxcbiAgICAgICAgICB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVFxuICAgICAgICAgICAgPyBBZGRyZXNzVmVyc2lvbi5NYWlubmV0TXVsdGlTaWdcbiAgICAgICAgICAgIDogQWRkcmVzc1ZlcnNpb24uVGVzdG5ldE11bHRpU2lnLFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aCA+IDEgPyBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJTSCA6IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlBLSCxcbiAgICAgICAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzXG4gICAgICAgICkuYWRkcmVzcyxcbiAgICAgICAgRnVuZ2libGVDb25kaXRpb25Db2RlLkVxdWFsLFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIGAke3RoaXMuX2NvbnRyYWN0QWRkcmVzc30uJHt0aGlzLl9jb250cmFjdE5hbWV9Ojoke3RoaXMuX3Rva2VuTmFtZX1gXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/lib/iface.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ClarityValue, PayloadType } from '@stacks/transactions';
|
|
2
|
+
import { TransactionExplanation as BaseTransactionExplanation } from '@bitgo-beta/sdk-core';
|
|
2
3
|
export interface TxData {
|
|
3
4
|
id: string;
|
|
4
5
|
from: string;
|
|
@@ -45,4 +46,64 @@ export interface SendParams {
|
|
|
45
46
|
amount: string;
|
|
46
47
|
memo?: string;
|
|
47
48
|
}
|
|
49
|
+
export interface TokenTransferParams {
|
|
50
|
+
sender: string;
|
|
51
|
+
recipient: string;
|
|
52
|
+
amount: string;
|
|
53
|
+
memo?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface TokenBalanceData {
|
|
56
|
+
balance: string;
|
|
57
|
+
total_sent: string;
|
|
58
|
+
total_received: string;
|
|
59
|
+
}
|
|
60
|
+
export interface NativeStxBalance {
|
|
61
|
+
balance: string;
|
|
62
|
+
total_miner_rewards_received: string;
|
|
63
|
+
lock_tx_id: string;
|
|
64
|
+
locked: string;
|
|
65
|
+
lock_height: number;
|
|
66
|
+
burnchain_lock_height: number;
|
|
67
|
+
burnchain_unlock_height: number;
|
|
68
|
+
}
|
|
69
|
+
export interface SingleFungibleTokenBalance {
|
|
70
|
+
balance: string;
|
|
71
|
+
}
|
|
72
|
+
export interface StxNonceResponse {
|
|
73
|
+
last_mempool_tx_nonce?: number;
|
|
74
|
+
last_executed_tx_nonce?: number;
|
|
75
|
+
possible_next_nonce: number;
|
|
76
|
+
detected_missing_nonces?: number[];
|
|
77
|
+
detected_mempool_nonces?: number[];
|
|
78
|
+
}
|
|
79
|
+
export interface StxTxnFeeEstimationResponse {
|
|
80
|
+
estimations: {
|
|
81
|
+
feeRate: number;
|
|
82
|
+
fee: number;
|
|
83
|
+
}[];
|
|
84
|
+
}
|
|
85
|
+
export interface RecoveryOptions {
|
|
86
|
+
backupKey: string;
|
|
87
|
+
userKey: string;
|
|
88
|
+
rootAddress: string;
|
|
89
|
+
recoveryDestination: string;
|
|
90
|
+
bitgoKey?: string;
|
|
91
|
+
walletPassphrase?: string;
|
|
92
|
+
contractId?: string;
|
|
93
|
+
}
|
|
94
|
+
export interface RecoveryInfo extends BaseTransactionExplanation {
|
|
95
|
+
txHex: string;
|
|
96
|
+
feeInfo?: {
|
|
97
|
+
fee: string;
|
|
98
|
+
};
|
|
99
|
+
coin?: string;
|
|
100
|
+
}
|
|
101
|
+
export interface RecoveryTransaction {
|
|
102
|
+
txHex: string;
|
|
103
|
+
}
|
|
104
|
+
export interface SbtcWithdrawParams {
|
|
105
|
+
amount: string;
|
|
106
|
+
btcAddress: string;
|
|
107
|
+
maxFee: string;
|
|
108
|
+
}
|
|
48
109
|
//# sourceMappingURL=iface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/iface.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBDbGFyaXR5VmFsdWUsIFBheWxvYWRUeXBlIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBUeERhdGEge1xuICBpZDogc3RyaW5nO1xuICBmcm9tOiBzdHJpbmc7XG4gIGZlZTogc3RyaW5nO1xuICBub25jZTogbnVtYmVyO1xuICBwYXlsb2FkOiBTdGFja3NUcmFuc2FjdGlvblBheWxvYWQgfCBTdGFja3NDb250cmFjdFBheWxvYWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hdHVyZURhdGEge1xuICB0eXBlOiBudW1iZXI7XG4gIGRhdGE6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2lnSGFzaDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrc1RyYW5zYWN0aW9uUGF5bG9hZCB7XG4gIHJlYWRvbmx5IHBheWxvYWRUeXBlOiBQYXlsb2FkVHlwZS5Ub2tlblRyYW5zZmVyO1xuICBtZW1vPzogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja3NDb250cmFjdFBheWxvYWQge1xuICByZWFkb25seSBwYXlsb2FkVHlwZTogUGF5bG9hZFR5cGUuQ29udHJhY3RDYWxsO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgY29udHJhY3ROYW1lOiBzdHJpbmc7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBmdW5jdGlvbkFyZ3M6IENsYXJpdHlWYWx1ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYXJpdHlWYWx1ZUpzb24ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbD86IGFueSB8IFR1cGxlRGF0YVtdIHwgQ2xhcml0eVZhbHVlSnNvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUdXBsZURhdGEgZXh0ZW5kcyBDbGFyaXR5VmFsdWVKc29uIHtcbiAga2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblJlc3BvbnNlIHtcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIHJlY2lkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkcmVzc0RldGFpbHMge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIG1lbW9JZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW5kUGFyYW1zIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2tlblRyYW5zZmVyUGFyYW1zIHtcbiAgc2VuZGVyOiBzdHJpbmc7XG4gIHJlY2lwaWVudDogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbkJhbGFuY2VEYXRhIHtcbiAgYmFsYW5jZTogc3RyaW5nO1xuICB0b3RhbF9zZW50OiBzdHJpbmc7XG4gIHRvdGFsX3JlY2VpdmVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlU3R4QmFsYW5jZSB7XG4gIGJhbGFuY2U6IHN0cmluZztcbiAgdG90YWxfbWluZXJfcmV3YXJkc19yZWNlaXZlZDogc3RyaW5nO1xuICBsb2NrX3R4X2lkOiBzdHJpbmc7XG4gIGxvY2tlZDogc3RyaW5nO1xuICBsb2NrX2hlaWdodDogbnVtYmVyO1xuICBidXJuY2hhaW5fbG9ja19oZWlnaHQ6IG51bWJlcjtcbiAgYnVybmNoYWluX3VubG9ja19oZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVGdW5naWJsZVRva2VuQmFsYW5jZSB7XG4gIGJhbGFuY2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHhOb25jZVJlc3BvbnNlIHtcbiAgbGFzdF9tZW1wb29sX3R4X25vbmNlPzogbnVtYmVyO1xuICBsYXN0X2V4ZWN1dGVkX3R4X25vbmNlPzogbnVtYmVyO1xuICBwb3NzaWJsZV9uZXh0X25vbmNlOiBudW1iZXI7XG4gIGRldGVjdGVkX21pc3Npbmdfbm9uY2VzPzogbnVtYmVyW107XG4gIGRldGVjdGVkX21lbXBvb2xfbm9uY2VzPzogbnVtYmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3R4VHhuRmVlRXN0aW1hdGlvblJlc3BvbnNlIHtcbiAgZXN0aW1hdGlvbnM6IHtcbiAgICBmZWVSYXRlOiBudW1iZXI7XG4gICAgZmVlOiBudW1iZXI7XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvdmVyeU9wdGlvbnMge1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgdXNlcktleTogc3RyaW5nO1xuICByb290QWRkcmVzczogc3RyaW5nO1xuICByZWNvdmVyeURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGJpdGdvS2V5Pzogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xuICBjb250cmFjdElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY292ZXJ5SW5mbyBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHhIZXg6IHN0cmluZztcbiAgZmVlSW5mbz86IHtcbiAgICBmZWU6IHN0cmluZztcbiAgfTtcbiAgY29pbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvdmVyeVRyYW5zYWN0aW9uIHtcbiAgdHhIZXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYnRjV2l0aGRyYXdQYXJhbXMge1xuICBhbW91bnQ6IHN0cmluZztcbiAgYnRjQWRkcmVzczogc3RyaW5nO1xuICBtYXhGZWU6IHN0cmluZztcbn1cbiJdfQ==
|
package/dist/src/lib/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export { AddressVersion, AddressHashMode } from '@stacks/transactions';
|
|
|
2
2
|
export * from './keyPair';
|
|
3
3
|
export * from './transaction';
|
|
4
4
|
export * from './transactionBuilderFactory';
|
|
5
|
+
export * from './sbtcWithdrawBuilder';
|
|
5
6
|
export * as Utils from './utils';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
|
package/dist/src/lib/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -14,13 +18,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
14
18
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
20
|
};
|
|
17
|
-
var __importStar = (this && this.__importStar) || function (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
24
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
39
|
exports.Utils = exports.AddressHashMode = exports.AddressVersion = void 0;
|
|
26
40
|
var transactions_1 = require("@stacks/transactions");
|
|
@@ -29,5 +43,6 @@ Object.defineProperty(exports, "AddressHashMode", { enumerable: true, get: funct
|
|
|
29
43
|
__exportStar(require("./keyPair"), exports);
|
|
30
44
|
__exportStar(require("./transaction"), exports);
|
|
31
45
|
__exportStar(require("./transactionBuilderFactory"), exports);
|
|
46
|
+
__exportStar(require("./sbtcWithdrawBuilder"), exports);
|
|
32
47
|
exports.Utils = __importStar(require("./utils"));
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUF1RTtBQUE5RCw4R0FBQSxjQUFjLE9BQUE7QUFBRSwrR0FBQSxlQUFlLE9BQUE7QUFDeEMsNENBQTBCO0FBQzFCLGdEQUE4QjtBQUM5Qiw4REFBNEM7QUFDNUMsd0RBQXNDO0FBQ3RDLGlEQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFkZHJlc3NWZXJzaW9uLCBBZGRyZXNzSGFzaE1vZGUgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9zYnRjV2l0aGRyYXdCdWlsZGVyJztcbmV4cG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuIl19
|
package/dist/src/lib/keyPair.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.KeyPair = void 0;
|
|
4
4
|
const crypto_1 = require("crypto");
|
|
5
|
-
const
|
|
5
|
+
const secp256k1_1 = require("@bitgo-beta/secp256k1");
|
|
6
6
|
const transactions_1 = require("@stacks/transactions");
|
|
7
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
8
|
const utils_1 = require("./utils");
|
|
@@ -16,16 +16,16 @@ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
|
|
|
16
16
|
constructor(source) {
|
|
17
17
|
super(source);
|
|
18
18
|
if (!source) {
|
|
19
|
-
const seed = crypto_1.randomBytes(constants_1.DEFAULT_SEED_SIZE_BYTES);
|
|
20
|
-
this.hdNode =
|
|
19
|
+
const seed = (0, crypto_1.randomBytes)(constants_1.DEFAULT_SEED_SIZE_BYTES);
|
|
20
|
+
this.hdNode = secp256k1_1.bip32.fromSeed(seed);
|
|
21
21
|
}
|
|
22
|
-
else if (sdk_core_1.isSeed(source)) {
|
|
23
|
-
this.hdNode =
|
|
22
|
+
else if ((0, sdk_core_1.isSeed)(source)) {
|
|
23
|
+
this.hdNode = secp256k1_1.bip32.fromSeed(source.seed);
|
|
24
24
|
}
|
|
25
|
-
else if (sdk_core_1.isPrivateKey(source)) {
|
|
25
|
+
else if ((0, sdk_core_1.isPrivateKey)(source)) {
|
|
26
26
|
this.recordKeysFromPrivateKey(source.prv);
|
|
27
27
|
}
|
|
28
|
-
else if (sdk_core_1.isPublicKey(source)) {
|
|
28
|
+
else if ((0, sdk_core_1.isPublicKey)(source)) {
|
|
29
29
|
this.recordKeysFromPublicKey(source.pub);
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
@@ -46,14 +46,14 @@ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
|
|
|
46
46
|
* @param {string} prv A raw private key
|
|
47
47
|
*/
|
|
48
48
|
recordKeysFromPrivateKey(prv) {
|
|
49
|
-
if (!utils_1.isValidPrivateKey(prv)) {
|
|
49
|
+
if (!(0, utils_1.isValidPrivateKey)(prv)) {
|
|
50
50
|
throw new Error('Unsupported private key');
|
|
51
51
|
}
|
|
52
|
-
if (sdk_core_1.isValidXprv(prv)) {
|
|
53
|
-
this.hdNode =
|
|
52
|
+
if ((0, sdk_core_1.isValidXprv)(prv)) {
|
|
53
|
+
this.hdNode = secp256k1_1.bip32.fromBase58(prv);
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
|
-
this.keyPair =
|
|
56
|
+
this.keyPair = secp256k1_1.ECPair.fromPrivateKey(Buffer.from(prv.slice(0, 64), 'hex'));
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
@@ -67,14 +67,14 @@ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
|
|
|
67
67
|
* @param {string} pub A raw public key
|
|
68
68
|
*/
|
|
69
69
|
recordKeysFromPublicKey(pub) {
|
|
70
|
-
if (!utils_1.isValidPublicKey(pub)) {
|
|
70
|
+
if (!(0, utils_1.isValidPublicKey)(pub)) {
|
|
71
71
|
throw new Error('Unsupported public key');
|
|
72
72
|
}
|
|
73
|
-
if (sdk_core_1.isValidXpub(pub)) {
|
|
74
|
-
this.hdNode =
|
|
73
|
+
if ((0, sdk_core_1.isValidXpub)(pub)) {
|
|
74
|
+
this.hdNode = secp256k1_1.bip32.fromBase58(pub);
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
|
-
this.keyPair =
|
|
77
|
+
this.keyPair = secp256k1_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
@@ -84,8 +84,7 @@ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
|
|
|
84
84
|
* @returns {DefaultKeys} The keys in the protocol default key format
|
|
85
85
|
*/
|
|
86
86
|
getKeys(compressed = false) {
|
|
87
|
-
|
|
88
|
-
let prv = (_a = this.getPrivateKey()) === null || _a === void 0 ? void 0 : _a.toString('hex');
|
|
87
|
+
let prv = this.getPrivateKey()?.toString('hex');
|
|
89
88
|
if (prv && compressed) {
|
|
90
89
|
prv += '01';
|
|
91
90
|
}
|
|
@@ -113,8 +112,8 @@ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
|
|
|
113
112
|
* @returns {string} The public address
|
|
114
113
|
*/
|
|
115
114
|
getSTXAddress(compressed = false, network = transactions_1.TransactionVersion.Mainnet) {
|
|
116
|
-
return transactions_1.getAddressFromPublicKey(this.getKeys(compressed).pub, network);
|
|
115
|
+
return (0, transactions_1.getAddressFromPublicKey)(this.getKeys(compressed).pub, network);
|
|
117
116
|
}
|
|
118
117
|
}
|
|
119
118
|
exports.KeyPair = KeyPair;
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBcUM7QUFDckMscURBQXNEO0FBQ3RELHVEQUFtRjtBQUNuRixtREFTOEI7QUFDOUIsbUNBQThEO0FBQzlELDJDQUFzRDtBQUV0RCxNQUFhLE9BQVEsU0FBUSxtQ0FBd0I7SUFDbkQ7Ozs7T0FJRztJQUNILFlBQVksTUFBdUI7UUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEdBQUcsSUFBQSxvQkFBVyxFQUFDLG1DQUF1QixDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sSUFBSSxJQUFBLGlCQUFNLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFBLHVCQUFZLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxJQUFJLElBQUEsc0JBQVcsRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsbUNBQXdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILHdCQUF3QixDQUFDLEdBQVc7UUFDbEMsSUFBSSxDQUFDLElBQUEseUJBQWlCLEVBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELElBQUksSUFBQSxzQkFBVyxFQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsdUJBQXVCLENBQUMsR0FBVztRQUNqQyxJQUFJLENBQUMsSUFBQSx3QkFBZ0IsRUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxJQUFBLHNCQUFXLEVBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxrQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUs7UUFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN0QixHQUFHLElBQUksSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUN0RCxHQUFHO1NBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLGlDQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsVUFBVSxHQUFHLEtBQUssRUFBRSxVQUE4QixpQ0FBa0IsQ0FBQyxPQUFPO1FBQ3hGLE9BQU8sSUFBQSxzQ0FBdUIsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUEvR0QsMEJBK0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgYmlwMzIsIEVDUGFpciB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSwgVHJhbnNhY3Rpb25WZXJzaW9uIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEtleXMsXG4gIGlzUHJpdmF0ZUtleSxcbiAgaXNQdWJsaWNLZXksXG4gIGlzU2VlZCxcbiAgaXNWYWxpZFhwcnYsXG4gIGlzVmFsaWRYcHViLFxuICBLZXlQYWlyT3B0aW9ucyxcbiAgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBpc1ZhbGlkUHJpdmF0ZUtleSwgaXNWYWxpZFB1YmxpY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgREVGQVVMVF9TRUVEX1NJWkVfQllURVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIGV4dGVuZHMgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyIHtcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7IEtleVBhaXJPcHRpb25zIH0gc291cmNlIEVpdGhlciBhIG1hc3RlciBzZWVkLCBhIHByaXZhdGUga2V5LCBvciBhIHB1YmxpYyBrZXlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgc3VwZXIoc291cmNlKTtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgY29uc3Qgc2VlZCA9IHJhbmRvbUJ5dGVzKERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTKTtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbVNlZWQoc2VlZCk7XG4gICAgfSBlbHNlIGlmIChpc1NlZWQoc291cmNlKSkge1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tU2VlZChzb3VyY2Uuc2VlZCk7XG4gICAgfSBlbHNlIGlmIChpc1ByaXZhdGVLZXkoc291cmNlKSkge1xuICAgICAgdGhpcy5yZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkoc291cmNlLnBydik7XG4gICAgfSBlbHNlIGlmIChpc1B1YmxpY0tleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHVibGljS2V5KHNvdXJjZS5wdWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhkTm9kZSkge1xuICAgICAgdGhpcy5rZXlQYWlyID0gU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLnRvS2V5UGFpcih0aGlzLmhkTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEga2V5cGFpciBmcm9tIGEgcHJvdG9jb2wgcHJpdmF0ZSBrZXkgb3IgZXh0ZW5kZWQgcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIFRoZSBwcm90b2NvbCBwcml2YXRlIGtleSBpcyBlaXRoZXIgMzIgb3IgMzMgYnl0ZXMgbG9uZyAoNjQgb3IgNjZcbiAgICogY2hhcmFjdGVycyBoZXgpLiAgSWYgaXQgaXMgMzIgYnl0ZXMgbG9uZywgc2V0IHRoZSBrZXlwYWlyJ3MgXCJjb21wcmVzc2VkXCJcbiAgICogZmllbGQgdG8gZmFsc2UgdG8gbGF0ZXIgZ2VuZXJhdGUgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlzICh0aGUgZGVmYXVsdCkuXG4gICAqIEEgMzMgYnl0ZSBrZXkgaGFzIDB4MDEgYXMgdGhlIGxhc3QgYnl0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIHJhdyBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkUHJpdmF0ZUtleShwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzVmFsaWRYcHJ2KHBydikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwcnYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LnNsaWNlKDAsIDY0KSwgJ2hleCcpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW4gRUNQYWlyIGZyb20gYSBwcm90b2NvbCBwdWJsaWMga2V5IG9yIGV4dGVuZGVkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIFRoZSBwcm90b2NvbCBwdWJsaWMga2V5IGlzIGVpdGhlciAzMiBieXRlcyBvciA2NCBieXRlcyBsb25nLCB3aXRoIGFcbiAgICogb25lLWJ5dGUgcHJlZml4IChhIHRvdGFsIG9mIDY2IG9yIDEzMCBjaGFyYWN0ZXJzIGluIGhleCkuICBJZiB0aGVcbiAgICogcHJlZml4IGlzIDB4MDIgb3IgMHgwMywgaXQgaXMgYSBjb21wcmVzc2VkIHB1YmxpYyBrZXkuICBBIHByZWZpeCBvZiAweDA0XG4gICAqIGRlbm90ZXMgYW4gdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgQSByYXcgcHVibGljIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRQdWJsaWNLZXkocHViKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwdWJsaWMga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzVmFsaWRYcHViKHB1YikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwdWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVB1YmxpY0tleShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YWNrcyBkZWZhdWx0IGtleXMgZm9ybWF0IGlzIHJhdyBwcml2YXRlIGFuZCB1bmNvbXByZXNzZWQgcHVibGljIGtleVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNvbXByZXNzZWQgLSBDb21wcmVzcyBwdWJsaWMga2V5IChkZWZhdWx0cyB0byBmYWxzZSlcbiAgICogQHJldHVybnMge0RlZmF1bHRLZXlzfSBUaGUga2V5cyBpbiB0aGUgcHJvdG9jb2wgZGVmYXVsdCBrZXkgZm9ybWF0XG4gICAqL1xuICBnZXRLZXlzKGNvbXByZXNzZWQgPSBmYWxzZSk6IERlZmF1bHRLZXlzIHtcbiAgICBsZXQgcHJ2ID0gdGhpcy5nZXRQcml2YXRlS2V5KCk/LnRvU3RyaW5nKCdoZXgnKTtcbiAgICBpZiAocHJ2ICYmIGNvbXByZXNzZWQpIHtcbiAgICAgIHBydiArPSAnMDEnO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IHRoaXMuZ2V0UHVibGljS2V5KHsgY29tcHJlc3NlZCB9KS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcnYsXG4gICAgfTtcbiAgfVxuXG4gIGdldENvbXByZXNzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMua2V5UGFpci5jb21wcmVzc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHB1YmxpYyBhZGRyZXNzIG9mIGFuIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcHVibGljIGFkZHJlc3NcbiAgICovXG4gIGdldEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTVFhBZGRyZXNzKGZhbHNlLCBUcmFuc2FjdGlvblZlcnNpb24uTWFpbm5ldCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcHVibGljIGFkZHJlc3Mgb2YgYW4gdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY29tcHJlc3NlZCAtIENvbXByZXNzIHB1YmxpYyBrZXkgKGRlZmF1bHRzIHRvIGZhbHNlKVxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVmVyc2lvbn0gbmV0d29yayAtIHNlbGVjdCBNYWlubmV0IG9yIFRlc3RuZXQgZm9yIHRoZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBwdWJsaWMgYWRkcmVzc1xuICAgKi9cbiAgZ2V0U1RYQWRkcmVzcyhjb21wcmVzc2VkID0gZmFsc2UsIG5ldHdvcms6IFRyYW5zYWN0aW9uVmVyc2lvbiA9IFRyYW5zYWN0aW9uVmVyc2lvbi5NYWlubmV0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGhpcy5nZXRLZXlzKGNvbXByZXNzZWQpLnB1YiwgbmV0d29yayk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
/** @inheritdoc */
|
|
23
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
24
|
+
private withdrawParamsToFunctionArgs;
|
|
25
|
+
private withdrawParamsToPostCondition;
|
|
26
|
+
}
|
|
27
|
+
//# 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,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAqB3D,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,6BAA6B;CAqBtC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.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
|
+
/** @inheritdoc */
|
|
84
|
+
async buildImplementation() {
|
|
85
|
+
if (!this._withdrawParams) {
|
|
86
|
+
throw new sdk_core_1.BuildTransactionError('Withdrawal params are not set. Use withdraw() to set them.');
|
|
87
|
+
}
|
|
88
|
+
const network = this._coinConfig.network;
|
|
89
|
+
this._contractAddress = network.sbtcWithdrawalContractAddress;
|
|
90
|
+
this._contractName = constants_1.CONTRACT_NAME_SBTC_WITHDRAWAL;
|
|
91
|
+
this._functionName = constants_1.FUNCTION_NAME_INITIATE_WITHDRAWAL;
|
|
92
|
+
// For deserialized transactions, function args are already preserved from the original tx.
|
|
93
|
+
// For fresh builds, construct them from the withdraw params.
|
|
94
|
+
if (!this._isDeserialized) {
|
|
95
|
+
this._functionArgs = this.withdrawParamsToFunctionArgs(this._withdrawParams);
|
|
96
|
+
}
|
|
97
|
+
this._postConditionMode = transactions_1.PostConditionMode.Deny;
|
|
98
|
+
this._postConditions = this.withdrawParamsToPostCondition(this._withdrawParams);
|
|
99
|
+
return await super.buildImplementation();
|
|
100
|
+
}
|
|
101
|
+
withdrawParamsToFunctionArgs(params) {
|
|
102
|
+
const decoded = (0, btcAddressUtils_1.decodeBtcAddress)(params.btcAddress);
|
|
103
|
+
return [
|
|
104
|
+
(0, transactions_1.uintCV)(params.amount),
|
|
105
|
+
(0, transactions_1.tupleCV)({
|
|
106
|
+
version: (0, transactions_1.bufferCV)(Buffer.from([decoded.version])),
|
|
107
|
+
hashbytes: (0, transactions_1.bufferCV)(decoded.hashBytes),
|
|
108
|
+
}),
|
|
109
|
+
(0, transactions_1.uintCV)(params.maxFee),
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
withdrawParamsToPostCondition(params) {
|
|
113
|
+
const amount = new bn_js_1.default(params.amount).add(new bn_js_1.default(params.maxFee));
|
|
114
|
+
const network = this._coinConfig.network;
|
|
115
|
+
const sbtcContractAddress = network.sbtcWithdrawalContractAddress;
|
|
116
|
+
return [
|
|
117
|
+
(0, transactions_1.makeStandardFungiblePostCondition)((0, utils_1.getSTXAddressFromPubKeys)(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
|
|
118
|
+
? transactions_1.AddressVersion.MainnetMultiSig
|
|
119
|
+
: transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, amount, (0, transactions_1.createAssetInfo)(sbtcContractAddress, SBTC_TOKEN_CONTRACT_NAME, SBTC_TOKEN_ASSET_NAME)),
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.SbtcWithdrawBuilder = SbtcWithdrawBuilder;
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2J0Y1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2J0Y1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBK0c7QUFDL0csa0RBQTJCO0FBQzNCLHVEQWE4QjtBQUM5QixtREFBNkQ7QUFFN0QsbUNBQWtFO0FBRWxFLDJDQUErRjtBQUUvRix1RUFBb0U7QUFDcEUsdURBQXdFO0FBRXhFLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDO0FBQzlDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDO0FBRTNDLE1BQWEsbUJBQW9CLFNBQVEsaURBQXVCO0lBSTlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSGIsb0JBQWUsR0FBRyxLQUFLLENBQUM7SUFJaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQWdDLEVBQUUsT0FBNEI7UUFDOUYsT0FBTyxDQUNKLFVBQVUsQ0FBQyxPQUE4QixDQUFDLDZCQUE2QjtZQUN0RSxJQUFBLDhCQUFlLEVBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQyx5Q0FBNkIsS0FBSyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU87WUFDOUQsNkNBQWlDLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsTUFBMEI7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDN0UsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtDQUFrQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RixD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QTBCO1FBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUE2QixDQUFDO1FBQy9ELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLDZCQUE2QixDQUFDO1FBRWxFLE9BQU87WUFDTCxJQUFBLGdEQUFpQyxFQUMvQixJQUFBLGdDQUF3QixFQUN0QixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUsscUJBQVcsQ0FBQyxPQUFPO2dCQUNuRCxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlO2dCQUNoQyxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlLEVBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsY0FBYyxFQUM3RixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUMsT0FBTyxFQUNULG9DQUFxQixDQUFDLEtBQUssRUFDM0IsTUFBTSxFQUNOLElBQUEsOEJBQWUsRUFBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUN0RjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0SUQsa0RBc0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc1RvU3RyaW5nLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgYnVmZmVyQ1YsXG4gIENsYXJpdHlUeXBlLFxuICBjcmVhdGVBc3NldEluZm8sXG4gIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZSxcbiAgbWFrZVN0YW5kYXJkRnVuZ2libGVQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uTW9kZSxcbiAgdHVwbGVDVixcbiAgdWludENWLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzLCBpc1ZhbGlkQW1vdW50IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTYnRjV2l0aGRyYXdQYXJhbXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENPTlRSQUNUX05BTUVfU0JUQ19XSVRIRFJBV0FMLCBGVU5DVElPTl9OQU1FX0lOSVRJQVRFX1dJVEhEUkFXQUwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb250cmFjdENhbGxQYXlsb2FkIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMvZGlzdC9wYXlsb2FkJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJhY3RCdWlsZGVyIH0gZnJvbSAnLi9hYnN0cmFjdENvbnRyYWN0QnVpbGRlcic7XG5pbXBvcnQgeyBkZWNvZGVCdGNBZGRyZXNzLCBpc1ZhbGlkQnRjQWRkcmVzcyB9IGZyb20gJy4vYnRjQWRkcmVzc1V0aWxzJztcblxuY29uc3QgU0JUQ19UT0tFTl9DT05UUkFDVF9OQU1FID0gJ3NidGMtdG9rZW4nO1xuY29uc3QgU0JUQ19UT0tFTl9BU1NFVF9OQU1FID0gJ3NidGMtdG9rZW4nO1xuXG5leHBvcnQgY2xhc3MgU2J0Y1dpdGhkcmF3QnVpbGRlciBleHRlbmRzIEFic3RyYWN0Q29udHJhY3RCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfd2l0aGRyYXdQYXJhbXM6IFNidGNXaXRoZHJhd1BhcmFtcyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfaXNEZXNlcmlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGRlc2VyaWFsaXplZCBjb250cmFjdC1jYWxsIHBheWxvYWQgbWF0Y2hlcyB0aGUgc0JUQyB3aXRoZHJhd2FsIGNvbnRyYWN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkQ29udHJhY3RDYWxsKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCBwYXlsb2FkOiBDb250cmFjdENhbGxQYXlsb2FkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrKS5zYnRjV2l0aGRyYXdhbENvbnRyYWN0QWRkcmVzcyA9PT1cbiAgICAgICAgYWRkcmVzc1RvU3RyaW5nKHBheWxvYWQuY29udHJhY3RBZGRyZXNzKSAmJlxuICAgICAgQ09OVFJBQ1RfTkFNRV9TQlRDX1dJVEhEUkFXQUwgPT09IHBheWxvYWQuY29udHJhY3ROYW1lLmNvbnRlbnQgJiZcbiAgICAgIEZVTkNUSU9OX05BTUVfSU5JVElBVEVfV0lUSERSQVdBTCA9PT0gcGF5bG9hZC5mdW5jdGlvbk5hbWUuY29udGVudFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHdpdGhkcmF3YWwgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtTYnRjV2l0aGRyYXdQYXJhbXN9IHBhcmFtcyAtIGFtb3VudCAoc2F0b3NoaXMpLCBidGNBZGRyZXNzLCBtYXhGZWVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICB3aXRoZHJhdyhwYXJhbXM6IFNidGNXaXRoZHJhd1BhcmFtcyk6IHRoaXMge1xuICAgIGlmICghcGFyYW1zLmFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChwYXJhbXMuYW1vdW50KSB8fCBwYXJhbXMuYW1vdW50ID09PSAnMCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQsIGdvdDogJyArIHBhcmFtcy5hbW91bnQpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5idGNBZGRyZXNzIHx8ICFpc1ZhbGlkQnRjQWRkcmVzcyhwYXJhbXMuYnRjQWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBidGNBZGRyZXNzLCBnb3Q6ICcgKyBwYXJhbXMuYnRjQWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICghcGFyYW1zLm1heEZlZSB8fCAhaXNWYWxpZEFtb3VudChwYXJhbXMubWF4RmVlKSB8fCBwYXJhbXMubWF4RmVlID09PSAnMCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBtYXhGZWUsIGdvdDogJyArIHBhcmFtcy5tYXhGZWUpO1xuICAgIH1cbiAgICB0aGlzLl93aXRoZHJhd1BhcmFtcyA9IHBhcmFtcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBwYXlsb2FkID0gdHguc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkO1xuICAgIGNvbnN0IGFyZ3MgPSBwYXlsb2FkLmZ1bmN0aW9uQXJncztcblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBudW1iZXIgb2YgZnVuY3Rpb24gYXJncyBmb3Igc0JUQyB3aXRoZHJhd2FsJyk7XG4gICAgfVxuXG4gICAgLy8gYXJnc1swXSA9IHVpbnQgKGFtb3VudClcbiAgICBpZiAoYXJnc1swXS50eXBlICE9PSBDbGFyaXR5VHlwZS5VSW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCB1aW50IGZvciBhbW91bnQgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgYW1vdW50ID0gYXJnc1swXS52YWx1ZS50b1N0cmluZygpO1xuXG4gICAgLy8gYXJnc1sxXSA9IHR1cGxlIHsgdmVyc2lvbjogKGJ1ZmYgMSksIGhhc2hieXRlczogKGJ1ZmYgMzIpIH1cbiAgICBpZiAoYXJnc1sxXS50eXBlICE9PSBDbGFyaXR5VHlwZS5UdXBsZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRXhwZWN0ZWQgdHVwbGUgZm9yIHJlY2lwaWVudCBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBjb25zdCB2ZXJzaW9uQnVmID0gYXJnc1sxXS5kYXRhWyd2ZXJzaW9uJ107XG4gICAgY29uc3QgaGFzaGJ5dGVzQnVmID0gYXJnc1sxXS5kYXRhWydoYXNoYnl0ZXMnXTtcbiAgICBpZiAodmVyc2lvbkJ1Zj8udHlwZSAhPT0gQ2xhcml0eVR5cGUuQnVmZmVyIHx8IGhhc2hieXRlc0J1Zj8udHlwZSAhPT0gQ2xhcml0eVR5cGUuQnVmZmVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCBidWZmZXIgZmllbGRzIGluIHJlY2lwaWVudCB0dXBsZScpO1xuICAgIH1cblxuICAgIC8vIGFyZ3NbMl0gPSB1aW50IChtYXgtZmVlKVxuICAgIGlmIChhcmdzWzJdLnR5cGUgIT09IENsYXJpdHlUeXBlLlVJbnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0V4cGVjdGVkIHVpbnQgZm9yIG1heC1mZWUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RmVlID0gYXJnc1syXS52YWx1ZS50b1N0cmluZygpO1xuXG4gICAgdGhpcy5fd2l0aGRyYXdQYXJhbXMgPSB7XG4gICAgICBhbW91bnQsXG4gICAgICBidGNBZGRyZXNzOiAnJywgLy8gbm90IG5lZWRlZCBmb3IgcmVidWlsZDsgZnVuY3Rpb24gYXJncyBhcmUgcHJlc2VydmVkIGZyb20gdGhlIG9yaWdpbmFsIHR4XG4gICAgICBtYXhGZWUsXG4gICAgfTtcbiAgICB0aGlzLl9pc0Rlc2VyaWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGlmICghdGhpcy5fd2l0aGRyYXdQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1dpdGhkcmF3YWwgcGFyYW1zIGFyZSBub3Qgc2V0LiBVc2Ugd2l0aGRyYXcoKSB0byBzZXQgdGhlbS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXR3b3JrID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yaztcbiAgICB0aGlzLl9jb250cmFjdEFkZHJlc3MgPSBuZXR3b3JrLnNidGNXaXRoZHJhd2FsQ29udHJhY3RBZGRyZXNzO1xuICAgIHRoaXMuX2NvbnRyYWN0TmFtZSA9IENPTlRSQUNUX05BTUVfU0JUQ19XSVRIRFJBV0FMO1xuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IEZVTkNUSU9OX05BTUVfSU5JVElBVEVfV0lUSERSQVdBTDtcblxuICAgIC8vIEZvciBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25zLCBmdW5jdGlvbiBhcmdzIGFyZSBhbHJlYWR5IHByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW5hbCB0eC5cbiAgICAvLyBGb3IgZnJlc2ggYnVpbGRzLCBjb25zdHJ1Y3QgdGhlbSBmcm9tIHRoZSB3aXRoZHJhdyBwYXJhbXMuXG4gICAgaWYgKCF0aGlzLl9pc0Rlc2VyaWFsaXplZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25BcmdzID0gdGhpcy53aXRoZHJhd1BhcmFtc1RvRnVuY3Rpb25BcmdzKHRoaXMuX3dpdGhkcmF3UGFyYW1zKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9uTW9kZSA9IFBvc3RDb25kaXRpb25Nb2RlLkRlbnk7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbnMgPSB0aGlzLndpdGhkcmF3UGFyYW1zVG9Qb3N0Q29uZGl0aW9uKHRoaXMuX3dpdGhkcmF3UGFyYW1zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSB3aXRoZHJhd1BhcmFtc1RvRnVuY3Rpb25BcmdzKHBhcmFtczogU2J0Y1dpdGhkcmF3UGFyYW1zKSB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZUJ0Y0FkZHJlc3MocGFyYW1zLmJ0Y0FkZHJlc3MpO1xuICAgIHJldHVybiBbXG4gICAgICB1aW50Q1YocGFyYW1zLmFtb3VudCksXG4gICAgICB0dXBsZUNWKHtcbiAgICAgICAgdmVyc2lvbjogYnVmZmVyQ1YoQnVmZmVyLmZyb20oW2RlY29kZWQudmVyc2lvbl0pKSxcbiAgICAgICAgaGFzaGJ5dGVzOiBidWZmZXJDVihkZWNvZGVkLmhhc2hCeXRlcyksXG4gICAgICB9KSxcbiAgICAgIHVpbnRDVihwYXJhbXMubWF4RmVlKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSB3aXRoZHJhd1BhcmFtc1RvUG9zdENvbmRpdGlvbihwYXJhbXM6IFNidGNXaXRoZHJhd1BhcmFtcyk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgY29uc3QgYW1vdW50ID0gbmV3IEJpZ051bShwYXJhbXMuYW1vdW50KS5hZGQobmV3IEJpZ051bShwYXJhbXMubWF4RmVlKSk7XG4gICAgY29uc3QgbmV0d29yayA9IHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcms7XG4gICAgY29uc3Qgc2J0Y0NvbnRyYWN0QWRkcmVzcyA9IG5ldHdvcmsuc2J0Y1dpdGhkcmF3YWxDb250cmFjdEFkZHJlc3M7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVN0YW5kYXJkRnVuZ2libGVQb3N0Q29uZGl0aW9uKFxuICAgICAgICBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMoXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMsXG4gICAgICAgICAgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVRcbiAgICAgICAgICAgID8gQWRkcmVzc1ZlcnNpb24uTWFpbm5ldE11bHRpU2lnXG4gICAgICAgICAgICA6IEFkZHJlc3NWZXJzaW9uLlRlc3RuZXRNdWx0aVNpZyxcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPiAxID8gQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyU0ggOiBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJQS0gsXG4gICAgICAgICAgdGhpcy5fbnVtYmVyU2lnbmF0dXJlc1xuICAgICAgICApLmFkZHJlc3MsXG4gICAgICAgIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZS5FcXVhbCxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBjcmVhdGVBc3NldEluZm8oc2J0Y0NvbnRyYWN0QWRkcmVzcywgU0JUQ19UT0tFTl9DT05UUkFDVF9OQU1FLCBTQlRDX1RPS0VOX0FTU0VUX05BTUUpXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
|