@aztec/stdlib 0.0.1-commit.cd76b27 → 0.0.1-commit.d117d021b

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 (234) hide show
  1. package/dest/abi/decoder.d.ts +2 -2
  2. package/dest/abi/decoder.d.ts.map +1 -1
  3. package/dest/abi/decoder.js +7 -5
  4. package/dest/abi/encoder.d.ts +1 -1
  5. package/dest/abi/encoder.d.ts.map +1 -1
  6. package/dest/abi/encoder.js +37 -6
  7. package/dest/abi/event_metadata_definition.d.ts +3 -1
  8. package/dest/abi/event_metadata_definition.d.ts.map +1 -1
  9. package/dest/abi/event_metadata_definition.js +1 -1
  10. package/dest/abi/utils.d.ts +14 -1
  11. package/dest/abi/utils.d.ts.map +1 -1
  12. package/dest/abi/utils.js +15 -0
  13. package/dest/avm/avm.d.ts +300 -300
  14. package/dest/avm/avm_proving_request.d.ts +166 -166
  15. package/dest/avm/revert_code.d.ts +16 -1
  16. package/dest/avm/revert_code.d.ts.map +1 -1
  17. package/dest/avm/revert_code.js +15 -5
  18. package/dest/block/l2_block.d.ts +9 -1
  19. package/dest/block/l2_block.d.ts.map +1 -1
  20. package/dest/block/l2_block.js +12 -2
  21. package/dest/block/l2_block_source.d.ts +6 -1
  22. package/dest/block/l2_block_source.d.ts.map +1 -1
  23. package/dest/block/l2_block_stream/l2_block_stream.d.ts +1 -1
  24. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  25. package/dest/block/l2_block_stream/l2_block_stream.js +10 -0
  26. package/dest/checkpoint/checkpoint.d.ts +2 -1
  27. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  28. package/dest/checkpoint/checkpoint.js +9 -4
  29. package/dest/checkpoint/index.d.ts +2 -1
  30. package/dest/checkpoint/index.d.ts.map +1 -1
  31. package/dest/checkpoint/index.js +1 -0
  32. package/dest/checkpoint/validate.d.ts +36 -0
  33. package/dest/checkpoint/validate.d.ts.map +1 -0
  34. package/dest/checkpoint/validate.js +120 -0
  35. package/dest/config/sequencer-config.d.ts +4 -2
  36. package/dest/config/sequencer-config.d.ts.map +1 -1
  37. package/dest/config/sequencer-config.js +6 -0
  38. package/dest/contract/contract_class.d.ts +2 -3
  39. package/dest/contract/contract_class.d.ts.map +1 -1
  40. package/dest/gas/gas_fees.d.ts +1 -1
  41. package/dest/gas/gas_fees.d.ts.map +1 -1
  42. package/dest/gas/gas_fees.js +4 -1
  43. package/dest/ha-signing/config.d.ts +136 -0
  44. package/dest/ha-signing/config.d.ts.map +1 -0
  45. package/dest/ha-signing/config.js +97 -0
  46. package/dest/ha-signing/index.d.ts +4 -0
  47. package/dest/ha-signing/index.d.ts.map +1 -0
  48. package/dest/ha-signing/index.js +3 -0
  49. package/dest/ha-signing/local_config.d.ts +63 -0
  50. package/dest/ha-signing/local_config.d.ts.map +1 -0
  51. package/dest/ha-signing/local_config.js +24 -0
  52. package/dest/ha-signing/types.d.ts +85 -0
  53. package/dest/ha-signing/types.d.ts.map +1 -0
  54. package/dest/ha-signing/types.js +32 -0
  55. package/dest/interfaces/allowed_element.d.ts +26 -20
  56. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  57. package/dest/interfaces/allowed_element.js +8 -8
  58. package/dest/interfaces/archiver.d.ts +1 -1
  59. package/dest/interfaces/archiver.d.ts.map +1 -1
  60. package/dest/interfaces/archiver.js +1 -0
  61. package/dest/interfaces/aztec-node-admin.d.ts +70 -30
  62. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  63. package/dest/interfaces/aztec-node.d.ts +10 -5
  64. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  65. package/dest/interfaces/aztec-node.js +3 -2
  66. package/dest/interfaces/block-builder.d.ts +11 -5
  67. package/dest/interfaces/block-builder.d.ts.map +1 -1
  68. package/dest/interfaces/block-builder.js +7 -2
  69. package/dest/interfaces/configs.d.ts +57 -32
  70. package/dest/interfaces/configs.d.ts.map +1 -1
  71. package/dest/interfaces/configs.js +5 -2
  72. package/dest/interfaces/p2p.d.ts +3 -8
  73. package/dest/interfaces/p2p.d.ts.map +1 -1
  74. package/dest/interfaces/validator.d.ts +103 -41
  75. package/dest/interfaces/validator.d.ts.map +1 -1
  76. package/dest/interfaces/validator.js +8 -4
  77. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +3 -3
  78. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  79. package/dest/kernel/hints/build_note_hash_read_request_hints.js +13 -10
  80. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  81. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  82. package/dest/kernel/hints/build_nullifier_read_request_hints.js +13 -10
  83. package/dest/kernel/hints/build_transient_data_hints.d.ts +5 -2
  84. package/dest/kernel/hints/build_transient_data_hints.d.ts.map +1 -1
  85. package/dest/kernel/hints/build_transient_data_hints.js +9 -3
  86. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +2 -1
  87. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  88. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +4 -0
  89. package/dest/kv-store/config.d.ts +17 -0
  90. package/dest/kv-store/config.d.ts.map +1 -0
  91. package/dest/kv-store/config.js +26 -0
  92. package/dest/kv-store/index.d.ts +2 -0
  93. package/dest/kv-store/index.d.ts.map +1 -0
  94. package/dest/kv-store/index.js +1 -0
  95. package/dest/logs/debug_log_store.d.ts +30 -0
  96. package/dest/logs/debug_log_store.d.ts.map +1 -0
  97. package/dest/logs/debug_log_store.js +30 -0
  98. package/dest/logs/extended_directional_app_tagging_secret.d.ts +47 -0
  99. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -0
  100. package/dest/logs/{directional_app_tagging_secret.js → extended_directional_app_tagging_secret.js} +23 -15
  101. package/dest/logs/index.d.ts +3 -2
  102. package/dest/logs/index.d.ts.map +1 -1
  103. package/dest/logs/index.js +2 -1
  104. package/dest/logs/pre_tag.d.ts +16 -11
  105. package/dest/logs/pre_tag.d.ts.map +1 -1
  106. package/dest/logs/pre_tag.js +2 -2
  107. package/dest/logs/public_log.d.ts +4 -3
  108. package/dest/logs/public_log.d.ts.map +1 -1
  109. package/dest/logs/public_log.js +2 -1
  110. package/dest/logs/siloed_tag.d.ts +5 -3
  111. package/dest/logs/siloed_tag.d.ts.map +1 -1
  112. package/dest/logs/siloed_tag.js +6 -1
  113. package/dest/logs/tag.js +1 -1
  114. package/dest/p2p/attestation_utils.d.ts +11 -1
  115. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  116. package/dest/p2p/attestation_utils.js +45 -0
  117. package/dest/p2p/block_proposal.d.ts +2 -2
  118. package/dest/p2p/block_proposal.d.ts.map +1 -1
  119. package/dest/p2p/block_proposal.js +1 -1
  120. package/dest/p2p/checkpoint_proposal.d.ts +2 -7
  121. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  122. package/dest/p2p/checkpoint_proposal.js +1 -13
  123. package/dest/p2p/client_type.d.ts +2 -5
  124. package/dest/p2p/client_type.d.ts.map +1 -1
  125. package/dest/p2p/client_type.js +0 -7
  126. package/dest/p2p/index.d.ts +1 -2
  127. package/dest/p2p/index.d.ts.map +1 -1
  128. package/dest/p2p/index.js +0 -1
  129. package/dest/p2p/peer_error.d.ts +3 -1
  130. package/dest/p2p/peer_error.d.ts.map +1 -1
  131. package/dest/p2p/peer_error.js +5 -0
  132. package/dest/p2p/topic_type.d.ts +3 -4
  133. package/dest/p2p/topic_type.d.ts.map +1 -1
  134. package/dest/p2p/topic_type.js +7 -24
  135. package/dest/slashing/tally.d.ts +7 -2
  136. package/dest/slashing/tally.d.ts.map +1 -1
  137. package/dest/slashing/tally.js +30 -2
  138. package/dest/tests/factories.d.ts +3 -1
  139. package/dest/tests/factories.d.ts.map +1 -1
  140. package/dest/tests/factories.js +8 -0
  141. package/dest/tests/mocks.d.ts +5 -3
  142. package/dest/tests/mocks.d.ts.map +1 -1
  143. package/dest/tests/mocks.js +18 -13
  144. package/dest/tx/block_header.d.ts +3 -1
  145. package/dest/tx/block_header.d.ts.map +1 -1
  146. package/dest/tx/block_header.js +4 -0
  147. package/dest/tx/public_simulation_output.d.ts +4 -2
  148. package/dest/tx/public_simulation_output.d.ts.map +1 -1
  149. package/dest/tx/public_simulation_output.js +7 -3
  150. package/dest/tx/simulated_tx.d.ts +5 -2
  151. package/dest/tx/simulated_tx.d.ts.map +1 -1
  152. package/dest/tx/simulated_tx.js +4 -1
  153. package/dest/tx/tx.d.ts +6 -5
  154. package/dest/tx/tx.d.ts.map +1 -1
  155. package/dest/tx/tx.js +18 -6
  156. package/dest/tx/tx_receipt.d.ts +16 -2
  157. package/dest/tx/tx_receipt.d.ts.map +1 -1
  158. package/dest/tx/tx_receipt.js +11 -3
  159. package/dest/tx/validator/error_texts.d.ts +5 -1
  160. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  161. package/dest/tx/validator/error_texts.js +4 -0
  162. package/dest/update-checker/index.d.ts +3 -2
  163. package/dest/update-checker/index.d.ts.map +1 -1
  164. package/dest/update-checker/index.js +2 -1
  165. package/dest/update-checker/package_version.d.ts +3 -0
  166. package/dest/update-checker/package_version.d.ts.map +1 -0
  167. package/dest/update-checker/package_version.js +11 -0
  168. package/dest/update-checker/version_checker.d.ts +25 -0
  169. package/dest/update-checker/version_checker.d.ts.map +1 -0
  170. package/dest/update-checker/version_checker.js +50 -0
  171. package/package.json +12 -11
  172. package/src/abi/decoder.ts +15 -6
  173. package/src/abi/encoder.ts +49 -6
  174. package/src/abi/event_metadata_definition.ts +2 -0
  175. package/src/abi/utils.ts +25 -0
  176. package/src/avm/revert_code.ts +15 -0
  177. package/src/block/l2_block.ts +13 -1
  178. package/src/block/l2_block_source.ts +6 -0
  179. package/src/block/l2_block_stream/l2_block_stream.ts +21 -0
  180. package/src/checkpoint/checkpoint.ts +12 -3
  181. package/src/checkpoint/index.ts +1 -0
  182. package/src/checkpoint/validate.ts +230 -0
  183. package/src/config/sequencer-config.ts +9 -1
  184. package/src/contract/contract_class.ts +3 -3
  185. package/src/gas/gas_fees.ts +7 -1
  186. package/src/ha-signing/config.ts +156 -0
  187. package/src/ha-signing/index.ts +27 -0
  188. package/src/ha-signing/local_config.ts +46 -0
  189. package/src/ha-signing/types.ts +112 -0
  190. package/src/interfaces/allowed_element.ts +29 -9
  191. package/src/interfaces/archiver.ts +1 -0
  192. package/src/interfaces/aztec-node.ts +14 -4
  193. package/src/interfaces/block-builder.ts +25 -5
  194. package/src/interfaces/configs.ts +22 -8
  195. package/src/interfaces/p2p.ts +2 -13
  196. package/src/interfaces/validator.ts +50 -28
  197. package/src/kernel/hints/build_note_hash_read_request_hints.ts +14 -18
  198. package/src/kernel/hints/build_nullifier_read_request_hints.ts +15 -18
  199. package/src/kernel/hints/build_transient_data_hints.ts +17 -2
  200. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +9 -0
  201. package/src/kv-store/config.ts +36 -0
  202. package/src/kv-store/index.ts +1 -0
  203. package/src/logs/debug_log_store.ts +54 -0
  204. package/src/logs/{directional_app_tagging_secret.ts → extended_directional_app_tagging_secret.ts} +24 -16
  205. package/src/logs/index.ts +2 -1
  206. package/src/logs/pre_tag.ts +5 -5
  207. package/src/logs/public_log.ts +4 -2
  208. package/src/logs/siloed_tag.ts +8 -2
  209. package/src/logs/tag.ts +1 -1
  210. package/src/p2p/attestation_utils.ts +56 -0
  211. package/src/p2p/block_proposal.ts +1 -1
  212. package/src/p2p/checkpoint_proposal.ts +1 -18
  213. package/src/p2p/client_type.ts +0 -6
  214. package/src/p2p/index.ts +0 -1
  215. package/src/p2p/peer_error.ts +7 -0
  216. package/src/p2p/topic_type.ts +8 -15
  217. package/src/slashing/tally.ts +34 -1
  218. package/src/tests/factories.ts +9 -0
  219. package/src/tests/mocks.ts +25 -10
  220. package/src/tx/block_header.ts +6 -0
  221. package/src/tx/public_simulation_output.ts +4 -0
  222. package/src/tx/simulated_tx.ts +8 -1
  223. package/src/tx/tx.ts +20 -11
  224. package/src/tx/tx_receipt.ts +10 -0
  225. package/src/tx/validator/error_texts.ts +4 -0
  226. package/src/update-checker/index.ts +2 -1
  227. package/src/update-checker/package_version.ts +17 -0
  228. package/src/update-checker/version_checker.ts +65 -0
  229. package/dest/logs/directional_app_tagging_secret.d.ts +0 -40
  230. package/dest/logs/directional_app_tagging_secret.d.ts.map +0 -1
  231. package/dest/update-checker/update-checker.d.ts +0 -49
  232. package/dest/update-checker/update-checker.d.ts.map +0 -1
  233. package/dest/update-checker/update-checker.js +0 -130
  234. package/src/update-checker/update-checker.ts +0 -166
