starknet 3.1.0 → 3.4.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 (71) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/__mocks__/ArgentAccount.json +68548 -51944
  3. package/__mocks__/TestDapp.json +12962 -0
  4. package/__tests__/account.test.ts +63 -50
  5. package/__tests__/accountContract.test.ts +51 -71
  6. package/__tests__/contract.test.ts +32 -20
  7. package/__tests__/fixtures.ts +13 -0
  8. package/__tests__/provider.test.ts +3 -15
  9. package/__tests__/utils/__snapshots__/utils.browser.test.ts.snap +2 -2
  10. package/__tests__/utils/__snapshots__/utils.test.ts.snap +2 -2
  11. package/__tests__/utils/ellipticalCurve.test.ts +20 -13
  12. package/__tests__/utils/utils.test.ts +3 -3
  13. package/account/default.d.ts +10 -4
  14. package/account/default.js +165 -84
  15. package/account/interface.d.ts +2 -2
  16. package/dist/account/default.d.ts +8 -3
  17. package/dist/account/default.js +129 -55
  18. package/dist/account/interface.d.ts +2 -2
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.js +1 -0
  21. package/dist/provider/default.d.ts +6 -4
  22. package/dist/provider/default.js +42 -17
  23. package/dist/provider/interface.d.ts +5 -1
  24. package/dist/signer/default.d.ts +1 -1
  25. package/dist/signer/default.js +6 -18
  26. package/dist/signer/interface.d.ts +3 -2
  27. package/dist/types/api.d.ts +5 -0
  28. package/dist/types/lib.d.ts +3 -3
  29. package/dist/utils/ellipticCurve.js +1 -1
  30. package/dist/utils/hash.d.ts +12 -2
  31. package/dist/utils/hash.js +37 -9
  32. package/dist/utils/stark.d.ts +0 -8
  33. package/dist/utils/stark.js +1 -14
  34. package/dist/utils/transaction.d.ts +19 -0
  35. package/dist/utils/transaction.js +75 -0
  36. package/dist/utils/typedData/index.d.ts +1 -1
  37. package/dist/utils/typedData/index.js +2 -3
  38. package/index.d.ts +1 -0
  39. package/index.js +1 -0
  40. package/package.json +1 -1
  41. package/provider/default.d.ts +6 -4
  42. package/provider/default.js +55 -19
  43. package/provider/interface.d.ts +5 -1
  44. package/signer/default.d.ts +1 -1
  45. package/signer/default.js +10 -44
  46. package/signer/interface.d.ts +3 -2
  47. package/src/account/default.ts +129 -42
  48. package/src/account/interface.ts +2 -2
  49. package/src/index.ts +1 -0
  50. package/src/provider/default.ts +32 -22
  51. package/src/provider/interface.ts +6 -1
  52. package/src/signer/default.ts +10 -26
  53. package/src/signer/interface.ts +3 -2
  54. package/src/types/api.ts +5 -0
  55. package/src/types/lib.ts +3 -4
  56. package/src/utils/ellipticCurve.ts +1 -1
  57. package/src/utils/hash.ts +39 -12
  58. package/src/utils/stark.ts +1 -14
  59. package/src/utils/transaction.ts +50 -0
  60. package/src/utils/typedData/index.ts +2 -3
  61. package/types/api.d.ts +5 -0
  62. package/types/lib.d.ts +3 -3
  63. package/utils/ellipticCurve.js +1 -1
  64. package/utils/hash.d.ts +15 -6
  65. package/utils/hash.js +42 -10
  66. package/utils/stark.d.ts +0 -8
  67. package/utils/stark.js +0 -14
  68. package/utils/transaction.d.ts +19 -0
  69. package/utils/transaction.js +99 -0
  70. package/utils/typedData/index.d.ts +1 -1
  71. package/utils/typedData/index.js +2 -3
@@ -28,13 +28,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  return (mod && mod.__esModule) ? mod : { "default": mod };
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.hashMessage = exports.hashCalldata = exports.computeHashOnElements = exports.pedersen = exports.starknetKeccak = void 0;
31
+ exports.hashMulticall = exports.computeHashOnElements = exports.pedersen = exports.getSelectorFromName = exports.starknetKeccak = exports.transactionVersion = exports.transactionPrefix = void 0;
32
32
  var keccak_1 = require("ethereum-cryptography/keccak");
