starknet 6.9.0 → 6.10.1

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 (315) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +1 -1
  3. package/README.md +5 -9
  4. package/dist/account/default.cjs +655 -0
  5. package/dist/account/default.d.ts +67 -0
  6. package/dist/account/default.mjs +652 -0
  7. package/dist/account/index.cjs +27 -0
  8. package/dist/account/index.d.ts +2 -0
  9. package/dist/account/index.mjs +2 -0
  10. package/dist/account/interface.cjs +9 -0
  11. package/dist/account/interface.d.ts +301 -0
  12. package/dist/account/interface.mjs +3 -0
  13. package/dist/channel/index.cjs +27 -0
  14. package/dist/channel/index.d.ts +3 -0
  15. package/dist/channel/index.mjs +3 -0
  16. package/dist/channel/rpc_0_6.cjs +607 -0
  17. package/dist/channel/rpc_0_6.d.ts +78 -0
  18. package/dist/channel/rpc_0_6.mjs +543 -0
  19. package/dist/channel/rpc_0_7.cjs +619 -0
  20. package/dist/channel/rpc_0_7.d.ts +81 -0
  21. package/dist/channel/rpc_0_7.mjs +561 -0
  22. package/dist/constants.cjs +76 -0
  23. package/dist/constants.d.ts +70 -0
  24. package/dist/constants.mjs +60 -0
  25. package/dist/contract/contractFactory.cjs +93 -0
  26. package/dist/contract/contractFactory.d.ts +46 -0
  27. package/dist/contract/contractFactory.mjs +83 -0
  28. package/dist/contract/default.cjs +269 -0
  29. package/dist/contract/default.d.ts +58 -0
  30. package/dist/contract/default.mjs +254 -0
  31. package/dist/contract/index.cjs +38 -0
  32. package/dist/contract/index.d.ts +3 -0
  33. package/dist/contract/index.mjs +3 -0
  34. package/dist/contract/interface.cjs +13 -0
  35. package/dist/contract/interface.d.ts +128 -0
  36. package/dist/contract/interface.mjs +6 -0
  37. package/dist/index.cjs +267 -0
  38. package/dist/index.d.ts +45 -5991
  39. package/dist/index.global.js +728 -609
  40. package/dist/index.global.js.map +1 -1
  41. package/dist/index.mjs +39 -7320
  42. package/dist/provider/errors.cjs +50 -0
  43. package/dist/provider/errors.d.ts +16 -0
  44. package/dist/provider/errors.mjs +35 -0
  45. package/dist/provider/extensions/default.cjs +11 -0
  46. package/dist/provider/extensions/default.d.ts +6 -0
  47. package/dist/provider/extensions/default.mjs +5 -0
  48. package/dist/provider/extensions/starknetId.cjs +174 -0
  49. package/dist/provider/extensions/starknetId.d.ts +10 -0
  50. package/dist/provider/extensions/starknetId.mjs +230 -0
  51. package/dist/provider/index.cjs +56 -0
  52. package/dist/provider/index.d.ts +6 -0
  53. package/dist/provider/index.mjs +6 -0
  54. package/dist/provider/interface.cjs +8 -0
  55. package/dist/provider/interface.d.ts +261 -0
  56. package/dist/provider/interface.mjs +2 -0
  57. package/dist/provider/rpc.cjs +301 -0
  58. package/dist/provider/rpc.d.ts +115 -0
  59. package/dist/provider/rpc.mjs +302 -0
  60. package/dist/service/types.cjs +1 -0
  61. package/dist/service/types.d.ts +5 -0
  62. package/dist/service/types.mjs +0 -0
  63. package/dist/signer/default.cjs +105 -0
  64. package/dist/signer/default.d.ts +12 -0
  65. package/dist/signer/default.mjs +102 -0
  66. package/dist/signer/ethSigner.cjs +123 -0
  67. package/dist/signer/ethSigner.d.ts +25 -0
  68. package/dist/signer/ethSigner.mjs +140 -0
  69. package/dist/signer/index.cjs +38 -0
  70. package/dist/signer/index.d.ts +3 -0
  71. package/dist/signer/index.mjs +3 -0
  72. package/dist/signer/interface.cjs +8 -0
  73. package/dist/signer/interface.d.ts +115 -0
  74. package/dist/signer/interface.mjs +2 -0
  75. package/dist/types/account.cjs +1 -0
  76. package/dist/types/account.d.ts +79 -0
  77. package/dist/types/account.mjs +0 -0
  78. package/dist/types/api/index.cjs +30 -0
  79. package/dist/types/api/index.d.ts +4 -0
  80. package/dist/types/api/index.mjs +4 -0
  81. package/dist/types/api/jsonrpc/index.cjs +1 -0
  82. package/dist/types/api/jsonrpc/index.d.ts +21 -0
  83. package/dist/types/api/jsonrpc/index.mjs +0 -0
  84. package/dist/types/api/rpcspec_0_6/components.cjs +1 -0
  85. package/dist/types/api/rpcspec_0_6/components.d.ts +541 -0
  86. package/dist/types/api/rpcspec_0_6/components.mjs +0 -0
  87. package/dist/types/api/rpcspec_0_6/contract.cjs +1 -0
  88. package/dist/types/api/rpcspec_0_6/contract.d.ts +85 -0
  89. package/dist/types/api/rpcspec_0_6/contract.mjs +0 -0
  90. package/dist/types/api/rpcspec_0_6/errors.cjs +1 -0
  91. package/dist/types/api/rpcspec_0_6/errors.d.ts +128 -0
  92. package/dist/types/api/rpcspec_0_6/errors.mjs +0 -0
  93. package/dist/types/api/rpcspec_0_6/index.cjs +45 -0
  94. package/dist/types/api/rpcspec_0_6/index.d.ts +8 -0
  95. package/dist/types/api/rpcspec_0_6/index.mjs +5 -0
  96. package/dist/types/api/rpcspec_0_6/methods.cjs +1 -0
  97. package/dist/types/api/rpcspec_0_6/methods.d.ts +207 -0
  98. package/dist/types/api/rpcspec_0_6/methods.mjs +0 -0
  99. package/dist/types/api/rpcspec_0_6/nonspec.cjs +65 -0
  100. package/dist/types/api/rpcspec_0_6/nonspec.d.ts +147 -0
  101. package/dist/types/api/rpcspec_0_6/nonspec.mjs +59 -0
  102. package/dist/types/cairoEnum.cjs +1 -0
  103. package/dist/types/cairoEnum.d.ts +2 -0
  104. package/dist/types/cairoEnum.mjs +0 -0
  105. package/dist/types/calldata.cjs +27 -0
  106. package/dist/types/calldata.d.ts +23 -0
  107. package/dist/types/calldata.mjs +21 -0
  108. package/dist/types/contract.cjs +1 -0
  109. package/dist/types/contract.d.ts +27 -0
  110. package/dist/types/contract.mjs +0 -0
  111. package/dist/types/helpers/valuesType.cjs +1 -0
  112. package/dist/types/helpers/valuesType.d.ts +1 -0
  113. package/dist/types/helpers/valuesType.mjs +0 -0
  114. package/dist/types/index.cjs +121 -0
  115. package/dist/types/index.d.ts +10 -0
  116. package/dist/types/index.mjs +10 -0
  117. package/dist/types/lib/contract/abi.cjs +1 -0
  118. package/dist/types/lib/contract/abi.d.ts +71 -0
  119. package/dist/types/lib/contract/abi.mjs +0 -0
  120. package/dist/types/lib/contract/index.cjs +50 -0
  121. package/dist/types/lib/contract/index.d.ts +26 -0
  122. package/dist/types/lib/contract/index.mjs +8 -0
  123. package/dist/types/lib/contract/legacy.cjs +1 -0
  124. package/dist/types/lib/contract/legacy.d.ts +33 -0
  125. package/dist/types/lib/contract/legacy.mjs +0 -0
  126. package/dist/types/lib/contract/sierra.cjs +1 -0
  127. package/dist/types/lib/contract/sierra.d.ts +52 -0
  128. package/dist/types/lib/contract/sierra.mjs +0 -0
  129. package/dist/types/lib/index.cjs +61 -0
  130. package/dist/types/lib/index.d.ts +259 -0
  131. package/dist/types/lib/index.mjs +36 -0
  132. package/dist/types/provider/configuration.cjs +1 -0
  133. package/dist/types/provider/configuration.d.ts +20 -0
  134. package/dist/types/provider/configuration.mjs +0 -0
  135. package/dist/types/provider/index.cjs +27 -0
  136. package/dist/types/provider/index.d.ts +2 -0
  137. package/dist/types/provider/index.mjs +2 -0
  138. package/dist/types/provider/response.cjs +30 -0
  139. package/dist/types/provider/response.d.ts +98 -0
  140. package/dist/types/provider/response.mjs +1 -0
  141. package/dist/types/provider/spec.cjs +1 -0
  142. package/dist/types/provider/spec.d.ts +49 -0
  143. package/dist/types/provider/spec.mjs +0 -0
  144. package/dist/types/signer.cjs +1 -0
  145. package/dist/types/signer.d.ts +49 -0
  146. package/dist/types/signer.mjs +0 -0
  147. package/dist/types/transactionReceipt.cjs +1 -0
  148. package/dist/types/transactionReceipt.d.ts +23 -0
  149. package/dist/types/transactionReceipt.mjs +0 -0
  150. package/dist/types/typedData.cjs +12 -0
  151. package/dist/types/typedData.d.ts +1 -0
  152. package/dist/types/typedData.mjs +3 -0
  153. package/dist/utils/address.cjs +44 -0
  154. package/dist/utils/address.d.ts +55 -0
  155. package/dist/utils/address.mjs +35 -0
  156. package/dist/utils/assert.cjs +11 -0
  157. package/dist/utils/assert.d.ts +12 -0
  158. package/dist/utils/assert.mjs +5 -0
  159. package/dist/utils/cairoDataTypes/felt.cjs +31 -0
  160. package/dist/utils/cairoDataTypes/felt.d.ts +6 -0
  161. package/dist/utils/cairoDataTypes/felt.mjs +27 -0
  162. package/dist/utils/cairoDataTypes/uint256.cjs +113 -0
  163. package/dist/utils/cairoDataTypes/uint256.d.ts +72 -0
  164. package/dist/utils/cairoDataTypes/uint256.mjs +103 -0
  165. package/dist/utils/cairoDataTypes/uint512.cjs +125 -0
  166. package/dist/utils/cairoDataTypes/uint512.d.ts +76 -0
  167. package/dist/utils/cairoDataTypes/uint512.mjs +123 -0
  168. package/dist/utils/calldata/byteArray.cjs +27 -0
  169. package/dist/utils/calldata/byteArray.d.ts +32 -0
  170. package/dist/utils/calldata/byteArray.mjs +20 -0
  171. package/dist/utils/calldata/cairo.cjs +114 -0
  172. package/dist/utils/calldata/cairo.d.ts +196 -0
  173. package/dist/utils/calldata/cairo.mjs +68 -0
  174. package/dist/utils/calldata/enum/CairoCustomEnum.cjs +55 -0
  175. package/dist/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  176. package/dist/utils/calldata/enum/CairoCustomEnum.mjs +50 -0
  177. package/dist/utils/calldata/enum/CairoOption.cjs +55 -0
  178. package/dist/utils/calldata/enum/CairoOption.d.ts +37 -0
  179. package/dist/utils/calldata/enum/CairoOption.mjs +50 -0
  180. package/dist/utils/calldata/enum/CairoResult.cjs +54 -0
  181. package/dist/utils/calldata/enum/CairoResult.d.ts +36 -0
  182. package/dist/utils/calldata/enum/CairoResult.mjs +47 -0
  183. package/dist/utils/calldata/enum/index.cjs +38 -0
  184. package/dist/utils/calldata/enum/index.d.ts +3 -0
  185. package/dist/utils/calldata/enum/index.mjs +3 -0
  186. package/dist/utils/calldata/formatter.cjs +55 -0
  187. package/dist/utils/calldata/formatter.d.ts +9 -0
  188. package/dist/utils/calldata/formatter.mjs +58 -0
  189. package/dist/utils/calldata/index.cjs +272 -0
  190. package/dist/utils/calldata/index.d.ts +90 -0
  191. package/dist/utils/calldata/index.mjs +276 -0
  192. package/dist/utils/calldata/parser/index.cjs +29 -0
  193. package/dist/utils/calldata/parser/index.d.ts +5 -0
  194. package/dist/utils/calldata/parser/index.mjs +21 -0
  195. package/dist/utils/calldata/parser/interface.cjs +8 -0
  196. package/dist/utils/calldata/parser/interface.d.ts +20 -0
  197. package/dist/utils/calldata/parser/interface.mjs +2 -0
  198. package/dist/utils/calldata/parser/parser-0-1.1.0.cjs +38 -0
  199. package/dist/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  200. package/dist/utils/calldata/parser/parser-0-1.1.0.mjs +31 -0
  201. package/dist/utils/calldata/parser/parser-2.0.0.cjs +42 -0
  202. package/dist/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  203. package/dist/utils/calldata/parser/parser-2.0.0.mjs +37 -0
  204. package/dist/utils/calldata/propertyOrder.cjs +159 -0
  205. package/dist/utils/calldata/propertyOrder.d.ts +2 -0
  206. package/dist/utils/calldata/propertyOrder.mjs +189 -0
  207. package/dist/utils/calldata/requestParser.cjs +204 -0
  208. package/dist/utils/calldata/requestParser.d.ts +11 -0
  209. package/dist/utils/calldata/requestParser.mjs +231 -0
  210. package/dist/utils/calldata/responseParser.cjs +200 -0
  211. package/dist/utils/calldata/responseParser.d.ts +11 -0
  212. package/dist/utils/calldata/responseParser.mjs +201 -0
  213. package/dist/utils/calldata/tuple.cjs +106 -0
  214. package/dist/utils/calldata/tuple.d.ts +6 -0
  215. package/dist/utils/calldata/tuple.mjs +88 -0
  216. package/dist/utils/calldata/validate.cjs +241 -0
  217. package/dist/utils/calldata/validate.d.ts +6 -0
  218. package/dist/utils/calldata/validate.mjs +315 -0
  219. package/dist/utils/contract.cjs +40 -0
  220. package/dist/utils/contract.d.ts +37 -0
  221. package/dist/utils/contract.mjs +31 -0
  222. package/dist/utils/ec.cjs +12 -0
  223. package/dist/utils/ec.d.ts +2 -0
  224. package/dist/utils/ec.mjs +2 -0
  225. package/dist/utils/encode.cjs +78 -0
  226. package/dist/utils/encode.d.ts +207 -0
  227. package/dist/utils/encode.mjs +56 -0
  228. package/dist/utils/eth.cjs +22 -0
  229. package/dist/utils/eth.d.ts +22 -0
  230. package/dist/utils/eth.mjs +14 -0
  231. package/dist/utils/events/index.cjs +144 -0
  232. package/dist/utils/events/index.d.ts +84 -0
  233. package/dist/utils/events/index.mjs +136 -0
  234. package/dist/utils/fetchPonyfill.cjs +14 -0
  235. package/dist/utils/fetchPonyfill.d.ts +2 -0
  236. package/dist/utils/fetchPonyfill.mjs +5 -0
  237. package/dist/utils/hash/classHash.cjs +151 -0
  238. package/dist/utils/hash/classHash.d.ts +120 -0
  239. package/dist/utils/hash/classHash.mjs +168 -0
  240. package/dist/utils/hash/index.cjs +49 -0
  241. package/dist/utils/hash/index.d.ts +7 -0
  242. package/dist/utils/hash/index.mjs +4 -0
  243. package/dist/utils/hash/selector.cjs +37 -0
  244. package/dist/utils/hash/selector.d.ts +57 -0
  245. package/dist/utils/hash/selector.mjs +28 -0
  246. package/dist/utils/hash/transactionHash/index.cjs +38 -0
  247. package/dist/utils/hash/transactionHash/index.d.ts +81 -0
  248. package/dist/utils/hash/transactionHash/index.mjs +102 -0
  249. package/dist/utils/hash/transactionHash/v2.cjs +31 -0
  250. package/dist/utils/hash/transactionHash/v2.d.ts +34 -0
  251. package/dist/utils/hash/transactionHash/v2.mjs +57 -0
  252. package/dist/utils/hash/transactionHash/v3.cjs +45 -0
  253. package/dist/utils/hash/transactionHash/v3.d.ts +24 -0
  254. package/dist/utils/hash/transactionHash/v3.mjs +80 -0
  255. package/dist/utils/json.cjs +21 -0
  256. package/dist/utils/json.d.ts +50 -0
  257. package/dist/utils/json.mjs +10 -0
  258. package/dist/utils/merkle.cjs +118 -0
  259. package/dist/utils/merkle.d.ts +87 -0
  260. package/dist/utils/merkle.mjs +114 -0
  261. package/dist/utils/num.cjs +109 -0
  262. package/dist/utils/num.d.ts +283 -0
  263. package/dist/utils/num.mjs +86 -0
  264. package/dist/utils/provider.cjs +182 -0
  265. package/dist/utils/provider.d.ts +217 -0
  266. package/dist/utils/provider.mjs +158 -0
  267. package/dist/utils/responseParser/index.cjs +27 -0
  268. package/dist/utils/responseParser/index.d.ts +2 -0
  269. package/dist/utils/responseParser/index.mjs +2 -0
  270. package/dist/utils/responseParser/interface.cjs +8 -0
  271. package/dist/utils/responseParser/interface.d.ts +13 -0
  272. package/dist/utils/responseParser/interface.mjs +2 -0
  273. package/dist/utils/responseParser/rpc.cjs +83 -0
  274. package/dist/utils/responseParser/rpc.d.ts +19 -0
  275. package/dist/utils/responseParser/rpc.mjs +77 -0
  276. package/dist/utils/shortString.cjs +56 -0
  277. package/dist/utils/shortString.d.ts +116 -0
  278. package/dist/utils/shortString.mjs +39 -0
  279. package/dist/utils/stark.cjs +137 -0
  280. package/dist/utils/stark.d.ts +224 -0
  281. package/dist/utils/stark.mjs +109 -0
  282. package/dist/utils/starknetId.cjs +196 -0
  283. package/dist/utils/starknetId.d.ts +182 -0
  284. package/dist/utils/starknetId.mjs +185 -0
  285. package/dist/utils/transaction.cjs +115 -0
  286. package/dist/utils/transaction.d.ts +185 -0
  287. package/dist/utils/transaction.mjs +98 -0
  288. package/dist/utils/transactionReceipt.cjs +54 -0
  289. package/dist/utils/transactionReceipt.d.ts +33 -0
  290. package/dist/utils/transactionReceipt.mjs +49 -0
  291. package/dist/utils/typedData.cjs +285 -0
  292. package/dist/utils/typedData.d.ts +54 -0
  293. package/dist/utils/typedData.mjs +286 -0
  294. package/dist/utils/uint256.cjs +30 -0
  295. package/dist/utils/uint256.d.ts +45 -0
  296. package/dist/utils/uint256.mjs +11 -0
  297. package/dist/utils/url.cjs +35 -0
  298. package/dist/utils/url.d.ts +29 -0
  299. package/dist/utils/url.mjs +27 -0
  300. package/dist/wallet/account.cjs +115 -0
  301. package/dist/wallet/account.d.ts +31 -0
  302. package/dist/wallet/account.mjs +112 -0
  303. package/dist/wallet/connect.cjs +90 -0
  304. package/dist/wallet/connect.d.ts +82 -0
  305. package/dist/wallet/connect.mjs +64 -0
  306. package/dist/wallet/index.cjs +16 -0
  307. package/dist/wallet/index.d.ts +1 -0
  308. package/dist/wallet/index.mjs +1 -0
  309. package/dist/wallet/types.cjs +1 -0
  310. package/dist/wallet/types.d.ts +4 -0
  311. package/dist/wallet/types.mjs +0 -0
  312. package/package.json +13 -13
  313. package/dist/index.js +0 -7426
  314. package/dist/index.js.map +0 -1
  315. package/dist/index.mjs.map +0 -1
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseCalldataField = parseCalldataField;
7
+ var _uint = require("../cairoDataTypes/uint256.cjs");
8
+ var _uint2 = require("../cairoDataTypes/uint512.cjs");
9
+ var _encode = require("../encode.cjs");
10
+ var _num = require("../num.cjs");
11
+ var _shortString = require("../shortString.cjs");
12
+ var _byteArray = require("./byteArray.cjs");
13
+ var _cairo = require("./cairo.cjs");
14
+ var _enum = require("./enum/index.cjs");
15
+ var _tuple = _interopRequireDefault(require("./tuple.cjs"));
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function parseBaseTypes(type, val) {
18
+ switch (true) {
19
+ case _uint.CairoUint256.isAbiType(type):
20
+ return new _uint.CairoUint256(val).toApiRequest();
21
+ case _uint2.CairoUint512.isAbiType(type):
22
+ return new _uint2.CairoUint512(val).toApiRequest();
23
+ case (0, _cairo.isTypeBytes31)(type):
24
+ return (0, _shortString.encodeShortString)(val.toString());
25
+ case (0, _cairo.isTypeSecp256k1Point)(type):
26
+ {
27
+ const pubKeyETH = (0, _encode.removeHexPrefix)((0, _num.toHex)(val)).padStart(128, "0");
28
+ const pubKeyETHy = (0, _cairo.uint256)((0, _encode.addHexPrefix)(pubKeyETH.slice(-64)));
29
+ const pubKeyETHx = (0, _cairo.uint256)((0, _encode.addHexPrefix)(pubKeyETH.slice(0, -64)));
30
+ return [(0, _cairo.felt)(pubKeyETHx.low), (0, _cairo.felt)(pubKeyETHx.high), (0, _cairo.felt)(pubKeyETHy.low), (0, _cairo.felt)(pubKeyETHy.high)];
31
+ }
32
+ default:
33
+ return (0, _cairo.felt)(val);
34
+ }
35
+ }
36
+ function parseTuple(element, typeStr) {
37
+ const memberTypes = (0, _tuple.default)(typeStr);
38
+ const elements = Object.values(element);
39
+ if (elements.length !== memberTypes.length) {
40
+ throw Error(`ParseTuple: provided and expected abi tuple size do not match.
41
+ provided: ${elements}
42
+ expected: ${memberTypes}`);
43
+ }
44
+ return memberTypes.map((it, dx) => {
45
+ return {
46
+ element: elements[dx],
47
+ type: it.type ?? it
48
+ };
49
+ });
50
+ }
51
+ function parseByteArray(element) {
52
+ const myByteArray = (0, _byteArray.byteArrayFromString)(element);
53
+ return [myByteArray.data.length.toString(), ...myByteArray.data.map(bn => bn.toString()), myByteArray.pending_word.toString(), myByteArray.pending_word_len.toString()];
54
+ }
55
+ function parseCalldataValue(element, type, structs, enums) {
56
+ if (element === void 0) {
57
+ throw Error(`Missing parameter for type ${type}`);
58
+ }
59
+ if (Array.isArray(element)) {
60
+ const result = [];
61
+ result.push((0, _cairo.felt)(element.length));
62
+ const arrayType = (0, _cairo.getArrayType)(type);
63
+ return element.reduce((acc, it) => {
64
+ return acc.concat(parseCalldataValue(it, arrayType, structs, enums));
65
+ }, result);
66
+ }
67
+ if (structs[type] && structs[type].members.length) {
68
+ if (_uint.CairoUint256.isAbiType(type)) {
69
+ return new _uint.CairoUint256(element).toApiRequest();
70
+ }
71
+ if (_uint2.CairoUint512.isAbiType(type)) {
72
+ return new _uint2.CairoUint512(element).toApiRequest();
73
+ }
74
+ if (type === "core::starknet::eth_address::EthAddress") return parseBaseTypes(type, element);
75
+ if (type === "core::byte_array::ByteArray") return parseByteArray(element);
76
+ const {
77
+ members
78
+ } = structs[type];
79
+ const subElement = element;
80
+ return members.reduce((acc, it) => {
81
+ return acc.concat(parseCalldataValue(subElement[it.name], it.type, structs, enums));
82
+ }, []);
83
+ }
84
+ if ((0, _cairo.isTypeTuple)(type)) {
85
+ const tupled = parseTuple(element, type);
86
+ return tupled.reduce((acc, it) => {
87
+ const parsedData = parseCalldataValue(it.element, it.type, structs, enums);
88
+ return acc.concat(parsedData);
89
+ }, []);
90
+ }
91
+ if (_uint.CairoUint256.isAbiType(type)) {
92
+ return new _uint.CairoUint256(element).toApiRequest();
93
+ }
94
+ if (_uint2.CairoUint512.isAbiType(type)) {
95
+ return new _uint2.CairoUint512(element).toApiRequest();
96
+ }
97
+ if ((0, _cairo.isTypeEnum)(type, enums)) {
98
+ const {
99
+ variants
100
+ } = enums[type];
101
+ if ((0, _cairo.isTypeOption)(type)) {
102
+ const myOption = element;
103
+ if (myOption.isSome()) {
104
+ const listTypeVariant2 = variants.find(variant => variant.name === "Some");
105
+ if (typeof listTypeVariant2 === "undefined") {
106
+ throw Error(`Error in abi : Option has no 'Some' variant.`);
107
+ }
108
+ const typeVariantSome = listTypeVariant2.type;
109
+ if (typeVariantSome === "()") {
110
+ return _enum.CairoOptionVariant.Some.toString();
111
+ }
112
+ const parsedParameter2 = parseCalldataValue(myOption.unwrap(), typeVariantSome, structs, enums);
113
+ if (Array.isArray(parsedParameter2)) {
114
+ return [_enum.CairoOptionVariant.Some.toString(), ...parsedParameter2];
115
+ }
116
+ return [_enum.CairoOptionVariant.Some.toString(), parsedParameter2];
117
+ }
118
+ return _enum.CairoOptionVariant.None.toString();
119
+ }
120
+ if ((0, _cairo.isTypeResult)(type)) {
121
+ const myResult = element;
122
+ if (myResult.isOk()) {
123
+ const listTypeVariant3 = variants.find(variant => variant.name === "Ok");
124
+ if (typeof listTypeVariant3 === "undefined") {
125
+ throw Error(`Error in abi : Result has no 'Ok' variant.`);
126
+ }
127
+ const typeVariantOk = listTypeVariant3.type;
128
+ if (typeVariantOk === "()") {
129
+ return _enum.CairoResultVariant.Ok.toString();
130
+ }
131
+ const parsedParameter3 = parseCalldataValue(myResult.unwrap(), typeVariantOk, structs, enums);
132
+ if (Array.isArray(parsedParameter3)) {
133
+ return [_enum.CairoResultVariant.Ok.toString(), ...parsedParameter3];
134
+ }
135
+ return [_enum.CairoResultVariant.Ok.toString(), parsedParameter3];
136
+ }
137
+ const listTypeVariant2 = variants.find(variant => variant.name === "Err");
138
+ if (typeof listTypeVariant2 === "undefined") {
139
+ throw Error(`Error in abi : Result has no 'Err' variant.`);
140
+ }
141
+ const typeVariantErr = listTypeVariant2.type;
142
+ if (typeVariantErr === "()") {
143
+ return _enum.CairoResultVariant.Err.toString();
144
+ }
145
+ const parsedParameter2 = parseCalldataValue(myResult.unwrap(), typeVariantErr, structs, enums);
146
+ if (Array.isArray(parsedParameter2)) {
147
+ return [_enum.CairoResultVariant.Err.toString(), ...parsedParameter2];
148
+ }
149
+ return [_enum.CairoResultVariant.Err.toString(), parsedParameter2];
150
+ }
151
+ const myEnum = element;
152
+ const activeVariant = myEnum.activeVariant();
153
+ const listTypeVariant = variants.find(variant => variant.name === activeVariant);
154
+ if (typeof listTypeVariant === "undefined") {
155
+ throw Error(`Not find in abi : Enum has no '${activeVariant}' variant.`);
156
+ }
157
+ const typeActiveVariant = listTypeVariant.type;
158
+ const numActiveVariant = variants.findIndex(variant => variant.name === activeVariant);
159
+ if (typeActiveVariant === "()") {
160
+ return numActiveVariant.toString();
161
+ }
162
+ const parsedParameter = parseCalldataValue(myEnum.unwrap(), typeActiveVariant, structs, enums);
163
+ if (Array.isArray(parsedParameter)) {
164
+ return [numActiveVariant.toString(), ...parsedParameter];
165
+ }
166
+ return [numActiveVariant.toString(), parsedParameter];
167
+ }
168
+ if ((0, _cairo.isTypeNonZero)(type)) {
169
+ return parseBaseTypes((0, _cairo.getArrayType)(type), element);
170
+ }
171
+ if (typeof element === "object") {
172
+ throw Error(`Parameter ${element} do not align with abi parameter ${type}`);
173
+ }
174
+ return parseBaseTypes(type, element);
175
+ }
176
+ function parseCalldataField(argsIterator, input, structs, enums) {
177
+ const {
178
+ name,
179
+ type
180
+ } = input;
181
+ let {
182
+ value
183
+ } = argsIterator.next();
184
+ switch (true) {
185
+ case (0, _cairo.isTypeArray)(type):
186
+ if (!Array.isArray(value) && !(0, _shortString.isText)(value)) {
187
+ throw Error(`ABI expected parameter ${name} to be array or long string, got ${value}`);
188
+ }
189
+ if ((0, _shortString.isString)(value)) {
190
+ value = (0, _shortString.splitLongString)(value);
191
+ }
192
+ return parseCalldataValue(value, input.type, structs, enums);
193
+ case (0, _cairo.isTypeNonZero)(type):
194
+ return parseBaseTypes((0, _cairo.getArrayType)(type), value);
195
+ case type === "core::starknet::eth_address::EthAddress":
196
+ return parseBaseTypes(type, value);
197
+ case (0, _cairo.isTypeStruct)(type, structs) || (0, _cairo.isTypeTuple)(type) || _uint.CairoUint256.isAbiType(type) || _uint.CairoUint256.isAbiType(type):
198
+ return parseCalldataValue(value, type, structs, enums);
199
+ case (0, _cairo.isTypeEnum)(type, enums):
200
+ return parseCalldataValue(value, type, structs, enums);
201
+ default:
202
+ return parseBaseTypes(type, value);
203
+ }
204
+ }
@@ -0,0 +1,11 @@
1
+ import { AbiEntry, AbiEnums, AbiStructs } from '../../types';
2
+ /**
3
+ * Parse one field of the calldata by using input field from the abi for that method
4
+ *
5
+ * @param argsIterator - Iterator for value of the field
6
+ * @param input - input(field) information from the abi that will be used to parse the data
7
+ * @param structs - structs from abi
8
+ * @param enums - enums from abi
9
+ * @return {string | string[]} - parsed arguments in format that contract is expecting
10
+ */
11
+ export declare function parseCalldataField(argsIterator: Iterator<any>, input: AbiEntry, structs: AbiStructs, enums: AbiEnums): string | string[];
@@ -0,0 +1,231 @@
1
+ import { CairoUint256 } from "../cairoDataTypes/uint256.mjs";
2
+ import { CairoUint512 } from "../cairoDataTypes/uint512.mjs";
3
+ import { addHexPrefix, removeHexPrefix } from "../encode.mjs";
4
+ import { toHex } from "../num.mjs";
5
+ import { encodeShortString, isString, isText, splitLongString } from "../shortString.mjs";
6
+ import { byteArrayFromString } from "./byteArray.mjs";
7
+ import {
8
+ felt,
9
+ getArrayType,
10
+ isTypeArray,
11
+ isTypeBytes31,
12
+ isTypeEnum,
13
+ isTypeNonZero,
14
+ isTypeOption,
15
+ isTypeResult,
16
+ isTypeSecp256k1Point,
17
+ isTypeStruct,
18
+ isTypeTuple,
19
+ uint256
20
+ } from "./cairo.mjs";
21
+ import {
22
+ CairoOptionVariant,
23
+ CairoResultVariant
24
+ } from "./enum/index.mjs";
25
+ import extractTupleMemberTypes from "./tuple.mjs";
26
+ function parseBaseTypes(type, val) {
27
+ switch (true) {
28
+ case CairoUint256.isAbiType(type):
29
+ return new CairoUint256(val).toApiRequest();
30
+ case CairoUint512.isAbiType(type):
31
+ return new CairoUint512(val).toApiRequest();
32
+ case isTypeBytes31(type):
33
+ return encodeShortString(val.toString());
34
+ case isTypeSecp256k1Point(type): {
35
+ const pubKeyETH = removeHexPrefix(toHex(val)).padStart(128, "0");
36
+ const pubKeyETHy = uint256(addHexPrefix(pubKeyETH.slice(-64)));
37
+ const pubKeyETHx = uint256(addHexPrefix(pubKeyETH.slice(0, -64)));
38
+ return [
39
+ felt(pubKeyETHx.low),
40
+ felt(pubKeyETHx.high),
41
+ felt(pubKeyETHy.low),
42
+ felt(pubKeyETHy.high)
43
+ ];
44
+ }
45
+ default:
46
+ return felt(val);
47
+ }
48
+ }
49
+ function parseTuple(element, typeStr) {
50
+ const memberTypes = extractTupleMemberTypes(typeStr);
51
+ const elements = Object.values(element);
52
+ if (elements.length !== memberTypes.length) {
53
+ throw Error(
54
+ `ParseTuple: provided and expected abi tuple size do not match.
55
+ provided: ${elements}
56
+ expected: ${memberTypes}`
57
+ );
58
+ }
59
+ return memberTypes.map((it, dx) => {
60
+ return {
61
+ element: elements[dx],
62
+ type: it.type ?? it
63
+ };
64
+ });
65
+ }
66
+ function parseByteArray(element) {
67
+ const myByteArray = byteArrayFromString(element);
68
+ return [
69
+ myByteArray.data.length.toString(),
70
+ ...myByteArray.data.map((bn) => bn.toString()),
71
+ myByteArray.pending_word.toString(),
72
+ myByteArray.pending_word_len.toString()
73
+ ];
74
+ }
75
+ function parseCalldataValue(element, type, structs, enums) {
76
+ if (element === void 0) {
77
+ throw Error(`Missing parameter for type ${type}`);
78
+ }
79
+ if (Array.isArray(element)) {
80
+ const result = [];
81
+ result.push(felt(element.length));
82
+ const arrayType = getArrayType(type);
83
+ return element.reduce((acc, it) => {
84
+ return acc.concat(parseCalldataValue(it, arrayType, structs, enums));
85
+ }, result);
86
+ }
87
+ if (structs[type] && structs[type].members.length) {
88
+ if (CairoUint256.isAbiType(type)) {
89
+ return new CairoUint256(element).toApiRequest();
90
+ }
91
+ if (CairoUint512.isAbiType(type)) {
92
+ return new CairoUint512(element).toApiRequest();
93
+ }
94
+ if (type === "core::starknet::eth_address::EthAddress")
95
+ return parseBaseTypes(type, element);
96
+ if (type === "core::byte_array::ByteArray") return parseByteArray(element);
97
+ const { members } = structs[type];
98
+ const subElement = element;
99
+ return members.reduce((acc, it) => {
100
+ return acc.concat(parseCalldataValue(subElement[it.name], it.type, structs, enums));
101
+ }, []);
102
+ }
103
+ if (isTypeTuple(type)) {
104
+ const tupled = parseTuple(element, type);
105
+ return tupled.reduce((acc, it) => {
106
+ const parsedData = parseCalldataValue(it.element, it.type, structs, enums);
107
+ return acc.concat(parsedData);
108
+ }, []);
109
+ }
110
+ if (CairoUint256.isAbiType(type)) {
111
+ return new CairoUint256(element).toApiRequest();
112
+ }
113
+ if (CairoUint512.isAbiType(type)) {
114
+ return new CairoUint512(element).toApiRequest();
115
+ }
116
+ if (isTypeEnum(type, enums)) {
117
+ const { variants } = enums[type];
118
+ if (isTypeOption(type)) {
119
+ const myOption = element;
120
+ if (myOption.isSome()) {
121
+ const listTypeVariant2 = variants.find((variant) => variant.name === "Some");
122
+ if (typeof listTypeVariant2 === "undefined") {
123
+ throw Error(`Error in abi : Option has no 'Some' variant.`);
124
+ }
125
+ const typeVariantSome = listTypeVariant2.type;
126
+ if (typeVariantSome === "()") {
127
+ return CairoOptionVariant.Some.toString();
128
+ }
129
+ const parsedParameter2 = parseCalldataValue(
130
+ myOption.unwrap(),
131
+ typeVariantSome,
132
+ structs,
133
+ enums
134
+ );
135
+ if (Array.isArray(parsedParameter2)) {
136
+ return [CairoOptionVariant.Some.toString(), ...parsedParameter2];
137
+ }
138
+ return [CairoOptionVariant.Some.toString(), parsedParameter2];
139
+ }
140
+ return CairoOptionVariant.None.toString();
141
+ }
142
+ if (isTypeResult(type)) {
143
+ const myResult = element;
144
+ if (myResult.isOk()) {
145
+ const listTypeVariant3 = variants.find((variant) => variant.name === "Ok");
146
+ if (typeof listTypeVariant3 === "undefined") {
147
+ throw Error(`Error in abi : Result has no 'Ok' variant.`);
148
+ }
149
+ const typeVariantOk = listTypeVariant3.type;
150
+ if (typeVariantOk === "()") {
151
+ return CairoResultVariant.Ok.toString();
152
+ }
153
+ const parsedParameter3 = parseCalldataValue(
154
+ myResult.unwrap(),
155
+ typeVariantOk,
156
+ structs,
157
+ enums
158
+ );
159
+ if (Array.isArray(parsedParameter3)) {
160
+ return [CairoResultVariant.Ok.toString(), ...parsedParameter3];
161
+ }
162
+ return [CairoResultVariant.Ok.toString(), parsedParameter3];
163
+ }
164
+ const listTypeVariant2 = variants.find((variant) => variant.name === "Err");
165
+ if (typeof listTypeVariant2 === "undefined") {
166
+ throw Error(`Error in abi : Result has no 'Err' variant.`);
167
+ }
168
+ const typeVariantErr = listTypeVariant2.type;
169
+ if (typeVariantErr === "()") {
170
+ return CairoResultVariant.Err.toString();
171
+ }
172
+ const parsedParameter2 = parseCalldataValue(myResult.unwrap(), typeVariantErr, structs, enums);
173
+ if (Array.isArray(parsedParameter2)) {
174
+ return [CairoResultVariant.Err.toString(), ...parsedParameter2];
175
+ }
176
+ return [CairoResultVariant.Err.toString(), parsedParameter2];
177
+ }
178
+ const myEnum = element;
179
+ const activeVariant = myEnum.activeVariant();
180
+ const listTypeVariant = variants.find((variant) => variant.name === activeVariant);
181
+ if (typeof listTypeVariant === "undefined") {
182
+ throw Error(`Not find in abi : Enum has no '${activeVariant}' variant.`);
183
+ }
184
+ const typeActiveVariant = listTypeVariant.type;
185
+ const numActiveVariant = variants.findIndex((variant) => variant.name === activeVariant);
186
+ if (typeActiveVariant === "()") {
187
+ return numActiveVariant.toString();
188
+ }
189
+ const parsedParameter = parseCalldataValue(myEnum.unwrap(), typeActiveVariant, structs, enums);
190
+ if (Array.isArray(parsedParameter)) {
191
+ return [numActiveVariant.toString(), ...parsedParameter];
192
+ }
193
+ return [numActiveVariant.toString(), parsedParameter];
194
+ }
195
+ if (isTypeNonZero(type)) {
196
+ return parseBaseTypes(getArrayType(type), element);
197
+ }
198
+ if (typeof element === "object") {
199
+ throw Error(`Parameter ${element} do not align with abi parameter ${type}`);
200
+ }
201
+ return parseBaseTypes(type, element);
202
+ }
203
+ export function parseCalldataField(argsIterator, input, structs, enums) {
204
+ const { name, type } = input;
205
+ let { value } = argsIterator.next();
206
+ switch (true) {
207
+ case isTypeArray(type):
208
+ if (!Array.isArray(value) && !isText(value)) {
209
+ throw Error(`ABI expected parameter ${name} to be array or long string, got ${value}`);
210
+ }
211
+ if (isString(value)) {
212
+ value = splitLongString(value);
213
+ }
214
+ return parseCalldataValue(value, input.type, structs, enums);
215
+ case isTypeNonZero(type):
216
+ return parseBaseTypes(getArrayType(type), value);
217
+ case type === "core::starknet::eth_address::EthAddress":
218
+ return parseBaseTypes(type, value);
219
+ case (isTypeStruct(type, structs) || isTypeTuple(type) || CairoUint256.isAbiType(type) || CairoUint256.isAbiType(type)):
220
+ return parseCalldataValue(value, type, structs, enums);
221
+ case isTypeEnum(type, enums):
222
+ return parseCalldataValue(
223
+ value,
224
+ type,
225
+ structs,
226
+ enums
227
+ );
228
+ default:
229
+ return parseBaseTypes(type, value);
230
+ }
231
+ }
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ module.exports = responseParser;
7
+ var _uint = require("../cairoDataTypes/uint256.cjs");
8
+ var _uint2 = require("../cairoDataTypes/uint512.cjs");
9
+ var _encode = require("../encode.cjs");
10
+ var _num = require("../num.cjs");
11
+ var _shortString = require("../shortString.cjs");
12
+ var _byteArray = require("./byteArray.cjs");
13
+ var _cairo = require("./cairo.cjs");
14
+ var _enum = require("./enum/index.cjs");
15
+ var _tuple = _interopRequireDefault(require("./tuple.cjs"));
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function parseBaseTypes(type, it) {
18
+ let temp;
19
+ switch (true) {
20
+ case (0, _cairo.isTypeBool)(type):
21
+ temp = it.next().value;
22
+ return Boolean(BigInt(temp));
23
+ case _uint.CairoUint256.isAbiType(type):
24
+ const low = it.next().value;
25
+ const high = it.next().value;
26
+ return new _uint.CairoUint256(low, high).toBigInt();
27
+ case _uint2.CairoUint512.isAbiType(type):
28
+ const limb0 = it.next().value;
29
+ const limb1 = it.next().value;
30
+ const limb2 = it.next().value;
31
+ const limb3 = it.next().value;
32
+ return new _uint2.CairoUint512(limb0, limb1, limb2, limb3).toBigInt();
33
+ case type === "core::starknet::eth_address::EthAddress":
34
+ temp = it.next().value;
35
+ return BigInt(temp);
36
+ case type === "core::bytes_31::bytes31":
37
+ temp = it.next().value;
38
+ return (0, _shortString.decodeShortString)(temp);
39
+ case (0, _cairo.isTypeSecp256k1Point)(type):
40
+ const xLow = (0, _encode.removeHexPrefix)(it.next().value).padStart(32, "0");
41
+ const xHigh = (0, _encode.removeHexPrefix)(it.next().value).padStart(32, "0");
42
+ const yLow = (0, _encode.removeHexPrefix)(it.next().value).padStart(32, "0");
43
+ const yHigh = (0, _encode.removeHexPrefix)(it.next().value).padStart(32, "0");
44
+ const pubK = BigInt((0, _encode.addHexPrefix)(xHigh + xLow + yHigh + yLow));
45
+ return pubK;
46
+ default:
47
+ temp = it.next().value;
48
+ return BigInt(temp);
49
+ }
50
+ }
51
+ function parseResponseValue(responseIterator, element, structs, enums) {
52
+ if (element.type === "()") {
53
+ return {};
54
+ }
55
+ if (_uint.CairoUint256.isAbiType(element.type)) {
56
+ const low = responseIterator.next().value;
57
+ const high = responseIterator.next().value;
58
+ return new _uint.CairoUint256(low, high).toBigInt();
59
+ }
60
+ if (_uint2.CairoUint512.isAbiType(element.type)) {
61
+ const limb0 = responseIterator.next().value;
62
+ const limb1 = responseIterator.next().value;
63
+ const limb2 = responseIterator.next().value;
64
+ const limb3 = responseIterator.next().value;
65
+ return new _uint2.CairoUint512(limb0, limb1, limb2, limb3).toBigInt();
66
+ }
67
+ if ((0, _cairo.isTypeByteArray)(element.type)) {
68
+ const parsedBytes31Arr = [];
69
+ const bytes31ArrLen = BigInt(responseIterator.next().value);
70
+ while (parsedBytes31Arr.length < bytes31ArrLen) {
71
+ parsedBytes31Arr.push((0, _num.toHex)(responseIterator.next().value));
72
+ }
73
+ const pending_word = (0, _num.toHex)(responseIterator.next().value);
74
+ const pending_word_len = BigInt(responseIterator.next().value);
75
+ const myByteArray = {
76
+ data: parsedBytes31Arr,
77
+ pending_word,
78
+ pending_word_len
79
+ };
80
+ return (0, _byteArray.stringFromByteArray)(myByteArray);
81
+ }
82
+ if ((0, _cairo.isTypeArray)(element.type)) {
83
+ const parsedDataArr = [];
84
+ const el = {
85
+ name: "",
86
+ type: (0, _cairo.getArrayType)(element.type)
87
+ };
88
+ const len = BigInt(responseIterator.next().value);
89
+ while (parsedDataArr.length < len) {
90
+ parsedDataArr.push(parseResponseValue(responseIterator, el, structs, enums));
91
+ }
92
+ return parsedDataArr;
93
+ }
94
+ if ((0, _cairo.isTypeNonZero)(element.type)) {
95
+ const el = {
96
+ name: "",
97
+ type: (0, _cairo.getArrayType)(element.type)
98
+ };
99
+ return parseResponseValue(responseIterator, el, structs, enums);
100
+ }
101
+ if (structs && element.type in structs && structs[element.type]) {
102
+ if (element.type === "core::starknet::eth_address::EthAddress") {
103
+ return parseBaseTypes(element.type, responseIterator);
104
+ }
105
+ return structs[element.type].members.reduce((acc, el) => {
106
+ acc[el.name] = parseResponseValue(responseIterator, el, structs, enums);
107
+ return acc;
108
+ }, {});
109
+ }
110
+ if (enums && element.type in enums && enums[element.type]) {
111
+ const variantNum = Number(responseIterator.next().value);
112
+ const rawEnum = enums[element.type].variants.reduce((acc, variant, num) => {
113
+ if (num === variantNum) {
114
+ acc[variant.name] = parseResponseValue(responseIterator, {
115
+ name: "",
116
+ type: variant.type
117
+ }, structs, enums);
118
+ return acc;
119
+ }
120
+ acc[variant.name] = void 0;
121
+ return acc;
122
+ }, {});
123
+ if (element.type.startsWith("core::option::Option")) {
124
+ const content = variantNum === _enum.CairoOptionVariant.Some ? rawEnum.Some : void 0;
125
+ return new _enum.CairoOption(variantNum, content);
126
+ }
127
+ if (element.type.startsWith("core::result::Result")) {
128
+ let content;
129
+ if (variantNum === _enum.CairoResultVariant.Ok) {
130
+ content = rawEnum.Ok;
131
+ } else {
132
+ content = rawEnum.Err;
133
+ }
134
+ return new _enum.CairoResult(variantNum, content);
135
+ }
136
+ const customEnum = new _enum.CairoCustomEnum(rawEnum);
137
+ return customEnum;
138
+ }
139
+ if ((0, _cairo.isTypeTuple)(element.type)) {
140
+ const memberTypes = (0, _tuple.default)(element.type);
141
+ return memberTypes.reduce((acc, it, idx) => {
142
+ const name = it?.name ? it.name : idx;
143
+ const type = it?.type ? it.type : it;
144
+ const el = {
145
+ name,
146
+ type
147
+ };
148
+ acc[name] = parseResponseValue(responseIterator, el, structs, enums);
149
+ return acc;
150
+ }, {});
151
+ }
152
+ if ((0, _cairo.isTypeArray)(element.type)) {
153
+ const parsedDataArr = [];
154
+ const el = {
155
+ name: "",
156
+ type: (0, _cairo.getArrayType)(element.type)
157
+ };
158
+ const len = BigInt(responseIterator.next().value);
159
+ while (parsedDataArr.length < len) {
160
+ parsedDataArr.push(parseResponseValue(responseIterator, el, structs, enums));
161
+ }
162
+ return parsedDataArr;
163
+ }
164
+ return parseBaseTypes(element.type, responseIterator);
165
+ }
166
+ function responseParser(responseIterator, output, structs, enums, parsedResult) {
167
+ const {
168
+ name,
169
+ type
170
+ } = output;
171
+ let temp;
172
+ switch (true) {
173
+ case (0, _cairo.isLen)(name):
174
+ temp = responseIterator.next().value;
175
+ return BigInt(temp);
176
+ case structs && type in structs || (0, _cairo.isTypeTuple)(type):
177
+ return parseResponseValue(responseIterator, output, structs, enums);
178
+ case enums && (0, _cairo.isTypeEnum)(type, enums):
179
+ return parseResponseValue(responseIterator, output, structs, enums);
180
+ case (0, _cairo.isTypeArray)(type):
181
+ if ((0, _cairo.isCairo1Type)(type)) {
182
+ return parseResponseValue(responseIterator, output, structs, enums);
183
+ }
184
+ const parsedDataArr = [];
185
+ if (parsedResult && parsedResult[`${name}_len`]) {
186
+ const arrLen = parsedResult[`${name}_len`];
187
+ while (parsedDataArr.length < arrLen) {
188
+ parsedDataArr.push(parseResponseValue(responseIterator, {
189
+ name,
190
+ type: output.type.replace("*", "")
191
+ }, structs, enums));
192
+ }
193
+ }
194
+ return parsedDataArr;
195
+ case (0, _cairo.isTypeNonZero)(type):
196
+ return parseResponseValue(responseIterator, output, structs, enums);
197
+ default:
198
+ return parseBaseTypes(type, responseIterator);
199
+ }
200
+ }
@@ -0,0 +1,11 @@
1
+ import { AbiEntry, AbiEnums, AbiStructs, Args, EventEntry, ParsedStruct } from '../../types';
2
+ /**
3
+ * Parse elements of the response and structuring them into one field by using output property from the abi for that method
4
+ *
5
+ * @param responseIterator - iterator of the response
6
+ * @param output - output(field) information from the abi that will be used to parse the data
7
+ * @param structs - structs from abi
8
+ * @param parsedResult
9
+ * @return - parsed response corresponding to the abi structure of the field
10
+ */
11
+ export default function responseParser(responseIterator: Iterator<string>, output: AbiEntry | EventEntry, structs?: AbiStructs, enums?: AbiEnums, parsedResult?: Args | ParsedStruct): any;