starknet 4.12.0 → 4.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/.eslintrc +1 -0
  2. package/CHANGELOG.md +14 -0
  3. package/__tests__/account.test.ts +0 -2
  4. package/dist/index.d.ts +2683 -24
  5. package/dist/index.global.js +22994 -0
  6. package/dist/index.global.js.map +1 -0
  7. package/dist/index.js +4713 -53
  8. package/dist/index.js.map +1 -0
  9. package/dist/index.mjs +4655 -0
  10. package/dist/index.mjs.map +1 -0
  11. package/index.d.ts +2683 -24
  12. package/index.global.js +22994 -0
  13. package/index.global.js.map +1 -0
  14. package/index.js +4713 -53
  15. package/index.js.map +1 -0
  16. package/index.mjs +4655 -0
  17. package/index.mjs.map +1 -0
  18. package/package.json +8 -2
  19. package/src/account/default.ts +43 -8
  20. package/src/account/interface.ts +25 -2
  21. package/src/constants.ts +0 -1
  22. package/src/provider/default.ts +3 -0
  23. package/src/provider/interface.ts +2 -0
  24. package/src/provider/rpc.ts +4 -4
  25. package/src/provider/sequencer.ts +4 -1
  26. package/src/types/lib.ts +1 -1
  27. package/src/types/provider.ts +5 -0
  28. package/src/utils/ellipticCurve.ts +3 -1
  29. package/src/utils/fetchPonyfill.ts +3 -2
  30. package/src/utils/hash.ts +3 -2
  31. package/src/utils/number.ts +2 -2
  32. package/tsup.config.ts +10 -0
  33. package/account/default.d.ts +0 -30
  34. package/account/default.js +0 -526
  35. package/account/index.d.ts +0 -2
  36. package/account/index.js +0 -18
  37. package/account/interface.d.ts +0 -161
  38. package/account/interface.js +0 -27
  39. package/constants.d.ts +0 -36
  40. package/constants.js +0 -2067
  41. package/contract/contractFactory.d.ts +0 -31
  42. package/contract/contractFactory.js +0 -102
  43. package/contract/default.d.ts +0 -108
  44. package/contract/default.js +0 -640
  45. package/contract/index.d.ts +0 -3
  46. package/contract/index.js +0 -19
  47. package/contract/interface.d.ts +0 -80
  48. package/contract/interface.js +0 -9
  49. package/dist/account/default.d.ts +0 -30
  50. package/dist/account/default.js +0 -526
  51. package/dist/account/index.d.ts +0 -2
  52. package/dist/account/index.js +0 -18
  53. package/dist/account/interface.d.ts +0 -161
  54. package/dist/account/interface.js +0 -27
  55. package/dist/constants.d.ts +0 -36
  56. package/dist/constants.js +0 -2067
  57. package/dist/contract/contractFactory.d.ts +0 -31
  58. package/dist/contract/contractFactory.js +0 -102
  59. package/dist/contract/default.d.ts +0 -108
  60. package/dist/contract/default.js +0 -640
  61. package/dist/contract/index.d.ts +0 -3
  62. package/dist/contract/index.js +0 -19
  63. package/dist/contract/interface.d.ts +0 -80
  64. package/dist/contract/interface.js +0 -9
  65. package/dist/provider/default.d.ts +0 -37
  66. package/dist/provider/default.js +0 -207
  67. package/dist/provider/errors.d.ts +0 -9
  68. package/dist/provider/errors.js +0 -40
  69. package/dist/provider/index.d.ts +0 -7
  70. package/dist/provider/index.js +0 -24
  71. package/dist/provider/interface.d.ts +0 -203
  72. package/dist/provider/interface.js +0 -9
  73. package/dist/provider/rpc.d.ts +0 -86
  74. package/dist/provider/rpc.js +0 -605
  75. package/dist/provider/sequencer.d.ts +0 -79
  76. package/dist/provider/sequencer.js +0 -575
  77. package/dist/provider/utils.d.ts +0 -30
  78. package/dist/provider/utils.js +0 -84
  79. package/dist/signer/default.d.ts +0 -13
  80. package/dist/signer/default.js +0 -102
  81. package/dist/signer/index.d.ts +0 -2
  82. package/dist/signer/index.js +0 -18
  83. package/dist/signer/interface.d.ts +0 -60
  84. package/dist/signer/interface.js +0 -9
  85. package/dist/types/account.d.ts +0 -11
  86. package/dist/types/account.js +0 -2
  87. package/dist/types/api/index.d.ts +0 -10
  88. package/dist/types/api/index.js +0 -18
  89. package/dist/types/api/openrpc.d.ts +0 -572
  90. package/dist/types/api/openrpc.js +0 -45
  91. package/dist/types/api/rpc.d.ts +0 -43
  92. package/dist/types/api/rpc.js +0 -2
  93. package/dist/types/api/sequencer.d.ts +0 -320
  94. package/dist/types/api/sequencer.js +0 -2
  95. package/dist/types/contract.d.ts +0 -5
  96. package/dist/types/contract.js +0 -2
  97. package/dist/types/index.d.ts +0 -7
  98. package/dist/types/index.js +0 -35
  99. package/dist/types/lib.d.ts +0 -120
  100. package/dist/types/lib.js +0 -8
  101. package/dist/types/provider.d.ts +0 -99
  102. package/dist/types/provider.js +0 -2
  103. package/dist/types/signer.d.ts +0 -19
  104. package/dist/types/signer.js +0 -2
  105. package/dist/utils/address.d.ts +0 -5
  106. package/dist/utils/address.js +0 -41
  107. package/dist/utils/ellipticCurve.d.ts +0 -29
  108. package/dist/utils/ellipticCurve.js +0 -132
  109. package/dist/utils/encode.d.ts +0 -15
  110. package/dist/utils/encode.js +0 -96
  111. package/dist/utils/fetchPonyfill.d.ts +0 -2
  112. package/dist/utils/fetchPonyfill.js +0 -6
  113. package/dist/utils/hash.d.ts +0 -37
  114. package/dist/utils/hash.js +0 -162
  115. package/dist/utils/json.d.ts +0 -16
  116. package/dist/utils/json.js +0 -19
  117. package/dist/utils/merkle.d.ts +0 -10
  118. package/dist/utils/merkle.js +0 -89
  119. package/dist/utils/number.d.ts +0 -16
  120. package/dist/utils/number.js +0 -112
  121. package/dist/utils/provider.d.ts +0 -4
  122. package/dist/utils/provider.js +0 -38
  123. package/dist/utils/responseParser/index.d.ts +0 -11
  124. package/dist/utils/responseParser/index.js +0 -9
  125. package/dist/utils/responseParser/rpc.d.ts +0 -20
  126. package/dist/utils/responseParser/rpc.js +0 -44
  127. package/dist/utils/responseParser/sequencer.d.ts +0 -17
  128. package/dist/utils/responseParser/sequencer.js +0 -99
  129. package/dist/utils/shortString.d.ts +0 -4
  130. package/dist/utils/shortString.js +0 -26
  131. package/dist/utils/stark.d.ts +0 -16
  132. package/dist/utils/stark.js +0 -91
  133. package/dist/utils/transaction.d.ts +0 -20
  134. package/dist/utils/transaction.js +0 -79
  135. package/dist/utils/typedData/index.d.ts +0 -72
  136. package/dist/utils/typedData/index.js +0 -239
  137. package/dist/utils/typedData/types.d.ts +0 -32
  138. package/dist/utils/typedData/types.js +0 -2
  139. package/dist/utils/typedData/utils.d.ts +0 -8
  140. package/dist/utils/typedData/utils.js +0 -16
  141. package/dist/utils/uint256.d.ts +0 -11
  142. package/dist/utils/uint256.js +0 -28
  143. package/dist/utils/url.d.ts +0 -7
  144. package/dist/utils/url.js +0 -49
  145. package/provider/default.d.ts +0 -37
  146. package/provider/default.js +0 -207
  147. package/provider/errors.d.ts +0 -9
  148. package/provider/errors.js +0 -40
  149. package/provider/index.d.ts +0 -7
  150. package/provider/index.js +0 -24
  151. package/provider/interface.d.ts +0 -203
  152. package/provider/interface.js +0 -9
  153. package/provider/rpc.d.ts +0 -86
  154. package/provider/rpc.js +0 -605
  155. package/provider/sequencer.d.ts +0 -79
  156. package/provider/sequencer.js +0 -575
  157. package/provider/utils.d.ts +0 -30
  158. package/provider/utils.js +0 -84
  159. package/signer/default.d.ts +0 -13
  160. package/signer/default.js +0 -102
  161. package/signer/index.d.ts +0 -2
  162. package/signer/index.js +0 -18
  163. package/signer/interface.d.ts +0 -60
  164. package/signer/interface.js +0 -9
  165. package/types/account.d.ts +0 -11
  166. package/types/account.js +0 -2
  167. package/types/api/index.d.ts +0 -10
  168. package/types/api/index.js +0 -18
  169. package/types/api/openrpc.d.ts +0 -572
  170. package/types/api/openrpc.js +0 -45
  171. package/types/api/rpc.d.ts +0 -43
  172. package/types/api/rpc.js +0 -2
  173. package/types/api/sequencer.d.ts +0 -320
  174. package/types/api/sequencer.js +0 -2
  175. package/types/contract.d.ts +0 -5
  176. package/types/contract.js +0 -2
  177. package/types/index.d.ts +0 -7
  178. package/types/index.js +0 -35
  179. package/types/lib.d.ts +0 -120
  180. package/types/lib.js +0 -8
  181. package/types/provider.d.ts +0 -99
  182. package/types/provider.js +0 -2
  183. package/types/signer.d.ts +0 -19
  184. package/types/signer.js +0 -2
  185. package/utils/address.d.ts +0 -5
  186. package/utils/address.js +0 -41
  187. package/utils/ellipticCurve.d.ts +0 -29
  188. package/utils/ellipticCurve.js +0 -132
  189. package/utils/encode.d.ts +0 -15
  190. package/utils/encode.js +0 -96
  191. package/utils/fetchPonyfill.d.ts +0 -2
  192. package/utils/fetchPonyfill.js +0 -6
  193. package/utils/hash.d.ts +0 -37
  194. package/utils/hash.js +0 -162
  195. package/utils/json.d.ts +0 -16
  196. package/utils/json.js +0 -19
  197. package/utils/merkle.d.ts +0 -10
  198. package/utils/merkle.js +0 -89
  199. package/utils/number.d.ts +0 -16
  200. package/utils/number.js +0 -112
  201. package/utils/provider.d.ts +0 -4
  202. package/utils/provider.js +0 -38
  203. package/utils/responseParser/index.d.ts +0 -11
  204. package/utils/responseParser/index.js +0 -9
  205. package/utils/responseParser/rpc.d.ts +0 -20
  206. package/utils/responseParser/rpc.js +0 -44
  207. package/utils/responseParser/sequencer.d.ts +0 -17
  208. package/utils/responseParser/sequencer.js +0 -99
  209. package/utils/shortString.d.ts +0 -4
  210. package/utils/shortString.js +0 -26
  211. package/utils/stark.d.ts +0 -16
  212. package/utils/stark.js +0 -91
  213. package/utils/transaction.d.ts +0 -20
  214. package/utils/transaction.js +0 -79
  215. package/utils/typedData/index.d.ts +0 -72
  216. package/utils/typedData/index.js +0 -239
  217. package/utils/typedData/types.d.ts +0 -32
  218. package/utils/typedData/types.js +0 -2
  219. package/utils/typedData/utils.d.ts +0 -8
  220. package/utils/typedData/utils.js +0 -16
  221. package/utils/uint256.d.ts +0 -11
  222. package/utils/uint256.js +0 -28
  223. package/utils/url.d.ts +0 -7
  224. package/utils/url.js +0 -49
