@aztec/simulator 0.22.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 (176) hide show
  1. package/README.md +47 -0
  2. package/dest/acvm/acvm.d.ts +39 -0
  3. package/dest/acvm/acvm.d.ts.map +1 -0
  4. package/dest/acvm/acvm.js +97 -0
  5. package/dest/acvm/acvm_types.d.ts +10 -0
  6. package/dest/acvm/acvm_types.d.ts.map +1 -0
  7. package/dest/acvm/acvm_types.js +2 -0
  8. package/dest/acvm/deserialize.d.ts +24 -0
  9. package/dest/acvm/deserialize.d.ts.map +1 -0
  10. package/dest/acvm/deserialize.js +31 -0
  11. package/dest/acvm/index.d.ts +6 -0
  12. package/dest/acvm/index.d.ts.map +1 -0
  13. package/dest/acvm/index.js +6 -0
  14. package/dest/acvm/oracle/debug.d.ts +19 -0
  15. package/dest/acvm/oracle/debug.d.ts.map +1 -0
  16. package/dest/acvm/oracle/debug.js +95 -0
  17. package/dest/acvm/oracle/index.d.ts +15 -0
  18. package/dest/acvm/oracle/index.d.ts.map +1 -0
  19. package/dest/acvm/oracle/index.js +4 -0
  20. package/dest/acvm/oracle/oracle.d.ts +38 -0
  21. package/dest/acvm/oracle/oracle.d.ts.map +1 -0
  22. package/dest/acvm/oracle/oracle.js +193 -0
  23. package/dest/acvm/oracle/typed_oracle.d.ts +88 -0
  24. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -0
  25. package/dest/acvm/oracle/typed_oracle.js +103 -0
  26. package/dest/acvm/serialize.d.ts +30 -0
  27. package/dest/acvm/serialize.d.ts.map +1 -0
  28. package/dest/acvm/serialize.js +67 -0
  29. package/dest/avm/avm_context.d.ts +49 -0
  30. package/dest/avm/avm_context.d.ts.map +1 -0
  31. package/dest/avm/avm_context.js +56 -0
  32. package/dest/avm/avm_execution_environment.d.ts +28 -0
  33. package/dest/avm/avm_execution_environment.d.ts.map +1 -0
  34. package/dest/avm/avm_execution_environment.js +42 -0
  35. package/dest/avm/avm_machine_state.d.ts +62 -0
  36. package/dest/avm/avm_machine_state.d.ts.map +1 -0
  37. package/dest/avm/avm_machine_state.js +69 -0
  38. package/dest/avm/avm_memory_types.d.ts +113 -0
  39. package/dest/avm/avm_memory_types.d.ts.map +1 -0
  40. package/dest/avm/avm_memory_types.js +269 -0
  41. package/dest/avm/avm_message_call_result.d.ts +16 -0
  42. package/dest/avm/avm_message_call_result.d.ts.map +1 -0
  43. package/dest/avm/avm_message_call_result.js +21 -0
  44. package/dest/avm/avm_simulator.d.ts +22 -0
  45. package/dest/avm/avm_simulator.d.ts.map +1 -0
  46. package/dest/avm/avm_simulator.js +74 -0
  47. package/dest/avm/errors.d.ts +30 -0
  48. package/dest/avm/errors.d.ts.map +1 -0
  49. package/dest/avm/errors.js +44 -0
  50. package/dest/avm/fixtures/index.d.ts +28 -0
  51. package/dest/avm/fixtures/index.d.ts.map +1 -0
  52. package/dest/avm/fixtures/index.js +44 -0
  53. package/dest/avm/journal/host_storage.d.ts +13 -0
  54. package/dest/avm/journal/host_storage.d.ts.map +1 -0
  55. package/dest/avm/journal/host_storage.js +13 -0
  56. package/dest/avm/journal/index.d.ts +3 -0
  57. package/dest/avm/journal/index.d.ts.map +1 -0
  58. package/dest/avm/journal/index.js +3 -0
  59. package/dest/avm/journal/journal.d.ts +95 -0
  60. package/dest/avm/journal/journal.d.ts.map +1 -0
  61. package/dest/avm/journal/journal.js +217 -0
  62. package/dest/avm/opcodes/accrued_substate.d.ts +42 -0
  63. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -0
  64. package/dest/avm/opcodes/accrued_substate.js +82 -0
  65. package/dest/avm/opcodes/arithmetic.d.ts +28 -0
  66. package/dest/avm/opcodes/arithmetic.d.ts.map +1 -0
  67. package/dest/avm/opcodes/arithmetic.js +59 -0
  68. package/dest/avm/opcodes/bitwise.d.ts +40 -0
  69. package/dest/avm/opcodes/bitwise.d.ts.map +1 -0
  70. package/dest/avm/opcodes/bitwise.js +92 -0
  71. package/dest/avm/opcodes/comparators.d.ts +22 -0
  72. package/dest/avm/opcodes/comparators.d.ts.map +1 -0
  73. package/dest/avm/opcodes/comparators.js +51 -0
  74. package/dest/avm/opcodes/control_flow.d.ts +57 -0
  75. package/dest/avm/opcodes/control_flow.d.ts.map +1 -0
  76. package/dest/avm/opcodes/control_flow.js +118 -0
  77. package/dest/avm/opcodes/environment_getters.d.ts +74 -0
  78. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -0
  79. package/dest/avm/opcodes/environment_getters.js +151 -0
  80. package/dest/avm/opcodes/external_calls.d.ts +34 -0
  81. package/dest/avm/opcodes/external_calls.d.ts.map +1 -0
  82. package/dest/avm/opcodes/external_calls.js +103 -0
  83. package/dest/avm/opcodes/index.d.ts +11 -0
  84. package/dest/avm/opcodes/index.d.ts.map +1 -0
  85. package/dest/avm/opcodes/index.js +11 -0
  86. package/dest/avm/opcodes/instruction.d.ts +43 -0
  87. package/dest/avm/opcodes/instruction.d.ts.map +1 -0
  88. package/dest/avm/opcodes/instruction.js +44 -0
  89. package/dest/avm/opcodes/instruction_impl.d.ts +28 -0
  90. package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -0
  91. package/dest/avm/opcodes/instruction_impl.js +47 -0
  92. package/dest/avm/opcodes/memory.d.ts +55 -0
  93. package/dest/avm/opcodes/memory.d.ts.map +1 -0
  94. package/dest/avm/opcodes/memory.js +125 -0
  95. package/dest/avm/opcodes/storage.d.ts +31 -0
  96. package/dest/avm/opcodes/storage.d.ts.map +1 -0
  97. package/dest/avm/opcodes/storage.js +59 -0
  98. package/dest/avm/serialization/buffer_cursor.d.ts +25 -0
  99. package/dest/avm/serialization/buffer_cursor.d.ts.map +1 -0
  100. package/dest/avm/serialization/buffer_cursor.js +94 -0
  101. package/dest/avm/serialization/bytecode_serialization.d.ts +25 -0
  102. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -0
  103. package/dest/avm/serialization/bytecode_serialization.js +100 -0
  104. package/dest/avm/serialization/instruction_serialization.d.ts +91 -0
  105. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -0
  106. package/dest/avm/serialization/instruction_serialization.js +146 -0
  107. package/dest/client/client_execution_context.d.ts +188 -0
  108. package/dest/client/client_execution_context.d.ts.map +1 -0
  109. package/dest/client/client_execution_context.js +326 -0
  110. package/dest/client/db_oracle.d.ts +155 -0
  111. package/dest/client/db_oracle.d.ts.map +1 -0
  112. package/dest/client/db_oracle.js +17 -0
  113. package/dest/client/execution_note_cache.d.ts +54 -0
  114. package/dest/client/execution_note_cache.d.ts.map +1 -0
  115. package/dest/client/execution_note_cache.js +82 -0
  116. package/dest/client/execution_result.d.ts +67 -0
  117. package/dest/client/execution_result.d.ts.map +1 -0
  118. package/dest/client/execution_result.js +32 -0
  119. package/dest/client/index.d.ts +4 -0
  120. package/dest/client/index.d.ts.map +1 -0
  121. package/dest/client/index.js +4 -0
  122. package/dest/client/pick_notes.d.ts +80 -0
  123. package/dest/client/pick_notes.d.ts.map +1 -0
  124. package/dest/client/pick_notes.js +45 -0
  125. package/dest/client/private_execution.d.ts +10 -0
  126. package/dest/client/private_execution.d.ts.map +1 -0
  127. package/dest/client/private_execution.js +55 -0
  128. package/dest/client/simulator.d.ts +100 -0
  129. package/dest/client/simulator.d.ts.map +1 -0
  130. package/dest/client/simulator.js +171 -0
  131. package/dest/client/unconstrained_execution.d.ts +10 -0
  132. package/dest/client/unconstrained_execution.d.ts.map +1 -0
  133. package/dest/client/unconstrained_execution.js +25 -0
  134. package/dest/client/view_data_oracle.d.ts +139 -0
  135. package/dest/client/view_data_oracle.d.ts.map +1 -0
  136. package/dest/client/view_data_oracle.js +196 -0
  137. package/dest/common/errors.d.ts +36 -0
  138. package/dest/common/errors.d.ts.map +1 -0
  139. package/dest/common/errors.js +57 -0
  140. package/dest/common/index.d.ts +4 -0
  141. package/dest/common/index.d.ts.map +1 -0
  142. package/dest/common/index.js +4 -0
  143. package/dest/common/packed_args_cache.d.ts +28 -0
  144. package/dest/common/packed_args_cache.d.ts.map +1 -0
  145. package/dest/common/packed_args_cache.js +50 -0
  146. package/dest/common/side_effect_counter.d.ts +9 -0
  147. package/dest/common/side_effect_counter.d.ts.map +1 -0
  148. package/dest/common/side_effect_counter.js +14 -0
  149. package/dest/index.d.ts +4 -0
  150. package/dest/index.d.ts.map +1 -0
  151. package/dest/index.js +4 -0
  152. package/dest/public/db.d.ts +77 -0
  153. package/dest/public/db.d.ts.map +1 -0
  154. package/dest/public/db.js +2 -0
  155. package/dest/public/execution.d.ts +62 -0
  156. package/dest/public/execution.d.ts.map +1 -0
  157. package/dest/public/execution.js +61 -0
  158. package/dest/public/executor.d.ts +27 -0
  159. package/dest/public/executor.d.ts.map +1 -0
  160. package/dest/public/executor.js +83 -0
  161. package/dest/public/index.d.ts +4 -0
  162. package/dest/public/index.d.ts.map +1 -0
  163. package/dest/public/index.js +4 -0
  164. package/dest/public/public_execution_context.d.ts +103 -0
  165. package/dest/public/public_execution_context.d.ts.map +1 -0
  166. package/dest/public/public_execution_context.js +175 -0
  167. package/dest/public/state_actions.d.ts +39 -0
  168. package/dest/public/state_actions.d.ts.map +1 -0
  169. package/dest/public/state_actions.js +79 -0
  170. package/dest/test/utils.d.ts +12 -0
  171. package/dest/test/utils.d.ts.map +1 -0
  172. package/dest/test/utils.js +23 -0
  173. package/dest/utils.d.ts +27 -0
  174. package/dest/utils.d.ts.map +1 -0
  175. package/dest/utils.js +28 -0
  176. package/package.json +66 -0
