starknet 3.18.1 → 4.0.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 (159) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +1 -1
  3. package/__tests__/account.test.ts +11 -56
  4. package/__tests__/contract.test.ts +11 -49
  5. package/__tests__/defaultProvider.test.ts +321 -0
  6. package/__tests__/fixtures.ts +32 -11
  7. package/__tests__/rpcProvider.test.ts +17 -0
  8. package/__tests__/sequencerProvider.test.ts +45 -0
  9. package/account/default.d.ts +54 -77
  10. package/account/default.js +271 -596
  11. package/account/index.js +18 -31
  12. package/account/interface.d.ts +66 -95
  13. package/account/interface.js +20 -30
  14. package/constants.d.ts +17 -19
  15. package/constants.js +2038 -2059
  16. package/contract/contractFactory.d.ts +25 -29
  17. package/contract/contractFactory.js +94 -210
  18. package/contract/default.d.ts +117 -146
  19. package/contract/default.js +582 -776
  20. package/contract/index.js +19 -32
  21. package/contract/interface.d.ts +72 -92
  22. package/contract/interface.js +6 -5
  23. package/dist/account/default.d.ts +5 -9
  24. package/dist/account/default.js +35 -169
  25. package/dist/account/interface.d.ts +3 -15
  26. package/dist/contract/contractFactory.js +4 -4
  27. package/dist/contract/default.d.ts +3 -3
  28. package/dist/contract/default.js +3 -2
  29. package/dist/contract/interface.d.ts +2 -2
  30. package/dist/provider/default.d.ts +18 -134
  31. package/dist/provider/default.js +47 -410
  32. package/dist/provider/index.d.ts +2 -0
  33. package/dist/provider/index.js +2 -0
  34. package/dist/provider/interface.d.ts +45 -50
  35. package/dist/provider/rpc.d.ts +57 -0
  36. package/dist/provider/rpc.js +364 -0
  37. package/dist/provider/sequencer.d.ts +66 -0
  38. package/dist/provider/sequencer.js +443 -0
  39. package/dist/types/account.d.ts +2 -3
  40. package/dist/types/api/index.d.ts +16 -0
  41. package/dist/types/api/index.js +18 -0
  42. package/dist/types/api/rpc.d.ts +221 -0
  43. package/dist/types/{api.js → api/rpc.js} +0 -0
  44. package/dist/types/api/sequencer.d.ts +289 -0
  45. package/dist/types/api/sequencer.js +2 -0
  46. package/dist/types/index.d.ts +3 -1
  47. package/dist/types/index.js +15 -1
  48. package/dist/types/lib.d.ts +3 -1
  49. package/dist/types/provider.d.ts +86 -0
  50. package/dist/types/provider.js +2 -0
  51. package/dist/utils/provider.d.ts +4 -0
  52. package/dist/utils/provider.js +38 -0
  53. package/dist/utils/responseParser/index.d.ts +11 -0
  54. package/dist/utils/responseParser/index.js +9 -0
  55. package/dist/utils/responseParser/rpc.d.ts +13 -0
  56. package/dist/utils/responseParser/rpc.js +96 -0
  57. package/dist/utils/responseParser/sequencer.d.ts +13 -0
  58. package/dist/utils/responseParser/sequencer.js +124 -0
  59. package/index.js +42 -75
  60. package/package.json +1 -1
  61. package/provider/default.d.ts +21 -175
  62. package/provider/default.js +139 -703
  63. package/provider/errors.d.ts +4 -4
  64. package/provider/errors.js +30 -40
  65. package/provider/index.d.ts +2 -0
  66. package/provider/index.js +22 -33
  67. package/provider/interface.d.ts +104 -131
  68. package/provider/interface.js +6 -5
  69. package/provider/rpc.d.ts +57 -0
  70. package/provider/rpc.js +364 -0
  71. package/provider/sequencer.d.ts +66 -0
  72. package/provider/sequencer.js +443 -0
  73. package/provider/utils.d.ts +7 -9
  74. package/provider/utils.js +39 -44
  75. package/signer/default.d.ts +5 -9
  76. package/signer/default.js +72 -177
  77. package/signer/index.js +18 -31
  78. package/signer/interface.d.ts +29 -33
  79. package/signer/interface.js +6 -5
  80. package/src/account/default.ts +26 -146
  81. package/src/account/interface.ts +5 -20
  82. package/src/contract/contractFactory.ts +3 -6
  83. package/src/contract/default.ts +6 -4
  84. package/src/contract/interface.ts +2 -2
  85. package/src/provider/default.ts +63 -394
  86. package/src/provider/index.ts +2 -0
  87. package/src/provider/interface.ts +68 -63
  88. package/src/provider/rpc.ts +300 -0
  89. package/src/provider/sequencer.ts +384 -0
  90. package/src/types/account.ts +2 -3
  91. package/src/types/api/index.ts +17 -0
  92. package/src/types/api/rpc.ts +247 -0
  93. package/src/types/api/sequencer.ts +331 -0
  94. package/src/types/index.ts +3 -1
  95. package/src/types/lib.ts +3 -1
  96. package/src/types/provider.ts +108 -0
  97. package/src/utils/provider.ts +28 -0
  98. package/src/utils/responseParser/index.ts +28 -0
  99. package/src/utils/responseParser/rpc.ts +93 -0
  100. package/src/utils/responseParser/sequencer.ts +127 -0
  101. package/types/account.d.ts +5 -7
  102. package/types/account.js +2 -2
  103. package/types/api/index.d.ts +16 -0
  104. package/types/api/index.js +18 -0
  105. package/types/api/rpc.d.ts +221 -0
  106. package/types/api/rpc.js +2 -0
  107. package/types/api/sequencer.d.ts +289 -0
  108. package/types/api/sequencer.js +2 -0
  109. package/types/contract.d.ts +1 -1
  110. package/types/contract.js +2 -2
  111. package/types/index.d.ts +3 -1
  112. package/types/index.js +35 -34
  113. package/types/lib.d.ts +36 -41
  114. package/types/lib.js +2 -2
  115. package/types/provider.d.ts +86 -0
  116. package/types/provider.js +2 -0
  117. package/types/signer.d.ts +2 -2
  118. package/types/signer.js +2 -2
  119. package/utils/address.js +26 -37
  120. package/utils/ellipticCurve.d.ts +1 -6
  121. package/utils/ellipticCurve.js +73 -137
  122. package/utils/encode.js +49 -85
  123. package/utils/hash.d.ts +4 -31
  124. package/utils/hash.js +76 -141
  125. package/utils/json.d.ts +13 -45
  126. package/utils/json.js +15 -22
  127. package/utils/number.d.ts +2 -9
  128. package/utils/number.js +47 -81
  129. package/utils/provider.d.ts +4 -0
  130. package/utils/provider.js +38 -0
  131. package/utils/responseParser/index.d.ts +11 -0
  132. package/utils/responseParser/index.js +9 -0
  133. package/utils/responseParser/rpc.d.ts +13 -0
  134. package/utils/responseParser/rpc.js +96 -0
  135. package/utils/responseParser/sequencer.d.ts +13 -0
  136. package/utils/responseParser/sequencer.js +124 -0
  137. package/utils/shortString.js +13 -21
  138. package/utils/stark.d.ts +0 -1
  139. package/utils/stark.js +59 -93
  140. package/utils/transaction.d.ts +3 -6
  141. package/utils/transaction.js +50 -81
  142. package/utils/typedData/index.d.ts +3 -15
  143. package/utils/typedData/index.js +109 -175
  144. package/utils/typedData/types.d.ts +9 -9
  145. package/utils/typedData/types.js +2 -2
  146. package/utils/typedData/utils.js +6 -6
  147. package/utils/uint256.d.ts +5 -5
  148. package/utils/uint256.js +16 -26
  149. package/www/docs/API/account.md +3 -4
  150. package/www/docs/API/contract.md +2 -2
  151. package/www/docs/API/contractFactory.md +2 -2
  152. package/www/docs/API/provider.md +185 -74
  153. package/www/guides/account.md +1 -8
  154. package/www/guides/erc20.md +3 -0
  155. package/__tests__/provider.test.ts +0 -168
  156. package/dist/types/api.d.ts +0 -261
  157. package/src/types/api.ts +0 -303
  158. package/types/api.d.ts +0 -287
  159. package/types/api.js +0 -2