@@ -1,29 +0,0 @@
1
- import { ec as EC } from 'elliptic';
2
- import { KeyPair, Signature } from '../types';
3
- import { BigNumberish } from './number';
4
- export declare const ec: EC;
5
- export declare const genKeyPair: (options?: EC.GenKeyPairOptions | undefined) => EC.KeyPair;
6
- export declare function getKeyPair(pk: BigNumberish): KeyPair;
7
- export declare function getStarkKey(keyPair: KeyPair): string;
8
- /**
9
- * Takes a public key and casts it into `elliptic` KeyPair format.
10
- *
11
- * @param publicKey - public key which should get casted to a KeyPair
12
- * @returns keyPair with public key only, which can be used to verify signatures, but cant sign anything
13
- */
14
- export declare function getKeyPairFromPublicKey(publicKey: BigNumberish): KeyPair;
15
- /**
16
- * Signs a message using the provided key.
17
- *
18
- * @param keyPair should be an KeyPair with a valid private key.
19
- * @returns an Signature.
20
- */
21
- export declare function sign(keyPair: KeyPair, msgHash: string): Signature;
22
- /**
23
- * Verifies a message using the provided key.
24
- *
25
- * @param keyPair should be an KeyPair with a valid public key.
26
- * @param sig should be an Signature.
27
- * @returns true if the verification succeeds.
28
- */
29
- export declare function verify(keyPair: KeyPair | KeyPair[], msgHash: string, sig: Signature): boolean;
@@ -1,132 +0,0 @@
1
- "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __importDefault = (this && this.__importDefault) || function (mod) {
19
- return (mod && mod.__esModule) ? mod : { "default": mod };
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.verify = exports.sign = exports.getKeyPairFromPublicKey = exports.getStarkKey = exports.getKeyPair = exports.genKeyPair = exports.ec = void 0;
23
- var elliptic_1 = require("elliptic");
24
- var hash_js_1 = __importDefault(require("hash.js"));
25
- var minimalistic_assert_1 = __importDefault(require("minimalistic-assert"));
26
- var constants_1 = require("../constants");
27
- var encode_1 = require("./encode");
28
- var number_1 = require("./number");
29
- exports.ec = new elliptic_1.ec(new elliptic_1.curves.PresetCurve({
30
- type: 'short',
31
- prime: null,
32
- p: constants_1.FIELD_PRIME,
33
- a: '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001',
34
- b: '06f21413 efbe40de 150e596d 72f7a8c5 609ad26c 15c915c1 f4cdfcb9 9cee9e89',
35
- n: constants_1.EC_ORDER,
36
- hash: hash_js_1.default.sha256,
37
- gRed: false,
38
- g: constants_1.CONSTANT_POINTS[1],
39
- }));
40
- /**
41
- * The function _truncateToN in lib/elliptic/ec/index.js does a shift-right of 4 bits
42
- * in some cases. This function does the opposite operation so that
43
- * _truncateToN(fixMessage(msg)) == msg.
44
- *
45
- * @param msg
46
- */
47
- function fixMessage(msg) {
48
- var pureHex = msg.replace(/^0x0*/, '');
49
- if (pureHex.length <= 62) {
50
- // In this case, pureHex should not be transformed, as the byteLength() is at most 31,
51
- // so delta < 0 (see _truncateToN).
52
- return pureHex;
53
- }
54
- (0, minimalistic_assert_1.default)(pureHex.length === 63);
55
- // In this case delta will be 4 so we perform a shift-left of 4 bits by adding a ZERO_BN.
56
- return "".concat(pureHex, "0");
57
- }
58
- exports.genKeyPair = exports.ec.genKeyPair.bind(exports.ec);
59
- function getKeyPair(pk) {
60
- var pkBn = (0, number_1.toBN)(pk);
61
- return exports.ec.keyFromPrivate((0, encode_1.removeHexPrefix)((0, number_1.toHex)(pkBn)), 'hex');
62
- }
63
- exports.getKeyPair = getKeyPair;
64
- function getStarkKey(keyPair) {
65
- // this method needs to be run to generate the .pub property used below
66
- // the result can be dumped
67
- keyPair.getPublic(true, 'hex');
68
- return (0, encode_1.addHexPrefix)((0, encode_1.sanitizeBytes)(keyPair.pub.getX().toString(16), 2));
69
- }
70
- exports.getStarkKey = getStarkKey;
71
- /**
72
- * Takes a public key and casts it into `elliptic` KeyPair format.
73
- *
74
- * @param publicKey - public key which should get casted to a KeyPair
75
- * @returns keyPair with public key only, which can be used to verify signatures, but cant sign anything
76
- */
77
- function getKeyPairFromPublicKey(publicKey) {
78
- var publicKeyBn = (0, number_1.toBN)(publicKey);
79
- return exports.ec.keyFromPublic((0, encode_1.removeHexPrefix)((0, number_1.toHex)(publicKeyBn)), 'hex');
80
- }
81
- exports.getKeyPairFromPublicKey = getKeyPairFromPublicKey;
82
- /**
83
- * Signs a message using the provided key.
84
- *
85
- * @param keyPair should be an KeyPair with a valid private key.
86
- * @returns an Signature.
87
- */
88
- function sign(keyPair, msgHash) {
89
- var msgHashBN = (0, number_1.toBN)((0, encode_1.addHexPrefix)(msgHash));
90
- // Verify message hash has valid length.
91
- (0, number_1.assertInRange)(msgHashBN, constants_1.ZERO, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'msgHash');
92
- var msgSignature = keyPair.sign(fixMessage(msgHash));
93
- var r = msgSignature.r, s = msgSignature.s;
94
- var w = s.invm(exports.ec.n);
95
- // Verify signature has valid length.
96
- (0, number_1.assertInRange)(r, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'r');
97
- (0, number_1.assertInRange)(s, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.EC_ORDER)), 's');
98
- (0, number_1.assertInRange)(w, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'w');
99
- return [r.toString(), s.toString()];
100
- }
101
- exports.sign = sign;
102
- function chunkArray(arr, n) {
103
- return Array(Math.ceil(arr.length / n))
104
- .fill('')
105
- .map(function (_, i) { return arr.slice(i * n, i * n + n); });
106
- }
107
- /**
108
- * Verifies a message using the provided key.
109
- *
110
- * @param keyPair should be an KeyPair with a valid public key.
111
- * @param sig should be an Signature.
112
- * @returns true if the verification succeeds.
113
- */
114
- function verify(keyPair, msgHash, sig) {
115
- var keyPairArray = Array.isArray(keyPair) ? keyPair : [keyPair];
116
- var msgHashBN = (0, number_1.toBN)((0, encode_1.addHexPrefix)(msgHash));
117
- (0, minimalistic_assert_1.default)(sig.length % 2 === 0, 'Signature must be an array of length dividable by 2');
118
- (0, number_1.assertInRange)(msgHashBN, constants_1.ZERO, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'msgHash');
119
- (0, minimalistic_assert_1.default)(keyPairArray.length === sig.length / 2, 'Signature and keyPair length must be equal');
120
- return chunkArray(sig, 2).every(function (_a, i) {
121
- var _b;
122
- var _c = __read(_a, 2), r = _c[0], s = _c[1];
123
- var rBN = (0, number_1.toBN)(r);
124
- var sBN = (0, number_1.toBN)(s);
125
- var w = sBN.invm(exports.ec.n);
126
- (0, number_1.assertInRange)(rBN, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'r');
127
- (0, number_1.assertInRange)(sBN, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.EC_ORDER)), 's');
128
- (0, number_1.assertInRange)(w, constants_1.ONE, (0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.MAX_ECDSA_VAL)), 'w');
129
- return (_b = exports.ec.verify(fixMessage(msgHash), { r: rBN, s: sBN }, keyPairArray[i])) !== null && _b !== void 0 ? _b : false;
130
- });
131
- }
132
- exports.verify = verify;
@@ -1,15 +0,0 @@
1
- export declare const IS_BROWSER: boolean;
2
- export declare function arrayBufferToString(array: ArrayBuffer): string;
3
- export declare function btoaUniversal(b: ArrayBuffer): string;
4
- export declare function buf2hex(buffer: Uint8Array): string;
5
- /**
6
- * Some function imported from https://github.com/pedrouid/enc-utils/blob/master/src/index.ts
7
- * enc-utils is no dependency to avoid using `Buffer` which just works in node and no browsers
8
- */
9
- export declare function removeHexPrefix(hex: string): string;
10
- export declare function addHexPrefix(hex: string): string;
11
- export declare function padLeft(str: string, length: number, padding?: string): string;
12
- export declare function calcByteLength(length: number, byteSize?: number): number;
13
- export declare function sanitizeBytes(str: string, byteSize?: number, padding?: string): string;
14
- export declare function sanitizeHex(hex: string): string;
15
- export declare function utf8ToArray(str: string): Uint8Array;
@@ -1,96 +0,0 @@
1
- "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
- if (ar || !(i in from)) {
21
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
- ar[i] = from[i];
23
- }
24
- }
25
- return to.concat(ar || Array.prototype.slice.call(from));
26
- };
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.utf8ToArray = exports.sanitizeHex = exports.sanitizeBytes = exports.calcByteLength = exports.padLeft = exports.addHexPrefix = exports.removeHexPrefix = exports.buf2hex = exports.btoaUniversal = exports.arrayBufferToString = exports.IS_BROWSER = void 0;
29
- /* eslint-disable no-param-reassign */
30
- exports.IS_BROWSER = typeof window !== 'undefined';
31
- var STRING_ZERO = '0';
32
- function arrayBufferToString(array) {
33
- return new Uint8Array(array).reduce(function (data, byte) { return data + String.fromCharCode(byte); }, '');
34
- }
35
- exports.arrayBufferToString = arrayBufferToString;
36
- function btoaUniversal(b) {
37
- return exports.IS_BROWSER ? btoa(arrayBufferToString(b)) : Buffer.from(b).toString('base64');
38
- }
39
- exports.btoaUniversal = btoaUniversal;
40
- function buf2hex(buffer) {
41
- return __spreadArray([], __read(buffer), false).map(function (x) { return x.toString(16).padStart(2, '0'); }).join('');
42
- }
43
- exports.buf2hex = buf2hex;
44
- /**
45
- * Some function imported from https://github.com/pedrouid/enc-utils/blob/master/src/index.ts
46
- * enc-utils is no dependency to avoid using `Buffer` which just works in node and no browsers
47
- */
48
- function removeHexPrefix(hex) {
49
- return hex.replace(/^0x/, '');
50
- }
51
- exports.removeHexPrefix = removeHexPrefix;
52
- function addHexPrefix(hex) {
53
- return "0x".concat(removeHexPrefix(hex));
54
- }
55
- exports.addHexPrefix = addHexPrefix;
56
- function padString(str, length, left, padding) {
57
- if (padding === void 0) { padding = STRING_ZERO; }
58
- var diff = length - str.length;
59
- var result = str;
60
- if (diff > 0) {
61
- var pad = padding.repeat(diff);
62
- result = left ? pad + str : str + pad;
63
- }
64
- return result;
65
- }
66
- function padLeft(str, length, padding) {
67
- if (padding === void 0) { padding = STRING_ZERO; }
68
- return padString(str, length, true, padding);
69
- }
70
- exports.padLeft = padLeft;
71
- function calcByteLength(length, byteSize) {
72
- if (byteSize === void 0) { byteSize = 8; }
73
- var remainder = length % byteSize;
74
- return remainder ? ((length - remainder) / byteSize) * byteSize + byteSize : length;
75
- }
76
- exports.calcByteLength = calcByteLength;
77
- function sanitizeBytes(str, byteSize, padding) {
78
- if (byteSize === void 0) { byteSize = 8; }
79
- if (padding === void 0) { padding = STRING_ZERO; }
80
- return padLeft(str, calcByteLength(str.length, byteSize), padding);
81
- }
82
- exports.sanitizeBytes = sanitizeBytes;
83
- function sanitizeHex(hex) {
84
- hex = removeHexPrefix(hex);
85
- hex = sanitizeBytes(hex, 2);
86
- if (hex) {
87
- hex = addHexPrefix(hex);
88
- }
89
- return hex;
90
- }
91
- exports.sanitizeHex = sanitizeHex;
92
- // implemented using TextEncoder to make it isomorphic
93
- function utf8ToArray(str) {
94
- return new TextEncoder().encode(str);
95
- }
96
- exports.utf8ToArray = utf8ToArray;
@@ -1,2 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = (typeof window !== 'undefined' && window.fetch) || // use buildin fetch in browser if available
4
- (typeof global !== 'undefined' && global.fetch) || // use buildin fetch in node, react-native and service worker if available
5
- // eslint-disable-next-line global-require
6
- require('isomorphic-fetch'); // ponyfill fetch in node and browsers that don't have it
@@ -1,37 +0,0 @@
1
- import BN from 'bn.js';
2
- import { StarknetChainId, TransactionHashPrefix } from '../constants';
3
- import { RawCalldata } from '../types/lib';
4
- import { BigNumberish } from './number';
5
- export declare const transactionVersion = 1;
6
- export declare const feeTransactionVersion: BN;
7
- export declare function keccakBn(value: BigNumberish): string;
8
- /**
9
- * Function to get the starknet keccak hash from a string
10
- *
11
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L17-L22)
12
- * @param value - string you want to get the starknetKeccak hash from
13
- * @returns starknet keccak hash as BigNumber
14
- */
15
- export declare function starknetKeccak(value: string): BN;
16
- /**
17
- * Function to get the hex selector from a given function name
18
- *
19
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L25-L26)
20
- * @param funcName - selectors abi function name
21
- * @returns hex selector of given abi function name
22
- */
23
- export declare function getSelectorFromName(funcName: string): string;
24
- /**
25
- * Function to get hex selector from function name, decimal string or hex string
26
- * @param value hex string | decimal string | string
27
- * @returns Hex selector
28
- */
29
- export declare function getSelector(value: string): string;
30
- export declare function pedersen(input: [BigNumberish, BigNumberish]): string;
31
- export declare function computeHashOnElements(data: BigNumberish[]): string;
32
- export declare function calculateTransactionHashCommon(txHashPrefix: TransactionHashPrefix, version: BigNumberish, contractAddress: BigNumberish, entryPointSelector: BigNumberish, calldata: BigNumberish[], maxFee: BigNumberish, chainId: StarknetChainId, additionalData?: BigNumberish[]): string;
33
- export declare function calculateDeployTransactionHash(contractAddress: BigNumberish, constructorCalldata: BigNumberish[], version: BigNumberish, chainId: StarknetChainId): string;
34
- export declare function calculateDeclareTransactionHash(classHash: BigNumberish, senderAddress: BigNumberish, version: BigNumberish, maxFee: BigNumberish, chainId: StarknetChainId, nonce: BigNumberish): string;
35
- export declare function calculateDeployAccountTransactionHash(contractAddress: BigNumberish, classHash: BigNumberish, constructorCalldata: BigNumberish[], salt: BigNumberish, version: BigNumberish, maxFee: BigNumberish, chainId: StarknetChainId, nonce: BigNumberish): string;
36
- export declare function calculateTransactionHash(contractAddress: BigNumberish, version: BigNumberish, calldata: BigNumberish[], maxFee: BigNumberish, chainId: StarknetChainId, nonce: BigNumberish): string;
37
- export declare function calculateContractAddressFromHash(salt: BigNumberish, classHash: BigNumberish, constructorCalldata: RawCalldata, deployerAddress: BigNumberish): string;
@@ -1,162 +0,0 @@
1
- "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
- if (ar || !(i in from)) {
21
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
- ar[i] = from[i];
23
- }
24
- }
25
- return to.concat(ar || Array.prototype.slice.call(from));
26
- };
27
- var __importDefault = (this && this.__importDefault) || function (mod) {
28
- return (mod && mod.__esModule) ? mod : { "default": mod };
29
- };
30
- Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.calculateContractAddressFromHash = exports.calculateTransactionHash = exports.calculateDeployAccountTransactionHash = exports.calculateDeclareTransactionHash = exports.calculateDeployTransactionHash = exports.calculateTransactionHashCommon = exports.computeHashOnElements = exports.pedersen = exports.getSelector = exports.getSelectorFromName = exports.starknetKeccak = exports.keccakBn = exports.feeTransactionVersion = exports.transactionVersion = void 0;
32
- var keccak_1 = require("ethereum-cryptography/keccak");
33
- var utils_1 = require("ethereum-cryptography/utils");
34
- var minimalistic_assert_1 = __importDefault(require("minimalistic-assert"));
35
- var constants_1 = require("../constants");
36
- var ellipticCurve_1 = require("./ellipticCurve");
37
- var encode_1 = require("./encode");
38
- var number_1 = require("./number");
39
- exports.transactionVersion = 1;
40
- exports.feeTransactionVersion = (0, number_1.toBN)(2).pow((0, number_1.toBN)(128)).add((0, number_1.toBN)(exports.transactionVersion));
41
- function keccakBn(value) {
42
- var hexWithoutPrefix = (0, encode_1.removeHexPrefix)((0, number_1.toHex)((0, number_1.toBN)(value)));
43
- var evenHex = hexWithoutPrefix.length % 2 === 0 ? hexWithoutPrefix : "0".concat(hexWithoutPrefix);
44
- return (0, encode_1.addHexPrefix)((0, encode_1.buf2hex)((0, keccak_1.keccak256)((0, utils_1.hexToBytes)(evenHex))));
45
- }
46
- exports.keccakBn = keccakBn;
47
- function keccakHex(value) {
48
- return (0, encode_1.addHexPrefix)((0, encode_1.buf2hex)((0, keccak_1.keccak256)((0, encode_1.utf8ToArray)(value))));
49
- }
50
- /**
51
- * Function to get the starknet keccak hash from a string
52
- *
53
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L17-L22)
54
- * @param value - string you want to get the starknetKeccak hash from
55
- * @returns starknet keccak hash as BigNumber
56
- */
57
- function starknetKeccak(value) {
58
- return (0, number_1.toBN)(keccakHex(value)).and(constants_1.MASK_250);
59
- }
60
- exports.starknetKeccak = starknetKeccak;
61
- /**
62
- * Function to get the hex selector from a given function name
63
- *
64
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L25-L26)
65
- * @param funcName - selectors abi function name
66
- * @returns hex selector of given abi function name
67
- */
68
- function getSelectorFromName(funcName) {
69
- // sometimes BigInteger pads the hex string with zeros, which is not allowed in the starknet api
70
- return (0, number_1.toHex)(starknetKeccak(funcName));
71
- }
72
- exports.getSelectorFromName = getSelectorFromName;
73
- /**
74
- * Function to get hex selector from function name, decimal string or hex string
75
- * @param value hex string | decimal string | string
76
- * @returns Hex selector
77
- */
78
- function getSelector(value) {
79
- if ((0, number_1.isHex)(value)) {
80
- return value;
81
- }
82
- if ((0, number_1.isStringWholeNumber)(value)) {
83
- return (0, number_1.toHexString)(value);
84
- }
85
- return getSelectorFromName(value);
86
- }
87
- exports.getSelector = getSelector;
88
- var constantPoints = constants_1.CONSTANT_POINTS.map(function (coords) {
89
- return ellipticCurve_1.ec.curve.point(coords[0], coords[1]);
90
- });
91
- function pedersen(input) {
92
- var point = constantPoints[0];
93
- for (var i = 0; i < input.length; i += 1) {
94
- var x = (0, number_1.toBN)(input[i]);
95
- (0, minimalistic_assert_1.default)(x.gte(constants_1.ZERO) && x.lt((0, number_1.toBN)((0, encode_1.addHexPrefix)(constants_1.FIELD_PRIME))), "Invalid input: ".concat(input[i]));
96
- if (!x.isZero()) {
97
- for (var j = 0; j < 252; j += 1) {
98
- var pt = constantPoints[2 + i * 252 + j];
99
- (0, minimalistic_assert_1.default)(!point.getX().eq(pt.getX()));
100
- if (x.and(constants_1.ONE).toNumber() !== 0) {
101
- point = point.add(pt);
102
- }
103
- x = x.shrn(1);
104
- }
105
- }
106
- }
107
- return (0, encode_1.addHexPrefix)(point.getX().toString(16));
108
- }
109
- exports.pedersen = pedersen;
110
- function computeHashOnElements(data) {
111
- return __spreadArray(__spreadArray([], __read(data), false), [data.length], false).reduce(function (x, y) { return pedersen([x, y]); }, 0).toString();
112
- }
113
- exports.computeHashOnElements = computeHashOnElements;
114
- // following implementation is based on this python implementation:
115
- // https://github.com/starkware-libs/cairo-lang/blob/b614d1867c64f3fb2cf4a4879348cfcf87c3a5a7/src/starkware/starknet/core/os/transaction_hash/transaction_hash.py
116
- function calculateTransactionHashCommon(txHashPrefix, version, contractAddress, entryPointSelector, calldata, maxFee, chainId, additionalData) {
117
- if (additionalData === void 0) { additionalData = []; }
118
- var calldataHash = computeHashOnElements(calldata);
119
- var dataToHash = __spreadArray([
120
- txHashPrefix,
121
- version,
122
- contractAddress,
123
- entryPointSelector,
124
- calldataHash,
125
- maxFee,
126
- chainId
127
- ], __read(additionalData), false);
128
- return computeHashOnElements(dataToHash);
129
- }
130
- exports.calculateTransactionHashCommon = calculateTransactionHashCommon;
131
- function calculateDeployTransactionHash(contractAddress, constructorCalldata, version, chainId) {
132
- return calculateTransactionHashCommon(constants_1.TransactionHashPrefix.DEPLOY, version, contractAddress, getSelectorFromName('constructor'), constructorCalldata, constants_1.ZERO, chainId);
133
- }
134
- exports.calculateDeployTransactionHash = calculateDeployTransactionHash;
135
- function calculateDeclareTransactionHash(
136
- // contractClass: ContractClass, // Should be used once class hash is present in ContractClass
137
- classHash, senderAddress, version, maxFee, chainId, nonce) {
138
- return calculateTransactionHashCommon(constants_1.TransactionHashPrefix.DECLARE, version, senderAddress, 0, [classHash], maxFee, chainId, [nonce]);
139
- }
140
- exports.calculateDeclareTransactionHash = calculateDeclareTransactionHash;
141
- function calculateDeployAccountTransactionHash(contractAddress, classHash, constructorCalldata, salt, version, maxFee, chainId, nonce) {
142
- var calldata = __spreadArray([classHash, salt], __read(constructorCalldata), false);
143
- return calculateTransactionHashCommon(constants_1.TransactionHashPrefix.DEPLOY_ACCOUNT, version, contractAddress, 0, calldata, maxFee, chainId, [nonce]);
144
- }
145
- exports.calculateDeployAccountTransactionHash = calculateDeployAccountTransactionHash;
146
- function calculateTransactionHash(contractAddress, version, calldata, maxFee, chainId, nonce) {
147
- return calculateTransactionHashCommon(constants_1.TransactionHashPrefix.INVOKE, version, contractAddress, 0, calldata, maxFee, chainId, [nonce]);
148
- }
149
- exports.calculateTransactionHash = calculateTransactionHash;
150
- function calculateContractAddressFromHash(salt, classHash, constructorCalldata, deployerAddress) {
151
- var constructorCalldataHash = computeHashOnElements(constructorCalldata);
152
- var CONTRACT_ADDRESS_PREFIX = (0, number_1.toFelt)('0x535441524b4e45545f434f4e54524143545f41444452455353'); // Equivalent to 'STARKNET_CONTRACT_ADDRESS'
153
- var dataToHash = [
154
- CONTRACT_ADDRESS_PREFIX,
155
- deployerAddress,
156
- salt,
157
- classHash,
158
- constructorCalldataHash,
159
- ];
160
- return computeHashOnElements(dataToHash);
161
- }
162
- exports.calculateContractAddressFromHash = calculateContractAddressFromHash;
@@ -1,16 +0,0 @@
1
- export declare const parse: (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any, stringify: {
2
- (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string;
3
- (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string;
4
- };
5
- export declare const parseAlwaysAsBig: (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any, stringifyAlwaysAsBig: {
6
- (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string;
7
- (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string;
8
- };
9
- declare const _default: {
10
- parse: (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any;
11
- stringify: {
12
- (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string;
13
- (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string;
14
- };
15
- };
16
- export default _default;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- var _a, _b;
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.stringifyAlwaysAsBig = exports.parseAlwaysAsBig = exports.stringify = exports.parse = void 0;
8
- var json_bigint_1 = __importDefault(require("json-bigint"));
9
- var json = function (alwaysParseAsBig) {
10
- return (0, json_bigint_1.default)({
11
- alwaysParseAsBig: alwaysParseAsBig,
12
- useNativeBigInt: true,
13
- protoAction: 'preserve',
14
- constructorAction: 'preserve',
15
- });
16
- };
17
- exports.parse = (_a = json(false), _a.parse), exports.stringify = _a.stringify;
18
- exports.parseAlwaysAsBig = (_b = json(true), _b.parse), exports.stringifyAlwaysAsBig = _b.stringify;
19
- exports.default = { parse: exports.parse, stringify: exports.stringify };
@@ -1,10 +0,0 @@
1
- export declare class MerkleTree {
2
- leaves: string[];
3
- branches: string[][];
4
- root: string;
5
- constructor(leafHashes: string[]);
6
- private build;
7
- static hash(a: string, b: string): string;
8
- getProof(leaf: string, branch?: string[], hashPath?: string[]): string[];
9
- }
10
- export declare function proofMerklePath(root: string, leaf: string, path: string[]): boolean;
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
- if (ar || !(i in from)) {
21
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
- ar[i] = from[i];
23
- }
24
- }
25
- return to.concat(ar || Array.prototype.slice.call(from));
26
- };
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.proofMerklePath = exports.MerkleTree = void 0;
29
- var hash_1 = require("./hash");
30
- var number_1 = require("./number");
31
- var MerkleTree = /** @class */ (function () {
32
- function MerkleTree(leafHashes) {
33
- this.branches = [];
34
- this.leaves = leafHashes;
35
- this.root = this.build(leafHashes);
36
- }
37
- MerkleTree.prototype.build = function (leaves) {
38
- if (leaves.length === 1) {
39
- return leaves[0];
40
- }
41
- if (leaves.length !== this.leaves.length) {
42
- this.branches.push(leaves);
43
- }
44
- var newLeaves = [];
45
- for (var i = 0; i < leaves.length; i += 2) {
46
- if (i + 1 === leaves.length) {
47
- newLeaves.push(MerkleTree.hash(leaves[i], '0x0'));
48
- }
49
- else {
50
- newLeaves.push(MerkleTree.hash(leaves[i], leaves[i + 1]));
51
- }
52
- }
53
- return this.build(newLeaves);
54
- };
55
- MerkleTree.hash = function (a, b) {
56
- var _a = __read([(0, number_1.toBN)(a), (0, number_1.toBN)(b)].sort(function (x, y) { return (x.gte(y) ? 1 : -1); }), 2), aSorted = _a[0], bSorted = _a[1];
57
- return (0, hash_1.pedersen)([aSorted, bSorted]);
58
- };
59
- MerkleTree.prototype.getProof = function (leaf, branch, hashPath) {
60
- var _a, _b;
61
- if (branch === void 0) { branch = this.leaves; }
62
- if (hashPath === void 0) { hashPath = []; }
63
- var index = branch.indexOf(leaf);
64
- if (index === -1) {
65
- throw new Error('leaf not found');
66
- }
67
- if (branch.length === 1) {
68
- return hashPath;
69
- }
70
- var isLeft = index % 2 === 0;
71
- var neededBranch = (_a = (isLeft ? branch[index + 1] : branch[index - 1])) !== null && _a !== void 0 ? _a : '0x0';
72
- var newHashPath = __spreadArray(__spreadArray([], __read(hashPath), false), [neededBranch], false);
73
- var currentBranchLevelIndex = this.leaves.length === branch.length
74
- ? -1
75
- : this.branches.findIndex(function (b) { return b.length === branch.length; });
76
- var nextBranch = (_b = this.branches[currentBranchLevelIndex + 1]) !== null && _b !== void 0 ? _b : [this.root];
77
- return this.getProof(MerkleTree.hash(isLeft ? leaf : neededBranch, isLeft ? neededBranch : leaf), nextBranch, newHashPath);
78
- };
79
- return MerkleTree;
80
- }());
81
- exports.MerkleTree = MerkleTree;
82
- function proofMerklePath(root, leaf, path) {
83
- if (path.length === 0) {
84
- return root === leaf;
85
- }
86
- var _a = __read(path), next = _a[0], rest = _a.slice(1);
87
- return proofMerklePath(root, MerkleTree.hash(leaf, next), rest);
88
- }
89
- exports.proofMerklePath = proofMerklePath;
@@ -1,16 +0,0 @@
1
- import BN from 'bn.js';
2
- export declare type BigNumberish = string | number | BN;
3
- export declare function isHex(hex: string): boolean;
4
- export declare function toBN(number: BigNumberish, base?: number | 'hex'): BN;
5
- export declare function toHex(number: BN): string;
6
- export declare function hexToDecimalString(hex: string): string;
7
- export declare function toFelt(num: BigNumberish): string;
8
- export declare function assertInRange(input: BigNumberish, lowerBound: BigNumberish, upperBound: BigNumberish, inputName?: string): void;
9
- export declare function bigNumberishArrayToDecimalStringArray(rawCalldata: BigNumberish[]): string[];
10
- export declare function bigNumberishArrayToHexadecimalStringArray(rawCalldata: BigNumberish[]): string[];
11
- export declare const isStringWholeNumber: (value: string) => boolean;
12
- export declare const toHexString: (value: string) => string;
13
- export declare function getDecimalString(value: string): string;
14
- export declare function getHexString(value: string): string;
15
- export declare function getHexStringArray(value: Array<string>): string[];
16
- export declare const toCairoBool: (value: boolean) => string;