@@ -6,7 +6,7 @@ import type { ABIParameter, AbiType } from './abi.js';
6
6
  */
7
7
  export type AbiDecoded = bigint | boolean | string | AztecAddress | AbiDecoded[] | {
8
8
  [key: string]: AbiDecoded;
9
- };
9
+ } | undefined;
10
10
  /**
11
11
  * Decodes values in a flattened Field array using a provided ABI.
12
12
  * @param abi - The ABI to use as reference.
@@ -55,4 +55,4 @@ export declare function decodeFunctionSignature(name: string, parameters: ABIPar
55
55
  * @returns - The user-friendly function signature.
56
56
  */
57
57
  export declare function decodeFunctionSignatureWithParameterNames(name: string, parameters: ABIParameter[]): string;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FiaS9kZWNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFlLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUduRTs7R0FFRztBQUNILE1BQU0sTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsWUFBWSxHQUFHLFVBQVUsRUFBRSxHQUFHO0lBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQTtDQUFFLENBQUM7QUErRmpIOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxjQUV6RDtBQUVEOztHQUVHO0FBQ0gscUJBQWEsd0JBQXdCO0lBR2pDLE9BQU8sQ0FBQyxJQUFJO0lBQ1osT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLFlBQVk7SUFKdEIsT0FBTyxDQUFDLFNBQVMsQ0FBUztJQUMxQixZQUNVLElBQUksRUFBRSxNQUFNLEVBQ1osVUFBVSxFQUFFLFlBQVksRUFBRSxFQUMxQixZQUFZLFVBQVEsRUFHN0I7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLGdCQUFnQjtJQXNCeEI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxlQUFlO0lBS3ZCOzs7T0FHRztJQUNJLE1BQU0sSUFBSSxNQUFNLENBRXRCO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQix1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFFL0U7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQix5Q0FBeUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFFakcifQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FiaS9kZWNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFlLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUduRTs7R0FFRztBQUNILE1BQU0sTUFBTSxVQUFVLEdBQ2xCLE1BQU0sR0FDTixPQUFPLEdBQ1AsTUFBTSxHQUNOLFlBQVksR0FDWixVQUFVLEVBQUUsR0FDWjtJQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxVQUFVLENBQUE7Q0FBRSxHQUM3QixTQUFTLENBQUM7QUFvR2Q7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLGNBRXpEO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSx3QkFBd0I7SUFHakMsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsWUFBWTtJQUp0QixPQUFPLENBQUMsU0FBUyxDQUFTO0lBQzFCLFlBQ1UsSUFBSSxFQUFFLE1BQU0sRUFDWixVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQzFCLFlBQVksVUFBUSxFQUc3QjtJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsZ0JBQWdCO0lBbUJ4Qjs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLGVBQWU7SUFLdkI7OztPQUdHO0lBQ0ksTUFBTSxJQUFJLE1BQU0sQ0FFdEI7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUUvRTtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLHlDQUF5QyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUVqRyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAe,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AA+FjH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAEzD;AAED;;GAEG;AACH,qBAAa,wBAAwB;IAGjC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IAJtB,OAAO,CAAC,SAAS,CAAS;IAC1B,YACU,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,YAAY,EAAE,EAC1B,YAAY,UAAQ,EAG7B;IAED;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACI,MAAM,IAAI,MAAM,CAEtB;CACF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAEjG"}
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAe,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnE;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,OAAO,GACP,MAAM,GACN,YAAY,GACZ,UAAU,EAAE,GACZ;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAC7B,SAAS,CAAC;AAoGd;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAEzD;AAED;;GAEG;AACH,qBAAa,wBAAwB;IAGjC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IAJtB,OAAO,CAAC,SAAS,CAAS;IAC1B,YACU,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,YAAY,EAAE,EAC1B,YAAY,UAAQ,EAG7B;IAED;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACI,MAAM,IAAI,MAAM,CAEtB;CACF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAEjG"}
@@ -1,5 +1,5 @@
1
1
  import { AztecAddress } from '../aztec-address/index.js';