33
33
  var minimalistic_assert_1 = __importDefault(require("minimalistic-assert"));
34
34
  var constants_1 = require("../constants");
35
35
  var ellipticCurve_1 = require("./ellipticCurve");
36
36
  var encode_1 = require("./encode");
37
37
  var number_1 = require("./number");
38
+ var shortString_1 = require("./shortString");
39
+ exports.transactionPrefix = (0, shortString_1.encodeShortString)('StarkNet Transaction');
40
+ exports.transactionVersion = 0;
38
41
  function keccakHex(value) {
39
42
  return (0, encode_1.addHexPrefix)((0, encode_1.buf2hex)((0, keccak_1.keccak256)((0, encode_1.utf8ToArray)(value))));
40
43
  }
@@ -49,6 +52,18 @@ function starknetKeccak(value) {
49
52
  return (0, number_1.toBN)(keccakHex(value)).and(constants_1.MASK_250);
50
53
  }
51
54
  exports.starknetKeccak = starknetKeccak;
55
+ /**
56
+ * Function to get the hex selector from a given function name
57
+ *
58
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L25-L26)
59
+ * @param funcName - selectors abi function name
60
+ * @returns hex selector of given abi function name
61
+ */
62
+ function getSelectorFromName(funcName) {
63
+ // sometimes BigInteger pads the hex string with zeros, which isnt allowed in the starknet api
64
+ return (0, number_1.toHex)(starknetKeccak(funcName));
65
+ }
66
+ exports.getSelectorFromName = getSelectorFromName;
52
67
  var constantPoints = constants_1.CONSTANT_POINTS.map(function (coords) {
53
68
  return ellipticCurve_1.ec.curve.point(coords[0], coords[1]);
54
69
  });
@@ -73,12 +88,25 @@ function computeHashOnElements(data) {
73
88
  return __spreadArray(__spreadArray([], __read(data), false), [data.length], false).reduce(function (x, y) { return pedersen([x, y]); }, 0).toString();
74
89
  }
75
90
  exports.computeHashOnElements = computeHashOnElements;
