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 +33 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +3 -3
- package/__tests__/provider.test.ts +28 -13
- package/dist/provider/default.d.ts +22 -18
- package/dist/provider/default.js +48 -32
- package/dist/provider/interface.d.ts +21 -17
- package/dist/provider/utils.d.ts +27 -0
- package/dist/provider/utils.js +37 -0
- package/dist/types.d.ts +4 -3
- package/package.json +1 -1
- package/provider/default.d.ts +32 -17
- package/provider/default.js +65 -35
- package/provider/interface.d.ts +31 -16
- package/provider/utils.d.ts +30 -0
- package/provider/utils.js +39 -0
- package/src/provider/default.ts +50 -27
- package/src/provider/interface.ts +30 -16
- package/src/provider/utils.ts +38 -0
- package/src/types.ts +4 -3
- package/types.d.ts +4 -3
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
|
|
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(
|
|
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(
|
|
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
|
-
'
|
|
26
|
-
|
|
36
|
+
'0x01d1f307c073bb786a66e6e042ec2a9bdc385a3373bb3738d95b966d5ce56166',
|
|
37
|
+
undefined,
|
|
38
|
+
36663
|
|
27
39
|
)
|
|
28
40
|
).resolves.not.toThrow();
|
|
29
41
|
});
|
|
30
|
-
test('getCode(
|
|
42
|
+
test('getCode(blockHash=undefined, blockNumber=null)', () => {
|
|
31
43
|
return expect(
|
|
32
|
-
defaultProvider.getCode(
|
|
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
|
-
'
|
|
52
|
+
'0x01d1f307c073bb786a66e6e042ec2a9bdc385a3373bb3738d95b966d5ce56166',
|
|
39
53
|
0,
|
|
40
|
-
|
|
54
|
+
undefined,
|
|
55
|
+
36663
|
|
41
56
|
)
|
|
42
57
|
).resolves.not.toThrow();
|
|
43
58
|
});
|
|
44
|
-
test('getStorageAt(
|
|
59
|
+
test('getStorageAt(blockHash=undefined, blockNumber=null)', () => {
|
|
45
60
|
return expect(
|
|
46
61
|
defaultProvider.getStorageAt(
|
|
47
|
-
'
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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' | '
|
|
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/
|
|
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
|
|
29
|
+
* @param blockHash
|
|
30
|
+
* @param blockNumber
|
|
30
31
|
* @returns the result of the function on the smart contract.
|
|
31
32
|
*/
|
|
32
|
-
callContract(invokeTransaction: CallContractTransaction,
|
|
33
|
+
callContract(invokeTransaction: CallContractTransaction, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<CallContractResponse>;
|
|
33
34
|
/**
|
|
34
|
-
* Gets the block information
|
|
35
|
+
* Gets the block information
|
|
35
36
|
*
|
|
36
|
-
* [Reference](https://github.com/starkware-libs/cairo-lang/blob/
|
|
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
|
|
39
|
-
* @
|
|
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(
|
|
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/
|
|
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
|
|
50
|
+
* @param blockHash
|
|
51
|
+
* @param blockNumber
|
|
49
52
|
* @returns Bytecode and ABI of compiled contract
|
|
50
53
|
*/
|
|
51
|
-
getCode(contractAddress: string,
|
|
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/
|
|
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
|
|
62
|
+
* @param blockHash
|
|
63
|
+
* @param blockNumber
|
|
60
64
|
* @returns the value of the storage variable
|
|
61
65
|
*/
|
|
62
|
-
getStorageAt(contractAddress: string, key: number,
|
|
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 {
|
|
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,
|
|
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
|
/**
|
package/dist/provider/default.js
CHANGED
|
@@ -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: '
|
|
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 '
|
|
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/
|
|
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
|
|
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,
|
|
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:
|
|
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
|
|
135
|
+
* Gets the block information
|
|
131
136
|
*
|
|
132
|
-
* [Reference](https://github.com/starkware-libs/cairo-lang/blob/
|
|
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
|
|
135
|
-
* @
|
|
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 (
|
|
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:
|
|
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/
|
|
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
|
|
165
|
+
* @param blockHash
|
|
166
|
+
* @param blockNumber
|
|
157
167
|
* @returns Bytecode and ABI of compiled contract
|
|
158
168
|
*/
|
|
159
|
-
Provider.prototype.getCode = function (contractAddress,
|
|
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:
|
|
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/
|
|
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
|
|
193
|
+
* @param blockHash
|
|
194
|
+
* @param blockNumber
|
|
181
195
|
* @returns the value of the storage variable
|
|
182
196
|
*/
|
|
183
|
-
Provider.prototype.getStorageAt = function (contractAddress, key,
|
|
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:
|
|
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 {
|
|
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,
|
|
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
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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/
|
|
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
|
|
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,
|
|
24
|
+
abstract callContract(invokeTransaction: CallContractTransaction, blockHash?: BigNumberish, blockNumber?: BlockNumber): Promise<CallContractResponse>;
|
|
24
25
|
/**
|
|
25
|
-
* Gets the block information
|
|
26
|
+
* Gets the block information
|
|
26
27
|
*
|
|
27
|
-
* [Reference](https://github.com/starkware-libs/cairo-lang/blob/
|
|
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
|
|
30
|
-
* @
|
|
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(
|
|
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/
|
|
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
|
|
41
|
+
* @param blockHash
|
|
42
|
+
* @param blockNumber
|
|
40
43
|
* @returns Bytecode and ABI of compiled contract
|
|
41
44
|
*/
|
|
42
|
-
abstract getCode(contractAddress: string,
|
|
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/
|
|
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
|
|
53
|
+
* @param blockHash
|
|
54
|
+
* @param blockNumber
|
|
51
55
|
* @returns the value of the storage variable
|
|
52
56
|
*/
|
|
53
|
-
abstract getStorageAt(contractAddress: string, key: number,
|
|
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 {
|
|
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,
|
|
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
|
-
|
|
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:
|
|
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:
|
|
101
|
+
block_number: BlockNumber;
|
|
101
102
|
transaction_index: number;
|
|
102
103
|
transaction_hash: string;
|
|
103
104
|
};
|