@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.
Files changed (60) hide show
  1. package/LICENSE +191 -0
  2. package/dist/src/index.d.ts +4 -0
  3. package/dist/src/index.d.ts.map +1 -0
  4. package/dist/src/index.js +20 -0
  5. package/dist/src/lib/constants.d.ts +13 -0
  6. package/dist/src/lib/constants.d.ts.map +1 -0
  7. package/dist/src/lib/constants.js +25 -0
  8. package/dist/src/lib/iface.d.ts +78 -0
  9. package/dist/src/lib/iface.d.ts.map +1 -0
  10. package/dist/src/lib/iface.js +9 -0
  11. package/dist/src/lib/index.d.ts +9 -0
  12. package/dist/src/lib/index.d.ts.map +1 -0
  13. package/dist/src/lib/index.js +53 -0
  14. package/dist/src/lib/keyPair.d.ts +9 -0
  15. package/dist/src/lib/keyPair.d.ts.map +1 -0
  16. package/dist/src/lib/keyPair.js +48 -0
  17. package/dist/src/lib/transaction.d.ts +23 -0
  18. package/dist/src/lib/transaction.d.ts.map +1 -0
  19. package/dist/src/lib/transaction.js +145 -0
  20. package/dist/src/lib/transactionBuilder.d.ts +43 -0
  21. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  22. package/dist/src/lib/transactionBuilder.js +158 -0
  23. package/dist/src/lib/transactionBuilderFactory.d.ts +16 -0
  24. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  25. package/dist/src/lib/transactionBuilderFactory.js +44 -0
  26. package/dist/src/lib/transferBuilder.d.ts +21 -0
  27. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  28. package/dist/src/lib/transferBuilder.js +88 -0
  29. package/dist/src/lib/utils.d.ts +104 -0
  30. package/dist/src/lib/utils.d.ts.map +1 -0
  31. package/dist/src/lib/utils.js +290 -0
  32. package/dist/src/register.d.ts +3 -0
  33. package/dist/src/register.d.ts.map +1 -0
  34. package/dist/src/register.js +10 -0
  35. package/dist/src/starknet.d.ts +35 -0
  36. package/dist/src/starknet.d.ts.map +1 -0
  37. package/dist/src/starknet.js +127 -0
  38. package/dist/test/resources/starknet.d.ts +98 -0
  39. package/dist/test/resources/starknet.d.ts.map +1 -0
  40. package/dist/test/resources/starknet.js +104 -0
  41. package/dist/test/unit/keyPair.d.ts +2 -0
  42. package/dist/test/unit/keyPair.d.ts.map +1 -0
  43. package/dist/test/unit/keyPair.js +56 -0
  44. package/dist/test/unit/starknet.d.ts +2 -0
  45. package/dist/test/unit/starknet.d.ts.map +1 -0
  46. package/dist/test/unit/starknet.js +126 -0
  47. package/dist/test/unit/transaction.d.ts +2 -0
  48. package/dist/test/unit/transaction.d.ts.map +1 -0
  49. package/dist/test/unit/transaction.js +53 -0
  50. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  51. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  52. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +74 -0
  53. package/dist/test/unit/transferBuilder.d.ts +2 -0
  54. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  55. package/dist/test/unit/transferBuilder.js +208 -0
  56. package/dist/test/unit/utils.d.ts +2 -0
  57. package/dist/test/unit/utils.d.ts.map +1 -0
  58. package/dist/test/unit/utils.js +260 -0
  59. package/dist/tsconfig.tsbuildinfo +1 -0
  60. package/package.json +52 -10