76
- function hashCalldata(calldata) {
77
- return computeHashOnElements(calldata);
78
- }
79
- exports.hashCalldata = hashCalldata;
80
- function hashMessage(account, to, selector, calldata, nonce) {
81
- var calldataHash = hashCalldata(calldata);
82
- return computeHashOnElements([account, to, selector, calldataHash, nonce]);
91
+ function hashMulticall(account, transactions, nonce, maxFee) {
92
+ var hashArray = transactions
93
+ .map(function (_a) {
94
+ var contractAddress = _a.contractAddress, entrypoint = _a.entrypoint, calldata = _a.calldata;
95
+ return [
96
+ contractAddress,
97
+ getSelectorFromName(entrypoint),
98
+ computeHashOnElements(calldata || []),
99
+ ];
100
+ })
101
+ .map(number_1.bigNumberishArrayToDecimalStringArray)
102
+ .map(computeHashOnElements);
103
+ return computeHashOnElements([
104
+ exports.transactionPrefix,
105
+ account,
106
+ computeHashOnElements(hashArray),
107
+ nonce,
108
+ maxFee,
109
+ exports.transactionVersion,
110
+ ]);
83
111
  }
84
- exports.hashMessage = hashMessage;
112
+ exports.hashMulticall = hashMulticall;
@@ -7,14 +7,6 @@ import { Calldata, CompressedProgram, Program, RawArgs, Signature } from '../typ
7
7
  * @returns Compressed cairo program
8
8
  */
9
9
  export declare function compressProgram(jsonProgram: Program | string): CompressedProgram;
10
- /**
11
- * Function to get the hex selector from a given function name
12
- *
13
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L25-L26)
14
- * @param funcName - selectors abi function name
15
- * @returns hex selector of given abi function name
16
- */
17
- export declare function getSelectorFromName(funcName: string): string;
18
10
  export declare function randomAddress(): string;
19
11
  export declare function makeAddress(input: string): string;
20
12
  export declare function formatSignature(sig?: Signature): string[];
@@ -25,11 +25,10 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
25
  return to.concat(ar || Array.prototype.slice.call(from));
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.compileCalldata = exports.formatSignature = exports.makeAddress = exports.randomAddress = exports.getSelectorFromName = exports.compressProgram = void 0;
28
+ exports.compileCalldata = exports.formatSignature = exports.makeAddress = exports.randomAddress = exports.compressProgram = void 0;
29
29
  var pako_1 = require("pako");
30
30
  var ellipticCurve_1 = require("./ellipticCurve");
31
31
  var encode_1 = require("./encode");
32
- var hash_1 = require("./hash");
33
32
  var json_1 = require("./json");
34
33
  var number_1 = require("./number");
35
34
  /**
@@ -45,18 +44,6 @@ function compressProgram(jsonProgram) {
45
44
  return (0, encode_1.btoaUniversal)(compressedProgram);
46
45
  }
47
46
  exports.compressProgram = compressProgram;
48
- /**
49
- * Function to get the hex selector from a given function name
50
- *
51
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L25-L26)
52
- * @param funcName - selectors abi function name
53
- * @returns hex selector of given abi function name
54
- */
55
- function getSelectorFromName(funcName) {
56
- // sometimes BigInteger pads the hex string with zeros, which isnt allowed in the starknet api
57
- return (0, number_1.toHex)((0, hash_1.starknetKeccak)(funcName));
58
- }
59
- exports.getSelectorFromName = getSelectorFromName;
60
47
  function randomAddress() {
61
48
  var randomKeyPair = (0, ellipticCurve_1.genKeyPair)();
62
49
  return (0, ellipticCurve_1.getStarkKey)(randomKeyPair);
@@ -0,0 +1,19 @@
1
+ import { ParsedStruct } from '../contract';
2
+ import { Call } from '../types';
3
+ /**
4
+ * Transforms a list of Calls, each with their own calldata, into
5
+ * two arrays: one with the entrypoints, and one with the concatenated calldata.
6
+ * @param calls
7
+ * @returns
8
+ */
9
+ export declare const transformCallsToMulticallArrays: (calls: Call[]) => {
10
+ callArray: ParsedStruct[];
11
+ calldata: string[];
12
+ };
13
+ /**
14
+ * Transforms a list of calls in the full flattened calldata expected
15
+ * by the __execute__ protocol.
16
+ * @param calls
17
+ * @returns
18
+ */
19
+ export declare const fromCallsToExecuteCalldata: (calls: Call[]) => string[];
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.fromCallsToExecuteCalldata = exports.transformCallsToMulticallArrays = void 0;
29
+ var hash_1 = require("./hash");
30
+ var number_1 = require("./number");
31
+ /**
32
+ * Transforms a list of Calls, each with their own calldata, into
33
+ * two arrays: one with the entrypoints, and one with the concatenated calldata.
34
+ * @param calls
35
+ * @returns
36
+ */
37
+ var transformCallsToMulticallArrays = function (calls) {
38
+ var callArray = [];
39
+ var calldata = [];
40
+ calls.forEach(function (call) {
41
+ var data = call.calldata || [];
42
+ callArray.push({
43
+ to: (0, number_1.toBN)(call.contractAddress).toString(10),
44
+ selector: (0, number_1.toBN)((0, hash_1.getSelectorFromName)(call.entrypoint)).toString(10),
45
+ data_offset: calldata.length.toString(),
46
+ data_len: data.length.toString(),
47
+ });
48
+ calldata.push.apply(calldata, __spreadArray([], __read(data), false));
49
+ });
50
+ return {
51
+ callArray: callArray,
52
+ calldata: (0, number_1.bigNumberishArrayToDecimalStringArray)(calldata),
53
+ };
54
+ };
55
+ exports.transformCallsToMulticallArrays = transformCallsToMulticallArrays;
56
+ /**
57
+ * Transforms a list of calls in the full flattened calldata expected
58
+ * by the __execute__ protocol.
59
+ * @param calls
60
+ * @returns
61
+ */
62
+ var fromCallsToExecuteCalldata = function (calls) {
63
+ var _a = (0, exports.transformCallsToMulticallArrays)(calls), callArray = _a.callArray, calldata = _a.calldata;
64
+ return __spreadArray(__spreadArray(__spreadArray([
65
+ callArray.length.toString()
66
+ ], __read(callArray
67
+ .map(function (_a) {
68
+ var to = _a.to, selector = _a.selector, data_offset = _a.data_offset, data_len = _a.data_len;
69
+ return [to, selector, data_offset, data_len];
70
+ })
71
+ .flat()), false), [
72
+ calldata.length.toString()
73
+ ], false), __read(calldata), false);
74
+ };
75
+ exports.fromCallsToExecuteCalldata = fromCallsToExecuteCalldata;
@@ -85,7 +85,7 @@ export declare const getStructHash: <T extends {
85
85
  * with Keccak256.
86
86
  *
87
87
  * @param {TypedData} typedData
88
- * @param {boolean} hash
88
+ * @param {BigNumberish} account
89
89
  * @return {string}
90
90
  */
91
91
  export declare const getMessageHash: (typedData: TypedData, account: BigNumberish) => string;
@@ -39,7 +39,6 @@ exports.getMessageHash = exports.getStructHash = exports.encodeData = exports.ge
39
39
  var hash_1 = require("../hash");
40
40
  var number_1 = require("../number");
41
41
  var shortString_1 = require("../shortString");
42
- var stark_1 = require("../stark");
43
42
  var utils_1 = require("./utils");
44
43
  __exportStar(require("./types"), exports);
45
44
  function getHex(value) {
@@ -104,7 +103,7 @@ exports.encodeType = encodeType;
104
103
  * @return {string}
105
104
  */
106
105
  var getTypeHash = function (typedData, type) {
107
- return (0, stark_1.getSelectorFromName)((0, exports.encodeType)(typedData, type));
106
+ return (0, hash_1.getSelectorFromName)((0, exports.encodeType)(typedData, type));
108
107
  };
109
108
  exports.getTypeHash = getTypeHash;
110
109
  /**
@@ -168,7 +167,7 @@ exports.getStructHash = getStructHash;
168
167
  * with Keccak256.
169
168
  *
170
169
  * @param {TypedData} typedData
171
- * @param {boolean} hash
170
+ * @param {BigNumberish} account
172
171
  * @return {string}
173
172
  */
174
173
  var getMessageHash = function (typedData, account) {
package/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from './types';
5
5
  export * from './contract';
6
6
  export * from './provider';
7
7
  export * from './account';
8
+ export * from './signer';
8
9
  /**
9
10
  * Utils
10
11
  */
package/index.js CHANGED
@@ -62,6 +62,7 @@ __exportStar(require('./types'), exports);
62
62
  __exportStar(require('./contract'), exports);
63
63
  __exportStar(require('./provider'), exports);
64
64
  __exportStar(require('./account'), exports);
65
+ __exportStar(require('./signer'), exports);
65
66
  /**
66
67
  * Utils
67
68
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "starknet",
3
- "version": "3.1.0",
3
+ "version": "3.4.0",
4
4
  "description": "JavaScript library for StarkNet",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -150,13 +150,15 @@ export declare class Provider implements ProviderInterface {
150
150
  * Invokes a function on starknet
151
151
  * @deprecated This method wont be supported as soon as fees are mandatory
152
152
  *
153
- * @param contractAddress - target contract address for invoke
154
- * @param entrypointSelector - target entrypoint selector for
155
- * @param calldata - (optional, default []) calldata
156
- * @param signature - (optional) signature to send along
153
+ * @param invocation
154
+ * @param _abi - (optional) signature to send along
157
155
  * @returns response from addTransaction
158
156
  */
159
157
  invokeFunction(invocation: Invocation, _abi?: Abi): Promise<AddTransactionResponse>;
158
+ waitForTransaction(txHash: BigNumberish, retryInterval?: number): Promise<void>;
159
+ /**
160
+ * @deprecated use `waitForTransaction` instead
161
+ */
160
162
  waitForTx(txHash: BigNumberish, retryInterval?: number): Promise<void>;
161
163
  }
162
164
  export {};
@@ -175,6 +175,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
175
175
  exports.Provider = void 0;
176
176
  var axios_1 = __importDefault(require('axios'));
177
177
  var url_join_1 = __importDefault(require('url-join'));
178
+ var hash_1 = require('../utils/hash');
178
179
  var json_1 = require('../utils/json');
179
180
  var number_1 = require('../utils/number');
180
181
  var stark_1 = require('../utils/stark');
@@ -260,8 +261,9 @@ var Provider = /** @class */ (function () {
260
261
  };
261
262
  // typesafe fetch
262
263
  Provider.prototype.fetchEndpoint = function (endpoint) {
264
+ var _a;
263
265
  // typescript type magiuc to create a nice fitting function interface
264
- var _a = []; // when both query and request are needed, we cant omit anything
266
+ var _b = []; // when both query and request are needed, we cant omit anything
265
267
  for (
266
268
  // typescript type magiuc to create a nice fitting function interface
267
269
  var _i = 1; // when both query and request are needed, we cant omit anything
@@ -271,21 +273,24 @@ var Provider = /** @class */ (function () {
271
273
  _i++ // when both query and request are needed, we cant omit anything
272
274
  ) {
273
275
  // typescript type magiuc to create a nice fitting function interface
274
- _a[_i - 1] = arguments[_i]; // when both query and request are needed, we cant omit anything
276
+ _b[_i - 1] = arguments[_i]; // when both query and request are needed, we cant omit anything
275
277
  }
276
278
  // typescript type magiuc to create a nice fitting function interface
277
- var _b = __read(_a, 2),
278
- query = _b[0],
279
- request = _b[1]; // when both query and request are needed, we cant omit anything
279
+ var _c = __read(_b, 2),
280
+ query = _c[0],
281
+ request = _c[1]; // when both query and request are needed, we cant omit anything
280
282
  return __awaiter(this, void 0, void 0, function () {
281
- var baseUrl, method, queryString, headers, data;
282
- return __generator(this, function (_c) {
283
- switch (_c.label) {
283
+ var baseUrl, method, queryString, headers, data, error_1, data;
284
+ return __generator(this, function (_d) {
285
+ switch (_d.label) {
284
286
  case 0:
285
287
  baseUrl = this.getFetchUrl(endpoint);
286
288
  method = this.getFetchMethod(endpoint);
287
289
  queryString = this.getQueryString(query);
288
290
  headers = this.getHeaders(method);
291
+ _d.label = 1;
292
+ case 1:
293
+ _d.trys.push([1, 3, , 4]);
289
294
  return [
290
295
  4 /*yield*/,
291
296
  axios_1.default.request({
@@ -295,9 +300,22 @@ var Provider = /** @class */ (function () {
295
300
  headers: headers,
296
301
  }),
297
302
  ];
298
- case 1:
299
- data = _c.sent().data;
303
+ case 2:
304
+ data = _d.sent().data;
300
305
  return [2 /*return*/, data];
306
+ case 3:
307
+ error_1 = _d.sent();
308
+ data =
309
+ (_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.response) === null ||
310
+ _a === void 0
311
+ ? void 0
312
+ : _a.data;
313
+ if (data === null || data === void 0 ? void 0 : data.message) {
314
+ throw new Error(data.code + ': ' + data.message);
315
+ }
316
+ throw error_1;
317
+ case 4:
318
+ return [2 /*return*/];
301
319
  }
302
320
  });
303
321
  });
@@ -345,7 +363,7 @@ var Provider = /** @class */ (function () {
345
363
  {
346
364
  signature: [],
347
365
  contract_address: contractAddress,
348
- entry_point_selector: (0, stark_1.getSelectorFromName)(entrypoint),
366
+ entry_point_selector: (0, hash_1.getSelectorFromName)(entrypoint),
349
367
  calldata: calldata,
350
368
  }
351
369
  ),
@@ -532,10 +550,8 @@ var Provider = /** @class */ (function () {
532
550
  * Invokes a function on starknet
533
551
  * @deprecated This method wont be supported as soon as fees are mandatory
534
552
  *
535
- * @param contractAddress - target contract address for invoke
536
- * @param entrypointSelector - target entrypoint selector for
537
- * @param calldata - (optional, default []) calldata
538
- * @param signature - (optional) signature to send along
553
+ * @param invocation
554
+ * @param _abi - (optional) signature to send along
539
555
  * @returns response from addTransaction
540
556
  */
541
557
  Provider.prototype.invokeFunction = function (invocation, _abi) {
@@ -543,7 +559,7 @@ var Provider = /** @class */ (function () {
543
559
  return this.fetchEndpoint('add_transaction', undefined, {
544
560
  type: 'INVOKE_FUNCTION',
545
561
  contract_address: invocation.contractAddress,
546
- entry_point_selector: (0, stark_1.getSelectorFromName)(invocation.entrypoint),
562
+ entry_point_selector: (0, hash_1.getSelectorFromName)(invocation.entrypoint),
547
563
  calldata: (0, number_1.bigNumberishArrayToDecimalStringArray)(
548
564
  (_a = invocation.calldata) !== null && _a !== void 0 ? _a : []
549
565
  ),
@@ -552,12 +568,12 @@ var Provider = /** @class */ (function () {
552
568
  ),
553
569
  });
554
570
  };
555
- Provider.prototype.waitForTx = function (txHash, retryInterval) {
571
+ Provider.prototype.waitForTransaction = function (txHash, retryInterval) {
556
572
  if (retryInterval === void 0) {
557
573
  retryInterval = 8000;
558
574
  }
559
575
  return __awaiter(this, void 0, void 0, function () {
560
- var onchain, res, error;
576
+ var onchain, res, message, error;
561
577
  return __generator(this, function (_a) {
562
578
  switch (_a.label) {
563
579
  case 0:
@@ -579,7 +595,14 @@ var Provider = /** @class */ (function () {
579
595
  if (res.tx_status === 'ACCEPTED_ON_L1' || res.tx_status === 'ACCEPTED_ON_L2') {
580
596
  onchain = true;
581
597
  } else if (res.tx_status === 'REJECTED' || res.tx_status === 'NOT_RECEIVED') {
582
- error = Error(res.tx_status);
598
+ message = res.tx_failure_reason
599
+ ? res.tx_status +
600
+ ': ' +
601
+ res.tx_failure_reason.code +
602
+ '\n' +
603
+ res.tx_failure_reason.error_message
604
+ : res.tx_status;
605
+ error = new Error(message);
583
606
  error.response = res;
584
607
  throw error;
585
608
  }
@@ -590,6 +613,19 @@ var Provider = /** @class */ (function () {
590
613
  });
591
614
  });
592
615
  };
616
+ /**
617
+ * @deprecated use `waitForTransaction` instead
618
+ */
619
+ Provider.prototype.waitForTx = function (txHash, retryInterval) {
620
+ if (retryInterval === void 0) {
621
+ retryInterval = 8000;
622
+ }
623
+ return __awaiter(this, void 0, void 0, function () {
624
+ return __generator(this, function (_a) {
625
+ return [2 /*return*/, this.waitForTransaction(txHash, retryInterval)];
626
+ });
627
+ });
628
+ };
593
629
  return Provider;
594
630
  })();
595
631
  exports.Provider = Provider;
@@ -122,5 +122,9 @@ export declare abstract class ProviderInterface {
122
122
  * @returns response from addTransaction
123
123
  */
124
124
  abstract invokeFunction(invocation: Invocation): Promise<AddTransactionResponse>;
125
- abstract waitForTx(txHash: BigNumberish, retryInterval?: number): Promise<void>;
125
+ abstract waitForTransaction(txHash: BigNumberish, retryInterval?: number): Promise<void>;
126
+ /**
127
+ * @deprecated use `waitForTransaction` instead
128
+ */
129
+ abstract waitForTransaction(txHash: BigNumberish, retryInterval?: number): Promise<void>;
126
130
  }
@@ -10,5 +10,5 @@ export declare class Signer implements SignerInterface {
10
10
  transactionsDetail: InvocationsSignerDetails,
11
11
  abis?: Abi[]
12
12
  ): Promise<Signature>;
13
- signMessage(typedData: TypedData, walletAddress: string): Promise<Signature>;
13
+ signMessage(typedData: TypedData, accountAddress: string): Promise<Signature>;
14
14
  }
package/signer/default.js CHANGED
@@ -133,10 +133,7 @@ var __generator =
133
133
  Object.defineProperty(exports, '__esModule', { value: true });
134
134
  exports.Signer = void 0;
135
135
  var ellipticCurve_1 = require('../utils/ellipticCurve');
136
- var encode_1 = require('../utils/encode');
137
136
  var hash_1 = require('../utils/hash');
138
- var number_1 = require('../utils/number');
139
- var stark_1 = require('../utils/stark');
140
137
  var typedData_1 = require('../utils/typedData');
141
138
  var Signer = /** @class */ (function () {
142
139
  function Signer(keyPair) {
@@ -150,58 +147,27 @@ var Signer = /** @class */ (function () {
150
147
  });
151
148
  };
152
149
  Signer.prototype.signTransaction = function (transactions, transactionsDetail, abis) {
153
- if (abis === void 0) {
154
- abis = [];
155
- }
156
150
  return __awaiter(this, void 0, void 0, function () {
157
- var _a,
158
- contractAddress,
159
- entrypoint,
160
- _b,
161
- calldata,
162
- nonce,
163
- walletAddress,
164
- nonceBn,
165
- entrypointSelector,
166
- calldataDecimal,
167
- msgHash;
168
- return __generator(this, function (_c) {
169
- if (transactions.length !== 1) {
170
- throw new Error('Only one transaction at a time is currently supported by this signer');
171
- }
172
- if (
173
- (abis === null || abis === void 0 ? void 0 : abis.length) !== 0 &&
174
- abis.length !== transactions.length
175
- ) {
151
+ var msgHash;
152
+ return __generator(this, function (_a) {
153
+ if (abis && abis.length !== transactions.length) {
176
154
  throw new Error('ABI must be provided for each transaction or no transaction');
177
155
  }
178
- (_a = transactions[0]),
179
- (contractAddress = _a.contractAddress),
180
- (entrypoint = _a.entrypoint),
181
- (_b = _a.calldata),
182
- (calldata = _b === void 0 ? [] : _b);
183
- (nonce = transactionsDetail.nonce), (walletAddress = transactionsDetail.walletAddress);
184
- nonceBn = (0, number_1.toBN)(nonce);
185
- entrypointSelector = (0, stark_1.getSelectorFromName)(entrypoint);
186
- calldataDecimal = (0, number_1.bigNumberishArrayToDecimalStringArray)(calldata);
187
- msgHash = (0, encode_1.addHexPrefix)(
188
- (0, hash_1.hashMessage)(
189
- walletAddress,
190
- contractAddress,
191
- entrypointSelector,
192
- calldataDecimal,
193
- nonceBn.toString()
194
- )
156
+ msgHash = (0, hash_1.hashMulticall)(
157
+ transactionsDetail.walletAddress,
158
+ transactions,
159
+ transactionsDetail.nonce.toString(),
160
+ transactionsDetail.maxFee.toString()
195
161
  );
196
162
  return [2 /*return*/, (0, ellipticCurve_1.sign)(this.keyPair, msgHash)];
197
163
  });
198
164
  });
199
165
  };
200
- Signer.prototype.signMessage = function (typedData, walletAddress) {
166
+ Signer.prototype.signMessage = function (typedData, accountAddress) {
201
167
  return __awaiter(this, void 0, void 0, function () {
202
168
  var msgHash;
203
169
  return __generator(this, function (_a) {
204
- msgHash = (0, typedData_1.getMessageHash)(typedData, walletAddress);
170
+ msgHash = (0, typedData_1.getMessageHash)(typedData, accountAddress);
205
171
  return [2 /*return*/, (0, ellipticCurve_1.sign)(this.keyPair, msgHash)];
206
172
  });
207
173
  });
@@ -11,11 +11,12 @@ export declare abstract class SignerInterface {
11
11
  * Sign an JSON object for off-chain usage with the starknet private key and return the signature
12
12
  * This adds a message prefix so it cant be interchanged with transactions
13
13
  *
14
- * @param json - JSON object to be signed
14
+ * @param typedData - JSON object to be signed
15
+ * @param accountAddress - account
15
16
  * @returns the signature of the JSON object
16
17
  * @throws {Error} if the JSON object is not a valid JSON
17
18
  */
18
- abstract signMessage(typedData: TypedData, walletAddress: string): Promise<Signature>;
19
+ abstract signMessage(typedData: TypedData, accountAddress: string): Promise<Signature>;
19
20
  /**
20
21
  * Signs a transaction with the starknet private key and returns the signature
21
22
  *