starknet 2.5.0 → 2.7.2

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,36 @@
1
+ ## [2.7.2](https://github.com/seanjameshan/starknet.js/compare/v2.7.1...v2.7.2) (2022-01-20)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **CONTRIBUTING:** wrong link ([2622a6c](https://github.com/seanjameshan/starknet.js/commit/2622a6c984259a6928e9ab02892b8de60b8c749e))
6
+
7
+ ## [2.7.1](https://github.com/seanjameshan/starknet.js/compare/v2.7.0...v2.7.1) (2022-01-04)
8
+
9
+ ### Bug Fixes
10
+
11
+ - **types:** add block_number property to GetBlockResponse interface ([696cf5a](https://github.com/seanjameshan/starknet.js/commit/696cf5ae565bd16365045cc1f20e9fa55184d054))
12
+
13
+ # [2.7.0](https://github.com/seanjameshan/starknet.js/compare/v2.6.0...v2.7.0) (2022-01-03)
14
+
15
+ ### Bug Fixes
16
+
17
+ - add response to the waitForTx error ([e25bdfd](https://github.com/seanjameshan/starknet.js/commit/e25bdfd428fd36e105ed272ea39462845bae5805))
18
+
19
+ ### Features
20
+
21
+ - **blockHash:** add blockHash and fix test cases ([4e107eb](https://github.com/seanjameshan/starknet.js/commit/4e107eb7e97a9b8d2efd74b2074a7d82365c932e))
22
+
23
+ # [2.6.0](https://github.com/seanjameshan/starknet.js/compare/v2.5.0...v2.6.0) (2021-12-29)
24
+
25
+ ### Bug Fixes
26
+
27
+ - correct network name ([66e14c9](https://github.com/seanjameshan/starknet.js/commit/66e14c926f015a2dfbd50d3e54ba4e008fb43aa8))
28
+ - network name ([965f215](https://github.com/seanjameshan/starknet.js/commit/965f21580ef68bf84c105e93bfb3b98f75b31f93))
29
+
30
+ ### Features
31
+
32
+ - introduce blockNumber ([657dac1](https://github.com/seanjameshan/starknet.js/commit/657dac1d77e840a7fc663d3a180515443a7e834f))
33
+
1
34
  # [2.5.0](https://github.com/seanjameshan/starknet.js/compare/v2.4.0...v2.5.0) (2021-12-13)
2
35
 
3
36
  ### Bug Fixes
package/CONTRIBUTING.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  We love pull requests. And following this guidelines will make your pull request easier to merge.
4
4
 
5
- If you want to contribute but don’t know what to do, take a look at these two labels: [help wanted](https://github.com/seanjameshan/starknet/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) and [good first issue](https://github.com/seanjameshan/starknet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
5
+ If you want to contribute but don’t know what to do, take a look at these two labels: [help wanted](https://github.com/seanjameshan/starknet.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) and [good first issue](https://github.com/seanjameshan/starknet.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
6
6
 
7
7
  _[Use GitHub interface](https://blog.sapegin.me/all/open-source-for-everyone/) for simple documentation changes, otherwise follow the steps below._
8
8
 
package/README.md CHANGED
@@ -58,7 +58,7 @@ const CONTRACT_ADDRESS =
58
58
  **/
59
59
 
60
60
  /** Reset the liquidity pool **/
61
- const addTokenResponse = await provider.addTransaction({
61
+ const addTokenResponse = await defaultProvider.addTransaction({
62
62
  type: "INVOKE_FUNCTION",
63
63
  contract_address: CONTRACT_ADDRESS,
64
64
  entry_point_selector: getSelectorFromName("init_pool"),
@@ -71,7 +71,7 @@ console.log(addTokenResponse);
71
71
  **/
72
72
 
73
73
  /** Get the balance of the liquidity pool of token A **/
74
- const poolBalanceTokenA = await callContract({
74
+ const poolBalanceTokenA = await defaultProvider.callContract({
75
75
  contract_address: CONTRACT_ADDRESS,
76
76
  entry_point_selector: getSelectorFromName("get_pool_token_balance"),
77
77
  calldata: ["1"],
@@ -80,7 +80,7 @@ const balanceA = poolBalanceTokenA.result[0];
80
80
  console.log('token a liquidity pool balance: ', parseInt(balanceA, 16));
81
81
 
82
82
  /** Get the balance of the liquidity pool of token B **/
83
- const poolBalanceTokenB = await callContract({
83
+ const poolBalanceTokenB = await defaultProvider.callContract({
84
84
  contract_address: CONTRACT_ADDRESS,
85
85
  entry_point_selector: getSelectorFromName("get_pool_token_balance"),
86
86
  calldata: ["2"],
@@ -13,38 +13,53 @@ describe('defaultProvider', () => {
13
13
  expect(typeof GpsStatementVerifier).toBe('string');
14
14
  expect(typeof Starknet).toBe('string');
15
15
  });
16
- test('getBlock()', () => {
17
- return expect(defaultProvider.getBlock(870)).resolves.not.toThrow();
16
+ test('getBlock(blockHash=0x3bca19c3d5983e21e9537669b15f951f0664f0747a083dc714e0b9648b8575d, blockNumber=undefined)', () => {
17
+ return expect(
18
+ defaultProvider.getBlock(
19
+ '0x3bca19c3d5983e21e9537669b15f951f0664f0747a083dc714e0b9648b8575d'
20
+ )
21
+ ).resolves.not.toThrow();
22
+ });
23
+ test('getBlock(blockHash=undefined, blockNumber=36657)', () => {
24
+ return expect(defaultProvider.getBlock(undefined, 36657)).resolves.not.toThrow();
18
25
  });
19
- test('getBlock(blockId=null)', () => {
26
+ test('getBlock(blockHash=undefined, blockNumber=null)', () => {
20
27
  return expect(defaultProvider.getBlock()).resolves.not.toThrow();
21
28
  });
29
+ test('getBlock() -> { blockNumber }', async () => {
30
+ const block = await defaultProvider.getBlock();
31
+ return expect(block).toHaveProperty('block_number');
32
+ });
22
33
  test('getCode()', () => {
23
34
  return expect(
24
35
  defaultProvider.getCode(
25
- '0x163a1542a64402ffc93e39a4962eec51ce126f2e634631d3f1f6770a76e3a61',
26
- 870
36
+ '0x01d1f307c073bb786a66e6e042ec2a9bdc385a3373bb3738d95b966d5ce56166',
37
+ undefined,
38
+ 36663
27
39
  )
28
40
  ).resolves.not.toThrow();
29
41
  });
30
- test('getCode(blockId=null)', () => {
42
+ test('getCode(blockHash=undefined, blockNumber=null)', () => {
31
43
  return expect(
32
- defaultProvider.getCode('0x163a1542a64402ffc93e39a4962eec51ce126f2e634631d3f1f6770a76e3a61')
44
+ defaultProvider.getCode(
45
+ '0x01d1f307c073bb786a66e6e042ec2a9bdc385a3373bb3738d95b966d5ce56166'
46
+ )
33
47
  ).resolves.not.toThrow();
34
48
  });
35
49
  test('getStorageAt()', () => {
36
50
  return expect(
37
51
  defaultProvider.getStorageAt(
38
- '0x163a1542a64402ffc93e39a4962eec51ce126f2e634631d3f1f6770a76e3a61',
52
+ '0x01d1f307c073bb786a66e6e042ec2a9bdc385a3373bb3738d95b966d5ce56166',
39
53
  0,
40
- 870
54
+ undefined,
55
+ 36663
41
56
  )
42
57
  ).resolves.not.toThrow();
43
58
  });
44
- test('getStorageAt(blockId=null)', () => {
59
+ test('getStorageAt(blockHash=undefined, blockNumber=null)', () => {
45
60
  return expect(
46
61
  defaultProvider.getStorageAt(
47
- '0x163a1542a64402ffc93e39a4962eec51ce126f2e634631d3f1f6770a76e3a61',
62
+ '0x01d1f307c073bb786a66e6e042ec2a9bdc385a3373bb3738d95b966d5ce56166',
48
63
  0
49
64
  )
50
65
  ).resolves.not.toThrow();
@@ -52,14 +67,14 @@ describe('defaultProvider', () => {
52
67
  test('getTransactionStatus()', async () => {
53
68
  return expect(
54
69
  defaultProvider.getTransactionStatus(
55
- '0x72add9621ecdcb07405a4f943fe410bf57003ca250400f01ce70f8a6fc72147'
70
+ '0x37013e1cb9c133e6fe51b4b371b76b317a480f56d80576730754c1662582348'
56
71
  )
57
72
  ).resolves.not.toThrow();
58
73
  });
59
74
  test('getTransaction()', async () => {
60
75
  return expect(
61
76
  defaultProvider.getTransaction(
62
- '0x72add9621ecdcb07405a4f943fe410bf57003ca250400f01ce70f8a6fc72147'
77
+ '0x37013e1cb9c133e6fe51b4b371b76b317a480f56d80576730754c1662582348'
63
78
  )
64
79
  ).resolves.not.toThrow();
65
80
  });
@@ -1,7 +1,7 @@
1
- import { AddTransactionResponse, CallContractResponse, CallContractTransaction, CompiledContract, GetBlockResponse, GetCodeResponse, GetContractAddressesResponse, GetTransactionResponse, GetTransactionStatusResponse, Signature, Transaction } from '../types';
1
+ import { AddTransactionResponse, BlockNumber, CallContractResponse, CallContractTransaction, CompiledContract, GetBlockResponse, GetCodeResponse, GetContractAddressesResponse, GetTransactionResponse, GetTransactionStatusResponse, Signature, Transaction } from '../types';
2
2
  import { BigNumberish } from '../utils/number';
3
3
  import { ProviderInterface } from './interface';
4
- declare type NetworkName = 'mainnet-alpha' | 'georli-alpha';
4
+ declare type NetworkName = 'mainnet-alpha' | 'goerli-alpha';
5
5
  declare type ProviderOptions = {
6
6
  network: NetworkName;
7
7
  } | {
@@ -23,50 +23,54 @@ export declare class Provider implements ProviderInterface {
23
23
  /**
24
24
  * Calls a function on the StarkNet contract.
25
25
  *
26
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L17-L25)
26
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L25-L39)
27
27
  *
28
28
  * @param invokeTransaction - transaction to be invoked
29
- * @param blockId
29
+ * @param blockHash
30
+ * @param blockNumber
30
31
  * @returns the result of the function on the smart contract.
31
32
  */
32
- callContract(invokeTransaction: CallContractTransaction, blockId?: number): Promise<CallContractResponse>;
33
+ callContract(invokeTransaction: CallContractTransaction, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<CallContractResponse>;
33
34
  /**
34
- * Gets the block information from a block ID.
35
+ * Gets the block information
35
36
  *
36
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L27-L31)
37
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L41-L53)
37
38
  *
38
- * @param blockId
39
- * @returns the block object { block_id, previous_block_id, state_root, status, timestamp, transaction_receipts, transactions }
39
+ * @param blockHash
40
+ * @param blockNumber
41
+ * @returns the block object { block_number, previous_block_number, state_root, status, timestamp, transaction_receipts, transactions }
40
42
  */
41
- getBlock(blockId?: number): Promise<GetBlockResponse>;
43
+ getBlock(blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<GetBlockResponse>;
42
44
  /**
43
45
  * Gets the code of the deployed contract.
44
46
  *
45
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L33-L36)
47
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L55-L68)
46
48
  *
47
49
  * @param contractAddress
48
- * @param blockId
50
+ * @param blockHash
51
+ * @param blockNumber
49
52
  * @returns Bytecode and ABI of compiled contract
50
53
  */
51
- getCode(contractAddress: string, blockId?: number): Promise<GetCodeResponse>;
54
+ getCode(contractAddress: string, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<GetCodeResponse>;
52
55
  /**
53
56
  * Gets the contract's storage variable at a specific key.
54
57
  *
55
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L38-L46)
58
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L70-L85)
56
59
  *
57
60
  * @param contractAddress
58
61
  * @param key - from getStorageVarAddress('<STORAGE_VARIABLE_NAME>') (WIP)
59
- * @param blockId
62
+ * @param blockHash
63
+ * @param blockNumber
60
64
  * @returns the value of the storage variable
61
65
  */
62
- getStorageAt(contractAddress: string, key: number, blockId?: number): Promise<object>;
66
+ getStorageAt(contractAddress: string, key: number, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<object>;
63
67
  /**
64
68
  * Gets the status of a transaction.
65
69
  *
66
70
  * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L48-L52)
67
71
  *
68
72
  * @param txHash
69
- * @returns the transaction status object { block_id, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
73
+ * @returns the transaction status object { block_number, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
70
74
  */
71
75
  getTransactionStatus(txHash: BigNumberish): Promise<GetTransactionStatusResponse>;
72
76
  /**
@@ -75,7 +79,7 @@ export declare class Provider implements ProviderInterface {
75
79
  * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L54-L58)
76
80
  *
77
81
  * @param txHash
78
- * @returns the transacton object { transaction_id, status, transaction, block_id?, block_number?, transaction_index?, transaction_failure_reason? }
82
+ * @returns the transacton object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? }
79
83
  */
80
84
  getTransaction(txHash: BigNumberish): Promise<GetTransactionResponse>;
81
85
  /**
@@ -56,12 +56,13 @@ var url_join_1 = __importDefault(require("url-join"));
56
56
  var json_1 = require("../utils/json");
57
57
  var number_1 = require("../utils/number");
58
58
  var stark_1 = require("../utils/stark");
59
+ var utils_1 = require("./utils");
59
60
  function wait(delay) {
60
61
  return new Promise(function (res) { return setTimeout(res, delay); });
61
62
  }
62
63
  var Provider = /** @class */ (function () {
63
64
  function Provider(optionsOrProvider) {
64
- if (optionsOrProvider === void 0) { optionsOrProvider = { network: 'georli-alpha' }; }
65
+ if (optionsOrProvider === void 0) { optionsOrProvider = { network: 'goerli-alpha' }; }
65
66
  if (optionsOrProvider instanceof Provider) {
66
67
  this.baseUrl = optionsOrProvider.baseUrl;
67
68
  this.feederGatewayUrl = optionsOrProvider.feederGatewayUrl;
@@ -80,7 +81,7 @@ var Provider = /** @class */ (function () {
80
81
  switch (name) {
81
82
  case 'mainnet-alpha':
82
83
  return 'https://alpha-mainnet.starknet.io';
83
- case 'georli-alpha':
84
+ case 'goerli-alpha':
84
85
  default:
85
86
  return 'https://alpha4.starknet.io';
86
87
  }
@@ -107,18 +108,22 @@ var Provider = /** @class */ (function () {
107
108
  /**
108
109
  * Calls a function on the StarkNet contract.
109
110
  *
110
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L17-L25)
111
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L25-L39)
111
112
  *
112
113
  * @param invokeTransaction - transaction to be invoked
113
- * @param blockId
114
+ * @param blockHash
115
+ * @param blockNumber
114
116
  * @returns the result of the function on the smart contract.
115
117
  */
116
- Provider.prototype.callContract = function (invokeTransaction, blockId) {
118
+ Provider.prototype.callContract = function (invokeTransaction, blockHash, blockNumber) {
119
+ if (blockNumber === void 0) { blockNumber = null; }
117
120
  return __awaiter(this, void 0, void 0, function () {
118
- var data;
121
+ var formattedBlockIdentifier, data;
119
122
  return __generator(this, function (_a) {
120
123
  switch (_a.label) {
121
- case 0: return [4 /*yield*/, axios_1.default.post((0, url_join_1.default)(this.feederGatewayUrl, 'call_contract', "?blockId=" + (blockId !== null && blockId !== void 0 ? blockId : 'null')), __assign({ signature: [], calldata: [] }, invokeTransaction))];
124
+ case 0:
125
+ formattedBlockIdentifier = (0, utils_1.getFormattedBlockIdentifier)(blockHash, blockNumber);
126
+ return [4 /*yield*/, axios_1.default.post((0, url_join_1.default)(this.feederGatewayUrl, 'call_contract', formattedBlockIdentifier), __assign({ signature: [], calldata: [] }, invokeTransaction))];
122
127
  case 1:
123
128
  data = (_a.sent()).data;
124
129
  return [2 /*return*/, data];
@@ -127,19 +132,23 @@ var Provider = /** @class */ (function () {
127
132
  });
128
133
  };
129
134
  /**
130
- * Gets the block information from a block ID.
135
+ * Gets the block information
131
136
  *
132
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L27-L31)
137
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L41-L53)
133
138
  *
134
- * @param blockId
135
- * @returns the block object { block_id, previous_block_id, state_root, status, timestamp, transaction_receipts, transactions }
139
+ * @param blockHash
140
+ * @param blockNumber
141
+ * @returns the block object { block_number, previous_block_number, state_root, status, timestamp, transaction_receipts, transactions }
136
142
  */
137
- Provider.prototype.getBlock = function (blockId) {
143
+ Provider.prototype.getBlock = function (blockHash, blockNumber) {
144
+ if (blockNumber === void 0) { blockNumber = null; }
138
145
  return __awaiter(this, void 0, void 0, function () {
139
- var data;
146
+ var formattedBlockIdentifier, data;
140
147
  return __generator(this, function (_a) {
141
148
  switch (_a.label) {
142
- case 0: return [4 /*yield*/, axios_1.default.get((0, url_join_1.default)(this.feederGatewayUrl, 'get_block', "?blockId=" + (blockId !== null && blockId !== void 0 ? blockId : 'null')))];
149
+ case 0:
150
+ formattedBlockIdentifier = (0, utils_1.getFormattedBlockIdentifier)(blockHash, blockNumber);
151
+ return [4 /*yield*/, axios_1.default.get((0, url_join_1.default)(this.feederGatewayUrl, 'get_block', formattedBlockIdentifier))];
143
152
  case 1:
144
153
  data = (_a.sent()).data;
145
154
  return [2 /*return*/, data];
@@ -150,18 +159,22 @@ var Provider = /** @class */ (function () {
150
159
  /**
151
160
  * Gets the code of the deployed contract.
152
161
  *
153
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L33-L36)
162
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L55-L68)
154
163
  *
155
164
  * @param contractAddress
156
- * @param blockId
165
+ * @param blockHash
166
+ * @param blockNumber
157
167
  * @returns Bytecode and ABI of compiled contract
158
168
  */
159
- Provider.prototype.getCode = function (contractAddress, blockId) {
169
+ Provider.prototype.getCode = function (contractAddress, blockHash, blockNumber) {
170
+ if (blockNumber === void 0) { blockNumber = null; }
160
171
  return __awaiter(this, void 0, void 0, function () {
161
- var data;
172
+ var formattedBlockIdentifier, data;
162
173
  return __generator(this, function (_a) {
163
174
  switch (_a.label) {
164
- case 0: return [4 /*yield*/, axios_1.default.get((0, url_join_1.default)(this.feederGatewayUrl, 'get_code', "?contractAddress=" + contractAddress + "&blockId=" + (blockId !== null && blockId !== void 0 ? blockId : 'null')))];
175
+ case 0:
176
+ formattedBlockIdentifier = (0, utils_1.getFormattedBlockIdentifier)(blockHash, blockNumber);
177
+ return [4 /*yield*/, axios_1.default.get((0, url_join_1.default)(this.feederGatewayUrl, 'get_code', "?contractAddress=" + contractAddress + "&" + formattedBlockIdentifier))];
165
178
  case 1:
166
179
  data = (_a.sent()).data;
167
180
  return [2 /*return*/, data];
@@ -173,19 +186,23 @@ var Provider = /** @class */ (function () {
173
186
  /**
174
187
  * Gets the contract's storage variable at a specific key.
175
188
  *
176
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L38-L46)
189
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L70-L85)
177
190
  *
178
191
  * @param contractAddress
179
192
  * @param key - from getStorageVarAddress('<STORAGE_VARIABLE_NAME>') (WIP)
180
- * @param blockId
193
+ * @param blockHash
194
+ * @param blockNumber
181
195
  * @returns the value of the storage variable
182
196
  */
183
- Provider.prototype.getStorageAt = function (contractAddress, key, blockId) {
197
+ Provider.prototype.getStorageAt = function (contractAddress, key, blockHash, blockNumber) {
198
+ if (blockNumber === void 0) { blockNumber = null; }
184
199
  return __awaiter(this, void 0, void 0, function () {
185
- var data;
200
+ var formattedBlockIdentifier, data;
186
201
  return __generator(this, function (_a) {
187
202
  switch (_a.label) {
188
- case 0: return [4 /*yield*/, axios_1.default.get((0, url_join_1.default)(this.feederGatewayUrl, 'get_storage_at', "?contractAddress=" + contractAddress + "&key=" + key + "&blockId=" + (blockId !== null && blockId !== void 0 ? blockId : 'null')))];
203
+ case 0:
204
+ formattedBlockIdentifier = (0, utils_1.getFormattedBlockIdentifier)(blockHash, blockNumber);
205
+ return [4 /*yield*/, axios_1.default.get((0, url_join_1.default)(this.feederGatewayUrl, 'get_storage_at', "?contractAddress=" + contractAddress + "&key=" + key + "&" + formattedBlockIdentifier))];
189
206
  case 1:
190
207
  data = (_a.sent()).data;
191
208
  return [2 /*return*/, data];
@@ -199,7 +216,7 @@ var Provider = /** @class */ (function () {
199
216
  * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L48-L52)
200
217
  *
201
218
  * @param txHash
202
- * @returns the transaction status object { block_id, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
219
+ * @returns the transaction status object { block_number, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
203
220
  */
204
221
  Provider.prototype.getTransactionStatus = function (txHash) {
205
222
  return __awaiter(this, void 0, void 0, function () {
@@ -222,7 +239,7 @@ var Provider = /** @class */ (function () {
222
239
  * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L54-L58)
223
240
  *
224
241
  * @param txHash
225
- * @returns the transacton object { transaction_id, status, transaction, block_id?, block_number?, transaction_index?, transaction_failure_reason? }
242
+ * @returns the transacton object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? }
226
243
  */
227
244
  Provider.prototype.getTransaction = function (txHash) {
228
245
  return __awaiter(this, void 0, void 0, function () {
@@ -303,7 +320,7 @@ var Provider = /** @class */ (function () {
303
320
  Provider.prototype.waitForTx = function (txHash, retryInterval) {
304
321
  if (retryInterval === void 0) { retryInterval = 8000; }
305
322
  return __awaiter(this, void 0, void 0, function () {
306
- var onchain, res;
323
+ var onchain, res, error;
307
324
  return __generator(this, function (_a) {
308
325
  switch (_a.label) {
309
326
  case 0:
@@ -325,11 +342,10 @@ var Provider = /** @class */ (function () {
325
342
  if (res.tx_status === 'ACCEPTED_ON_L1' || res.tx_status === 'ACCEPTED_ON_L2') {
326
343
  onchain = true;
327
344
  }
328
- else if (res.tx_status === 'REJECTED') {
329
- throw Error('REJECTED');
330
- }
331
- else if (res.tx_status === 'NOT_RECEIVED') {
332
- throw Error('NOT_RECEIVED');
345
+ else if (res.tx_status === 'REJECTED' || res.tx_status === 'NOT_RECEIVED') {
346
+ error = Error(res.tx_status);
347
+ error.response = res;
348
+ throw error;
333
349
  }
334
350
  return [3 /*break*/, 2];
335
351
  case 5: return [2 /*return*/];
@@ -1,4 +1,4 @@
1
- import type { AddTransactionResponse, CallContractResponse, CallContractTransaction, CompiledContract, GetBlockResponse, GetCodeResponse, GetContractAddressesResponse, GetTransactionResponse, GetTransactionStatusResponse, Signature, Transaction } from '../types';
1
+ import type { AddTransactionResponse, BlockNumber, CallContractResponse, CallContractTransaction, CompiledContract, GetBlockResponse, GetCodeResponse, GetContractAddressesResponse, GetTransactionResponse, GetTransactionStatusResponse, Signature, Transaction } from '../types';
2
2
  import type { BigNumberish } from '../utils/number';
3
3
  export declare abstract class ProviderInterface {
4
4
  abstract baseUrl: string;
@@ -14,50 +14,54 @@ export declare abstract class ProviderInterface {
14
14
  /**
15
15
  * Calls a function on the StarkNet contract.
16
16
  *
17
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L17-L25)
17
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L25-L39)
18
18
  *
19
19
  * @param invokeTransaction - transaction to be invoked
20
- * @param blockId
20
+ * @param blockHash
21
+ * @param blockNumber
21
22
  * @returns the result of the function on the smart contract.
22
23
  */
23
- abstract callContract(invokeTransaction: CallContractTransaction, blockId?: number): Promise<CallContractResponse>;
24
+ abstract callContract(invokeTransaction: CallContractTransaction, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<CallContractResponse>;
24
25
  /**
25
- * Gets the block information from a block ID.
26
+ * Gets the block information
26
27
  *
27
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L27-L31)
28
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L41-L53)
28
29
  *
29
- * @param blockId
30
- * @returns the block object { block_id, previous_block_id, state_root, status, timestamp, transaction_receipts, transactions }
30
+ * @param blockHash
31
+ * @param blockNumber
32
+ * @returns the block object { block_number, previous_block_number, state_root, status, timestamp, transaction_receipts, transactions }
31
33
  */
32
- abstract getBlock(blockId?: number): Promise<GetBlockResponse>;
34
+ abstract getBlock(blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<GetBlockResponse>;
33
35
  /**
34
36
  * Gets the code of the deployed contract.
35
37
  *
36
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L33-L36)
38
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L55-L68)
37
39
  *
38
40
  * @param contractAddress
39
- * @param blockId
41
+ * @param blockHash
42
+ * @param blockNumber
40
43
  * @returns Bytecode and ABI of compiled contract
41
44
  */
42
- abstract getCode(contractAddress: string, blockId?: number): Promise<GetCodeResponse>;
45
+ abstract getCode(contractAddress: string, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<GetCodeResponse>;
43
46
  /**
44
47
  * Gets the contract's storage variable at a specific key.
45
48
  *
46
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L38-L46)
49
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L70-L85)
47
50
  *
48
51
  * @param contractAddress
49
52
  * @param key - from getStorageVarAddress('<STORAGE_VARIABLE_NAME>') (WIP)
50
- * @param blockId
53
+ * @param blockHash
54
+ * @param blockNumber
51
55
  * @returns the value of the storage variable
52
56
  */
53
- abstract getStorageAt(contractAddress: string, key: number, blockId?: number): Promise<object>;
57
+ abstract getStorageAt(contractAddress: string, key: number, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<object>;
54
58
  /**
55
59
  * Gets the status of a transaction.
56
60
  *
57
61
  * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L48-L52)
58
62
  *
59
63
  * @param txHash
60
- * @returns the transaction status object { block_id, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
64
+ * @returns the transaction status object { block_number, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
61
65
  */
62
66
  abstract getTransactionStatus(txHash: BigNumberish): Promise<GetTransactionStatusResponse>;
63
67
  /**
@@ -66,7 +70,7 @@ export declare abstract class ProviderInterface {
66
70
  * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L54-L58)
67
71
  *
68
72
  * @param txHash
69
- * @returns the transacton object { transaction_id, status, transaction, block_id?, block_number?, transaction_index?, transaction_failure_reason? }
73
+ * @returns the transacton object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? }
70
74
  */
71
75
  abstract getTransaction(txHash: BigNumberish): Promise<GetTransactionResponse>;
72
76
  /**
@@ -0,0 +1,27 @@
1
+ import type { BlockNumber } from '../types';
2
+ import { BigNumberish } from '../utils/number';
3
+ /**
4
+ * TODO
5
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L148-L153)
6
+ *
7
+ * @param hashValue
8
+ * @param hashField
9
+ */
10
+ export declare function formatHash(): void;
11
+ /**
12
+ * TODO
13
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L156-L161)
14
+ * @param txHash
15
+ * @param txId
16
+ */
17
+ export declare function txIdentifier(): void;
18
+ /**
19
+ * Gets the block identifier for API request
20
+ *
21
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L164-L173)
22
+ *
23
+ * @param blockNumber
24
+ * @param blockHash
25
+ * @returns block identifier for API request
26
+ */
27
+ export declare function getFormattedBlockIdentifier(blockHash?: BigNumberish, blockNumber?: BlockNumber): string;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFormattedBlockIdentifier = exports.txIdentifier = exports.formatHash = void 0;
4
+ /**
5
+ * TODO
6
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L148-L153)
7
+ *
8
+ * @param hashValue
9
+ * @param hashField
10
+ */
11
+ function formatHash() { }
12
+ exports.formatHash = formatHash;
13
+ /**
14
+ * TODO
15
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L156-L161)
16
+ * @param txHash
17
+ * @param txId
18
+ */
19
+ function txIdentifier() { }
20
+ exports.txIdentifier = txIdentifier;
21
+ /**
22
+ * Gets the block identifier for API request
23
+ *
24
+ * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L164-L173)
25
+ *
26
+ * @param blockNumber
27
+ * @param blockHash
28
+ * @returns block identifier for API request
29
+ */
30
+ function getFormattedBlockIdentifier(blockHash, blockNumber) {
31
+ if (blockNumber === void 0) { blockNumber = null; }
32
+ if (blockHash) {
33
+ return "?blockHash=" + blockHash;
34
+ }
35
+ return "?blockNumber=" + blockNumber;
36
+ }
37
+ exports.getFormattedBlockIdentifier = getFormattedBlockIdentifier;
package/dist/types.d.ts CHANGED
@@ -33,6 +33,7 @@ export declare type StructAbi = {
33
33
  export declare type Abi = FunctionAbi | StructAbi;
34
34
  export declare type EntryPointsByType = object;
35
35
  export declare type Program = object;
36
+ export declare type BlockNumber = 'pending' | null | number;
36
37
  export declare type CompiledContract = {
37
38
  abi: Abi[];
38
39
  entry_points_by_type: EntryPointsByType;
@@ -61,7 +62,7 @@ export declare type CallContractResponse = {
61
62
  result: string[];
62
63
  };
63
64
  export declare type GetBlockResponse = {
64
- sequence_number: number;
65
+ block_number: number;
65
66
  state_root: string;
66
67
  block_hash: string;
67
68
  transactions: {
@@ -77,7 +78,7 @@ export declare type GetBlockResponse = {
77
78
  payload: string[];
78
79
  from_address: string;
79
80
  }[];
80
- block_number: number;
81
+ block_number: BlockNumber;
81
82
  status: Status;
82
83
  transaction_index: number;
83
84
  };
@@ -97,7 +98,7 @@ export declare type GetTransactionResponse = {
97
98
  status: Status;
98
99
  transaction: Transaction;
99
100
  block_hash: string;
100
- block_number: number;
101
+ block_number: BlockNumber;
101
102
  transaction_index: number;
102
103
  transaction_hash: string;
103
104
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "starknet",
3
- "version": "2.5.0",
3
+ "version": "2.7.2",
4
4
  "description": "JavaScript library for StarkNet",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",