2
- import { isAztecAddressStruct, parseSignedInt } from './utils.js';
2
+ import { isAztecAddressStruct, isOptionStruct, parseSignedInt } from './utils.js';
3
3
  /**
4
4
  * Decodes values using a provided ABI.
5
5
  */ class AbiDecoder {
@@ -42,6 +42,11 @@ import { isAztecAddressStruct, parseSignedInt } from './utils.js';
42
42
  if (isAztecAddressStruct(abiType)) {
43
43
  return new AztecAddress(this.getNextField().toBuffer());
44
44
  }
45
+ if (isOptionStruct(abiType)) {
46
+ const isSome = this.decodeNext(abiType.fields[0].type);
47
+ const value = this.decodeNext(abiType.fields[1].type);
48
+ return isSome ? value : undefined;
49
+ }
45
50
  for (const field of abiType.fields){
46
51
  struct[field.name] = this.decodeNext(field.type);
47
52
  }
@@ -119,10 +124,7 @@ import { isAztecAddressStruct, parseSignedInt } from './utils.js';
119
124
  case 'field':
120
125
  return 'Field';
121
126
  case 'integer':
122
- if (param.sign === 'signed') {
123
- throw new Error('Unsupported type: signed integer');
124
- }
125
- return `u${param.width}`;
127
+ return param.sign === 'signed' ? `i${param.width}` : `u${param.width}`;
126
128
  case 'boolean':
127
129
  return 'bool';
128
130
  case 'array':
@@ -13,4 +13,4 @@ export declare function encodeArguments(abi: FunctionAbi, args: any[]): Fr[];
13
13
  * @returns The size of the arguments.
14
14
  */
15
15
  export declare function countArgumentsSize(abi: FunctionAbi): number;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FiaS9lbmNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBVyxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFrT3JEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsUUFFNUQ7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxXQUFXLFVBRWxEIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FiaS9lbmNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBVyxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUE2UXJEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsUUFFNUQ7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxXQUFXLFVBRWxEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/abi/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AAkOrD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,QAE5D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,UAElD"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/abi/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AA6QrD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,QAE5D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,UAElD"}