@@ -0,0 +1,364 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.RpcProvider = void 0;
43
+ var cross_fetch_1 = __importDefault(require("cross-fetch"));
44
+ var hash_1 = require("../utils/hash");
45
+ var json_1 = require("../utils/json");
46
+ var number_1 = require("../utils/number");
47
+ var provider_1 = require("../utils/provider");
48
+ var rpc_1 = require("../utils/responseParser/rpc");
49
+ var stark_1 = require("../utils/stark");
50
+ var RpcProvider = /** @class */ (function () {
51
+ function RpcProvider(optionsOrProvider) {
52
+ var _this = this;
53
+ this.responseParser = new rpc_1.RPCResponseParser();
54
+ var nodeUrl = optionsOrProvider.nodeUrl;
55
+ this.nodeUrl = nodeUrl;
56
+ this.getChainId().then(function (chainId) {
57
+ _this.chainId = chainId;
58
+ });
59
+ }
60
+ RpcProvider.prototype.fetchEndpoint = function (method, request) {
61
+ var _a;
62
+ return __awaiter(this, void 0, void 0, function () {
63
+ var requestData, rawResult, _b, error, result, code, message, error_1, data;
64
+ return __generator(this, function (_c) {
65
+ switch (_c.label) {
66
+ case 0:
67
+ requestData = {
68
+ method: method,
69
+ jsonrpc: '2.0',
70
+ params: request,
71
+ id: 0,
72
+ };
73
+ _c.label = 1;
74
+ case 1:
75
+ _c.trys.push([1, 4, , 5]);
76
+ return [4 /*yield*/, (0, cross_fetch_1.default)(this.nodeUrl, {
77
+ method: 'POST',
78
+ body: (0, json_1.stringify)(requestData),
79
+ headers: {
80
+ 'Content-Type': 'application/json',
81
+ },
82
+ })];
83
+ case 2:
84
+ rawResult = _c.sent();
85
+ return [4 /*yield*/, rawResult.json()];
86
+ case 3:
87
+ _b = _c.sent(), error = _b.error, result = _b.result;
88
+ if (error) {
89
+ code = error.code, message = error.message;
90
+ throw new Error("".concat(code, ": ").concat(message));
91
+ }
92
+ else {
93
+ return [2 /*return*/, result];
94
+ }
95
+ return [3 /*break*/, 5];
96
+ case 4:
97
+ error_1 = _c.sent();
98
+ data = (_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.response) === null || _a === void 0 ? void 0 : _a.data;
99
+ if (data === null || data === void 0 ? void 0 : data.message) {
100
+ throw new Error("".concat(data.code, ": ").concat(data.message));
101
+ }
102
+ throw error_1;
103
+ case 5: return [2 /*return*/];
104
+ }
105
+ });
106
+ });
107
+ };
108
+ RpcProvider.prototype.getChainId = function () {
109
+ return __awaiter(this, void 0, void 0, function () {
110
+ return __generator(this, function (_a) {
111
+ return [2 /*return*/, this.fetchEndpoint('starknet_chainId')];
112
+ });
113
+ });
114
+ };
115
+ RpcProvider.prototype.getBlock = function (blockIdentifier) {
116
+ if (blockIdentifier === void 0) { blockIdentifier = 'pending'; }
117
+ return __awaiter(this, void 0, void 0, function () {
118
+ var method;
119
+ return __generator(this, function (_a) {
120
+ method = typeof blockIdentifier === 'string' && (0, number_1.isHex)(blockIdentifier)
121
+ ? 'starknet_getBlockByHash'
122
+ : 'starknet_getBlockByNumber';
123
+ return [2 /*return*/, this.fetchEndpoint(method, [blockIdentifier]).then(this.responseParser.parseGetBlockResponse)];
124
+ });
125
+ });
126
+ };
127
+ RpcProvider.prototype.getStorageAt = function (contractAddress, key, blockHashOrTag) {
128
+ if (blockHashOrTag === void 0) { blockHashOrTag = 'pending'; }
129
+ return __awaiter(this, void 0, void 0, function () {
130
+ var parsedKey;
131
+ return __generator(this, function (_a) {
132
+ parsedKey = (0, number_1.toHex)((0, number_1.toBN)(key));
133
+ return [2 /*return*/, this.fetchEndpoint('starknet_getStorageAt', [
134
+ contractAddress,
135
+ parsedKey,
136
+ blockHashOrTag,
137
+ ])];
138
+ });
139
+ });
140
+ };
141
+ RpcProvider.prototype.getTransaction = function (txHash) {
142
+ return __awaiter(this, void 0, void 0, function () {
143
+ return __generator(this, function (_a) {
144
+ return [2 /*return*/, this.fetchEndpoint('starknet_getTransactionByHash', [txHash]).then(this.responseParser.parseGetTransactionResponse)];
145
+ });
146
+ });
147
+ };
148
+ RpcProvider.prototype.getTransactionReceipt = function (txHash) {
149
+ return __awaiter(this, void 0, void 0, function () {
150
+ return __generator(this, function (_a) {
151
+ return [2 /*return*/, this.fetchEndpoint('starknet_getTransactionReceipt', [txHash]).then(this.responseParser.parseGetTransactionReceiptResponse)];
152
+ });
153
+ });
154
+ };
155
+ RpcProvider.prototype.getClassAt = function (contractAddress, _blockIdentifier) {
156
+ if (_blockIdentifier === void 0) { _blockIdentifier = 'pending'; }
157
+ return __awaiter(this, void 0, void 0, function () {
158
+ return __generator(this, function (_a) {
159
+ return [2 /*return*/, this.fetchEndpoint('starknet_getClassAt', [contractAddress])];
160
+ });
161
+ });
162
+ };
163
+ RpcProvider.prototype.getEstimateFee = function (invocation, blockIdentifier, invocationDetails) {
164
+ if (blockIdentifier === void 0) { blockIdentifier = 'pending'; }
165
+ if (invocationDetails === void 0) { invocationDetails = {}; }
166
+ return __awaiter(this, void 0, void 0, function () {
167
+ return __generator(this, function (_a) {
168
+ return [2 /*return*/, this.fetchEndpoint('starknet_estimateFee', [
169
+ {
170
+ contract_address: invocation.contractAddress,
171
+ entry_point_selector: (0, hash_1.getSelectorFromName)(invocation.entrypoint),
172
+ calldata: (0, provider_1.parseCalldata)(invocation.calldata),
173
+ signature: (0, number_1.bigNumberishArrayToDecimalStringArray)(invocation.signature || []),
174
+ version: (0, number_1.toHex)((0, number_1.toBN)((invocationDetails === null || invocationDetails === void 0 ? void 0 : invocationDetails.version) || 0)),
175
+ },
176
+ blockIdentifier,
177
+ ]).then(this.responseParser.parseFeeEstimateResponse)];
178
+ });
179
+ });
180
+ };
181
+ RpcProvider.prototype.declareContract = function (_a) {
182
+ var contract = _a.contract, version = _a.version;
183
+ return __awaiter(this, void 0, void 0, function () {
184
+ var contractDefinition;
185
+ return __generator(this, function (_b) {
186
+ contractDefinition = (0, provider_1.parseContract)(contract);
187
+ return [2 /*return*/, this.fetchEndpoint('starknet_addDeclareTransaction', [
188
+ {
189
+ program: contractDefinition.program,
190
+ entry_points_by_type: contractDefinition.entry_points_by_type,
191
+ },
192
+ (0, number_1.toHex)((0, number_1.toBN)(version || 0)),
193
+ ]).then(this.responseParser.parseDeclareContractResponse)];
194
+ });
195
+ });
196
+ };
197
+ RpcProvider.prototype.deployContract = function (_a) {
198
+ var contract = _a.contract, constructorCalldata = _a.constructorCalldata, addressSalt = _a.addressSalt;
199
+ return __awaiter(this, void 0, void 0, function () {
200
+ var contractDefinition;
201
+ return __generator(this, function (_b) {
202
+ contractDefinition = (0, provider_1.parseContract)(contract);
203
+ return [2 /*return*/, this.fetchEndpoint('starknet_addDeployTransaction', [
204
+ addressSalt !== null && addressSalt !== void 0 ? addressSalt : (0, stark_1.randomAddress)(),
205
+ (0, number_1.bigNumberishArrayToDecimalStringArray)(constructorCalldata !== null && constructorCalldata !== void 0 ? constructorCalldata : []),
206
+ {
207
+ program: contractDefinition.program,
208
+ entry_points_by_type: contractDefinition.entry_points_by_type,
209
+ },
210
+ ]).then(this.responseParser.parseDeployContractResponse)];
211
+ });
212
+ });
213
+ };
214
+ RpcProvider.prototype.invokeFunction = function (functionInvocation, details) {
215
+ return __awaiter(this, void 0, void 0, function () {
216
+ return __generator(this, function (_a) {
217
+ return [2 /*return*/, this.fetchEndpoint('starknet_addInvokeTransaction', [
218
+ {
219
+ contract_address: functionInvocation.contractAddress,
220
+ entry_point_selector: (0, hash_1.getSelectorFromName)(functionInvocation.entrypoint),
221
+ calldata: (0, provider_1.parseCalldata)(functionInvocation.calldata),
222
+ },
223
+ (0, number_1.bigNumberishArrayToDecimalStringArray)(functionInvocation.signature || []),
224
+ (0, number_1.toHex)((0, number_1.toBN)(details.maxFee || 0)),
225
+ (0, number_1.toHex)((0, number_1.toBN)(details.version || 0)),
226
+ ]).then(this.responseParser.parseInvokeFunctionResponse)];
227
+ });
228
+ });
229
+ };
230
+ RpcProvider.prototype.callContract = function (call, blockIdentifier) {
231
+ if (blockIdentifier === void 0) { blockIdentifier = 'pending'; }
232
+ return __awaiter(this, void 0, void 0, function () {
233
+ var result;
234
+ return __generator(this, function (_a) {
235
+ switch (_a.label) {
236
+ case 0: return [4 /*yield*/, this.fetchEndpoint('starknet_call', [
237
+ {
238
+ contract_address: call.contractAddress,
239
+ entry_point_selector: (0, hash_1.getSelectorFromName)(call.entrypoint),
240
+ calldata: (0, provider_1.parseCalldata)(call.calldata),
241
+ },
242
+ blockIdentifier,
243
+ ])];
244
+ case 1:
245
+ result = _a.sent();
246
+ return [2 /*return*/, this.responseParser.parseCallContractResponse(result)];
247
+ }
248
+ });
249
+ });
250
+ };
251
+ RpcProvider.prototype.waitForTransaction = function (txHash, retryInterval) {
252
+ if (retryInterval === void 0) { retryInterval = 8000; }
253
+ return __awaiter(this, void 0, void 0, function () {
254
+ var onchain, retries, successStates, errorStates, res, message, error, error_2;
255
+ return __generator(this, function (_a) {
256
+ switch (_a.label) {
257
+ case 0:
258
+ onchain = false;
259
+ retries = 100;
260
+ _a.label = 1;
261
+ case 1:
262
+ if (!!onchain) return [3 /*break*/, 7];
263
+ successStates = ['ACCEPTED_ON_L1', 'ACCEPTED_ON_L2', 'PENDING'];
264
+ errorStates = ['REJECTED', 'NOT_RECEIVED'];
265
+ // eslint-disable-next-line no-await-in-loop
266
+ return [4 /*yield*/, (0, provider_1.wait)(retryInterval)];
267
+ case 2:
268
+ // eslint-disable-next-line no-await-in-loop
269
+ _a.sent();
270
+ _a.label = 3;
271
+ case 3:
272
+ _a.trys.push([3, 5, , 6]);
273
+ return [4 /*yield*/, this.getTransactionReceipt(txHash)];
274
+ case 4:
275
+ res = _a.sent();
276
+ if (successStates.includes(res.status)) {
277
+ onchain = true;
278
+ }
279
+ else if (errorStates.includes(res.status)) {
280
+ message = res.status;
281
+ error = new Error(message);
282
+ error.response = res;
283
+ throw error;
284
+ }
285
+ return [3 /*break*/, 6];
286
+ case 5:
287
+ error_2 = _a.sent();
288
+ if (error_2 instanceof Error && errorStates.includes(error_2.message)) {
289
+ throw error_2;
290
+ }
291
+ if (retries === 0) {
292
+ throw error_2;
293
+ }
294
+ return [3 /*break*/, 6];
295
+ case 6:
296
+ retries -= 1;
297
+ return [3 /*break*/, 1];
298
+ case 7: return [4 /*yield*/, (0, provider_1.wait)(retryInterval)];
299
+ case 8:
300
+ _a.sent();
301
+ return [2 /*return*/];
302
+ }
303
+ });
304
+ });
305
+ };
306
+ /**
307
+ * Gets the transaction count from a block.
308
+ *
309
+ *
310
+ * @param blockIdentifier
311
+ * @returns Number of transactions
312
+ */
313
+ RpcProvider.prototype.getTransactionCount = function (blockIdentifier) {
314
+ return __awaiter(this, void 0, void 0, function () {
315
+ return __generator(this, function (_a) {
316
+ if (typeof blockIdentifier === 'number') {
317
+ return [2 /*return*/, this.fetchEndpoint('starknet_getBlockTransactionCountByNumber', [blockIdentifier])];
318
+ }
319
+ return [2 /*return*/, this.fetchEndpoint('starknet_getBlockTransactionCountByHash', [blockIdentifier])];
320
+ });
321
+ });
322
+ };
323
+ /**
324
+ * Gets the latest block number
325
+ *
326
+ *
327
+ * @returns Number of the latest block
328
+ */
329
+ RpcProvider.prototype.getBlockNumber = function () {
330
+ return __awaiter(this, void 0, void 0, function () {
331
+ return __generator(this, function (_a) {
332
+ return [2 /*return*/, this.fetchEndpoint('starknet_blockNumber')];
333
+ });
334
+ });
335
+ };
336
+ /**
337
+ * Gets syncing status of the node
338
+ *
339
+ *
340
+ * @returns Object with the stats data
341
+ */
342
+ RpcProvider.prototype.getSyncingStats = function () {
343
+ return __awaiter(this, void 0, void 0, function () {
344
+ return __generator(this, function (_a) {
345
+ return [2 /*return*/, this.fetchEndpoint('starknet_syncing')];
346
+ });
347
+ });
348
+ };
349
+ /**
350
+ * Gets all the events filtered
351
+ *
352
+ *
353
+ * @returns events and the pagination of the events
354
+ */
355
+ RpcProvider.prototype.getEvents = function (eventFilter) {
356
+ return __awaiter(this, void 0, void 0, function () {
357
+ return __generator(this, function (_a) {
358
+ return [2 /*return*/, this.fetchEndpoint('starknet_getEvents', [eventFilter])];
359
+ });
360
+ });
361
+ };
362
+ return RpcProvider;
363
+ }());
364
+ exports.RpcProvider = RpcProvider;
@@ -0,0 +1,66 @@
1
+ import { StarknetChainId } from '../constants';
2
+ import { BlockTag, Call, CallContractResponse, ContractClass, DeclareContractPayload, DeclareContractResponse, DeployContractPayload, DeployContractResponse, EstimateFeeResponse, GetBlockResponse, GetTransactionReceiptResponse, GetTransactionResponse, Invocation, InvocationsDetails, InvokeFunctionResponse } from '../types';
3
+ import { GetContractAddressesResponse, GetTransactionStatusResponse, GetTransactionTraceResponse, Sequencer } from '../types/api';
4
+ import { BigNumberish } from '../utils/number';
5
+ import { ProviderInterface } from './interface';
6
+ import { BlockIdentifier } from './utils';
7
+ declare type NetworkName = 'mainnet-alpha' | 'goerli-alpha';
8
+ export declare type SequencerProviderOptions = {
9
+ network: NetworkName;
10
+ } | {
11
+ baseUrl: string;
12
+ feederGatewayUrl?: string;
13
+ gatewayUrl?: string;
14
+ chainId?: StarknetChainId;
15
+ };
16
+ export declare class SequencerProvider implements ProviderInterface {
17
+ baseUrl: string;
18
+ feederGatewayUrl: string;
19
+ gatewayUrl: string;
20
+ chainId: StarknetChainId;
21
+ private responseParser;
22
+ constructor(optionsOrProvider?: SequencerProviderOptions);
23
+ protected static getNetworkFromName(name: NetworkName): "https://alpha-mainnet.starknet.io" | "https://alpha4.starknet.io";
24
+ protected static getChainIdFromBaseUrl(baseUrl: string): StarknetChainId;
25
+ private getFetchUrl;
26
+ private getFetchMethod;
27
+ private getQueryString;
28
+ private getHeaders;
29
+ protected fetchEndpoint<T extends keyof Sequencer.Endpoints>(endpoint: T, ...[query, request]: Sequencer.Endpoints[T]['QUERY'] extends never ? Sequencer.Endpoints[T]['REQUEST'] extends never ? [] : [undefined, Sequencer.Endpoints[T]['REQUEST']] : Sequencer.Endpoints[T]['REQUEST'] extends never ? [Sequencer.Endpoints[T]['QUERY']] : [Sequencer.Endpoints[T]['QUERY'], Sequencer.Endpoints[T]['REQUEST']]): Promise<Sequencer.Endpoints[T]['RESPONSE']>;
30
+ callContract({ contractAddress, entrypoint: entryPointSelector, calldata }: Call, blockIdentifier?: BlockIdentifier): Promise<CallContractResponse>;
31
+ getBlock(blockIdentifier?: BlockIdentifier): Promise<GetBlockResponse>;
32
+ getStorageAt(contractAddress: string, key: BigNumberish, blockHashOrTag?: BlockTag | BigNumberish): Promise<BigNumberish>;
33
+ getTransaction(txHash: BigNumberish): Promise<GetTransactionResponse>;
34
+ getTransactionReceipt(txHash: BigNumberish): Promise<GetTransactionReceiptResponse>;
35
+ getClassAt(contractAddress: string, blockIdentifier?: BlockIdentifier): Promise<ContractClass>;
36
+ invokeFunction(functionInvocation: Invocation, details: InvocationsDetails): Promise<InvokeFunctionResponse>;
37
+ deployContract({ contract, constructorCalldata, addressSalt, }: DeployContractPayload): Promise<DeployContractResponse>;
38
+ declareContract({ contract, }: DeclareContractPayload): Promise<DeclareContractResponse>;
39
+ getEstimateFee(invocation: Invocation, blockIdentifier?: BlockIdentifier, invocationDetails?: InvocationsDetails): Promise<EstimateFeeResponse>;
40
+ waitForTransaction(txHash: BigNumberish, retryInterval?: number): Promise<void>;
41
+ /**
42
+ * Gets the status of a transaction.
43
+ *
44
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L48-L52)
45
+ *
46
+ * @param txHash
47
+ * @returns the transaction status object { block_number, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
48
+ */
49
+ getTransactionStatus(txHash: BigNumberish): Promise<GetTransactionStatusResponse>;
50
+ /**
51
+ * Gets the smart contract address on the goerli testnet.
52
+ *
53
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L13-L15)
54
+ * @returns starknet smart contract addresses
55
+ */
56
+ getContractAddresses(): Promise<GetContractAddressesResponse>;
57
+ /**
58
+ * Gets the transaction trace from a tx id.
59
+ *
60
+ *
61
+ * @param txHash
62
+ * @returns the transaction trace
63
+ */
64
+ getTransactionTrace(txHash: BigNumberish): Promise<GetTransactionTraceResponse>;
65
+ }
66
+ export {};