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 +11 -0
- package/__tests__/sequencerProvider.test.ts +31 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/provider/sequencer.js +5 -5
- package/dist/utils/url.d.ts +7 -0
- package/dist/utils/url.js +49 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +1 -1
- package/provider/sequencer.js +5 -5
- package/src/index.ts +1 -0
- package/src/provider/sequencer.ts +8 -3
- package/src/utils/url.ts +53 -0
- package/utils/url.d.ts +7 -0
- package/utils/url.js +49 -0
- package/www/docs/API/provider.md +80 -23
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
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
|
|
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
|
-
|
|
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
|
-
(
|
|
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,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
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
package/provider/sequencer.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
(
|
|
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
|
@@ -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
|
-
|
|
79
|
-
|
|
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);
|
package/src/utils/url.ts
ADDED
|
@@ -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
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;
|
package/www/docs/API/provider.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
```
|