@@ -1,5 +1,5 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { isAddressStruct, isBoundedVecStruct, isFunctionSelectorStruct, isWrappedFieldStruct } from './utils.js';
2
+ import { isAddressStruct, isBoundedVecStruct, isFunctionSelectorStruct, isOptionStruct, isWrappedFieldStruct } from './utils.js';
3
3
  /**
4
4
  * Encodes arguments for a function call.
5
5
  * Missing support for integer and string.
@@ -39,6 +39,27 @@ import { isAddressStruct, isBoundedVecStruct, isFunctionSelectorStruct, isWrappe
39
39
  * @param arg - The value to encode.
40
40
  * @param name - Name.
41
41
  */ encodeArgument(abiType, arg, name) {
42
+ if (isOptionStruct(abiType)) {
43
+ const optionType = abiType;
44
+ const [isSomeField, valueField] = optionType.fields;
45
+ if (arg === undefined || arg === null) {
46
+ this.encodeArgument(isSomeField.type, false, `${name}._is_some`);
47
+ this.#encodeDefaultValue(valueField.type);
48
+ return;
49
+ }
50
+ if (typeof arg === 'object' && '_is_some' in arg) {
51
+ this.encodeArgument(isSomeField.type, arg._is_some, `${name}._is_some`);
52
+ if (arg._is_some) {
53
+ this.encodeArgument(valueField.type, arg._value, `${name}._value`);
54
+ } else {
55
+ this.#encodeDefaultValue(valueField.type);
56
+ }
57
+ return;
58
+ }
59
+ this.encodeArgument(isSomeField.type, true, `${name}._is_some`);
60
+ this.encodeArgument(valueField.type, arg, `${name}._value`);
61
+ return;
62
+ }
42
63
  if (arg === undefined || arg == null) {
43
64
  throw new Error(`Undefined argument ${name ?? 'unnamed'} of type ${abiType.kind}`);
44
65
  }
@@ -129,13 +150,17 @@ import { isAddressStruct, isBoundedVecStruct, isFunctionSelectorStruct, isWrappe
129
150
  break;
130
151
  }
131
152
  case 'integer':
132
- if (typeof arg === 'string') {
153
+ {
133
154
  const value = BigInt(arg);
134
- this.flattened.push(new Fr(value));
135
- } else {
136
- this.flattened.push(new Fr(arg));
155
+ if (abiType.sign === 'signed' && value < 0n) {
156
+ // Convert negative values to two's complement representation
157
+ const twosComplement = value + (1n << BigInt(abiType.width));
158
+ this.flattened.push(new Fr(twosComplement));
159
+ } else {
160
+ this.flattened.push(new Fr(value));
161
+ }
162
+ break;
137
163
  }
138
- break;
139
164
  default:
140
165
  throw new Error(`Unsupported type: ${abiType.kind}`);
141
166
  }
@@ -212,6 +237,12 @@ import { isAddressStruct, isBoundedVecStruct, isFunctionSelectorStruct, isWrappe
212
237
  this.encodeArgument(lenField.type, arg.length, 'len');
213
238
  }
214
239
  }
