starknet 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ # [4.3.0](https://github.com/0xs34n/starknet.js/compare/v4.2.0...v4.3.0) (2022-08-09)
2
+
3
+ ### Bug Fixes
4
+
5
+ - intendations in provider.md ([4a310c6](https://github.com/0xs34n/starknet.js/commit/4a310c6c992c77f9f6729a70c1af14481cd891f7))
6
+ - **sequenceProvider:** feedergatewayUrl and gatewayUrl ([e236d23](https://github.com/0xs34n/starknet.js/commit/e236d2352e3fbb0f78965decac5893217347ceb7))
7
+
8
+ ### Features
9
+
10
+ - update docs ([28786ed](https://github.com/0xs34n/starknet.js/commit/28786ed550909f6a30b8cb145e93d072ed28a862))
11
+
1
12
  # [4.2.0](https://github.com/0xs34n/starknet.js/compare/v4.1.0...v4.2.0) (2022-08-09)
2
13
 
3
14
  ### Features
@@ -1,4 +1,5 @@
1
- import { SequencerProvider } from '../src';
1
+ import { Contract, Provider, SequencerProvider, stark } from '../src';
2
+ import { toBN } from '../src/utils/number';
2
3
  import {
3
4
  compiledErc20,
4
5
  describeIfNotDevnet,
@@ -8,9 +9,17 @@ import {
8
9
 
9
10
  describeIfSequencer('SequencerProvider', () => {
10
11
  let provider: SequencerProvider;
12
+ let customSequencerProvider: Provider;
11
13
 
12
14
  beforeAll(async () => {
13
15
  provider = getTestProvider() as SequencerProvider;
16
+ customSequencerProvider = new Provider({
17
+ sequencer: {
18
+ baseUrl: 'https://alpha4.starknet.io',
19
+ feederGatewayUrl: 'feeder_gateway',
20
+ gatewayUrl: 'gateway',
21
+ }, // Similar to arguements used in docs
22
+ });
14
23
  });
15
24
 
16
25
  describe('Gateway specific methods', () => {
@@ -42,4 +51,25 @@ describeIfSequencer('SequencerProvider', () => {
42
51
  });
43
52
  });
44
53
  });
54
+
55
+ describe('Test calls with Custom Sequencer Provider', () => {
56
+ let erc20: Contract;
57
+ const wallet = stark.randomAddress();
58
+
59
+ beforeAll(async () => {
60
+ const { contract_address, transaction_hash } = await customSequencerProvider.deployContract({
61
+ contract: compiledErc20,
62
+ });
63
+
64
+ await customSequencerProvider.waitForTransaction(transaction_hash);
65
+ erc20 = new Contract(compiledErc20.abi, contract_address, customSequencerProvider);
66
+ });
67
+
68
+ test('Check ERC20 balance using Custom Sequencer Provider', async () => {
69
+ const result = await erc20.balance_of(wallet);
70
+ const [res] = result;
71
+ expect(res).toStrictEqual(toBN(0));
72
+ expect(res).toStrictEqual(result.res);
73
+ });
74
+ });
45
75
  });
package/dist/index.d.ts CHANGED
@@ -21,3 +21,4 @@ export * as uint256 from './utils/uint256';
21
21
  export * as shortString from './utils/shortString';
22
22
  export * as typedData from './utils/typedData';
23
23
  export * from './utils/address';
24
+ export * from './utils/url';
package/dist/index.js CHANGED
@@ -50,3 +50,4 @@ exports.uint256 = __importStar(require("./utils/uint256"));
50
50
  exports.shortString = __importStar(require("./utils/shortString"));
51
51
  exports.typedData = __importStar(require("./utils/typedData"));
52
52
  __exportStar(require("./utils/address"), exports);
53
+ __exportStar(require("./utils/url"), exports);
@@ -65,6 +65,7 @@ var number_1 = require("../utils/number");
65
65
  var provider_1 = require("../utils/provider");
66
66
  var sequencer_1 = require("../utils/responseParser/sequencer");
67
67
  var stark_1 = require("../utils/stark");
68
+ var url_1 = require("../utils/url");
68
69
  var errors_1 = require("./errors");
69
70
  var utils_1 = require("./utils");
70
71
  function isEmptyQueryObject(obj) {
@@ -79,7 +80,7 @@ function isEmptyQueryObject(obj) {
79
80
  var SequencerProvider = /** @class */ (function () {
80
81
  function SequencerProvider(optionsOrProvider) {
81
82
  if (optionsOrProvider === void 0) { optionsOrProvider = { network: 'goerli-alpha' }; }
82
- var _a, _b, _c;
83
+ var _a;
83
84
  this.responseParser = new sequencer_1.SequencerAPIResponseParser();
84
85
  if ('network' in optionsOrProvider) {
85
86
  this.baseUrl = SequencerProvider.getNetworkFromName(optionsOrProvider.network);
@@ -89,11 +90,10 @@ var SequencerProvider = /** @class */ (function () {
89
90
  }
90
91
  else {
91
92
  this.baseUrl = optionsOrProvider.baseUrl;
92
- this.feederGatewayUrl =
93
- (_a = optionsOrProvider.feederGatewayUrl) !== null && _a !== void 0 ? _a : (0, url_join_1.default)(this.baseUrl, 'feeder_gateway');
94
- this.gatewayUrl = (_b = optionsOrProvider.gatewayUrl) !== null && _b !== void 0 ? _b : (0, url_join_1.default)(this.baseUrl, 'gateway');
93
+ this.feederGatewayUrl = (0, url_1.buildUrl)(this.baseUrl, 'feeder_gateway', optionsOrProvider.feederGatewayUrl);
94
+ this.gatewayUrl = (0, url_1.buildUrl)(this.baseUrl, 'gateway', optionsOrProvider.gatewayUrl);
95
95
  this.chainId =
96
- (_c = optionsOrProvider.chainId) !== null && _c !== void 0 ? _c : SequencerProvider.getChainIdFromBaseUrl(optionsOrProvider.baseUrl);
96
+ (_a = optionsOrProvider.chainId) !== null && _a !== void 0 ? _a : SequencerProvider.getChainIdFromBaseUrl(optionsOrProvider.baseUrl);
97
97
  }
98
98
  }
99
99
  SequencerProvider.getNetworkFromName = function (name) {
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Loosely validate a URL `string`.
3
+ * @param {String} s
4
+ * @return {Boolean}
5
+ */
6
+ export declare function isUrl(s?: string): boolean;
7
+ export declare function buildUrl(baseUrl: string, defaultPath: string, urlOrPath?: string): string;
@@ -0,0 +1,49 @@
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.buildUrl = exports.isUrl = void 0;
7
+ var url_join_1 = __importDefault(require("url-join"));
8
+ /**
9
+ * Inspired from https://github.com/segmentio/is-url
10
+ */
11
+ /**
12
+ * RegExps.
13
+ * A URL must match #1 and then at least one of #2/#3.
14
+ * Use two levels of REs to avoid REDOS.
15
+ */
16
+ var protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/;
17
+ var localhostDomainRE = /^localhost[:?\d]*(?:[^:?\d]\S*)?$/;
18
+ var nonLocalhostDomainRE = /^[^\s.]+\.\S{2,}$/;
19
+ /**
20
+ * Loosely validate a URL `string`.
21
+ * @param {String} s
22
+ * @return {Boolean}
23
+ */
24
+ function isUrl(s) {
25
+ if (!s) {
26
+ return false;
27
+ }
28
+ if (typeof s !== 'string') {
29
+ return false;
30
+ }
31
+ var match = s.match(protocolAndDomainRE);
32
+ if (!match) {
33
+ return false;
34
+ }
35
+ var everythingAfterProtocol = match[1];
36
+ if (!everythingAfterProtocol) {
37
+ return false;
38
+ }
39
+ if (localhostDomainRE.test(everythingAfterProtocol) ||
40
+ nonLocalhostDomainRE.test(everythingAfterProtocol)) {
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ exports.isUrl = isUrl;
46
+ function buildUrl(baseUrl, defaultPath, urlOrPath) {
47
+ return isUrl(urlOrPath) ? urlOrPath : (0, url_join_1.default)(baseUrl, urlOrPath !== null && urlOrPath !== void 0 ? urlOrPath : defaultPath);
48
+ }
49
+ exports.buildUrl = buildUrl;
package/index.d.ts CHANGED
@@ -21,3 +21,4 @@ export * as uint256 from './utils/uint256';
21
21
  export * as shortString from './utils/shortString';
22
22
  export * as typedData from './utils/typedData';
23
23
  export * from './utils/address';
24
+ export * from './utils/url';
package/index.js CHANGED
@@ -50,3 +50,4 @@ exports.uint256 = __importStar(require("./utils/uint256"));
50
50
  exports.shortString = __importStar(require("./utils/shortString"));
51
51
  exports.typedData = __importStar(require("./utils/typedData"));
52
52
  __exportStar(require("./utils/address"), exports);
53
+ __exportStar(require("./utils/url"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "starknet",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "description": "JavaScript library for StarkNet",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -65,6 +65,7 @@ var number_1 = require("../utils/number");
65
65
  var provider_1 = require("../utils/provider");
66
66
  var sequencer_1 = require("../utils/responseParser/sequencer");
67
67
  var stark_1 = require("../utils/stark");
68
+ var url_1 = require("../utils/url");
68
69
  var errors_1 = require("./errors");
69
70
  var utils_1 = require("./utils");
70
71
  function isEmptyQueryObject(obj) {
@@ -79,7 +80,7 @@ function isEmptyQueryObject(obj) {
79
80
  var SequencerProvider = /** @class */ (function () {
80
81
  function SequencerProvider(optionsOrProvider) {
81
82
  if (optionsOrProvider === void 0) { optionsOrProvider = { network: 'goerli-alpha' }; }
82
- var _a, _b, _c;
83
+ var _a;
83
84
  this.responseParser = new sequencer_1.SequencerAPIResponseParser();
84
85
  if ('network' in optionsOrProvider) {
85
86
  this.baseUrl = SequencerProvider.getNetworkFromName(optionsOrProvider.network);
@@ -89,11 +90,10 @@ var SequencerProvider = /** @class */ (function () {
89
90
  }
90
91
  else {
91
92
  this.baseUrl = optionsOrProvider.baseUrl;
92
- this.feederGatewayUrl =
93
- (_a = optionsOrProvider.feederGatewayUrl) !== null && _a !== void 0 ? _a : (0, url_join_1.default)(this.baseUrl, 'feeder_gateway');
94
- this.gatewayUrl = (_b = optionsOrProvider.gatewayUrl) !== null && _b !== void 0 ? _b : (0, url_join_1.default)(this.baseUrl, 'gateway');
93
+ this.feederGatewayUrl = (0, url_1.buildUrl)(this.baseUrl, 'feeder_gateway', optionsOrProvider.feederGatewayUrl);
94
+ this.gatewayUrl = (0, url_1.buildUrl)(this.baseUrl, 'gateway', optionsOrProvider.gatewayUrl);
95
95
  this.chainId =
96
- (_c = optionsOrProvider.chainId) !== null && _c !== void 0 ? _c : SequencerProvider.getChainIdFromBaseUrl(optionsOrProvider.baseUrl);
96
+ (_a = optionsOrProvider.chainId) !== null && _a !== void 0 ? _a : SequencerProvider.getChainIdFromBaseUrl(optionsOrProvider.baseUrl);
97
97
  }
98
98
  }
99
99
  SequencerProvider.getNetworkFromName = function (name) {
package/src/index.ts CHANGED
@@ -22,3 +22,4 @@ export * as uint256 from './utils/uint256';
22
22
  export * as shortString from './utils/shortString';
23
23
  export * as typedData from './utils/typedData';
24
24
  export * from './utils/address';
25
+ export * from './utils/url';
@@ -31,6 +31,7 @@ import { BigNumberish, bigNumberishArrayToDecimalStringArray, toBN, toHex } from
31
31
  import { parseContract, wait } from '../utils/provider';
32
32
  import { SequencerAPIResponseParser } from '../utils/responseParser/sequencer';
33
33
  import { randomAddress } from '../utils/stark';
34
+ import { buildUrl } from '../utils/url';
34
35
  import { GatewayError, HttpError } from './errors';
35
36
  import { ProviderInterface } from './interface';
36
37
  import { BlockIdentifier, getFormattedBlockIdentifier } from './utils';
@@ -74,9 +75,13 @@ export class SequencerProvider implements ProviderInterface {
74
75
  this.gatewayUrl = urljoin(this.baseUrl, 'gateway');
75
76
  } else {
76
77
  this.baseUrl = optionsOrProvider.baseUrl;
77
- this.feederGatewayUrl =
78
- optionsOrProvider.feederGatewayUrl ?? urljoin(this.baseUrl, 'feeder_gateway');
79
- this.gatewayUrl = optionsOrProvider.gatewayUrl ?? urljoin(this.baseUrl, 'gateway');
78
+ this.feederGatewayUrl = buildUrl(
79
+ this.baseUrl,
80
+ 'feeder_gateway',
81
+ optionsOrProvider.feederGatewayUrl
82
+ );
83
+ this.gatewayUrl = buildUrl(this.baseUrl, 'gateway', optionsOrProvider.gatewayUrl);
84
+
80
85
  this.chainId =
81
86
  optionsOrProvider.chainId ??
82
87
  SequencerProvider.getChainIdFromBaseUrl(optionsOrProvider.baseUrl);
@@ -0,0 +1,53 @@
1
+ import urljoin from 'url-join';
2
+
3
+ /**
4
+ * Inspired from https://github.com/segmentio/is-url
5
+ */
6
+
7
+ /**
8
+ * RegExps.
9
+ * A URL must match #1 and then at least one of #2/#3.
10
+ * Use two levels of REs to avoid REDOS.
11
+ */
12
+ const protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/;
13
+
14
+ const localhostDomainRE = /^localhost[:?\d]*(?:[^:?\d]\S*)?$/;
15
+ const nonLocalhostDomainRE = /^[^\s.]+\.\S{2,}$/;
16
+
17
+ /**
18
+ * Loosely validate a URL `string`.
19
+ * @param {String} s
20
+ * @return {Boolean}
21
+ */
22
+ export function isUrl(s?: string): boolean {
23
+ if (!s) {
24
+ return false;
25
+ }
26
+
27
+ if (typeof s !== 'string') {
28
+ return false;
29
+ }
30
+
31
+ const match = s.match(protocolAndDomainRE);
32
+ if (!match) {
33
+ return false;
34
+ }
35
+
36
+ const everythingAfterProtocol = match[1];
37
+ if (!everythingAfterProtocol) {
38
+ return false;
39
+ }
40
+
41
+ if (
42
+ localhostDomainRE.test(everythingAfterProtocol) ||
43
+ nonLocalhostDomainRE.test(everythingAfterProtocol)
44
+ ) {
45
+ return true;
46
+ }
47
+
48
+ return false;
49
+ }
50
+
51
+ export function buildUrl(baseUrl: string, defaultPath: string, urlOrPath?: string) {
52
+ return isUrl(urlOrPath) ? urlOrPath! : urljoin(baseUrl, urlOrPath ?? defaultPath);
53
+ }
package/utils/url.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Loosely validate a URL `string`.
3
+ * @param {String} s
4
+ * @return {Boolean}
5
+ */
6
+ export declare function isUrl(s?: string): boolean;
7
+ export declare function buildUrl(baseUrl: string, defaultPath: string, urlOrPath?: string): string;
package/utils/url.js ADDED
@@ -0,0 +1,49 @@
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.buildUrl = exports.isUrl = void 0;
7
+ var url_join_1 = __importDefault(require("url-join"));
8
+ /**
9
+ * Inspired from https://github.com/segmentio/is-url
10
+ */
11
+ /**
12
+ * RegExps.
13
+ * A URL must match #1 and then at least one of #2/#3.
14
+ * Use two levels of REs to avoid REDOS.
15
+ */
16
+ var protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/;
17
+ var localhostDomainRE = /^localhost[:?\d]*(?:[^:?\d]\S*)?$/;
18
+ var nonLocalhostDomainRE = /^[^\s.]+\.\S{2,}$/;
19
+ /**
20
+ * Loosely validate a URL `string`.
21
+ * @param {String} s
22
+ * @return {Boolean}
23
+ */
24
+ function isUrl(s) {
25
+ if (!s) {
26
+ return false;
27
+ }
28
+ if (typeof s !== 'string') {
29
+ return false;
30
+ }
31
+ var match = s.match(protocolAndDomainRE);
32
+ if (!match) {
33
+ return false;
34
+ }
35
+ var everythingAfterProtocol = match[1];
36
+ if (!everythingAfterProtocol) {
37
+ return false;
38
+ }
39
+ if (localhostDomainRE.test(everythingAfterProtocol) ||
40
+ nonLocalhostDomainRE.test(everythingAfterProtocol)) {
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ exports.isUrl = isUrl;
46
+ function buildUrl(baseUrl, defaultPath, urlOrPath) {
47
+ return isUrl(urlOrPath) ? urlOrPath : (0, url_join_1.default)(baseUrl, urlOrPath !== null && urlOrPath !== void 0 ? urlOrPath : defaultPath);
48
+ }
49
+ exports.buildUrl = buildUrl;
@@ -17,19 +17,40 @@ The options for the provider depends from the network. The structure of the opti
17
17
  - options.**sequencer** - Options for sequencer provider
18
18
  - options.**rpc** - Options for RPC provider
19
19
 
20
- Example:
20
+ The easiest way to get started is:
21
21
 
22
+ ```typescript
23
+ const provider = new starknet.Provider()
22
24
  ```
25
+
26
+ The above snippet creates a Starknet Provider instance with `goerli-alpha` network.
27
+
28
+ However, if you want to use `mainnet-alpha` or explicitly declare the network, you can use:
29
+
30
+ ```typescript
23
31
  const provider = new starknet.Provider({
24
32
  sequencer: {
25
- baseUrl: 'https://alpha4.starknet.io',
26
- feederGatewayUrl: 'feeder_gateway',
27
- gatewayUrl: 'gateway',
33
+ network: 'mainnet-alpha' // or 'goerli-alpha'
34
+ }
35
+ })
36
+ ```
37
+
38
+ If you want to more control:
39
+
40
+ ```typescript
41
+ const provider = new starknet.Provider({
42
+ sequencer: {
43
+ baseUrl: 'https://alpha4.starknet.io',
44
+ feederGatewayUrl: 'feeder_gateway',
45
+ gatewayUrl: 'gateway',
28
46
  }
29
47
  })
48
+
30
49
  ```
31
50
 
32
- **This is also default options for the constructor for the **testnet\*\*\*
51
+ \*\*This is also default options for the Provider constructor with `network: 'goerli-alpha'`\*\*\*
52
+
53
+ \*\*Note: `network` arguement should work in most cases. If you want to use sequencer arguement with `baseUrl`, you will not be able to use `network` field in the object.\*\*\*
33
54
 
34
55
  ## Methods
35
56
 
@@ -47,10 +68,12 @@ The call object structure:
47
68
 
48
69
  ###### CallContractResponse
49
70
 
50
- ```
71
+ ```typescript
72
+
51
73
  {
52
- result: string[];
74
+ result: string[];
53
75
  }
76
+
54
77
  ```
55
78
 
56
79
  <hr/>
@@ -61,7 +84,8 @@ Gets the block information.
61
84
 
62
85
  ###### _GetBlockResponse_
63
86
 
64
- ```
87
+ ```typescript
88
+
65
89
  {
66
90
  accepted_time: number;
67
91
  block_hash: string;
@@ -75,6 +99,7 @@ Gets the block information.
75
99
  transactions: Array<string>;
76
100
  starknet_version?: string;
77
101
  }
102
+
78
103
  ```
79
104
 
80
105
  <hr/>
@@ -85,12 +110,14 @@ Gets the contract class of the deployed contract.
85
110
 
86
111
  ###### _ContractClass_
87
112
 
88
- ```
113
+ ```typescript
114
+
89
115
  {
90
116
  program: CompressedProgram;
91
117
  entry_points_by_type: EntryPointsByType;
92
118
  abi?: Abi;
93
119
  }
120
+
94
121
  ```
95
122
 
96
123
  <hr/>
@@ -107,7 +134,8 @@ Gets the status of a transaction.
107
134
 
108
135
  ###### _GetTransactionReceiptResponse_
109
136
 
110
- ```
137
+ ```typescript
138
+
111
139
  {
112
140
  transaction_hash: string;
113
141
  status: 'NOT_RECEIVED' | 'RECEIVED' | 'PENDING' | 'ACCEPTED_ON_L2' | 'ACCEPTED_ON_L1' | 'REJECTED';
@@ -117,6 +145,7 @@ Gets the status of a transaction.
117
145
  events?: Array<Event>;
118
146
  l1_origin_message?: MessageToL2;
119
147
  }
148
+
120
149
  ```
121
150
 
122
151
  <hr/>
@@ -127,7 +156,8 @@ Gets the transaction information from a tx hash.
127
156
 
128
157
  ###### _GetTransactionResponse_
129
158
 
130
- ```
159
+ ```typescript
160
+
131
161
  {
132
162
  transaction_hash: string;
133
163
  version?: string;
@@ -140,6 +170,7 @@ Gets the transaction information from a tx hash.
140
170
  contract_class?: ContractClass;
141
171
  sender_address?: string;
142
172
  }
173
+
143
174
  ```
144
175
 
145
176
  <hr/>
@@ -150,7 +181,8 @@ Declares a contract on Starknet
150
181
 
151
182
  ###### _DeclareContractResponse_
152
183
 
153
- ```
184
+ ```typescript
185
+
154
186
  {
155
187
  transaction_hash: string;
156
188
  class_hash: string;
@@ -166,11 +198,13 @@ Deploys a contract on Starknet
166
198
 
167
199
  ###### _DeployContractResponse_
168
200
 
169
- ```
201
+ ```typescript
202
+
170
203
  {
171
204
  transaction_hash: string;
172
205
  contract_address?: string;
173
206
  };
207
+
174
208
  ```
175
209
 
176
210
  <hr/>
@@ -197,12 +231,14 @@ or
197
231
 
198
232
  Example:
199
233
 
200
- ```
234
+ ```typescript
235
+
201
236
  const provider = new starknet.Provider({
202
237
  baseUrl: 'https://alpha4.starknet.io',
203
238
  feederGatewayUrl: 'feeder_gateway',
204
239
  gatewayUrl: 'gateway',
205
240
  })
241
+
206
242
  ```
207
243
 
208
244
  ## Methods
@@ -211,11 +247,13 @@ Gets the smart contract address on the network
211
247
 
212
248
  provider.**getContractAddresses**() => _Promise < GetContractAddressesResponse >_
213
249
 
214
- ```
250
+ ```typescript
251
+
215
252
  {
216
253
  Starknet: string;
217
254
  GpsStatementVerifier: string;
218
255
  }
256
+
219
257
  ```
220
258
 
221
259
  <hr/>
@@ -226,7 +264,8 @@ Gets the status of a transaction.
226
264
 
227
265
  ###### _GetTransactionStatusResponse_
228
266
 
229
- ```
267
+ ```typescript
268
+
230
269
  {
231
270
  tx_status: 'NOT_RECEIVED' | 'RECEIVED' | 'PENDING' | 'ACCEPTED_ON_L2' | 'ACCEPTED_ON_L1' | 'REJECTED';
232
271
  block_hash: string;
@@ -236,6 +275,7 @@ Gets the status of a transaction.
236
275
  error_message: string;
237
276
  }
238
277
  }
278
+
239
279
  ```
240
280
 
241
281
  <hr/>
@@ -246,7 +286,7 @@ Gets the transaction trace from a tx hash.
246
286
 
247
287
  ###### _GetTransactionTraceResponse_
248
288
 
249
- ```
289
+ ```typescript
250
290
  {
251
291
  function_invocation: {
252
292
  caller_address: string;
@@ -254,16 +294,17 @@ Gets the transaction trace from a tx hash.
254
294
  code_address: string;
255
295
  selector: string;
256
296
  calldata: {
257
- [inputName: string]: string | string[] | { type: 'struct'; [k: string]: BigNumberish };
297
+ [inputName: string]: string | string[] | { type: 'struct'; [k: string]: BigNumberish };
258
298
  };
259
299
  result: Array<any>;
260
300
  execution_resources: any;
261
301
  internal_call: Array<any>;
262
302
  events: Array<any>;
263
303
  messages: Array<any>;
264
- };
304
+ };
265
305
  signature: Signature;
266
306
  }
307
+
267
308
  ```
268
309
 
269
310
  # RpcProvider
@@ -276,10 +317,12 @@ Gets the transaction trace from a tx hash.
276
317
 
277
318
  Example:
278
319
 
279
- ```
320
+ ```typescript
321
+
280
322
  const provider = new starknet.RpcProvider({
281
323
  nodeUrl: 'URL_TO_STARKNET_RPC_NODE',
282
324
  })
325
+
283
326
  ```
284
327
 
285
328
  ## Methods
@@ -302,7 +345,8 @@ Gets syncing status of the node
302
345
 
303
346
  ###### GetSyncingStatsResponse
304
347
 
305
- ```
348
+ ```typescript
349
+
306
350
  boolean |
307
351
  {
308
352
  starting_block_hash: string;
@@ -312,6 +356,7 @@ boolean |
312
356
  highest_block_hash: string;
313
357
  highest_block_num: string;
314
358
  }
359
+
315
360
  ```
316
361
 
317
362
  <hr/>
@@ -320,7 +365,8 @@ provider.**getEvents**(eventFilter) => _Promise < GetEventsResponse >_
320
365
 
321
366
  ##### EventFilter
322
367
 
323
- ```
368
+ ```typescript
369
+
324
370
  type EventFilter = {
325
371
  fromBlock: string;
326
372
  toBlock: string;
@@ -329,14 +375,25 @@ type EventFilter = {
329
375
  page_size: number;
330
376
  page_number: number;
331
377
  };
378
+
332
379
  ```
333
380
 
334
381
  ###### GetSyncingStatsResponse
335
382
 
336
- ```
383
+ ```typescript
384
+
337
385
  {
338
386
  events: StarknetEmittedEvent[];
339
387
  page_number: number;
340
388
  is_last_page: number;
341
389
  }
390
+
391
+ ```
392
+
393
+ ```
394
+
395
+ ```
396
+
397
+ ```
398
+
342
399
  ```