@@ -0,0 +1,28 @@
1
+ import { GlobalVariables } from '@aztec/circuits.js';
2
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import { Fr } from '@aztec/foundation/fields';
5
+ /**
6
+ * Contains variables that remain constant during AVM execution
7
+ * These variables are provided by the public kernel circuit
8
+ */
9
+ export declare class AvmExecutionEnvironment {
10
+ readonly address: AztecAddress;
11
+ readonly storageAddress: AztecAddress;
12
+ readonly origin: AztecAddress;
13
+ readonly sender: AztecAddress;
14
+ readonly portal: EthAddress;
15
+ readonly feePerL1Gas: Fr;
16
+ readonly feePerL2Gas: Fr;
17
+ readonly feePerDaGas: Fr;
18
+ readonly contractCallDepth: Fr;
19
+ readonly globals: GlobalVariables;
20
+ readonly isStaticCall: boolean;
21
+ readonly isDelegateCall: boolean;
22
+ readonly calldata: Fr[];
23
+ constructor(address: AztecAddress, storageAddress: AztecAddress, origin: AztecAddress, sender: AztecAddress, portal: EthAddress, feePerL1Gas: Fr, feePerL2Gas: Fr, feePerDaGas: Fr, contractCallDepth: Fr, globals: GlobalVariables, isStaticCall: boolean, isDelegateCall: boolean, calldata: Fr[]);
24
+ deriveEnvironmentForNestedCall(address: AztecAddress, calldata: Fr[]): AvmExecutionEnvironment;
25
+ deriveEnvironmentForNestedStaticCall(address: AztecAddress, calldata: Fr[]): AvmExecutionEnvironment;
26
+ newDelegateCall(address: AztecAddress, calldata: Fr[]): AvmExecutionEnvironment;
27
+ }
28
+ //# sourceMappingURL=avm_execution_environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_execution_environment.d.ts","sourceRoot":"","sources":["../../src/avm/avm_execution_environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C;;;GAGG;AAEH,qBAAa,uBAAuB;aAEhB,OAAO,EAAE,YAAY;aAErB,cAAc,EAAE,YAAY;aAE5B,MAAM,EAAE,YAAY;aAEpB,MAAM,EAAE,YAAY;aAEpB,MAAM,EAAE,UAAU;aAElB,WAAW,EAAE,EAAE;aAEf,WAAW,EAAE,EAAE;aAEf,WAAW,EAAE,EAAE;aAEf,iBAAiB,EAAE,EAAE;aAErB,OAAO,EAAE,eAAe;aAExB,YAAY,EAAE,OAAO;aAErB,cAAc,EAAE,OAAO;aAEvB,QAAQ,EAAE,EAAE,EAAE;gBAxBd,OAAO,EAAE,YAAY,EAErB,cAAc,EAAE,YAAY,EAE5B,MAAM,EAAE,YAAY,EAEpB,MAAM,EAAE,YAAY,EAEpB,MAAM,EAAE,UAAU,EAElB,WAAW,EAAE,EAAE,EAEf,WAAW,EAAE,EAAE,EAEf,WAAW,EAAE,EAAE,EAEf,iBAAiB,EAAE,EAAE,EAErB,OAAO,EAAE,eAAe,EAExB,YAAY,EAAE,OAAO,EAErB,cAAc,EAAE,OAAO,EAEvB,QAAQ,EAAE,EAAE,EAAE;IAGzB,8BAA8B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,uBAAuB;IAkB9F,oCAAoC,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,uBAAuB;IAkBpG,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,uBAAuB;CAiBvF"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Contains variables that remain constant during AVM execution
3
+ * These variables are provided by the public kernel circuit
4
+ */
5
+ // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3992): gas not implemented
6
+ export class AvmExecutionEnvironment {
7
+ constructor(address, storageAddress, origin, sender, portal, feePerL1Gas, feePerL2Gas, feePerDaGas, contractCallDepth, globals, isStaticCall, isDelegateCall, calldata) {
8
+ this.address = address;
9
+ this.storageAddress = storageAddress;
10
+ this.origin = origin;
11
+ this.sender = sender;
12
+ this.portal = portal;
13
+ this.feePerL1Gas = feePerL1Gas;
14
+ this.feePerL2Gas = feePerL2Gas;
15
+ this.feePerDaGas = feePerDaGas;
16
+ this.contractCallDepth = contractCallDepth;
17
+ this.globals = globals;
18
+ this.isStaticCall = isStaticCall;
19
+ this.isDelegateCall = isDelegateCall;
20
+ this.calldata = calldata;
21
+ }
22
+ deriveEnvironmentForNestedCall(address, calldata) {
23
+ return new AvmExecutionEnvironment(
24
+ /*address=*/ address,
25
+ /*storageAddress=*/ address, this.origin, this.sender, this.portal, this.feePerL1Gas, this.feePerL2Gas, this.feePerDaGas, this.contractCallDepth, this.globals, this.isStaticCall, this.isDelegateCall,
26
+ /*calldata=*/ calldata);
27
+ }
28
+ deriveEnvironmentForNestedStaticCall(address, calldata) {
29
+ return new AvmExecutionEnvironment(
30
+ /*address=*/ address,
31
+ /*storageAddress=*/ address, this.origin, this.sender, this.portal, this.feePerL1Gas, this.feePerL2Gas, this.feePerDaGas, this.contractCallDepth, this.globals,
32
+ /*isStaticCall=*/ true, this.isDelegateCall,
33
+ /*calldata=*/ calldata);
34
+ }
35
+ newDelegateCall(address, calldata) {
36
+ return new AvmExecutionEnvironment(
37
+ /*address=*/ address, this.storageAddress, this.origin, this.sender, this.portal, this.feePerL1Gas, this.feePerL2Gas, this.feePerDaGas, this.contractCallDepth, this.globals, this.isStaticCall,
38
+ /*isDelegateCall=*/ true,
39
+ /*calldata=*/ calldata);
40
+ }
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTs7O0dBR0c7QUFDSCx5RkFBeUY7QUFDekYsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUNrQixPQUFxQixFQUVyQixjQUE0QixFQUU1QixNQUFvQixFQUVwQixNQUFvQixFQUVwQixNQUFrQixFQUVsQixXQUFlLEVBRWYsV0FBZSxFQUVmLFdBQWUsRUFFZixpQkFBcUIsRUFFckIsT0FBd0IsRUFFeEIsWUFBcUIsRUFFckIsY0FBdUIsRUFFdkIsUUFBYztRQXhCZCxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBRXJCLG1CQUFjLEdBQWQsY0FBYyxDQUFjO1FBRTVCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFFcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUVwQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBRWxCLGdCQUFXLEdBQVgsV0FBVyxDQUFJO1FBRWYsZ0JBQVcsR0FBWCxXQUFXLENBQUk7UUFFZixnQkFBVyxHQUFYLFdBQVcsQ0FBSTtRQUVmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBSTtRQUVyQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUV4QixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQUVyQixtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQUV2QixhQUFRLEdBQVIsUUFBUSxDQUFNO0lBQzdCLENBQUM7SUFFRyw4QkFBOEIsQ0FBQyxPQUFxQixFQUFFLFFBQWM7UUFDekUsT0FBTyxJQUFJLHVCQUF1QjtRQUNoQyxZQUFZLENBQUMsT0FBTztRQUNwQixtQkFBbUIsQ0FBQyxPQUFPLEVBQzNCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsY0FBYztRQUNuQixhQUFhLENBQUMsUUFBUSxDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVNLG9DQUFvQyxDQUFDLE9BQXFCLEVBQUUsUUFBYztRQUMvRSxPQUFPLElBQUksdUJBQXVCO1FBQ2hDLFlBQVksQ0FBQyxPQUFPO1FBQ3BCLG1CQUFtQixDQUFDLE9BQU8sRUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsT0FBTztRQUNaLGlCQUFpQixDQUFDLElBQUksRUFDdEIsSUFBSSxDQUFDLGNBQWM7UUFDbkIsYUFBYSxDQUFDLFFBQVEsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFTSxlQUFlLENBQUMsT0FBcUIsRUFBRSxRQUFjO1FBQzFELE9BQU8sSUFBSSx1QkFBdUI7UUFDaEMsWUFBWSxDQUFDLE9BQU8sRUFDcEIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxZQUFZO1FBQ2pCLG1CQUFtQixDQUFDLElBQUk7UUFDeEIsYUFBYSxDQUFDLFFBQVEsQ0FDdkIsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
@@ -0,0 +1,62 @@
1
+ import { Fr } from '@aztec/circuits.js';
2
+ import { TaggedMemory } from './avm_memory_types.js';
3
+ import { AvmContractCallResults } from './avm_message_call_result.js';
4
+ /**
5
+ * A few fields of machine state are initialized from AVM session inputs or call instruction arguments
6
+ */
7
+ export type InitialAvmMachineState = {
8
+ l1GasLeft: number;
9
+ l2GasLeft: number;
10
+ daGasLeft: number;
11
+ };
12
+ /**
13
+ * Avm state modified on an instruction-per-instruction basis.
14
+ */
15
+ export declare class AvmMachineState {
16
+ l1GasLeft: number;
17
+ /** gas remaining of the gas allocated for a contract call */
18
+ l2GasLeft: number;
19
+ daGasLeft: number;
20
+ /** program counter */
21
+ pc: number;
22
+ /**
23
+ * On INTERNALCALL, internal call stack is pushed to with the current pc + 1
24
+ * On INTERNALRETURN, value is popped from the internal call stack and assigned to the pc.
25
+ */
26
+ internalCallStack: number[];
27
+ /** Memory accessible to user code */
28
+ readonly memory: TaggedMemory;
29
+ /**
30
+ * Signals that execution should end.
31
+ * AvmContext execution continues executing instructions until the machine state signals "halted"
32
+ * */
33
+ halted: boolean;
34
+ /** Signals that execution has reverted normally (this does not cover exceptional halts) */
35
+ private reverted;
36
+ /** Output data must NOT be modified once it is set */
37
+ private output;
38
+ constructor(l1GasLeft: number, l2GasLeft: number, daGasLeft: number);
39
+ static fromState(state: InitialAvmMachineState): AvmMachineState;
40
+ /**
41
+ * Most instructions just increment PC before they complete
42
+ */
43
+ incrementPc(): void;
44
+ /**
45
+ * Halt as successful
46
+ * Output data must NOT be modified once it is set
47
+ * @param output
48
+ */
49
+ return(output: Fr[]): void;
50
+ /**
51
+ * Halt as reverted
52
+ * Output data must NOT be modified once it is set
53
+ * @param output
54
+ */
55
+ revert(output: Fr[]): void;
56
+ /**
57
+ * Get a summary of execution results for a halted machine state
58
+ * @returns summary of execution results
59
+ */
60
+ getResults(): AvmContractCallResults;
61
+ }
62
+ //# sourceMappingURL=avm_machine_state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_machine_state.d.ts","sourceRoot":"","sources":["../../src/avm/avm_machine_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAe;IACnB,SAAS,EAAE,MAAM,CAAC;IACzB,6DAA6D;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACf,EAAE,EAAE,MAAM,CAAK;IAEtB;;;OAGG;IACI,iBAAiB,EAAE,MAAM,EAAE,CAAM;IAExC,qCAAqC;IACrC,SAAgB,MAAM,EAAE,YAAY,CAAsB;IAE1D;;;SAGK;IACE,MAAM,EAAE,OAAO,CAAS;IAC/B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAkB;IAClC,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAY;gBAEd,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;WAMrD,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,eAAe;IAIvE;;OAEG;IACI,WAAW;IAIlB;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE;IAK1B;;;;OAIG;IACI,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE;IAM1B;;;OAGG;IACI,UAAU,IAAI,sBAAsB;CAM5C"}
@@ -0,0 +1,69 @@
1
+ import { TaggedMemory } from './avm_memory_types.js';
2
+ import { AvmContractCallResults } from './avm_message_call_result.js';
3
+ /**
4
+ * Avm state modified on an instruction-per-instruction basis.
5
+ */
6
+ export class AvmMachineState {
7
+ constructor(l1GasLeft, l2GasLeft, daGasLeft) {
8
+ /** program counter */
9
+ this.pc = 0;
10
+ /**
11
+ * On INTERNALCALL, internal call stack is pushed to with the current pc + 1
12
+ * On INTERNALRETURN, value is popped from the internal call stack and assigned to the pc.
13
+ */
14
+ this.internalCallStack = [];
15
+ /** Memory accessible to user code */
16
+ this.memory = new TaggedMemory();
17
+ /**
18
+ * Signals that execution should end.
19
+ * AvmContext execution continues executing instructions until the machine state signals "halted"
20
+ * */
21
+ this.halted = false;
22
+ /** Signals that execution has reverted normally (this does not cover exceptional halts) */
23
+ this.reverted = false;
24
+ /** Output data must NOT be modified once it is set */
25
+ this.output = [];
26
+ this.l1GasLeft = l1GasLeft;
27
+ this.l2GasLeft = l2GasLeft;
28
+ this.daGasLeft = daGasLeft;
29
+ }
30
+ static fromState(state) {
31
+ return new AvmMachineState(state.l1GasLeft, state.l2GasLeft, state.daGasLeft);
32
+ }
33
+ /**
34
+ * Most instructions just increment PC before they complete
35
+ */
36
+ incrementPc() {
37
+ this.pc++;
38
+ }
39
+ /**
40
+ * Halt as successful
41
+ * Output data must NOT be modified once it is set
42
+ * @param output
43
+ */
44
+ return(output) {
45
+ this.halted = true;
46
+ this.output = output;
47
+ }
48
+ /**
49
+ * Halt as reverted
50
+ * Output data must NOT be modified once it is set
51
+ * @param output
52
+ */
53
+ revert(output) {
54
+ this.halted = true;
55
+ this.reverted = true;
56
+ this.output = output;
57
+ }
58
+ /**
59
+ * Get a summary of execution results for a halted machine state
60
+ * @returns summary of execution results
61
+ */
62
+ getResults() {
63
+ if (!this.halted) {
64
+ throw new Error('Execution results are not ready! Execution is ongoing.');
65
+ }
66
+ return new AvmContractCallResults(this.reverted, this.output);
67
+ }
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21hY2hpbmVfc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9tYWNoaW5lX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVd0RTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBMkIxQixZQUFZLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxTQUFpQjtRQXRCbkUsc0JBQXNCO1FBQ2YsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUV0Qjs7O1dBR0c7UUFDSSxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFFeEMscUNBQXFDO1FBQ3JCLFdBQU0sR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRDs7O2FBR0s7UUFDRSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQy9CLDJGQUEyRjtRQUNuRixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ2xDLHNEQUFzRDtRQUM5QyxXQUFNLEdBQVMsRUFBRSxDQUFDO1FBR3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQTZCO1FBQ25ELE9BQU8sSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQVk7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBWTtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGIn0=
@@ -0,0 +1,113 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ export declare abstract class MemoryValue {
3
+ abstract add(rhs: MemoryValue): MemoryValue;
4
+ abstract sub(rhs: MemoryValue): MemoryValue;
5
+ abstract mul(rhs: MemoryValue): MemoryValue;
6
+ abstract div(rhs: MemoryValue): MemoryValue;
7
+ abstract equals(rhs: MemoryValue): boolean;
8
+ abstract lt(rhs: MemoryValue): boolean;
9
+ abstract build(n: bigint): MemoryValue;
10
+ abstract toBigInt(): bigint;
11
+ toFr(): Fr;
12
+ }
13
+ export declare abstract class IntegralValue extends MemoryValue {
14
+ abstract shl(rhs: IntegralValue): IntegralValue;
15
+ abstract shr(rhs: IntegralValue): IntegralValue;
16
+ abstract and(rhs: IntegralValue): IntegralValue;
17
+ abstract or(rhs: IntegralValue): IntegralValue;
18
+ abstract xor(rhs: IntegralValue): IntegralValue;
19
+ abstract not(): IntegralValue;
20
+ }
21
+ declare abstract class UnsignedInteger extends IntegralValue {
22
+ private n;
23
+ private bits;
24
+ private readonly bitmask;
25
+ private readonly mod;
26
+ protected constructor(n: bigint, bits: bigint);
27
+ abstract build(n: bigint): UnsignedInteger;
28
+ add(rhs: UnsignedInteger): UnsignedInteger;
29
+ sub(rhs: UnsignedInteger): UnsignedInteger;
30
+ mul(rhs: UnsignedInteger): UnsignedInteger;
31
+ div(rhs: UnsignedInteger): UnsignedInteger;
32
+ shr(rhs: UnsignedInteger): UnsignedInteger;
33
+ shl(rhs: UnsignedInteger): UnsignedInteger;
34
+ and(rhs: UnsignedInteger): UnsignedInteger;
35
+ or(rhs: UnsignedInteger): UnsignedInteger;
36
+ xor(rhs: UnsignedInteger): UnsignedInteger;
37
+ not(): UnsignedInteger;
38
+ equals(rhs: UnsignedInteger): boolean;
39
+ lt(rhs: UnsignedInteger): boolean;
40
+ toBigInt(): bigint;
41
+ }
42
+ export declare class Uint8 extends UnsignedInteger {
43
+ constructor(n: number | bigint);
44
+ build(n: bigint): Uint8;
45
+ }
46
+ export declare class Uint16 extends UnsignedInteger {
47
+ constructor(n: number | bigint);
48
+ build(n: bigint): Uint16;
49
+ }
50
+ export declare class Uint32 extends UnsignedInteger {
51
+ constructor(n: number | bigint);
52
+ build(n: bigint): Uint32;
53
+ }
54
+ export declare class Uint64 extends UnsignedInteger {
55
+ constructor(n: number | bigint);
56
+ build(n: bigint): Uint64;
57
+ }
58
+ export declare class Uint128 extends UnsignedInteger {
59
+ constructor(n: number | bigint);
60
+ build(n: bigint): Uint128;
61
+ }
62
+ export declare class Field extends MemoryValue {
63
+ static readonly MODULUS: bigint;
64
+ private readonly rep;
65
+ constructor(v: number | bigint | Fr);
66
+ build(n: bigint): Field;
67
+ add(rhs: Field): Field;
68
+ sub(rhs: Field): Field;
69
+ mul(rhs: Field): Field;
70
+ div(rhs: Field): Field;
71
+ equals(rhs: Field): boolean;
72
+ lt(rhs: Field): boolean;
73
+ toBigInt(): bigint;
74
+ }
75
+ export declare enum TypeTag {
76
+ UNINITIALIZED = 0,
77
+ UINT8 = 1,
78
+ UINT16 = 2,
79
+ UINT32 = 3,
80
+ UINT64 = 4,
81
+ UINT128 = 5,
82
+ FIELD = 6,
83
+ INVALID = 7
84
+ }
85
+ export declare class TaggedMemory {
86
+ static readonly MAX_MEMORY_SIZE: number;
87
+ private _mem;
88
+ constructor();
89
+ get(offset: number): MemoryValue;
90
+ getAs<T>(offset: number): T;
91
+ getSlice(offset: number, size: number): MemoryValue[];
92
+ getSliceAs<T>(offset: number, size: number): T[];
93
+ getSliceTags(offset: number, size: number): TypeTag[];
94
+ set(offset: number, v: MemoryValue): void;
95
+ setSlice(offset: number, vs: MemoryValue[]): void;
96
+ getTag(offset: number): TypeTag;
97
+ /**
98
+ * Check that the memory at the given offset matches the specified tag.
99
+ */
100
+ checkTag(tag: TypeTag, offset: number): void;
101
+ /**
102
+ * Check tags for memory at all of the specified offsets.
103
+ */
104
+ checkTags(tag: TypeTag, ...offsets: number[]): void;
105
+ /**
106
+ * Check tags for all memory in the specified range.
107
+ */
108
+ checkTagsRange(tag: TypeTag, startOffset: number, size: number): void;
109
+ static getTag(v: MemoryValue | undefined): TypeTag;
110
+ static integralFromTag(v: bigint, tag: TypeTag): IntegralValue;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=avm_memory_types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_memory_types.d.ts","sourceRoot":"","sources":["../../src/avm/avm_memory_types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,269 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { strict as assert } from 'assert';
3
+ import { TagCheckError } from './errors.js';
4
+ export class MemoryValue {
5
+ // To field
6
+ toFr() {
7
+ return new Fr(this.toBigInt());
8
+ }
9
+ }
10
+ export class IntegralValue extends MemoryValue {
11
+ }
12
+ // TODO: Optimize calculation of mod, etc. Can only do once per class?
13
+ class UnsignedInteger extends IntegralValue {
14
+ constructor(n, bits) {
15
+ super();
16
+ this.n = n;
17
+ this.bits = bits;
18
+ assert(bits > 0);
19
+ // x % 2^n == x & (2^n - 1)
20
+ this.mod = 1n << bits;
21
+ this.bitmask = this.mod - 1n;
22
+ assert(n < this.mod);
23
+ }
24
+ add(rhs) {
25
+ assert(this.bits == rhs.bits);
26
+ return this.build((this.n + rhs.n) & this.bitmask);
27
+ }
28
+ sub(rhs) {
29
+ assert(this.bits == rhs.bits);
30
+ const res = this.n - rhs.n;
31
+ return this.build(res >= 0 ? res : res + this.mod);
32
+ }
33
+ mul(rhs) {
34
+ assert(this.bits == rhs.bits);
35
+ return this.build((this.n * rhs.n) & this.bitmask);
36
+ }
37
+ div(rhs) {
38
+ assert(this.bits == rhs.bits);
39
+ return this.build(this.n / rhs.n);
40
+ }
41
+ // No sign extension.
42
+ shr(rhs) {
43
+ assert(this.bits == rhs.bits);
44
+ // Note that this.n is > 0 by class invariant.
45
+ return this.build(this.n >> rhs.n);
46
+ }
47
+ shl(rhs) {
48
+ assert(this.bits == rhs.bits);
49
+ return this.build((this.n << rhs.n) & this.bitmask);
50
+ }
51
+ and(rhs) {
52
+ assert(this.bits == rhs.bits);
53
+ return this.build(this.n & rhs.n);
54
+ }
55
+ or(rhs) {
56
+ assert(this.bits == rhs.bits);
57
+ return this.build(this.n | rhs.n);
58
+ }
59
+ xor(rhs) {
60
+ assert(this.bits == rhs.bits);
61
+ return this.build(this.n ^ rhs.n);
62
+ }
63
+ not() {
64
+ return this.build(~this.n & this.bitmask);
65
+ }
66
+ equals(rhs) {
67
+ assert(this.bits == rhs.bits);
68
+ return this.n === rhs.n;
69
+ }
70
+ lt(rhs) {
71
+ assert(this.bits == rhs.bits);
72
+ return this.n < rhs.n;
73
+ }
74
+ toBigInt() {
75
+ return this.n;
76
+ }
77
+ }
78
+ export class Uint8 extends UnsignedInteger {
79
+ constructor(n) {
80
+ super(BigInt(n), 8n);
81
+ }
82
+ build(n) {
83
+ return new Uint8(n);
84
+ }
85
+ }
86
+ export class Uint16 extends UnsignedInteger {
87
+ constructor(n) {
88
+ super(BigInt(n), 16n);
89
+ }
90
+ build(n) {
91
+ return new Uint16(n);
92
+ }
93
+ }
94
+ export class Uint32 extends UnsignedInteger {
95
+ constructor(n) {
96
+ super(BigInt(n), 32n);
97
+ }
98
+ build(n) {
99
+ return new Uint32(n);
100
+ }
101
+ }
102
+ export class Uint64 extends UnsignedInteger {
103
+ constructor(n) {
104
+ super(BigInt(n), 64n);
105
+ }
106
+ build(n) {
107
+ return new Uint64(n);
108
+ }
109
+ }
110
+ export class Uint128 extends UnsignedInteger {
111
+ constructor(n) {
112
+ super(BigInt(n), 128n);
113
+ }
114
+ build(n) {
115
+ return new Uint128(n);
116
+ }
117
+ }
118
+ export class Field extends MemoryValue {
119
+ constructor(v) {
120
+ super();
121
+ this.rep = new Fr(v);
122
+ }
123
+ build(n) {
124
+ return new Field(n);
125
+ }
126
+ add(rhs) {
127
+ return new Field(this.rep.add(rhs.rep));
128
+ }
129
+ sub(rhs) {
130
+ return new Field(this.rep.sub(rhs.rep));
131
+ }
132
+ mul(rhs) {
133
+ return new Field(this.rep.mul(rhs.rep));
134
+ }
135
+ div(rhs) {
136
+ return new Field(this.rep.div(rhs.rep));
137
+ }
138
+ equals(rhs) {
139
+ return this.rep.equals(rhs.rep);
140
+ }
141
+ lt(rhs) {
142
+ return this.rep.lt(rhs.rep);
143
+ }
144
+ toBigInt() {
145
+ return this.rep.toBigInt();
146
+ }
147
+ }
148
+ Field.MODULUS = Fr.MODULUS;
149
+ export var TypeTag;
150
+ (function (TypeTag) {
151
+ TypeTag[TypeTag["UNINITIALIZED"] = 0] = "UNINITIALIZED";
152
+ TypeTag[TypeTag["UINT8"] = 1] = "UINT8";
153
+ TypeTag[TypeTag["UINT16"] = 2] = "UINT16";
154
+ TypeTag[TypeTag["UINT32"] = 3] = "UINT32";
155
+ TypeTag[TypeTag["UINT64"] = 4] = "UINT64";
156
+ TypeTag[TypeTag["UINT128"] = 5] = "UINT128";
157
+ TypeTag[TypeTag["FIELD"] = 6] = "FIELD";
158
+ TypeTag[TypeTag["INVALID"] = 7] = "INVALID";
159
+ })(TypeTag || (TypeTag = {}));
160
+ // TODO: Consider automatic conversion when getting undefined values.
161
+ export class TaggedMemory {
162
+ constructor() {
163
+ // Initialize memory size, but leave all entries undefined.
164
+ this._mem = new Array(TaggedMemory.MAX_MEMORY_SIZE);
165
+ }
166
+ get(offset) {
167
+ return this.getAs(offset);
168
+ }
169
+ getAs(offset) {
170
+ assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
171
+ const word = this._mem[offset];
172
+ return word;
173
+ }
174
+ getSlice(offset, size) {
175
+ assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
176
+ return this._mem.slice(offset, offset + size);
177
+ }
178
+ getSliceAs(offset, size) {
179
+ assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
180
+ return this._mem.slice(offset, offset + size);
181
+ }
182
+ getSliceTags(offset, size) {
183
+ assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
184
+ return this._mem.slice(offset, offset + size).map(TaggedMemory.getTag);
185
+ }
186
+ set(offset, v) {
187
+ assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
188
+ this._mem[offset] = v;
189
+ }
190
+ setSlice(offset, vs) {
191
+ assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
192
+ this._mem.splice(offset, vs.length, ...vs);
193
+ }
194
+ getTag(offset) {
195
+ return TaggedMemory.getTag(this._mem[offset]);
196
+ }
197
+ /**
198
+ * Check that the memory at the given offset matches the specified tag.
199
+ */
200
+ checkTag(tag, offset) {
201
+ if (this.getTag(offset) !== tag) {
202
+ throw new TagCheckError(offset, TypeTag[this.getTag(offset)], TypeTag[tag]);
203
+ }
204
+ }
205
+ /**
206
+ * Check tags for memory at all of the specified offsets.
207
+ */
208
+ checkTags(tag, ...offsets) {
209
+ for (const offset of offsets) {
210
+ this.checkTag(tag, offset);
211
+ }
212
+ }
213
+ /**
214
+ * Check tags for all memory in the specified range.
215
+ */
216
+ checkTagsRange(tag, startOffset, size) {
217
+ for (let offset = startOffset; offset < startOffset + size; offset++) {
218
+ this.checkTag(tag, offset);
219
+ }
220
+ }
221
+ // TODO: this might be slow, but I don't want to have the types know of their tags.
222
+ // It might be possible to have a map<Prototype, TypeTag>.
223
+ static getTag(v) {
224
+ let tag = TypeTag.INVALID;
225
+ if (v === undefined) {
226
+ tag = TypeTag.UNINITIALIZED;
227
+ }
228
+ else if (v instanceof Field) {
229
+ tag = TypeTag.FIELD;
230
+ }
231
+ else if (v instanceof Uint8) {
232
+ tag = TypeTag.UINT8;
233
+ }
234
+ else if (v instanceof Uint16) {
235
+ tag = TypeTag.UINT16;
236
+ }
237
+ else if (v instanceof Uint32) {
238
+ tag = TypeTag.UINT32;
239
+ }
240
+ else if (v instanceof Uint64) {
241
+ tag = TypeTag.UINT64;
242
+ }
243
+ else if (v instanceof Uint128) {
244
+ tag = TypeTag.UINT128;
245
+ }
246
+ return tag;
247
+ }
248
+ // Truncates the value to fit the type.
249
+ static integralFromTag(v, tag) {
250
+ v = BigInt(v); // FIXME: not sure why this cast is needed, but this errors otherwise
251
+ switch (tag) {
252
+ case TypeTag.UINT8:
253
+ return new Uint8(v & ((1n << 8n) - 1n));
254
+ case TypeTag.UINT16:
255
+ return new Uint16(v & ((1n << 16n) - 1n));
256
+ case TypeTag.UINT32:
257
+ return new Uint32(v & ((1n << 32n) - 1n));
258
+ case TypeTag.UINT64:
259
+ return new Uint64(v & ((1n << 64n) - 1n));
260
+ case TypeTag.UINT128:
261
+ return new Uint128(v & ((1n << 128n) - 1n));
262
+ default:
263
+ throw new Error(`${TypeTag[tag]} is not a valid integral type.`);
264
+ }
265
+ }
266
+ }
267
+ // FIXME: memory should be 2^32, but TS doesn't allow for arrays that big.
268
+ TaggedMemory.MAX_MEMORY_SIZE = Number(1n << 31n); // 1n << 32n
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21lbW9yeV90eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX21lbW9yeV90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxNQUFNLE9BQWdCLFdBQVc7SUFlL0IsV0FBVztJQUNKLElBQUk7UUFDVCxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBZ0IsYUFBYyxTQUFRLFdBQVc7Q0FPdEQ7QUFFRCxzRUFBc0U7QUFDdEUsTUFBZSxlQUFnQixTQUFRLGFBQWE7SUFJbEQsWUFBOEIsQ0FBUyxFQUFVLElBQVk7UUFDM0QsS0FBSyxFQUFFLENBQUM7UUFEb0IsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVE7UUFFM0QsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDN0IsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUlNLEdBQUcsQ0FBQyxHQUFvQjtRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENB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
@@ -0,0 +1,16 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ /**
3
+ * Results of an contract call's execution in the AVM.
4
+ */
5
+ export declare class AvmContractCallResults {
6
+ readonly reverted: boolean;
7
+ readonly output: Fr[];
8
+ /** For exceptional halts */
9
+ readonly revertReason: Error | undefined;
10
+ constructor(reverted: boolean, output: Fr[], revertReason?: Error);
11
+ /**
12
+ * Generate a string representation of call results.
13
+ */
14
+ toString(): string;
15
+ }
16
+ //# sourceMappingURL=avm_message_call_result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_message_call_result.d.ts","sourceRoot":"","sources":["../../src/avm/avm_message_call_result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C;;GAEG;AACH,qBAAa,sBAAsB;IACjC,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,SAAgB,MAAM,EAAE,EAAE,EAAE,CAAC;IAE7B,4BAA4B;IAC5B,SAAgB,YAAY,EAAE,KAAK,GAAG,SAAS,CAAC;gBAEpC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,KAAK;IAMjE;;OAEG;IACH,QAAQ,IAAI,MAAM;CAOnB"}