240
+ /**
241
+ * Appends the flattened zero value for an ABI type.
242
+ * Option::None still serializes the wrapped value, so we need to zero-fill its footprint.
243
+ */ #encodeDefaultValue(abiType) {
244
+ this.flattened.push(...new Array(ArgumentEncoder.typeSize(abiType)).fill(Fr.ZERO));
245
+ }
215
246
  }
216
247
  /**
217
248
  * Encodes all the arguments for a function call.
@@ -1,8 +1,10 @@
1
1
  import type { AbiType } from './abi.js';
2
2
  import type { EventSelector } from './event_selector.js';
3
+ /** Metadata for a contract event, used to decode emitted event logs back into structured data. */
3
4
  export type EventMetadataDefinition = {
4
5
  eventSelector: EventSelector;
5
6
  abiType: AbiType;
7
+ /** Names of the event's struct members (not serialized Noir Field elements). */
6
8
  fieldNames: string[];
7
9
  };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbWV0YWRhdGFfZGVmaW5pdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FiaS9ldmVudF9tZXRhZGF0YV9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxNQUFNLE1BQU0sdUJBQXVCLEdBQUc7SUFDcEMsYUFBYSxFQUFFLGFBQWEsQ0FBQztJQUM3QixPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2pCLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztDQUN0QixDQUFDIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbWV0YWRhdGFfZGVmaW5pdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FiaS9ldmVudF9tZXRhZGF0YV9kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxrR0FBa0c7QUFDbEcsTUFBTSxNQUFNLHVCQUF1QixHQUFHO0lBQ3BDLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNqQixnRkFBZ0Y7SUFDaEYsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO0NBQ3RCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"event_metadata_definition.d.ts","sourceRoot":"","sources":["../../src/abi/event_metadata_definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"event_metadata_definition.d.ts","sourceRoot":"","sources":["../../src/abi/event_metadata_definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,kGAAkG;AAClG,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC"}
@@ -1 +1 @@
1
- export { };
1
+ /** Metadata for a contract event, used to decode emitted event logs back into structured data. */ export { };
@@ -40,10 +40,23 @@ export declare function isPublicKeysStruct(abiType: AbiType): boolean;
40
40
  * @returns A boolean indicating whether the ABI type is a BoundedVec struct.
41
41
  */
42
42
  export declare function isBoundedVecStruct(abiType: AbiType): boolean;
43
+ /**
44
+ * Returns whether the ABI type is Noir's std::option::Option lowered to a struct.
45
+ * @param abiType - Type to check.
46
+ * @returns A boolean indicating whether the ABI type is an Option struct.
47
+ */
48
+ export declare function isOptionStruct(abiType: AbiType): boolean;
49
+ /**
50
+ * Returns whether `null` or `undefined` can be mapped to a valid ABI value for this type.
51
+ *
52
+ * @param abiType - Type to check.
53
+ * @returns A boolean indicating whether nullish values are valid shorthand for this ABI type.
54
+ */
55
+ export declare function canBeMappedFromNullOrUndefined(abiType: AbiType): boolean;
43
56
  /**
44
57
  * Returns a bigint by parsing a serialized 2's complement signed int.
45
58
  * @param b - The signed int as a buffer
46
59
  * @returns - a deserialized bigint
47
60
  */
48
61
  export declare function parseSignedInt(b: Buffer, width?: number): bigint;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLFdBRS9DO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxXQUVsRDtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sV0FFcEQ7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxPQUFPLFdBRXhEO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQWdCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLFdBT3BEO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxXQVVsRDtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sV0FRbEQ7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sVUFxQnZEIn0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLFdBRS9DO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxXQUVsRDtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sV0FFcEQ7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxPQUFPLFdBRXhEO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQWdCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLFdBT3BEO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxXQVVsRDtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sV0FRbEQ7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxXQVE5QztBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxPQUFPLFdBRTlEO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixjQUFjLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLFVBcUJ2RCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAElD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAEpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAOpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAUlD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAQlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,UAqBvD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAElD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAEpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAOpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAUlD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAQlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,WAQ9C;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,WAE9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,UAqBvD"}
package/dest/abi/utils.js CHANGED
@@ -46,6 +46,21 @@
46
46
  */ export function isBoundedVecStruct(abiType) {
47
47
  return abiType.kind === 'struct' && abiType.path === 'std::collections::bounded_vec::BoundedVec' && abiType.fields.length === 2 && abiType.fields[0].name === 'storage' && abiType.fields[1].name === 'len';
48
48
  }
49
+ /**
50
+ * Returns whether the ABI type is Noir's std::option::Option lowered to a struct.
51
+ * @param abiType - Type to check.
52
+ * @returns A boolean indicating whether the ABI type is an Option struct.
53
+ */ export function isOptionStruct(abiType) {
54
+ return abiType.kind === 'struct' && abiType.path === 'std::option::Option' && abiType.fields.length === 2 && abiType.fields[0].name === '_is_some' && abiType.fields[1].name === '_value';
55
+ }
56
+ /**
57
+ * Returns whether `null` or `undefined` can be mapped to a valid ABI value for this type.
58
+ *
59
+ * @param abiType - Type to check.
60
+ * @returns A boolean indicating whether nullish values are valid shorthand for this ABI type.
61
+ */ export function canBeMappedFromNullOrUndefined(abiType) {
62
+ return isOptionStruct(abiType);
63
+ }
49
64
  /**
50
65
  * Returns a bigint by parsing a serialized 2's complement signed int.
51
66
  * @param b - The signed int as a buffer