@@ -0,0 +1,127 @@
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.Starknet = void 0;
7
+ const sdk_core_1 = require("@bitgo/sdk-core");
8
+ const statics_1 = require("@bitgo/statics");
9
+ const crypto_1 = require("crypto");
10
+ const transactionBuilderFactory_1 = require("./lib/transactionBuilderFactory");
11
+ const utils_1 = __importDefault(require("./lib/utils"));
12
+ const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
13
+ class Starknet extends sdk_core_1.BaseCoin {
14
+ constructor(bitgo, staticsCoin) {
15
+ super(bitgo);
16
+ if (!staticsCoin) {
17
+ throw new Error('missing required constructor parameter staticsCoin');
18
+ }
19
+ this._staticsCoin = staticsCoin;
20
+ }
21
+ static createInstance(bitgo, staticsCoin) {
22
+ return new Starknet(bitgo, staticsCoin);
23
+ }
24
+ getChain() {
25
+ return this._staticsCoin.name;
26
+ }
27
+ getBaseChain() {
28
+ return this._staticsCoin.name;
29
+ }
30
+ getFamily() {
31
+ return this._staticsCoin.family;
32
+ }
33
+ getFullName() {
34
+ return this._staticsCoin.fullName;
35
+ }
36
+ getBaseFactor() {
37
+ return Math.pow(10, this._staticsCoin.decimalPlaces);
38
+ }
39
+ async explainTransaction(params) {
40
+ const factory = this.getBuilderFactory();
41
+ const txBuilder = await factory.from(params.transactionHex);
42
+ const transaction = await txBuilder.build();
43
+ return transaction.explainTransaction();
44
+ }
45
+ async verifyTransaction(params) {
46
+ const { txParams, txPrebuild } = params;
47
+ const txHex = txPrebuild?.txHex;
48
+ if (!txHex) {
49
+ throw new Error('txHex is required');
50
+ }
51
+ const explainedTx = await this.explainTransaction({ transactionHex: txHex });
52
+ if (Array.isArray(txParams.recipients) && txParams.recipients.length > 0) {
53
+ if (txParams.recipients.length > 1) {
54
+ throw new Error(`${this.getChain()} doesn't support sending to more than 1 destination address within a single transaction. Try again, using only a single recipient.`);
55
+ }
56
+ if (explainedTx.outputs.length !== 1) {
57
+ throw new Error('Tx outputs does not match with expected txParams recipients');
58
+ }
59
+ const output = explainedTx.outputs[0];
60
+ const recipient = txParams.recipients[0];
61
+ const normalizedOutput = utils_1.default.normalizeAddress(output.address);
62
+ const normalizedRecipient = utils_1.default.normalizeAddress(recipient.address);
63
+ if (normalizedOutput !== normalizedRecipient || output.amount !== recipient.amount) {
64
+ throw new Error('Tx outputs does not match with expected txParams recipients');
65
+ }
66
+ }
67
+ return true;
68
+ }
69
+ async isWalletAddress(params) {
70
+ const { address } = params;
71
+ if (!this.isValidAddress(address)) {
72
+ throw new sdk_core_1.InvalidAddressError(`invalid address: ${address}`);
73
+ }
74
+ const result = await (0, sdk_core_1.verifyMPCWalletAddress)({ ...params, keyCurve: 'secp256k1' }, this.isValidAddress.bind(this), (pubKey) => utils_1.default.getAddressFromPublicKey(pubKey));
75
+ if (!result) {
76
+ throw new sdk_core_1.UnexpectedAddressError(`address validation failure: address ${address} is not a wallet address`);
77
+ }
78
+ return true;
79
+ }
80
+ async parseTransaction(params) {
81
+ return {};
82
+ }
83
+ generateKeyPair(seed) {
84
+ return utils_1.default.generateKeyPair(seed);
85
+ }
86
+ isValidAddress(address) {
87
+ return utils_1.default.isValidAddress(address);
88
+ }
89
+ // Starknet is TSS-only; signing is handled by threshold ECDSA in wallet-platform/OVC.
90
+ async signTransaction(_params) {
91
+ throw new sdk_core_1.MethodNotImplementedError('signTransaction');
92
+ }
93
+ isValidPub(key) {
94
+ return utils_1.default.isValidPublicKey(key);
95
+ }
96
+ isValidPrv(key) {
97
+ return utils_1.default.isValidPrivateKey(key);
98
+ }
99
+ /** @inheritDoc */
100
+ supportsTss() {
101
+ return true;
102
+ }
103
+ /** inherited doc */
104
+ getDefaultMultisigType() {
105
+ return sdk_core_1.multisigTypes.tss;
106
+ }
107
+ /** @inheritDoc */
108
+ getMPCAlgorithm() {
109
+ return 'ecdsa';
110
+ }
111
+ /** @inheritDoc **/
112
+ getHashFunction() {
113
+ return (0, crypto_1.createHash)('sha256');
114
+ }
115
+ getBuilderFactory() {
116
+ return new transactionBuilderFactory_1.TransactionBuilderFactory(statics_1.coins.get(this.getBaseChain()));
117
+ }
118
+ /** @inheritDoc */
119
+ auditDecryptedKey({ multiSigType, prv, publicKey }) {
120
+ if (multiSigType !== 'tss') {
121
+ throw new Error('Unsupported multisigtype');
122
+ }
123
+ (0, sdk_lib_mpc_1.auditEcdsaPrivateKey)(prv, publicKey);
124
+ }
125
+ }
126
+ exports.Starknet = Starknet;
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcmtuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhcmtuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBaUJ5QjtBQUN6Qiw0Q0FBb0U7QUFDcEUsbUNBQTBDO0FBRzFDLCtFQUE0RTtBQUM1RSx3REFBZ0M7QUFDaEMsb0RBQTBEO0FBRTFELE1BQWEsUUFBUyxTQUFRLG1CQUFRO0lBRXBDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUE0QjtRQUNuRCxNQUFNLE9B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QUksWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBQSxrQ0FBb0IsRUFBQyxHQUFhLEVBQUUsU0FBbUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQXRKRCw0QkFzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgS2V5UGFpcixcbiAgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcixcbiAgTVBDQWxnb3JpdGhtLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgU3RhcmtuZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvbkhleFBhcmFtcywgVHNzVmVyaWZ5U3RhcmtuZXRBZGRyZXNzT3B0aW9ucyB9IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBhdWRpdEVjZHNhUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFya25ldCBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFN0YXJrbmV0KGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5uYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUNoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cblxuICBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLl9zdGF0aWNzQ29pbi5kZWNpbWFsUGxhY2VzKTtcbiAgfVxuXG4gIGFzeW5jIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IFRyYW5zYWN0aW9uSGV4UGFyYW1zKTogUHJvbWlzZTxTdGFya25ldFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyRmFjdG9yeSgpO1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGF3YWl0IGZhY3RvcnkuZnJvbShwYXJhbXMudHJhbnNhY3Rpb25IZXgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgdHhIZXggPSB0eFByZWJ1aWxkPy50eEhleDtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3R4SGV4IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSBhd2FpdCB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbih7IHRyYW5zYWN0aW9uSGV4OiB0eEhleCB9KTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHR4UGFyYW1zLnJlY2lwaWVudHMpICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7dGhpcy5nZXRDaGFpbigpfSBkb2Vzbid0IHN1cHBvcnQgc2VuZGluZyB0byBtb3JlIHRoYW4gMSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVHJ5IGFnYWluLCB1c2luZyBvbmx5IGEgc2luZ2xlIHJlY2lwaWVudC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChleHBsYWluZWRUeC5vdXRwdXRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG91dHB1dCA9IGV4cGxhaW5lZFR4Lm91dHB1dHNbMF07XG4gICAgICBjb25zdCByZWNpcGllbnQgPSB0eFBhcmFtcy5yZWNpcGllbnRzWzBdO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZE91dHB1dCA9IHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3Mob3V0cHV0LmFkZHJlc3MpO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFJlY2lwaWVudCA9IHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3MocmVjaXBpZW50LmFkZHJlc3MpO1xuICAgICAgaWYgKG5vcm1hbGl6ZWRPdXRwdXQgIT09IG5vcm1hbGl6ZWRSZWNpcGllbnQgfHwgb3V0cHV0LmFtb3VudCAhPT0gcmVjaXBpZW50LmFtb3VudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVHNzVmVyaWZ5U3RhcmtuZXRBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgYWRkcmVzcyB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyhcbiAgICAgIHsgLi4ucGFyYW1zLCBrZXlDdXJ2ZTogJ3NlY3AyNTZrMScgfSxcbiAgICAgIHRoaXMuaXNWYWxpZEFkZHJlc3MuYmluZCh0aGlzKSxcbiAgICAgIChwdWJLZXkpID0+IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YktleSlcbiAgICApO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogYWRkcmVzcyAke2FkZHJlc3N9IGlzIG5vdCBhIHdhbGxldCBhZGRyZXNzYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgcmV0dXJuIHV0aWxzLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8vIFN0YXJrbmV0IGlzIFRTUy1vbmx5OyBzaWduaW5nIGlzIGhhbmRsZWQgYnkgdGhyZXNob2xkIEVDRFNBIGluIHdhbGxldC1wbGF0Zm9ybS9PVkMuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihfcGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCdzaWduVHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGlzVmFsaWRQdWIoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgaXNWYWxpZFBydihrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHN1cHBvcnRzVHNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpOiBNdWx0aXNpZ1R5cGUge1xuICAgIHJldHVybiBtdWx0aXNpZ1R5cGVzLnRzcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VjZHNhJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0SGFzaEZ1bmN0aW9uKCk6IEhhc2gge1xuICAgIHJldHVybiBjcmVhdGVIYXNoKCdzaGEyNTYnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnVpbGRlckZhY3RvcnkoKTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldEJhc2VDaGFpbigpKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXVkaXREZWNyeXB0ZWRLZXkoeyBtdWx0aVNpZ1R5cGUsIHBydiwgcHVibGljS2V5IH06IEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKG11bHRpU2lnVHlwZSAhPT0gJ3RzcycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgbXVsdGlzaWd0eXBlJyk7XG4gICAgfVxuICAgIGF1ZGl0RWNkc2FQcml2YXRlS2V5KHBydiBhcyBzdHJpbmcsIHB1YmxpY0tleSBhcyBzdHJpbmcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,98 @@
1
+ import { StarknetTransactionType } from '../../src/lib/iface';
2
+ export declare const Accounts: {
3
+ account1: {
4
+ secretKey: string;
5
+ publicKey: string;
6
+ address: string;
7
+ };
8
+ account2: {
9
+ secretKey: string;
10
+ publicKey: string;
11
+ address: string;
12
+ };
13
+ account3: {
14
+ publicKey: string;
15
+ secretKey: string;
16
+ address: string;
17
+ };
18
+ errorsAccounts: {
19
+ account1: {
20
+ secretKey: string;
21
+ publicKey: string;
22
+ address: string;
23
+ };
24
+ account2: {
25
+ secretKey: string;
26
+ publicKey: string;
27
+ address: string;
28
+ };
29
+ };
30
+ };
31
+ export declare const StarknetTransactionData: {
32
+ senderAddress: string;
33
+ nonce: string;
34
+ calls: {
35
+ contractAddress: string;
36
+ entrypoint: string;
37
+ calldata: string[];
38
+ }[];
39
+ chainId: string;
40
+ transactionType: StarknetTransactionType;
41
+ };
42
+ export declare const rawTx: {
43
+ transfer: {
44
+ unsigned: string;
45
+ signed: string;
46
+ };
47
+ };
48
+ export declare const TEST_AMOUNTS: {
49
+ small: string;
50
+ medium: string;
51
+ large: string;
52
+ };
53
+ export declare const SandboxTransferData: {
54
+ senderAddress: string;
55
+ receiverAddress: string;
56
+ amount: string;
57
+ chainId: string;
58
+ tokenContract: string;
59
+ resourceBounds: {
60
+ l2_gas: {
61
+ max_amount: string;
62
+ max_price_per_unit: string;
63
+ };
64
+ l1_gas: {
65
+ max_amount: string;
66
+ max_price_per_unit: string;
67
+ };
68
+ l1_data_gas: {
69
+ max_amount: string;
70
+ max_price_per_unit: string;
71
+ };
72
+ };
73
+ };
74
+ export declare const KnownGoodInvokeTx: {
75
+ senderAddress: string;
76
+ receiverAddress: string;
77
+ amount: string;
78
+ tokenContract: string;
79
+ nonce: string;
80
+ chainId: string;
81
+ tip: string;
82
+ resourceBounds: {
83
+ l2_gas: {
84
+ max_amount: string;
85
+ max_price_per_unit: string;
86
+ };
87
+ l1_gas: {
88
+ max_amount: string;
89
+ max_price_per_unit: string;
90
+ };
91
+ l1_data_gas: {
92
+ max_amount: string;
93
+ max_price_per_unit: string;
94
+ };
95
+ };
96
+ expectedTxHash: string;
97
+ };
98
+ //# sourceMappingURL=starknet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starknet.d.ts","sourceRoot":"","sources":["../../../test/resources/starknet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BpB,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;CAYnC,CAAC;AA2BF,eAAO,MAAM,KAAK;;;;;CAKjB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;CAW/B,CAAC;AAIF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;CAc7B,CAAC"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KnownGoodInvokeTx = exports.SandboxTransferData = exports.TEST_AMOUNTS = exports.rawTx = exports.StarknetTransactionData = exports.Accounts = void 0;
4
+ const iface_1 = require("../../src/lib/iface");
5
+ exports.Accounts = {
6
+ account1: {
7
+ secretKey: 'c5bccb8f471c5c9eb6483aa77ee4b700003b1e12df430a24d93238eb378b968b',
8
+ publicKey: '042ab77b959e28c4fa47fa8fb9e57cec3d66df5684d076ac2e4c5f28fd69a23dd31a59f908c8add51eab3530b4ac5d015166eaf2198c52fa9a8df7cfaeb8fdb7d4',
9
+ address: '0x05a63dd0563db1ab71b5ffd25a6b4aaf5730de5de53d64423e4293fc8b3e12f6',
10
+ },
11
+ account2: {
12
+ secretKey: '73312c28d0d455b6a29a9a66811ffda94f3db6bfd57bf5c2bed917ee5928e15f',
13
+ publicKey: '044e01707f70f6ad8d9f79e5f2c2f0bac5e91520e5e2491354c6c7827b59d44148847f9180ac9679a6ce66f69c330551a99f8f9b7419c437705602a54c258a9dfe',
14
+ address: '0x02e153ef86ae7682160f69f4218b6a41aebc79ca11dabb1a4fcd7cc55f16f977',
15
+ },
16
+ account3: {
17
+ publicKey: '042281378584012843130dce9b19002f88a949f237397e2f6cda2db1392d54f6345faaf51c384fbfe4e8f67eb12fdb53732d2ddfe7470f9310a0bf824dad3f6b1b',
18
+ secretKey: '7b4de3d8cc3e312c70f674b52f11818205546ca7036c8071997c46e429160dc3',
19
+ address: '0x00b45a0e9f4b1eff1e2d2e528ae7c443655346c62750518217fb82cbce4dbb54',
20
+ },
21
+ errorsAccounts: {
22
+ account1: {
23
+ secretKey: 'not ok',
24
+ publicKey: 'not ok',
25
+ address: 'not ok',
26
+ },
27
+ account2: {
28
+ secretKey: 'test_test',
29
+ publicKey: 'test_test',
30
+ address: 'invalid',
31
+ },
32
+ },
33
+ };
34
+ exports.StarknetTransactionData = {
35
+ senderAddress: exports.Accounts.account1.address,
36
+ nonce: '0',
37
+ calls: [
38
+ {
39
+ contractAddress: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
40
+ entrypoint: 'transfer',
41
+ calldata: [exports.Accounts.account2.address, '0xde0b6b3a7640000', '0x0'],
42
+ },
43
+ ],
44
+ chainId: '0x534e5f5345504f4c4941',
45
+ transactionType: iface_1.StarknetTransactionType.INVOKE,
46
+ };
47
+ // Raw transaction hex (JSON serialized to hex)
48
+ const rawTxUnsigned = Buffer.from(JSON.stringify({
49
+ senderAddress: exports.Accounts.account1.address,
50
+ calls: exports.StarknetTransactionData.calls,
51
+ nonce: '0',
52
+ chainId: '0x534e5f5345504f4c4941',
53
+ transactionType: iface_1.StarknetTransactionType.INVOKE,
54
+ }), 'utf-8').toString('hex');
55
+ const rawTxSigned = Buffer.from(JSON.stringify({
56
+ senderAddress: exports.Accounts.account1.address,
57
+ calls: exports.StarknetTransactionData.calls,
58
+ nonce: '0',
59
+ chainId: '0x534e5f5345504f4c4941',
60
+ transactionType: iface_1.StarknetTransactionType.INVOKE,
61
+ signature: ['0xabc123', '0xdef456', '0x789012', '0x345678', '0x0'],
62
+ transactionHash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
63
+ }), 'utf-8').toString('hex');
64
+ exports.rawTx = {
65
+ transfer: {
66
+ unsigned: rawTxUnsigned,
67
+ signed: rawTxSigned,
68
+ },
69
+ };
70
+ exports.TEST_AMOUNTS = {
71
+ small: '1000000000000000000',
72
+ medium: '10000000000000000000',
73
+ large: '999999999999999999999999',
74
+ };
75
+ exports.SandboxTransferData = {
76
+ senderAddress: '0x1559292d3f9ea355458f83adf235b400e79786af5dc5e3b50f5505caa2bdc84',
77
+ receiverAddress: '0x4a1e86ae265e6e6ecbea5be7f67117c3540f8aaf2ad7f1cfec33c53080f05af',
78
+ amount: '1000000000000000000',
79
+ chainId: '0x534e5f5345504f4c4941',
80
+ tokenContract: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
81
+ resourceBounds: {
82
+ l2_gas: { max_amount: '0x1c9c380', max_price_per_unit: '0x174876e800' },
83
+ l1_gas: { max_amount: '0x0', max_price_per_unit: '0x5af3107a4000' },
84
+ l1_data_gas: { max_amount: '0x3e8', max_price_per_unit: '0x2540be400' },
85
+ },
86
+ };
87
+ // Known-good tx from coins-sandbox/strkMPC/transferLocal.ts (block 9537253, Sepolia)
88
+ // All inputs from the sandbox script; nonce confirmed via Voyager explorer.
89
+ exports.KnownGoodInvokeTx = {
90
+ senderAddress: '0x1559292d3f9ea355458f83adf235b400e79786af5dc5e3b50f5505caa2bdc84',
91
+ receiverAddress: '0x4a1e86ae265e6e6ecbea5be7f67117c3540f8aaf2ad7f1cfec33c53080f05af',
92
+ amount: '1000000000000000000',
93
+ tokenContract: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
94
+ nonce: '0x8',
95
+ chainId: '0x534e5f5345504f4c4941',
96
+ tip: '0x0',
97
+ resourceBounds: {
98
+ l2_gas: { max_amount: '0x1c9c380', max_price_per_unit: '0x174876e800' },
99
+ l1_gas: { max_amount: '0x0', max_price_per_unit: '0x5af3107a4000' },
100
+ l1_data_gas: { max_amount: '0x3e8', max_price_per_unit: '0x2540be400' },
101
+ },
102
+ expectedTxHash: '0x739a72831c7f53634a2ffc94b78b61985e3cdffbad09ab20a1480e1bec9bdf2',
103
+ };
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcmtuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3Jlc291cmNlcy9zdGFya25ldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBOEQ7QUFFakQsUUFBQSxRQUFRLEdBQUc7SUFDdEIsUUFBUSxFQUFFO1FBQ1IsU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxTQUFTLEVBQ1Asb0lBQW9JO1FBQ3RJLE9BQU8sRUFBRSxvRUFBb0U7S0FDOUU7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQUUsa0VBQWtFO1FBQzdFLFNBQVMsRUFDUCxvSUFBb0k7UUFDdEksT0FBTyxFQUFFLG9FQUFvRTtLQUM5RTtJQUNELFFBQVEsRUFBRTtRQUNSLFNBQVMsRUFDUCxvSUFBb0k7UUFDdEksU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxPQUFPLEVBQUUsb0VBQW9FO0tBQzlFO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsUUFBUSxFQUFFO1lBQ1IsU0FBUyxFQUFFLFFBQVE7WUFDbkIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsT0FBTyxFQUFFLFFBQVE7U0FDbEI7UUFDRCxRQUFRLEVBQUU7WUFDUixTQUFTLEVBQUUsV0FBVztZQUN0QixTQUFTLEVBQUUsV0FBVztZQUN0QixPQUFPLEVBQUUsU0FBUztTQUNuQjtLQUNGO0NBQ0YsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQUc7SUFDckMsYUFBYSxFQUFFLGdCQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87SUFDeEMsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUU7UUFDTDtZQUNFLGVBQWUsRUFBRSxvRUFBb0U7WUFDckYsVUFBVSxFQUFFLFVBQVU7WUFDdEIsUUFBUSxFQUFFLENBQUMsZ0JBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEtBQUssQ0FBQztTQUNsRTtLQUNGO0lBQ0QsT0FBTyxFQUFFLHdCQUF3QjtJQUNqQyxlQUFlLEVBQUUsK0JBQXVCLENBQUMsTUFBTTtDQUNoRCxDQUFDO0FBRUYsK0NBQStDO0FBQy9DLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQy9CLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDYixhQUFhLEVBQUUsZ0JBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTztJQUN4QyxLQUFLLEVBQUUsK0JBQXVCLENBQUMsS0FBSztJQUNwQyxLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSx3QkFBd0I7SUFDakMsZUFBZSxFQUFFLCtCQUF1QixDQUFDLE1BQU07Q0FDaEQsQ0FBQyxFQUNGLE9BQU8sQ0FDUixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2IsYUFBYSxFQUFFLGdCQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87SUFDeEMsS0FBSyxFQUFFLCtCQUF1QixDQUFDLEtBQUs7SUFDcEMsS0FBSyxFQUFFLEdBQUc7SUFDVixPQUFPLEVBQUUsd0JBQXdCO0lBQ2pDLGVBQWUsRUFBRSwrQkFBdUIsQ0FBQyxNQUFNO0lBQy9DLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUM7SUFDbEUsZUFBZSxFQUFFLG9FQUFvRTtDQUN0RixDQUFDLEVBQ0YsT0FBTyxDQUNSLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRUwsUUFBQSxLQUFLLEdBQUc7SUFDbkIsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLGFBQWE7UUFDdkIsTUFBTSxFQUFFLFdBQVc7S0FDcEI7Q0FDRixDQUFDO0FBRVcsUUFBQSxZQUFZLEdBQUc7SUFDMUIsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixNQUFNLEVBQUUsc0JBQXNCO0lBQzlCLEtBQUssRUFBRSwwQkFBMEI7Q0FDbEMsQ0FBQztBQUVXLFFBQUEsbUJBQW1CLEdBQUc7SUFDakMsYUFBYSxFQUFFLG1FQUFtRTtJQUNsRixlQUFlLEVBQUUsbUVBQW1FO0lBQ3BGLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsT0FBTyxFQUFFLHdCQUF3QjtJQUNqQyxhQUFhLEVBQUUsb0VBQW9FO0lBQ25GLGNBQWMsRUFBRTtRQUNkLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFO1FBQ3ZFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUU7UUFDbkUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7S0FDeEU7Q0FDRixDQUFDO0FBRUYscUZBQXFGO0FBQ3JGLDRFQUE0RTtBQUMvRCxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLGFBQWEsRUFBRSxtRUFBbUU7SUFDbEYsZUFBZSxFQUFFLG1FQUFtRTtJQUNwRixNQUFNLEVBQUUscUJBQXFCO0lBQzdCLGFBQWEsRUFBRSxvRUFBb0U7SUFDbkYsS0FBSyxFQUFFLEtBQUs7SUFDWixPQUFPLEVBQUUsd0JBQXdCO0lBQ2pDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsY0FBYyxFQUFFO1FBQ2QsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUU7UUFDdkUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRTtRQUNuRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRTtLQUN4RTtJQUNELGNBQWMsRUFBRSxtRUFBbUU7Q0FDcEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBBY2NvdW50cyA9IHtcbiAgYWNjb3VudDE6IHtcbiAgICBzZWNyZXRLZXk6ICdjNWJjY2I4ZjQ3MWM1YzllYjY0ODNhYTc3ZWU0YjcwMDAwM2IxZTEyZGY0MzBhMjRkOTMyMzhlYjM3OGI5NjhiJyxcbiAgICBwdWJsaWNLZXk6XG4gICAgICAnMDQyYWI3N2I5NTllMjhjNGZhNDdmYThmYjllNTdjZWMzZDY2ZGY1Njg0ZDA3NmFjMmU0YzVmMjhmZDY5YTIzZGQzMWE1OWY5MDhjOGFkZDUxZWFiMzUzMGI0YWM1ZDAxNTE2NmVhZjIxOThjNTJmYTlhOGRmN2NmYWViOGZkYjdkNCcsXG4gICAgYWRkcmVzczogJzB4MDVhNjNkZDA1NjNkYjFhYjcxYjVmZmQyNWE2YjRhYWY1NzMwZGU1ZGU1M2Q2NDQyM2U0MjkzZmM4YjNlMTJmNicsXG4gIH0sXG4gIGFjY291bnQyOiB7XG4gICAgc2VjcmV0S2V5OiAnNzMzMTJjMjhkMGQ0NTViNmEyOWE5YTY2ODExZmZkYTk0ZjNkYjZiZmQ1N2JmNWMyYmVkOTE3ZWU1OTI4ZTE1ZicsXG4gICAgcHVibGljS2V5OlxuICAgICAgJzA0NGUwMTcwN2Y3MGY2YWQ4ZDlmNzllNWYyYzJmMGJhYzVlOTE1MjBlNWUyNDkxMzU0YzZjNzgyN2I1OWQ0NDE0ODg0N2Y5MTgwYWM5Njc5YTZjZTY2ZjY5YzMzMDU1MWE5OWY4ZjliNzQxOWM0Mzc3MDU2MDJhNTRjMjU4YTlkZmUnLFxuICAgIGFkZHJlc3M6ICcweDAyZTE1M2VmODZhZTc2ODIxNjBmNjlmNDIxOGI2YTQxYWViYzc5Y2ExMWRhYmIxYTRmY2Q3Y2M1NWYxNmY5NzcnLFxuICB9LFxuICBhY2NvdW50Mzoge1xuICAgIHB1YmxpY0tleTpcbiAgICAgICcwNDIyODEzNzg1ODQwMTI4NDMxMzBkY2U5YjE5MDAyZjg4YTk0OWYyMzczOTdlMmY2Y2RhMmRiMTM5MmQ1NGY2MzQ1ZmFhZjUxYzM4NGZiZmU0ZThmNjdlYjEyZmRiNTM3MzJkMmRkZmU3NDcwZjkzMTBhMGJmODI0ZGFkM2Y2YjFiJyxcbiAgICBzZWNyZXRLZXk6ICc3YjRkZTNkOGNjM2UzMTJjNzBmNjc0YjUyZjExODE4MjA1NTQ2Y2E3MDM2YzgwNzE5OTdjNDZlNDI5MTYwZGMzJyxcbiAgICBhZGRyZXNzOiAnMHgwMGI0NWEwZTlmNGIxZWZmMWUyZDJlNTI4YWU3YzQ0MzY1NTM0NmM2Mjc1MDUxODIxN2ZiODJjYmNlNGRiYjU0JyxcbiAgfSxcbiAgZXJyb3JzQWNjb3VudHM6IHtcbiAgICBhY2NvdW50MToge1xuICAgICAgc2VjcmV0S2V5OiAnbm90IG9rJyxcbiAgICAgIHB1YmxpY0tleTogJ25vdCBvaycsXG4gICAgICBhZGRyZXNzOiAnbm90IG9rJyxcbiAgICB9LFxuICAgIGFjY291bnQyOiB7XG4gICAgICBzZWNyZXRLZXk6ICd0ZXN0X3Rlc3QnLFxuICAgICAgcHVibGljS2V5OiAndGVzdF90ZXN0JyxcbiAgICAgIGFkZHJlc3M6ICdpbnZhbGlkJyxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICBzZW5kZXJBZGRyZXNzOiBBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLFxuICBub25jZTogJzAnLFxuICBjYWxsczogW1xuICAgIHtcbiAgICAgIGNvbnRyYWN0QWRkcmVzczogJzB4MDQ3MThmNWEwZmMzNGNjMWFmMTZhMWNkZWU5OGZmYjIwYzMxZjVjZDYxZDZhYjA3MjAxODU4ZjQyODdjOTM4ZCcsXG4gICAgICBlbnRyeXBvaW50OiAndHJhbnNmZXInLFxuICAgICAgY2FsbGRhdGE6IFtBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLCAnMHhkZTBiNmIzYTc2NDAwMDAnLCAnMHgwJ10sXG4gICAgfSxcbiAgXSxcbiAgY2hhaW5JZDogJzB4NTM0ZTVmNTM0NTUwNGY0YzQ5NDEnLFxuICB0cmFuc2FjdGlvblR5cGU6IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLklOVk9LRSxcbn07XG5cbi8vIFJhdyB0cmFuc2FjdGlvbiBoZXggKEpTT04gc2VyaWFsaXplZCB0byBoZXgpXG5jb25zdCByYXdUeFVuc2lnbmVkID0gQnVmZmVyLmZyb20oXG4gIEpTT04uc3RyaW5naWZ5KHtcbiAgICBzZW5kZXJBZGRyZXNzOiBBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLFxuICAgIGNhbGxzOiBTdGFya25ldFRyYW5zYWN0aW9uRGF0YS5jYWxscyxcbiAgICBub25jZTogJzAnLFxuICAgIGNoYWluSWQ6ICcweDUzNGU1ZjUzNDU1MDRmNGM0OTQxJyxcbiAgICB0cmFuc2FjdGlvblR5cGU6IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLklOVk9LRSxcbiAgfSksXG4gICd1dGYtOCdcbikudG9TdHJpbmcoJ2hleCcpO1xuXG5jb25zdCByYXdUeFNpZ25lZCA9IEJ1ZmZlci5mcm9tKFxuICBKU09OLnN0cmluZ2lmeSh7XG4gICAgc2VuZGVyQWRkcmVzczogQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyxcbiAgICBjYWxsczogU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEuY2FsbHMsXG4gICAgbm9uY2U6ICcwJyxcbiAgICBjaGFpbklkOiAnMHg1MzRlNWY1MzQ1NTA0ZjRjNDk0MScsXG4gICAgdHJhbnNhY3Rpb25UeXBlOiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5JTlZPS0UsXG4gICAgc2lnbmF0dXJlOiBbJzB4YWJjMTIzJywgJzB4ZGVmNDU2JywgJzB4Nzg5MDEyJywgJzB4MzQ1Njc4JywgJzB4MCddLFxuICAgIHRyYW5zYWN0aW9uSGFzaDogJzB4MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWYxMjM0NTY3ODkwYWJjZGVmMTIzNDU2Nzg5MGFiY2RlZicsXG4gIH0pLFxuICAndXRmLTgnXG4pLnRvU3RyaW5nKCdoZXgnKTtcblxuZXhwb3J0IGNvbnN0IHJhd1R4ID0ge1xuICB0cmFuc2Zlcjoge1xuICAgIHVuc2lnbmVkOiByYXdUeFVuc2lnbmVkLFxuICAgIHNpZ25lZDogcmF3VHhTaWduZWQsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVEVTVF9BTU9VTlRTID0ge1xuICBzbWFsbDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICBtZWRpdW06ICcxMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gIGxhcmdlOiAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBTYW5kYm94VHJhbnNmZXJEYXRhID0ge1xuICBzZW5kZXJBZGRyZXNzOiAnMHgxNTU5MjkyZDNmOWVhMzU1NDU4ZjgzYWRmMjM1YjQwMGU3OTc4NmFmNWRjNWUzYjUwZjU1MDVjYWEyYmRjODQnLFxuICByZWNlaXZlckFkZHJlc3M6ICcweDRhMWU4NmFlMjY1ZTZlNmVjYmVhNWJlN2Y2NzExN2MzNTQwZjhhYWYyYWQ3ZjFjZmVjMzNjNTMwODBmMDVhZicsXG4gIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICBjaGFpbklkOiAnMHg1MzRlNWY1MzQ1NTA0ZjRjNDk0MScsXG4gIHRva2VuQ29udHJhY3Q6ICcweDA0NzE4ZjVhMGZjMzRjYzFhZjE2YTFjZGVlOThmZmIyMGMzMWY1Y2Q2MWQ2YWIwNzIwMTg1OGY0Mjg3YzkzOGQnLFxuICByZXNvdXJjZUJvdW5kczoge1xuICAgIGwyX2dhczogeyBtYXhfYW1vdW50OiAnMHgxYzljMzgwJywgbWF4X3ByaWNlX3Blcl91bml0OiAnMHgxNzQ4NzZlODAwJyB9LFxuICAgIGwxX2dhczogeyBtYXhfYW1vdW50OiAnMHgwJywgbWF4X3ByaWNlX3Blcl91bml0OiAnMHg1YWYzMTA3YTQwMDAnIH0sXG4gICAgbDFfZGF0YV9nYXM6IHsgbWF4X2Ftb3VudDogJzB4M2U4JywgbWF4X3ByaWNlX3Blcl91bml0OiAnMHgyNTQwYmU0MDAnIH0sXG4gIH0sXG59O1xuXG4vLyBLbm93bi1nb29kIHR4IGZyb20gY29pbnMtc2FuZGJveC9zdHJrTVBDL3RyYW5zZmVyTG9jYWwudHMgKGJsb2NrIDk1MzcyNTMsIFNlcG9saWEpXG4vLyBBbGwgaW5wdXRzIGZyb20gdGhlIHNhbmRib3ggc2NyaXB0OyBub25jZSBjb25maXJtZWQgdmlhIFZveWFnZXIgZXhwbG9yZXIuXG5leHBvcnQgY29uc3QgS25vd25Hb29kSW52b2tlVHggPSB7XG4gIHNlbmRlckFkZHJlc3M6ICcweDE1NTkyOTJkM2Y5ZWEzNTU0NThmODNhZGYyMzViNDAwZTc5Nzg2YWY1ZGM1ZTNiNTBmNTUwNWNhYTJiZGM4NCcsXG4gIHJlY2VpdmVyQWRkcmVzczogJzB4NGExZTg2YWUyNjVlNmU2ZWNiZWE1YmU3ZjY3MTE3YzM1NDBmOGFhZjJhZDdmMWNmZWMzM2M1MzA4MGYwNWFmJyxcbiAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gIHRva2VuQ29udHJhY3Q6ICcweDA0NzE4ZjVhMGZjMzRjYzFhZjE2YTFjZGVlOThmZmIyMGMzMWY1Y2Q2MWQ2YWIwNzIwMTg1OGY0Mjg3YzkzOGQnLFxuICBub25jZTogJzB4OCcsXG4gIGNoYWluSWQ6ICcweDUzNGU1ZjUzNDU1MDRmNGM0OTQxJyxcbiAgdGlwOiAnMHgwJyxcbiAgcmVzb3VyY2VCb3VuZHM6IHtcbiAgICBsMl9nYXM6IHsgbWF4X2Ftb3VudDogJzB4MWM5YzM4MCcsIG1heF9wcmljZV9wZXJfdW5pdDogJzB4MTc0ODc2ZTgwMCcgfSxcbiAgICBsMV9nYXM6IHsgbWF4X2Ftb3VudDogJzB4MCcsIG1heF9wcmljZV9wZXJfdW5pdDogJzB4NWFmMzEwN2E0MDAwJyB9LFxuICAgIGwxX2RhdGFfZ2FzOiB7IG1heF9hbW91bnQ6ICcweDNlOCcsIG1heF9wcmljZV9wZXJfdW5pdDogJzB4MjU0MGJlNDAwJyB9LFxuICB9LFxuICBleHBlY3RlZFR4SGFzaDogJzB4NzM5YTcyODMxYzdmNTM2MzRhMmZmYzk0Yjc4YjYxOTg1ZTNjZGZmYmFkMDlhYjIwYTE0ODBlMWJlYzliZGYyJyxcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../test/unit/keyPair.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
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
+ const should_1 = __importDefault(require("should"));
7
+ const keyPair_1 = require("../../src/lib/keyPair");
8
+ const starknet_1 = require("../resources/starknet");
9
+ describe('Starknet KeyPair', () => {
10
+ describe('Constructor', () => {
11
+ it('should create keypair from public key only', () => {
12
+ const kp = new keyPair_1.KeyPair({ pub: starknet_1.Accounts.account1.publicKey });
13
+ const keys = kp.getKeys();
14
+ should_1.default.exist(keys.pub);
15
+ });
16
+ it('should create keypair from private key', () => {
17
+ const kp = new keyPair_1.KeyPair({ prv: starknet_1.Accounts.account1.secretKey });
18
+ const keys = kp.getKeys();
19
+ should_1.default.exist(keys.pub);
20
+ should_1.default.exist(keys.prv);
21
+ });
22
+ it('should create random keypair when no source', () => {
23
+ const kp = new keyPair_1.KeyPair();
24
+ const keys = kp.getKeys();
25
+ should_1.default.exist(keys.pub);
26
+ should_1.default.exist(keys.prv);
27
+ });
28
+ it('should throw on invalid public key', () => {
29
+ should_1.default.throws(() => new keyPair_1.KeyPair({ pub: 'invalid_key_format' }));
30
+ });
31
+ it('should throw on invalid private key', () => {
32
+ should_1.default.throws(() => new keyPair_1.KeyPair({ prv: 'not_a_valid_key' }));
33
+ });
34
+ });
35
+ describe('Key Generation', () => {
36
+ it('should create unique key pairs each time', () => {
37
+ const kp1 = new keyPair_1.KeyPair();
38
+ const kp2 = new keyPair_1.KeyPair();
39
+ kp1.getKeys().pub.should.not.equal(kp2.getKeys().pub);
40
+ });
41
+ });
42
+ describe('getAddress', () => {
43
+ it('should return a valid Starknet address from keypair', () => {
44
+ const kp = new keyPair_1.KeyPair({ pub: starknet_1.Accounts.account1.publicKey });
45
+ const address = kp.getAddress();
46
+ should_1.default.exist(address);
47
+ address.should.startWith('0x');
48
+ });
49
+ it('should return different addresses for different keys', () => {
50
+ const kp1 = new keyPair_1.KeyPair({ pub: starknet_1.Accounts.account1.publicKey });
51
+ const kp2 = new keyPair_1.KeyPair({ pub: starknet_1.Accounts.account2.publicKey });
52
+ kp1.getAddress().should.not.equal(kp2.getAddress());
53
+ });
54
+ });
55
+ });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUFnRDtBQUNoRCxvREFBaUQ7QUFFakQsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO1lBQ3BELE1BQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxtQkFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELE1BQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxtQkFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtZQUNyRCxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFPLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7WUFDNUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtZQUM3QyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtZQUNsRCxNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFPLEVBQUUsQ0FBQztZQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFPLEVBQUUsQ0FBQztZQUMxQixHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDMUIsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsRUFBRTtZQUM3RCxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsbUJBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUM3RCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsR0FBRyxFQUFFO1lBQzlELE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxtQkFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxtQkFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzlELEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9rZXlQYWlyJztcbmltcG9ydCB7IEFjY291bnRzIH0gZnJvbSAnLi4vcmVzb3VyY2VzL3N0YXJrbmV0JztcblxuZGVzY3JpYmUoJ1N0YXJrbmV0IEtleVBhaXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdDb25zdHJ1Y3RvcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBrZXlwYWlyIGZyb20gcHVibGljIGtleSBvbmx5JywgKCkgPT4ge1xuICAgICAgY29uc3Qga3AgPSBuZXcgS2V5UGFpcih7IHB1YjogQWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5IH0pO1xuICAgICAgY29uc3Qga2V5cyA9IGtwLmdldEtleXMoKTtcbiAgICAgIHNob3VsZC5leGlzdChrZXlzLnB1Yik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBrZXlwYWlyIGZyb20gcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBBY2NvdW50cy5hY2NvdW50MS5zZWNyZXRLZXkgfSk7XG4gICAgICBjb25zdCBrZXlzID0ga3AuZ2V0S2V5cygpO1xuICAgICAgc2hvdWxkLmV4aXN0KGtleXMucHViKTtcbiAgICAgIHNob3VsZC5leGlzdChrZXlzLnBydik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSByYW5kb20ga2V5cGFpciB3aGVuIG5vIHNvdXJjZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoKTtcbiAgICAgIGNvbnN0IGtleXMgPSBrcC5nZXRLZXlzKCk7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5cy5wdWIpO1xuICAgICAgc2hvdWxkLmV4aXN0KGtleXMucHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gaW52YWxpZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBuZXcgS2V5UGFpcih7IHB1YjogJ2ludmFsaWRfa2V5X2Zvcm1hdCcgfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBpbnZhbGlkIHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBuZXcgS2V5UGFpcih7IHBydjogJ25vdF9hX3ZhbGlkX2tleScgfSkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnS2V5IEdlbmVyYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgdW5pcXVlIGtleSBwYWlycyBlYWNoIHRpbWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrcDEgPSBuZXcgS2V5UGFpcigpO1xuICAgICAgY29uc3Qga3AyID0gbmV3IEtleVBhaXIoKTtcbiAgICAgIGtwMS5nZXRLZXlzKCkucHViLnNob3VsZC5ub3QuZXF1YWwoa3AyLmdldEtleXMoKS5wdWIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0QWRkcmVzcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIHZhbGlkIFN0YXJrbmV0IGFkZHJlc3MgZnJvbSBrZXlwYWlyJywgKCkgPT4ge1xuICAgICAgY29uc3Qga3AgPSBuZXcgS2V5UGFpcih7IHB1YjogQWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5IH0pO1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGtwLmdldEFkZHJlc3MoKTtcbiAgICAgIHNob3VsZC5leGlzdChhZGRyZXNzKTtcbiAgICAgIGFkZHJlc3Muc2hvdWxkLnN0YXJ0V2l0aCgnMHgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGRpZmZlcmVudCBhZGRyZXNzZXMgZm9yIGRpZmZlcmVudCBrZXlzJywgKCkgPT4ge1xuICAgICAgY29uc3Qga3AxID0gbmV3IEtleVBhaXIoeyBwdWI6IEFjY291bnRzLmFjY291bnQxLnB1YmxpY0tleSB9KTtcbiAgICAgIGNvbnN0IGtwMiA9IG5ldyBLZXlQYWlyKHsgcHViOiBBY2NvdW50cy5hY2NvdW50Mi5wdWJsaWNLZXkgfSk7XG4gICAgICBrcDEuZ2V0QWRkcmVzcygpLnNob3VsZC5ub3QuZXF1YWwoa3AyLmdldEFkZHJlc3MoKSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=starknet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starknet.d.ts","sourceRoot":"","sources":["../../../test/unit/starknet.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const sdk_test_1 = require("@bitgo/sdk-test");
40
+ const sdk_api_1 = require("@bitgo/sdk-api");
41
+ const index_1 = require("../../src/index");
42
+ const testData = __importStar(require("../resources/starknet"));
43
+ const should_1 = __importDefault(require("should"));
44
+ const utils_1 = require("../../src/lib/utils");
45
+ describe('Starknet', function () {
46
+ let bitgo;
47
+ let basecoin;
48
+ before(async function () {
49
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
50
+ bitgo.safeRegister('starknet', index_1.Starknet.createInstance);
51
+ bitgo.safeRegister('tstarknet', index_1.Starknet.createInstance);
52
+ bitgo.initializeTestVars();
53
+ basecoin = bitgo.coin('starknet');
54
+ });
55
+ it('should return the right info', function () {
56
+ const starknet = bitgo.coin('starknet');
57
+ const tstarknet = bitgo.coin('tstarknet');
58
+ starknet.getChain().should.equal('starknet');
59
+ starknet.getFamily().should.equal('starknet');
60
+ starknet.getFullName().should.equal('Starknet');
61
+ starknet.getBaseFactor().should.equal(1e18);
62
+ starknet.supportsTss().should.equal(true);
63
+ tstarknet.getChain().should.equal('tstarknet');
64
+ tstarknet.getFamily().should.equal('starknet');
65
+ tstarknet.getFullName().should.equal('Testnet Starknet');
66
+ tstarknet.getBaseFactor().should.equal(1e18);
67
+ tstarknet.supportsTss().should.equal(true);
68
+ });
69
+ describe('Address validation', () => {
70
+ it('should validate a correct Starknet address', function () {
71
+ basecoin.isValidAddress(testData.Accounts.account1.address).should.equal(true);
72
+ });
73
+ it('should validate a second correct address', function () {
74
+ basecoin.isValidAddress(testData.Accounts.account2.address).should.equal(true);
75
+ });
76
+ it('should reject an obviously invalid address', function () {
77
+ basecoin.isValidAddress('not_an_address').should.equal(false);
78
+ });
79
+ it('should reject an empty address', function () {
80
+ basecoin.isValidAddress('').should.equal(false);
81
+ });
82
+ });
83
+ describe('Address derivation', () => {
84
+ it('should derive correct address from public key for account1', function () {
85
+ const derived = (0, utils_1.getAddressFromPublicKey)(testData.Accounts.account1.publicKey);
86
+ derived.should.equal(testData.Accounts.account1.address);
87
+ });
88
+ it('should derive correct address from public key for account2', function () {
89
+ const derived = (0, utils_1.getAddressFromPublicKey)(testData.Accounts.account2.publicKey);
90
+ derived.should.equal(testData.Accounts.account2.address);
91
+ });
92
+ it('should derive correct address from public key for account3', function () {
93
+ const derived = (0, utils_1.getAddressFromPublicKey)(testData.Accounts.account3.publicKey);
94
+ derived.should.equal(testData.Accounts.account3.address);
95
+ });
96
+ });
97
+ describe('Public key validation', () => {
98
+ it('should validate a correct uncompressed public key', function () {
99
+ basecoin.isValidPub(testData.Accounts.account1.publicKey).should.equal(true);
100
+ });
101
+ it('should reject an invalid public key', function () {
102
+ basecoin.isValidPub('invalid-public-key').should.equal(false);
103
+ });
104
+ });
105
+ describe('MPC support', () => {
106
+ it('should support TSS', function () {
107
+ basecoin.supportsTss().should.equal(true);
108
+ });
109
+ it('should return ECDSA as MPC algorithm', function () {
110
+ basecoin.getMPCAlgorithm().should.equal('ecdsa');
111
+ });
112
+ });
113
+ describe('Key pair generation', () => {
114
+ it('should generate a key pair', function () {
115
+ const keyPair = basecoin.generateKeyPair();
116
+ should_1.default.exist(keyPair.pub);
117
+ should_1.default.exist(keyPair.prv);
118
+ });
119
+ it('should generate different key pairs each time', function () {
120
+ const kp1 = basecoin.generateKeyPair();
121
+ const kp2 = basecoin.generateKeyPair();
122
+ kp1.pub.should.not.equal(kp2.pub);
123
+ });
124
+ });
125
+ });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcmtuZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvc3RhcmtuZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBQzFDLDJDQUEyQztBQUMzQyxnRUFBa0Q7QUFDbEQsb0RBQTRCO0FBQzVCLCtDQUE4RDtBQUU5RCxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQ25CLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFFBQVEsQ0FBQztJQUViLE1BQU0sQ0FBQyxLQUFLO1FBQ1YsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxnQkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGdCQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUU7UUFDakMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxD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QztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRTtZQUNsRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgU3RhcmtuZXQgfSBmcm9tICcuLi8uLi9zcmMvaW5kZXgnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3N0YXJrbmV0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGdldEFkZHJlc3NGcm9tUHVibGljS2V5IH0gZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmRlc2NyaWJlKCdTdGFya25ldCcsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICAgIGJpdGdvLnNhZmVSZWdpc3Rlcignc3RhcmtuZXQnLCBTdGFya25ldC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0c3RhcmtuZXQnLCBTdGFya25ldC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCdzdGFya25ldCcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzdGFya25ldCA9IGJpdGdvLmNvaW4oJ3N0YXJrbmV0Jyk7XG4gICAgY29uc3QgdHN0YXJrbmV0ID0gYml0Z28uY29pbigndHN0YXJrbmV0Jyk7XG5cbiAgICBzdGFya25ldC5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgnc3RhcmtuZXQnKTtcbiAgICBzdGFya25ldC5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwoJ3N0YXJrbmV0Jyk7XG4gICAgc3RhcmtuZXQuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1N0YXJrbmV0Jyk7XG4gICAgc3RhcmtuZXQuZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTE4KTtcbiAgICBzdGFya25ldC5zdXBwb3J0c1RzcygpLnNob3VsZC5lcXVhbCh0cnVlKTtcblxuICAgIHRzdGFya25ldC5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgndHN0YXJrbmV0Jyk7XG4gICAgdHN0YXJrbmV0LmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnc3RhcmtuZXQnKTtcbiAgICB0c3RhcmtuZXQuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1Rlc3RuZXQgU3RhcmtuZXQnKTtcbiAgICB0c3RhcmtuZXQuZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTE4KTtcbiAgICB0c3RhcmtuZXQuc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIGNvcnJlY3QgU3RhcmtuZXQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBzZWNvbmQgY29ycmVjdCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3ModGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcykuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgYW4gb2J2aW91c2x5IGludmFsaWQgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKCdub3RfYW5fYWRkcmVzcycpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBhbiBlbXB0eSBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoJycpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIGRlcml2YXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgY29ycmVjdCBhZGRyZXNzIGZyb20gcHVibGljIGtleSBmb3IgYWNjb3VudDEnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDEucHVibGljS2V5KTtcbiAgICAgIGRlcml2ZWQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgY29ycmVjdCBhZGRyZXNzIGZyb20gcHVibGljIGtleSBmb3IgYWNjb3VudDInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIucHVibGljS2V5KTtcbiAgICAgIGRlcml2ZWQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgY29ycmVjdCBhZGRyZXNzIGZyb20gcHVibGljIGtleSBmb3IgYWNjb3VudDMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDMucHVibGljS2V5KTtcbiAgICAgIGRlcml2ZWQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLkFjY291bnRzLmFjY291bnQzLmFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUHVibGljIGtleSB2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBjb3JyZWN0IHVuY29tcHJlc3NlZCBwdWJsaWMga2V5JywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZFB1Yih0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50MS5wdWJsaWNLZXkpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGFuIGludmFsaWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoJ2ludmFsaWQtcHVibGljLWtleScpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdNUEMgc3VwcG9ydCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHN1cHBvcnQgVFNTJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uc3VwcG9ydHNUc3MoKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBFQ0RTQSBhcyBNUEMgYWxnb3JpdGhtJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmFzZWNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkuc2hvdWxkLmVxdWFsKCdlY2RzYScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnS2V5IHBhaXIgZ2VuZXJhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5IHBhaXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gYmFzZWNvaW4uZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgICBzaG91bGQuZXhpc3Qoa2V5UGFpci5wdWIpO1xuICAgICAgc2hvdWxkLmV4aXN0KGtleVBhaXIucHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgZGlmZmVyZW50IGtleSBwYWlycyBlYWNoIHRpbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBrcDEgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIGNvbnN0IGtwMiA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAga3AxLnB1Yi5zaG91bGQubm90LmVxdWFsKGtwMi5wdWIpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../test/unit/transaction.ts"],"names":[],"mappings":""}