@bitgo/sdk-coin-starknet 0.0.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +20 -0
- package/dist/src/lib/constants.d.ts +13 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +25 -0
- package/dist/src/lib/iface.d.ts +78 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +9 -0
- package/dist/src/lib/index.d.ts +9 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +53 -0
- package/dist/src/lib/keyPair.d.ts +9 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +48 -0
- package/dist/src/lib/transaction.d.ts +23 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +145 -0
- package/dist/src/lib/transactionBuilder.d.ts +43 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +158 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +16 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +44 -0
- package/dist/src/lib/transferBuilder.d.ts +21 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +88 -0
- package/dist/src/lib/utils.d.ts +104 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +290 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +10 -0
- package/dist/src/starknet.d.ts +35 -0
- package/dist/src/starknet.d.ts.map +1 -0
- package/dist/src/starknet.js +127 -0
- package/dist/test/resources/starknet.d.ts +98 -0
- package/dist/test/resources/starknet.d.ts.map +1 -0
- package/dist/test/resources/starknet.js +104 -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 +56 -0
- package/dist/test/unit/starknet.d.ts +2 -0
- package/dist/test/unit/starknet.d.ts.map +1 -0
- package/dist/test/unit/starknet.js +126 -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 +53 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +74 -0
- package/dist/test/unit/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transferBuilder.js +208 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +260 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +52 -10
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Transaction = void 0;
|
|
37
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
38
|
+
const iface_1 = require("./iface");
|
|
39
|
+
const utils_1 = __importStar(require("./utils"));
|
|
40
|
+
class Transaction extends sdk_core_1.BaseTransaction {
|
|
41
|
+
constructor(_coinConfig) {
|
|
42
|
+
super(_coinConfig);
|
|
43
|
+
}
|
|
44
|
+
get starknetTransactionData() {
|
|
45
|
+
return this._starknetTransactionData;
|
|
46
|
+
}
|
|
47
|
+
set starknetTransactionData(data) {
|
|
48
|
+
this._starknetTransactionData = data;
|
|
49
|
+
if (data.transactionHash) {
|
|
50
|
+
this._id = data.transactionHash;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get signableHex() {
|
|
54
|
+
return this._starknetTransactionData?.transactionHash || '';
|
|
55
|
+
}
|
|
56
|
+
get signedTransaction() {
|
|
57
|
+
return this._signedTransaction;
|
|
58
|
+
}
|
|
59
|
+
set signedTransaction(tx) {
|
|
60
|
+
this._signedTransaction = tx;
|
|
61
|
+
}
|
|
62
|
+
async fromRawTransaction(rawTransaction) {
|
|
63
|
+
try {
|
|
64
|
+
const buffer = Buffer.from(rawTransaction, 'hex');
|
|
65
|
+
const jsonString = buffer.toString('utf-8');
|
|
66
|
+
const parsed = JSON.parse(jsonString);
|
|
67
|
+
this._starknetTransactionData = {
|
|
68
|
+
senderAddress: parsed.senderAddress,
|
|
69
|
+
calls: parsed.calls || [],
|
|
70
|
+
nonce: parsed.nonce,
|
|
71
|
+
chainId: parsed.chainId,
|
|
72
|
+
transactionType: parsed.transactionType || iface_1.StarknetTransactionType.INVOKE,
|
|
73
|
+
signature: parsed.signature,
|
|
74
|
+
transactionHash: parsed.transactionHash,
|
|
75
|
+
resourceBounds: parsed.resourceBounds,
|
|
76
|
+
tip: parsed.tip,
|
|
77
|
+
compiledCalldata: parsed.compiledCalldata,
|
|
78
|
+
nonceDataAvailabilityMode: parsed.nonceDataAvailabilityMode,
|
|
79
|
+
feeDataAvailabilityMode: parsed.feeDataAvailabilityMode,
|
|
80
|
+
};
|
|
81
|
+
if (parsed.signature && parsed.signature.length > 0) {
|
|
82
|
+
this._signedTransaction = rawTransaction;
|
|
83
|
+
}
|
|
84
|
+
utils_1.default.validateRawTransaction(this._starknetTransactionData);
|
|
85
|
+
this._id = parsed.transactionHash || '';
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid transaction: ${error.message}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** @inheritdoc */
|
|
92
|
+
toJson() {
|
|
93
|
+
if (!this._starknetTransactionData) {
|
|
94
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
95
|
+
}
|
|
96
|
+
const transfer = this._starknetTransactionData.calls.length > 0
|
|
97
|
+
? (0, utils_1.parseTransferCall)(this._starknetTransactionData.calls[0])
|
|
98
|
+
: undefined;
|
|
99
|
+
return {
|
|
100
|
+
id: this._id,
|
|
101
|
+
sender: this._starknetTransactionData.senderAddress,
|
|
102
|
+
recipient: transfer?.recipient,
|
|
103
|
+
amount: transfer?.amount,
|
|
104
|
+
nonce: this._starknetTransactionData.nonce,
|
|
105
|
+
type: sdk_core_1.TransactionType.Send,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/** @inheritDoc */
|
|
109
|
+
explainTransaction() {
|
|
110
|
+
const result = this.toJson();
|
|
111
|
+
const displayOrder = ['id', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs', 'fee'];
|
|
112
|
+
const outputs = [];
|
|
113
|
+
if (result.recipient && result.amount) {
|
|
114
|
+
outputs.push({
|
|
115
|
+
address: result.recipient,
|
|
116
|
+
amount: result.amount,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
displayOrder,
|
|
121
|
+
id: this.id,
|
|
122
|
+
outputs,
|
|
123
|
+
outputAmount: result.amount || '0',
|
|
124
|
+
fee: { fee: '0' },
|
|
125
|
+
type: result.type,
|
|
126
|
+
changeOutputs: [],
|
|
127
|
+
changeAmount: '0',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/** @inheritdoc */
|
|
131
|
+
toBroadcastFormat() {
|
|
132
|
+
const data = this._starknetTransactionData;
|
|
133
|
+
if (!data) {
|
|
134
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
135
|
+
}
|
|
136
|
+
const json = JSON.stringify(data);
|
|
137
|
+
return Buffer.from(json, 'utf-8').toString('hex');
|
|
138
|
+
}
|
|
139
|
+
/** @inheritdoc */
|
|
140
|
+
canSign(_key) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.Transaction = Transaction;
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQU15QjtBQUV6QixtQ0FBbUg7QUFDbkgsaURBQW1EO0FBRW5ELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSTlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLHVCQUF1QjtRQUN6QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSx1QkFBdUIsQ0FBQyxJQUE2QjtRQUN2RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLEVBQVU7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQXNCO1FBQzdDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFD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RUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsT0FBTztZQUNQLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDbEMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUc7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLElBQWE7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUF6SEQsa0NBeUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSwgU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUsIFN0YXJrbmV0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMsIHsgcGFyc2VUcmFuc2ZlckNhbGwgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9zdGFya25ldFRyYW5zYWN0aW9uRGF0YSE6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhO1xuICBwcm90ZWN0ZWQgX3NpZ25lZFRyYW5zYWN0aW9uPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzdGFya25ldFRyYW5zYWN0aW9uRGF0YSgpOiBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhO1xuICB9XG5cbiAgc2V0IHN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhKGRhdGE6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgdGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIGlmIChkYXRhLnRyYW5zYWN0aW9uSGFzaCkge1xuICAgICAgdGhpcy5faWQgPSBkYXRhLnRyYW5zYWN0aW9uSGFzaDtcbiAgICB9XG4gIH1cblxuICBnZXQgc2lnbmFibGVIZXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGE/LnRyYW5zYWN0aW9uSGFzaCB8fCAnJztcbiAgfVxuXG4gIGdldCBzaWduZWRUcmFuc2FjdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCBzaWduZWRUcmFuc2FjdGlvbih0eDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIGFzeW5jIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHJhd1RyYW5zYWN0aW9uLCAnaGV4Jyk7XG4gICAgICBjb25zdCBqc29uU3RyaW5nID0gYnVmZmVyLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblxuICAgICAgdGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICAgIHNlbmRlckFkZHJlc3M6IHBhcnNlZC5zZW5kZXJBZGRyZXNzLFxuICAgICAgICBjYWxsczogcGFyc2VkLmNhbGxzIHx8IFtdLFxuICAgICAgICBub25jZTogcGFyc2VkLm5vbmNlLFxuICAgICAgICBjaGFpbklkOiBwYXJzZWQuY2hhaW5JZCxcbiAgICAgICAgdHJhbnNhY3Rpb25UeXBlOiBwYXJzZWQudHJhbnNhY3Rpb25UeXBlIHx8IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLklOVk9LRSxcbiAgICAgICAgc2lnbmF0dXJlOiBwYXJzZWQuc2lnbmF0dXJlLFxuICAgICAgICB0cmFuc2FjdGlvbkhhc2g6IHBhcnNlZC50cmFuc2FjdGlvbkhhc2gsXG4gICAgICAgIHJlc291cmNlQm91bmRzOiBwYXJzZWQucmVzb3VyY2VCb3VuZHMsXG4gICAgICAgIHRpcDogcGFyc2VkLnRpcCxcbiAgICAgICAgY29tcGlsZWRDYWxsZGF0YTogcGFyc2VkLmNvbXBpbGVkQ2FsbGRhdGEsXG4gICAgICAgIG5vbmNlRGF0YUF2YWlsYWJpbGl0eU1vZGU6IHBhcnNlZC5ub25jZURhdGFBdmFpbGFiaWxpdHlNb2RlLFxuICAgICAgICBmZWVEYXRhQXZhaWxhYmlsaXR5TW9kZTogcGFyc2VkLmZlZURhdGFBdmFpbGFiaWxpdHlNb2RlLFxuICAgICAgfTtcblxuICAgICAgaWYgKHBhcnNlZC5zaWduYXR1cmUgJiYgcGFyc2VkLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gcmF3VHJhbnNhY3Rpb247XG4gICAgICB9XG5cbiAgICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24odGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEpO1xuICAgICAgdGhpcy5faWQgPSBwYXJzZWQudHJhbnNhY3Rpb25IYXNoIHx8ICcnO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdHJhbnNhY3Rpb246ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zdGFya25ldFRyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2ZlciA9XG4gICAgICB0aGlzLl9zdGFya25ldFRyYW5zYWN0aW9uRGF0YS5jYWxscy5sZW5ndGggPiAwXG4gICAgICAgID8gcGFyc2VUcmFuc2ZlckNhbGwodGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEuY2FsbHNbMF0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBzZW5kZXI6IHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLnNlbmRlckFkZHJlc3MsXG4gICAgICByZWNpcGllbnQ6IHRyYW5zZmVyPy5yZWNpcGllbnQsXG4gICAgICBhbW91bnQ6IHRyYW5zZmVyPy5hbW91bnQsXG4gICAgICBub25jZTogdGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEubm9uY2UsXG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuU2VuZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBTdGFya25ldFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBpZiAocmVzdWx0LnJlY2lwaWVudCAmJiByZXN1bHQuYW1vdW50KSB7XG4gICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiByZXN1bHQucmVjaXBpZW50LFxuICAgICAgICBhbW91bnQ6IHJlc3VsdC5hbW91bnQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiByZXN1bHQuYW1vdW50IHx8ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6ICcwJyB9LFxuICAgICAgdHlwZTogcmVzdWx0LnR5cGUsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGE7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oanNvbiwgJ3V0Zi04JykudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oX2tleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BaseAddress, BaseKey, BaseTransactionBuilder } from '@bitgo/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import BigNumber from 'bignumber.js';
|
|
4
|
+
import { StarknetTransactionType, StarknetCall, StarknetResourceBounds } from './iface';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
7
|
+
protected _transaction: Transaction;
|
|
8
|
+
protected _sender?: string;
|
|
9
|
+
protected _publicKey?: string;
|
|
10
|
+
protected _calls: StarknetCall[];
|
|
11
|
+
protected _nonce?: string;
|
|
12
|
+
protected _chainId?: string;
|
|
13
|
+
protected _resourceBounds: StarknetResourceBounds;
|
|
14
|
+
protected _tip: string;
|
|
15
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
16
|
+
sender(address: string, pubKey?: string): this;
|
|
17
|
+
nonce(nonce: string): this;
|
|
18
|
+
chainId(chainId: string): this;
|
|
19
|
+
resourceBounds(rb: StarknetResourceBounds): this;
|
|
20
|
+
tip(tip: string): this;
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
get transaction(): Transaction;
|
|
23
|
+
/** @inheritdoc */
|
|
24
|
+
set transaction(transaction: Transaction);
|
|
25
|
+
initBuilder(tx: Transaction): void;
|
|
26
|
+
/** @inheritdoc */
|
|
27
|
+
validateAddress(address: BaseAddress): void;
|
|
28
|
+
/** @inheritdoc */
|
|
29
|
+
validateKey(key: BaseKey): void;
|
|
30
|
+
/** @inheritdoc */
|
|
31
|
+
validateTransaction(_transaction: Transaction): void;
|
|
32
|
+
/** @inheritdoc */
|
|
33
|
+
validateValue(value: BigNumber): void;
|
|
34
|
+
/** @inheritdoc */
|
|
35
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
36
|
+
/** @inheritdoc */
|
|
37
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
38
|
+
protected abstract get transactionType(): StarknetTransactionType;
|
|
39
|
+
/** @inheritdoc */
|
|
40
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
41
|
+
protected signImplementation(_key: BaseKey): Transaction;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAIvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAA2B,uBAAuB,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,CAAM;IACtC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,eAAe,EAAE,sBAAsB,CAA2B;IAC5E,SAAS,CAAC,IAAI,SAAS;gBAEX,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKtC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAoB9C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,cAAc,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI;IAKhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7B,kBAAkB;IAClB,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,kBAAkB;IAClB,IAAI,WAAW,CAAC,WAAW,EAAE,WAAW,EAEvC;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAelC,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAM3C,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAS/B,kBAAkB;IAClB,mBAAmB,CAAC,YAAY,EAAE,WAAW,GAAG,IAAI;IAYpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAMpD,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAKjE,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,uBAAuB,CAAC;IAElE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgC3D,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW;CAGzD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
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.TransactionBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
8
|
+
const transaction_1 = require("./transaction");
|
|
9
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
10
|
+
function defaultResourceBounds() {
|
|
11
|
+
return {
|
|
12
|
+
l2_gas: { max_amount: '0x1c9c380', max_price_per_unit: '0x174876e800' },
|
|
13
|
+
l1_gas: { max_amount: '0x0', max_price_per_unit: '0x5af3107a4000' },
|
|
14
|
+
l1_data_gas: { max_amount: '0x3e8', max_price_per_unit: '0x2540be400' },
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
18
|
+
constructor(_coinConfig) {
|
|
19
|
+
super(_coinConfig);
|
|
20
|
+
this._calls = [];
|
|
21
|
+
this._resourceBounds = defaultResourceBounds();
|
|
22
|
+
this._tip = '0x0';
|
|
23
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
24
|
+
}
|
|
25
|
+
sender(address, pubKey) {
|
|
26
|
+
if (!address || !utils_1.default.isValidAddress(address)) {
|
|
27
|
+
throw new sdk_core_1.BuildTransactionError('Invalid or missing address, got: ' + address);
|
|
28
|
+
}
|
|
29
|
+
if (pubKey) {
|
|
30
|
+
if (!utils_1.default.isValidPublicKey(pubKey)) {
|
|
31
|
+
throw new sdk_core_1.BuildTransactionError('Invalid pubKey, got: ' + pubKey);
|
|
32
|
+
}
|
|
33
|
+
const derivedAddress = utils_1.default.getAddressFromPublicKey(pubKey);
|
|
34
|
+
if (utils_1.default.normalizeAddress(derivedAddress) !== utils_1.default.normalizeAddress(address)) {
|
|
35
|
+
throw new sdk_core_1.BuildTransactionError(`Address does not match public key. Expected ${derivedAddress}, got ${address}`);
|
|
36
|
+
}
|
|
37
|
+
this._publicKey = pubKey;
|
|
38
|
+
}
|
|
39
|
+
this._sender = address;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
nonce(nonce) {
|
|
43
|
+
this._nonce = nonce;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
chainId(chainId) {
|
|
47
|
+
this._chainId = chainId;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
resourceBounds(rb) {
|
|
51
|
+
this._resourceBounds = rb;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
tip(tip) {
|
|
55
|
+
this._tip = tip;
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
/** @inheritdoc */
|
|
59
|
+
get transaction() {
|
|
60
|
+
return this._transaction;
|
|
61
|
+
}
|
|
62
|
+
/** @inheritdoc */
|
|
63
|
+
set transaction(transaction) {
|
|
64
|
+
this._transaction = transaction;
|
|
65
|
+
}
|
|
66
|
+
initBuilder(tx) {
|
|
67
|
+
this._transaction = tx;
|
|
68
|
+
const data = tx.starknetTransactionData;
|
|
69
|
+
this._sender = data.senderAddress;
|
|
70
|
+
this._calls = data.calls || [];
|
|
71
|
+
this._nonce = data.nonce;
|
|
72
|
+
this._chainId = data.chainId;
|
|
73
|
+
if (data.resourceBounds) {
|
|
74
|
+
this._resourceBounds = data.resourceBounds;
|
|
75
|
+
}
|
|
76
|
+
if (data.tip) {
|
|
77
|
+
this._tip = data.tip;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** @inheritdoc */
|
|
81
|
+
validateAddress(address) {
|
|
82
|
+
if (!utils_1.default.isValidAddress(address.address)) {
|
|
83
|
+
throw new sdk_core_1.BuildTransactionError('Invalid address');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** @inheritdoc */
|
|
87
|
+
validateKey(key) {
|
|
88
|
+
if (!key || !key.key) {
|
|
89
|
+
throw new sdk_core_1.SigningError('Key is required');
|
|
90
|
+
}
|
|
91
|
+
if (!utils_1.default.isValidPrivateKey(key.key)) {
|
|
92
|
+
throw new sdk_core_1.SigningError('Invalid private key');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** @inheritdoc */
|
|
96
|
+
validateTransaction(_transaction) {
|
|
97
|
+
if (!this._sender || !utils_1.default.isValidAddress(this._sender)) {
|
|
98
|
+
throw new sdk_core_1.BuildTransactionError('Invalid or missing sender address');
|
|
99
|
+
}
|
|
100
|
+
if (!this._chainId) {
|
|
101
|
+
throw new sdk_core_1.BuildTransactionError('Chain ID is required');
|
|
102
|
+
}
|
|
103
|
+
if (this._nonce === undefined || this._nonce === null) {
|
|
104
|
+
throw new sdk_core_1.BuildTransactionError('Nonce is required');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** @inheritdoc */
|
|
108
|
+
validateValue(value) {
|
|
109
|
+
if (value.isNaN() || value.isNegative()) {
|
|
110
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid value: ${value.toString()}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** @inheritdoc */
|
|
114
|
+
validateRawTransaction(rawTransaction) {
|
|
115
|
+
if (!rawTransaction) {
|
|
116
|
+
throw new sdk_core_1.BuildTransactionError('Raw transaction is empty');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** @inheritdoc */
|
|
120
|
+
fromImplementation(rawTransaction) {
|
|
121
|
+
this._transaction.fromRawTransaction(rawTransaction);
|
|
122
|
+
return this._transaction;
|
|
123
|
+
}
|
|
124
|
+
/** @inheritdoc */
|
|
125
|
+
async buildImplementation() {
|
|
126
|
+
const sender = this._sender;
|
|
127
|
+
const chainId = this._chainId;
|
|
128
|
+
const nonce = this._nonce;
|
|
129
|
+
const compiledCalldata = utils_1.default.compileExecuteCalldata(this._calls);
|
|
130
|
+
const transactionHash = utils_1.default.calculateInvokeTransactionHash({
|
|
131
|
+
senderAddress: sender,
|
|
132
|
+
compiledCalldata,
|
|
133
|
+
chainId,
|
|
134
|
+
nonce,
|
|
135
|
+
resourceBounds: this._resourceBounds,
|
|
136
|
+
tip: this._tip,
|
|
137
|
+
});
|
|
138
|
+
const data = {
|
|
139
|
+
senderAddress: sender,
|
|
140
|
+
calls: this._calls,
|
|
141
|
+
nonce,
|
|
142
|
+
chainId,
|
|
143
|
+
transactionType: this.transactionType,
|
|
144
|
+
resourceBounds: this._resourceBounds,
|
|
145
|
+
tip: this._tip,
|
|
146
|
+
transactionHash,
|
|
147
|
+
compiledCalldata,
|
|
148
|
+
};
|
|
149
|
+
this._transaction.starknetTransactionData = data;
|
|
150
|
+
return this._transaction;
|
|
151
|
+
}
|
|
152
|
+
// Starknet is TSS-only; signing happens via threshold ECDSA in wallet-platform/OVC, not here.
|
|
153
|
+
signImplementation(_key) {
|
|
154
|
+
throw new sdk_core_1.MethodNotImplementedError('signImplementation');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.TransactionBuilder = TransactionBuilder;
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBT3lCO0FBSXpCLCtDQUE0QztBQUM1QyxvREFBNEI7QUFFNUIsU0FBUyxxQkFBcUI7SUFDNUIsT0FBTztRQUNMLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFO1FBQ3ZFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUU7UUFDbkUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7S0FDeEUsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFVckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFQWCxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUc1QixvQkFBZSxHQUEyQixxQkFBcUIsRUFBRSxDQUFDO1FBQ2xFLFNBQUksR0FBRyxLQUFLLENBQUM7UUFJckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFlLEVBQUUsTUFBZTtRQUM1QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQ0FBbUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FB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YW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBTaWduaW5nRXJyb3IsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEsIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLCBTdGFya25ldENhbGwsIFN0YXJrbmV0UmVzb3VyY2VCb3VuZHMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIGRlZmF1bHRSZXNvdXJjZUJvdW5kcygpOiBTdGFya25ldFJlc291cmNlQm91bmRzIHtcbiAgcmV0dXJuIHtcbiAgICBsMl9nYXM6IHsgbWF4X2Ftb3VudDogJzB4MWM5YzM4MCcsIG1heF9wcmljZV9wZXJfdW5pdDogJzB4MTc0ODc2ZTgwMCcgfSxcbiAgICBsMV9nYXM6IHsgbWF4X2Ftb3VudDogJzB4MCcsIG1heF9wcmljZV9wZXJfdW5pdDogJzB4NWFmMzEwN2E0MDAwJyB9LFxuICAgIGwxX2RhdGFfZ2FzOiB7IG1heF9hbW91bnQ6ICcweDNlOCcsIG1heF9wcmljZV9wZXJfdW5pdDogJzB4MjU0MGJlNDAwJyB9LFxuICB9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NlbmRlcj86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9wdWJsaWNLZXk/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfY2FsbHM6IFN0YXJrbmV0Q2FsbFtdID0gW107XG4gIHByb3RlY3RlZCBfbm9uY2U/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfY2hhaW5JZD86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZXNvdXJjZUJvdW5kczogU3RhcmtuZXRSZXNvdXJjZUJvdW5kcyA9IGRlZmF1bHRSZXNvdXJjZUJvdW5kcygpO1xuICBwcm90ZWN0ZWQgX3RpcCA9ICcweDAnO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2VuZGVyKGFkZHJlc3M6IHN0cmluZywgcHViS2V5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFhZGRyZXNzIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFkZHJlc3MsIGdvdDogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAocHViS2V5KSB7XG4gICAgICBpZiAoIXV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViS2V5KSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHB1YktleSwgZ290OiAnICsgcHViS2V5KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlcml2ZWRBZGRyZXNzID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5KTtcbiAgICAgIGlmICh1dGlscy5ub3JtYWxpemVBZGRyZXNzKGRlcml2ZWRBZGRyZXNzKSAhPT0gdXRpbHMubm9ybWFsaXplQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgIGBBZGRyZXNzIGRvZXMgbm90IG1hdGNoIHB1YmxpYyBrZXkuIEV4cGVjdGVkICR7ZGVyaXZlZEFkZHJlc3N9LCBnb3QgJHthZGRyZXNzfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3B1YmxpY0tleSA9IHB1YktleTtcbiAgICB9XG4gICAgdGhpcy5fc2VuZGVyID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBub25jZShub25jZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fbm9uY2UgPSBub25jZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjaGFpbklkKGNoYWluSWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2NoYWluSWQgPSBjaGFpbklkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHJlc291cmNlQm91bmRzKHJiOiBTdGFya25ldFJlc291cmNlQm91bmRzKTogdGhpcyB7XG4gICAgdGhpcy5fcmVzb3VyY2VCb3VuZHMgPSByYjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0aXAodGlwOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl90aXAgPSB0aXA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICAgIGNvbnN0IGRhdGEgPSB0eC5zdGFya25ldFRyYW5zYWN0aW9uRGF0YTtcbiAgICB0aGlzLl9zZW5kZXIgPSBkYXRhLnNlbmRlckFkZHJlc3M7XG4gICAgdGhpcy5fY2FsbHMgPSBkYXRhLmNhbGxzIHx8IFtdO1xuICAgIHRoaXMuX25vbmNlID0gZGF0YS5ub25jZTtcbiAgICB0aGlzLl9jaGFpbklkID0gZGF0YS5jaGFpbklkO1xuICAgIGlmIChkYXRhLnJlc291cmNlQm91bmRzKSB7XG4gICAgICB0aGlzLl9yZXNvdXJjZUJvdW5kcyA9IGRhdGEucmVzb3VyY2VCb3VuZHM7XG4gICAgfVxuICAgIGlmIChkYXRhLnRpcCkge1xuICAgICAgdGhpcy5fdGlwID0gZGF0YS50aXA7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGlmICgha2V5IHx8ICFrZXkua2V5KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdLZXkgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShrZXkua2V5KSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NlbmRlciB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3ModGhpcy5fc2VuZGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIHNlbmRlciBhZGRyZXNzJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fY2hhaW5JZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQ2hhaW4gSUQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX25vbmNlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fbm9uY2UgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vbmNlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc05hTigpIHx8IHZhbHVlLmlzTmVnYXRpdmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB2YWx1ZTogJHt2YWx1ZS50b1N0cmluZygpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogU3RhcmtuZXRUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBzZW5kZXIgPSB0aGlzLl9zZW5kZXIgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGNoYWluSWQgPSB0aGlzLl9jaGFpbklkIGFzIHN0cmluZztcbiAgICBjb25zdCBub25jZSA9IHRoaXMuX25vbmNlIGFzIHN0cmluZztcbiAgICBjb25zdCBjb21waWxlZENhbGxkYXRhID0gdXRpbHMuY29tcGlsZUV4ZWN1dGVDYWxsZGF0YSh0aGlzLl9jYWxscyk7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbkhhc2ggPSB1dGlscy5jYWxjdWxhdGVJbnZva2VUcmFuc2FjdGlvbkhhc2goe1xuICAgICAgc2VuZGVyQWRkcmVzczogc2VuZGVyLFxuICAgICAgY29tcGlsZWRDYWxsZGF0YSxcbiAgICAgIGNoYWluSWQsXG4gICAgICBub25jZSxcbiAgICAgIHJlc291cmNlQm91bmRzOiB0aGlzLl9yZXNvdXJjZUJvdW5kcyxcbiAgICAgIHRpcDogdGhpcy5fdGlwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YTogU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBzZW5kZXJBZGRyZXNzOiBzZW5kZXIsXG4gICAgICBjYWxsczogdGhpcy5fY2FsbHMsXG4gICAgICBub25jZSxcbiAgICAgIGNoYWluSWQsXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IHRoaXMudHJhbnNhY3Rpb25UeXBlLFxuICAgICAgcmVzb3VyY2VCb3VuZHM6IHRoaXMuX3Jlc291cmNlQm91bmRzLFxuICAgICAgdGlwOiB0aGlzLl90aXAsXG4gICAgICB0cmFuc2FjdGlvbkhhc2gsXG4gICAgICBjb21waWxlZENhbGxkYXRhLFxuICAgIH07XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zdGFya25ldFRyYW5zYWN0aW9uRGF0YSA9IGRhdGE7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLy8gU3RhcmtuZXQgaXMgVFNTLW9ubHk7IHNpZ25pbmcgaGFwcGVucyB2aWEgdGhyZXNob2xkIEVDRFNBIGluIHdhbGxldC1wbGF0Zm9ybS9PVkMsIG5vdCBoZXJlLlxuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKF9rZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoJ3NpZ25JbXBsZW1lbnRhdGlvbicpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
import { TransferBuilder } from './transferBuilder';
|
|
6
|
+
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
7
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
|
+
/** @inheritdoc */
|
|
9
|
+
from(rawTransaction: string): Promise<TransactionBuilder>;
|
|
10
|
+
private static initializeBuilder;
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
getTransferBuilder(tx?: Transaction): TransferBuilder;
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
getWalletInitializationBuilder(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAsD,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IACZ,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAe/D,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;CAGvC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionBuilderFactory = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
|
+
const transaction_1 = require("./transaction");
|
|
6
|
+
const transferBuilder_1 = require("./transferBuilder");
|
|
7
|
+
const iface_1 = require("./iface");
|
|
8
|
+
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
9
|
+
constructor(_coinConfig) {
|
|
10
|
+
super(_coinConfig);
|
|
11
|
+
}
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
async from(rawTransaction) {
|
|
14
|
+
const transaction = new transaction_1.Transaction(this._coinConfig);
|
|
15
|
+
await transaction.fromRawTransaction(rawTransaction);
|
|
16
|
+
try {
|
|
17
|
+
switch (transaction.starknetTransactionData.transactionType) {
|
|
18
|
+
case iface_1.StarknetTransactionType.INVOKE:
|
|
19
|
+
return this.getTransferBuilder(transaction);
|
|
20
|
+
default:
|
|
21
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction type');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction: ' + e.message);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static initializeBuilder(tx, builder) {
|
|
29
|
+
if (tx) {
|
|
30
|
+
builder.initBuilder(tx);
|
|
31
|
+
}
|
|
32
|
+
return builder;
|
|
33
|
+
}
|
|
34
|
+
/** @inheritdoc */
|
|
35
|
+
getTransferBuilder(tx) {
|
|
36
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
|
|
37
|
+
}
|
|
38
|
+
/** @inheritdoc */
|
|
39
|
+
getWalletInitializationBuilder() {
|
|
40
|
+
throw new sdk_core_1.MethodNotImplementedError();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBb0g7QUFFcEgsK0NBQTRDO0FBRTVDLHVEQUFvRDtBQUNwRCxtQ0FBa0Q7QUFFbEQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLGNBQXNCO1FBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDO1lBQ0gsUUFBUSxXQUFXLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzVELEtBQUssK0JBQXVCLENBQUMsTUFBTTtvQkFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzlDO29CQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsaUJBQWlCLENBQStCLEVBQTJCLEVBQUUsT0FBVTtRQUNwRyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFnQjtRQUNqQyxPQUFPLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLG9DQUF5QixFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBckNELDhEQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgZnJvbShyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkJ1aWxkZXI+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICBhd2FpdCB0cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLnN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLnRyYW5zYWN0aW9uVHlwZSkge1xuICAgICAgICBjYXNlIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLklOVk9LRTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiAnICsgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { StarknetTransactionType } from './iface';
|
|
5
|
+
export declare class TransferBuilder extends TransactionBuilder {
|
|
6
|
+
protected _receiverAddress?: string;
|
|
7
|
+
protected _amount?: string;
|
|
8
|
+
protected _tokenContractAddress: string;
|
|
9
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
10
|
+
protected get transactionType(): StarknetTransactionType;
|
|
11
|
+
receiverId(address: string): this;
|
|
12
|
+
amount(value: string): this;
|
|
13
|
+
tokenContractAddress(address: string): this;
|
|
14
|
+
/** @inheritdoc */
|
|
15
|
+
initBuilder(tx: Transaction): void;
|
|
16
|
+
/** @inheritdoc */
|
|
17
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
18
|
+
private compileTransferCalldata;
|
|
19
|
+
private validateTransfer;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAgB,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIhE,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAuB;gBAElD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,uBAAuB,CAEvD;IAEM,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQjC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3B,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQlD,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAYlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3D,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,gBAAgB;CAiBzB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TransferBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
8
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
9
|
+
const iface_1 = require("./iface");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
12
|
+
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
this._tokenContractAddress = constants_1.STRK_TOKEN_CONTRACT;
|
|
16
|
+
}
|
|
17
|
+
get transactionType() {
|
|
18
|
+
return iface_1.StarknetTransactionType.INVOKE;
|
|
19
|
+
}
|
|
20
|
+
receiverId(address) {
|
|
21
|
+
if (!address || !utils_1.default.isValidAddress(address)) {
|
|
22
|
+
throw new sdk_core_1.BuildTransactionError('Invalid or missing receiver address, got: ' + address);
|
|
23
|
+
}
|
|
24
|
+
this._receiverAddress = address;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
amount(value) {
|
|
28
|
+
const val = BigInt(value);
|
|
29
|
+
if (val < 0n) {
|
|
30
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid amount: ${value}`);
|
|
31
|
+
}
|
|
32
|
+
this._amount = value;
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
tokenContractAddress(address) {
|
|
36
|
+
if (!address || !utils_1.default.isValidAddress(address)) {
|
|
37
|
+
throw new sdk_core_1.BuildTransactionError('Invalid token contract address, got: ' + address);
|
|
38
|
+
}
|
|
39
|
+
this._tokenContractAddress = address;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
/** @inheritdoc */
|
|
43
|
+
initBuilder(tx) {
|
|
44
|
+
super.initBuilder(tx);
|
|
45
|
+
if (this._calls.length > 0) {
|
|
46
|
+
const transfer = utils_1.default.parseTransferCall(this._calls[0]);
|
|
47
|
+
if (transfer) {
|
|
48
|
+
this._receiverAddress = transfer.recipient;
|
|
49
|
+
this._amount = transfer.amount;
|
|
50
|
+
this._tokenContractAddress = transfer.tokenContract;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
async buildImplementation() {
|
|
56
|
+
this.validateTransfer();
|
|
57
|
+
const transferCall = {
|
|
58
|
+
contractAddress: this._tokenContractAddress,
|
|
59
|
+
entrypoint: 'transfer',
|
|
60
|
+
calldata: this.compileTransferCalldata(this._receiverAddress, this._amount),
|
|
61
|
+
};
|
|
62
|
+
this._calls = [transferCall];
|
|
63
|
+
return super.buildImplementation();
|
|
64
|
+
}
|
|
65
|
+
compileTransferCalldata(recipient, amount) {
|
|
66
|
+
const amountBig = BigInt(amount);
|
|
67
|
+
return [recipient, '0x' + (amountBig & constants_1.MASK_128).toString(16), '0x' + (amountBig >> 128n).toString(16)];
|
|
68
|
+
}
|
|
69
|
+
validateTransfer() {
|
|
70
|
+
if (!this._sender) {
|
|
71
|
+
throw new sdk_core_1.BuildTransactionError('Sender is required');
|
|
72
|
+
}
|
|
73
|
+
if (!this._receiverAddress) {
|
|
74
|
+
throw new sdk_core_1.BuildTransactionError('Receiver is required');
|
|
75
|
+
}
|
|
76
|
+
if (!this._amount) {
|
|
77
|
+
throw new sdk_core_1.BuildTransactionError('Amount is required');
|
|
78
|
+
}
|
|
79
|
+
if (!utils_1.default.isValidAddress(this._sender)) {
|
|
80
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid sender address: ${this._sender}`);
|
|
81
|
+
}
|
|
82
|
+
if (!utils_1.default.isValidAddress(this._receiverAddress)) {
|
|
83
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid receiver address: ${this._receiverAddress}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.TransferBuilder = TransferBuilder;
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXdEO0FBRXhELDZEQUEwRDtBQUUxRCxtQ0FBZ0U7QUFDaEUsMkNBQTREO0FBQzVELG9EQUE0QjtBQUU1QixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBS3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSFgsMEJBQXFCLEdBQVcsK0JBQW1CLENBQUM7SUFJOUQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLCtCQUF1QixDQUFDLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsNENBQTRDLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDekIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1CQUFtQixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxPQUFlO1FBQ3pDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFLLENBQUMsY0FB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eyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFya25ldENhbGwsIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBTVFJLX1RPS0VOX0NPTlRSQUNULCBNQVNLXzEyOCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfcmVjZWl2ZXJBZGRyZXNzPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Ftb3VudD86IHN0cmluZztcbiAgcHJvdGVjdGVkIF90b2tlbkNvbnRyYWN0QWRkcmVzczogc3RyaW5nID0gU1RSS19UT0tFTl9DT05UUkFDVDtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLklOVk9LRTtcbiAgfVxuXG4gIHB1YmxpYyByZWNlaXZlcklkKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzcyB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyByZWNlaXZlciBhZGRyZXNzLCBnb3Q6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgdGhpcy5fcmVjZWl2ZXJBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhbW91bnQodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHZhbCA9IEJpZ0ludCh2YWx1ZSk7XG4gICAgaWYgKHZhbCA8IDBuKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIGFtb3VudDogJHt2YWx1ZX1gKTtcbiAgICB9XG4gICAgdGhpcy5fYW1vdW50ID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdG9rZW5Db250cmFjdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFhZGRyZXNzIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0b2tlbiBjb250cmFjdCBhZGRyZXNzLCBnb3Q6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgdGhpcy5fdG9rZW5Db250cmFjdEFkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBpZiAodGhpcy5fY2FsbHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdHJhbnNmZXIgPSB1dGlscy5wYXJzZVRyYW5zZmVyQ2FsbCh0aGlzLl9jYWxsc1swXSk7XG4gICAgICBpZiAodHJhbnNmZXIpIHtcbiAgICAgICAgdGhpcy5fcmVjZWl2ZXJBZGRyZXNzID0gdHJhbnNmZXIucmVjaXBpZW50O1xuICAgICAgICB0aGlzLl9hbW91bnQgPSB0cmFuc2Zlci5hbW91bnQ7XG4gICAgICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gdHJhbnNmZXIudG9rZW5Db250cmFjdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudmFsaWRhdGVUcmFuc2ZlcigpO1xuXG4gICAgY29uc3QgdHJhbnNmZXJDYWxsOiBTdGFya25ldENhbGwgPSB7XG4gICAgICBjb250cmFjdEFkZHJlc3M6IHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzLFxuICAgICAgZW50cnlwb2ludDogJ3RyYW5zZmVyJyxcbiAgICAgIGNhbGxkYXRhOiB0aGlzLmNvbXBpbGVUcmFuc2ZlckNhbGxkYXRhKHRoaXMuX3JlY2VpdmVyQWRkcmVzcyBhcyBzdHJpbmcsIHRoaXMuX2Ftb3VudCBhcyBzdHJpbmcpLFxuICAgIH07XG5cbiAgICB0aGlzLl9jYWxscyA9IFt0cmFuc2ZlckNhbGxdO1xuXG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGlsZVRyYW5zZmVyQ2FsbGRhdGEocmVjaXBpZW50OiBzdHJpbmcsIGFtb3VudDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGFtb3VudEJpZyA9IEJpZ0ludChhbW91bnQpO1xuICAgIHJldHVybiBbcmVjaXBpZW50LCAnMHgnICsgKGFtb3VudEJpZyAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksICcweCcgKyAoYW1vdW50QmlnID4+IDEyOG4pLnRvU3RyaW5nKDE2KV07XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNmZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1NlbmRlciBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3JlY2VpdmVyQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignUmVjZWl2ZXIgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9hbW91bnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0Ftb3VudCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKHRoaXMuX3NlbmRlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc2VuZGVyIGFkZHJlc3M6ICR7dGhpcy5fc2VuZGVyfWApO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKHRoaXMuX3JlY2VpdmVyQWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgcmVjZWl2ZXIgYWRkcmVzczogJHt0aGlzLl9yZWNlaXZlckFkZHJlc3N9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|