@aztec/simulator 0.56.0 → 0.58.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 (205) hide show
  1. package/dest/acvm/oracle/oracle.d.ts +2 -5
  2. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  3. package/dest/acvm/oracle/oracle.js +7 -38
  4. package/dest/acvm/oracle/typed_oracle.d.ts +4 -8
  5. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  6. package/dest/acvm/oracle/typed_oracle.js +1 -10
  7. package/dest/avm/avm_execution_environment.d.ts +2 -3
  8. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  9. package/dest/avm/avm_execution_environment.js +3 -4
  10. package/dest/avm/avm_gas.d.ts.map +1 -1
  11. package/dest/avm/avm_gas.js +2 -3
  12. package/dest/avm/avm_memory_types.d.ts +10 -5
  13. package/dest/avm/avm_memory_types.d.ts.map +1 -1
  14. package/dest/avm/avm_memory_types.js +31 -16
  15. package/dest/avm/avm_simulator.d.ts.map +1 -1
  16. package/dest/avm/avm_simulator.js +5 -2
  17. package/dest/avm/errors.d.ts +1 -1
  18. package/dest/avm/errors.d.ts.map +1 -1
  19. package/dest/avm/errors.js +12 -3
  20. package/dest/avm/fixtures/index.d.ts.map +1 -1
  21. package/dest/avm/fixtures/index.js +4 -4
  22. package/dest/avm/journal/journal.d.ts +2 -1
  23. package/dest/avm/journal/journal.d.ts.map +1 -1
  24. package/dest/avm/journal/journal.js +8 -8
  25. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  26. package/dest/avm/opcodes/accrued_substate.js +54 -47
  27. package/dest/avm/opcodes/addressing_mode.d.ts +3 -2
  28. package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
  29. package/dest/avm/opcodes/addressing_mode.js +25 -21
  30. package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
  31. package/dest/avm/opcodes/arithmetic.js +7 -6
  32. package/dest/avm/opcodes/bitwise.d.ts +3 -3
  33. package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
  34. package/dest/avm/opcodes/bitwise.js +19 -16
  35. package/dest/avm/opcodes/commitment.d.ts.map +1 -1
  36. package/dest/avm/opcodes/commitment.js +6 -5
  37. package/dest/avm/opcodes/comparators.d.ts.map +1 -1
  38. package/dest/avm/opcodes/comparators.js +7 -6
  39. package/dest/avm/opcodes/contract.d.ts.map +1 -1
  40. package/dest/avm/opcodes/contract.js +8 -6
  41. package/dest/avm/opcodes/control_flow.js +7 -7
  42. package/dest/avm/opcodes/conversion.d.ts.map +1 -1
  43. package/dest/avm/opcodes/conversion.js +11 -10
  44. package/dest/avm/opcodes/ec_add.d.ts.map +1 -1
  45. package/dest/avm/opcodes/ec_add.js +25 -15
  46. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  47. package/dest/avm/opcodes/environment_getters.js +6 -5
  48. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  49. package/dest/avm/opcodes/external_calls.js +37 -26
  50. package/dest/avm/opcodes/hashing.d.ts +1 -3
  51. package/dest/avm/opcodes/hashing.d.ts.map +1 -1
  52. package/dest/avm/opcodes/hashing.js +39 -48
  53. package/dest/avm/opcodes/instruction.d.ts +2 -6
  54. package/dest/avm/opcodes/instruction.d.ts.map +1 -1
  55. package/dest/avm/opcodes/instruction.js +3 -9
  56. package/dest/avm/opcodes/instruction_impl.d.ts +1 -2
  57. package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
  58. package/dest/avm/opcodes/instruction_impl.js +2 -5
  59. package/dest/avm/opcodes/memory.d.ts +0 -12
  60. package/dest/avm/opcodes/memory.d.ts.map +1 -1
  61. package/dest/avm/opcodes/memory.js +24 -54
  62. package/dest/avm/opcodes/misc.d.ts.map +1 -1
  63. package/dest/avm/opcodes/misc.js +10 -9
  64. package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
  65. package/dest/avm/opcodes/multi_scalar_mul.js +35 -20
  66. package/dest/avm/opcodes/storage.d.ts.map +1 -1
  67. package/dest/avm/opcodes/storage.js +13 -11
  68. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  69. package/dest/avm/serialization/bytecode_serialization.js +2 -3
  70. package/dest/avm/serialization/instruction_serialization.d.ts +32 -34
  71. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  72. package/dest/avm/serialization/instruction_serialization.js +34 -37
  73. package/dest/avm/test_utils.d.ts +1 -2
  74. package/dest/avm/test_utils.d.ts.map +1 -1
  75. package/dest/avm/test_utils.js +1 -1
  76. package/dest/client/client_execution_context.d.ts +6 -30
  77. package/dest/client/client_execution_context.d.ts.map +1 -1
  78. package/dest/client/client_execution_context.js +36 -54
  79. package/dest/client/db_oracle.d.ts +1 -2
  80. package/dest/client/db_oracle.d.ts.map +1 -1
  81. package/dest/client/db_oracle.js +1 -1
  82. package/dest/client/index.d.ts +1 -1
  83. package/dest/client/index.d.ts.map +1 -1
  84. package/dest/client/index.js +2 -2
  85. package/dest/client/private_execution.d.ts +12 -3
  86. package/dest/client/private_execution.d.ts.map +1 -1
  87. package/dest/client/private_execution.js +29 -23
  88. package/dest/client/simulator.d.ts +2 -3
  89. package/dest/client/simulator.d.ts.map +1 -1
  90. package/dest/client/simulator.js +1 -1
  91. package/dest/client/view_data_oracle.d.ts +1 -2
  92. package/dest/client/view_data_oracle.d.ts.map +1 -1
  93. package/dest/client/view_data_oracle.js +1 -1
  94. package/dest/common/debug_fn_name.d.ts +4 -0
  95. package/dest/common/debug_fn_name.d.ts.map +1 -0
  96. package/dest/common/debug_fn_name.js +15 -0
  97. package/dest/common/index.d.ts +0 -1
  98. package/dest/common/index.d.ts.map +1 -1
  99. package/dest/common/index.js +1 -2
  100. package/dest/public/db_interfaces.d.ts +1 -2
  101. package/dest/public/db_interfaces.d.ts.map +1 -1
  102. package/dest/public/dual_side_effect_trace.d.ts +76 -0
  103. package/dest/public/dual_side_effect_trace.d.ts.map +1 -0
  104. package/dest/public/dual_side_effect_trace.js +109 -0
  105. package/dest/public/enqueued_call_side_effect_trace.d.ts +114 -0
  106. package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -0
  107. package/dest/public/enqueued_call_side_effect_trace.js +314 -0
  108. package/dest/public/enqueued_call_simulator.d.ts +2 -2
  109. package/dest/public/enqueued_call_simulator.d.ts.map +1 -1
  110. package/dest/public/enqueued_call_simulator.js +20 -10
  111. package/dest/public/enqueued_calls_processor.d.ts +2 -2
  112. package/dest/public/enqueued_calls_processor.d.ts.map +1 -1
  113. package/dest/public/enqueued_calls_processor.js +3 -5
  114. package/dest/public/execution.d.ts +11 -5
  115. package/dest/public/execution.d.ts.map +1 -1
  116. package/dest/public/execution.js +13 -1
  117. package/dest/public/executor.d.ts +7 -6
  118. package/dest/public/executor.d.ts.map +1 -1
  119. package/dest/public/executor.js +24 -15
  120. package/dest/public/fee_payment.d.ts +1 -1
  121. package/dest/public/fee_payment.d.ts.map +1 -1
  122. package/dest/public/fee_payment.js +4 -7
  123. package/dest/public/hints_builder.d.ts +2 -2
  124. package/dest/public/hints_builder.d.ts.map +1 -1
  125. package/dest/public/hints_builder.js +2 -2
  126. package/dest/public/public_db_sources.d.ts +4 -5
  127. package/dest/public/public_db_sources.d.ts.map +1 -1
  128. package/dest/public/public_db_sources.js +15 -11
  129. package/dest/public/public_kernel_tail_simulator.d.ts +3 -3
  130. package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -1
  131. package/dest/public/public_kernel_tail_simulator.js +1 -1
  132. package/dest/public/public_processor.d.ts +7 -10
  133. package/dest/public/public_processor.d.ts.map +1 -1
  134. package/dest/public/public_processor.js +9 -10
  135. package/dest/public/side_effect_errors.d.ts +4 -0
  136. package/dest/public/side_effect_errors.d.ts.map +1 -0
  137. package/dest/public/side_effect_errors.js +7 -0
  138. package/dest/public/side_effect_trace.d.ts +3 -4
  139. package/dest/public/side_effect_trace.d.ts.map +1 -1
  140. package/dest/public/side_effect_trace.js +54 -29
  141. package/dest/public/side_effect_trace_interface.d.ts +1 -1
  142. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  143. package/package.json +12 -9
  144. package/src/acvm/oracle/oracle.ts +8 -86
  145. package/src/acvm/oracle/typed_oracle.ts +8 -33
  146. package/src/avm/avm_execution_environment.ts +1 -3
  147. package/src/avm/avm_gas.ts +1 -2
  148. package/src/avm/avm_memory_types.ts +38 -16
  149. package/src/avm/avm_simulator.ts +7 -1
  150. package/src/avm/errors.ts +11 -3
  151. package/src/avm/fixtures/index.ts +2 -3
  152. package/src/avm/journal/journal.ts +14 -10
  153. package/src/avm/opcodes/accrued_substate.ts +53 -61
  154. package/src/avm/opcodes/addressing_mode.ts +27 -24
  155. package/src/avm/opcodes/arithmetic.ts +6 -8
  156. package/src/avm/opcodes/bitwise.ts +18 -18
  157. package/src/avm/opcodes/commitment.ts +6 -7
  158. package/src/avm/opcodes/comparators.ts +6 -8
  159. package/src/avm/opcodes/contract.ts +7 -8
  160. package/src/avm/opcodes/control_flow.ts +6 -6
  161. package/src/avm/opcodes/conversion.ts +10 -12
  162. package/src/avm/opcodes/ec_add.ts +29 -24
  163. package/src/avm/opcodes/environment_getters.ts +5 -4
  164. package/src/avm/opcodes/external_calls.ts +37 -30
  165. package/src/avm/opcodes/hashing.ts +38 -63
  166. package/src/avm/opcodes/instruction.ts +3 -10
  167. package/src/avm/opcodes/instruction_impl.ts +0 -3
  168. package/src/avm/opcodes/memory.ts +23 -67
  169. package/src/avm/opcodes/misc.ts +9 -11
  170. package/src/avm/opcodes/multi_scalar_mul.ts +31 -26
  171. package/src/avm/opcodes/storage.ts +12 -10
  172. package/src/avm/serialization/bytecode_serialization.ts +0 -2
  173. package/src/avm/serialization/instruction_serialization.ts +1 -4
  174. package/src/avm/test_utils.ts +1 -2
  175. package/src/client/client_execution_context.ts +46 -97
  176. package/src/client/db_oracle.ts +6 -2
  177. package/src/client/index.ts +1 -1
  178. package/src/client/private_execution.ts +45 -15
  179. package/src/client/simulator.ts +2 -3
  180. package/src/client/view_data_oracle.ts +1 -2
  181. package/src/common/debug_fn_name.ts +22 -0
  182. package/src/common/index.ts +0 -1
  183. package/src/public/db_interfaces.ts +5 -2
  184. package/src/public/dual_side_effect_trace.ts +173 -0
  185. package/src/public/enqueued_call_side_effect_trace.ts +552 -0
  186. package/src/public/enqueued_call_simulator.ts +35 -14
  187. package/src/public/enqueued_calls_processor.ts +4 -6
  188. package/src/public/execution.ts +15 -6
  189. package/src/public/executor.ts +42 -19
  190. package/src/public/fee_payment.ts +4 -6
  191. package/src/public/hints_builder.ts +9 -11
  192. package/src/public/public_db_sources.ts +31 -22
  193. package/src/public/public_kernel_tail_simulator.ts +3 -3
  194. package/src/public/public_processor.ts +17 -13
  195. package/src/public/side_effect_errors.ts +6 -0
  196. package/src/public/side_effect_trace.ts +74 -29
  197. package/src/public/side_effect_trace_interface.ts +2 -2
  198. package/dest/client/execution_result.d.ts +0 -104
  199. package/dest/client/execution_result.d.ts.map +0 -1
  200. package/dest/client/execution_result.js +0 -136
  201. package/dest/common/return_values.d.ts +0 -11
  202. package/dest/common/return_values.d.ts.map +0 -1
  203. package/dest/common/return_values.js +0 -13
  204. package/src/client/execution_result.ts +0 -228
  205. package/src/common/return_values.ts +0 -18
@@ -1,228 +0,0 @@
1
- import {
2
- EncryptedFunctionL2Logs,
3
- type EncryptedL2Log,
4
- type EncryptedL2NoteLog,
5
- EncryptedNoteFunctionL2Logs,
6
- type Note,
7
- PublicExecutionRequest,
8
- UnencryptedFunctionL2Logs,
9
- type UnencryptedL2Log,
10
- } from '@aztec/circuit-types';
11
- import { type IsEmpty, type PrivateCallStackItem, sortByCounter } from '@aztec/circuits.js';
12
- import { type NoteSelector } from '@aztec/foundation/abi';
13
- import { type Fr } from '@aztec/foundation/fields';
14
-
15
- import { type ACVMField } from '../acvm/index.js';
16
-
17
- /**
18
- * The contents of a new note.
19
- */
20
- export interface NoteAndSlot {
21
- /** The note. */
22
- note: Note;
23
- /** The storage slot of the note. */
24
- storageSlot: Fr;
25
- /** The note type identifier. */
26
- noteTypeId: NoteSelector;
27
- }
28
-
29
- export class CountedLog<TLog extends UnencryptedL2Log | EncryptedL2NoteLog | EncryptedL2Log> implements IsEmpty {
30
- constructor(public log: TLog, public counter: number) {}
31
-
32
- isEmpty(): boolean {
33
- return !this.log.data.length && !this.counter;
34
- }
35
- }
36
-
37
- export class CountedNoteLog extends CountedLog<EncryptedL2NoteLog> {
38
- constructor(log: EncryptedL2NoteLog, counter: number, public noteHashCounter: number) {
39
- super(log, counter);
40
- }
41
- }
42
-
43
- export class CountedPublicExecutionRequest {
44
- constructor(public request: PublicExecutionRequest, public counter: number) {}
45
-
46
- isEmpty(): boolean {
47
- return this.request.isEmpty() && !this.counter;
48
- }
49
- }
50
-
51
- /**
52
- * The result of executing a private function.
53
- */
54
- export interface ExecutionResult {
55
- // Needed for prover
56
- /** The ACIR bytecode. */
57
- acir: Buffer;
58
- /** The verification key. */
59
- vk: Buffer;
60
- /** The partial witness. */
61
- partialWitness: Map<number, ACVMField>;
62
- // Needed for the verifier (kernel)
63
- /** The call stack item. */
64
- callStackItem: PrivateCallStackItem;
65
- /** Mapping of note hash to its index in the note hash tree. Used for building hints for note hash read requests. */
66
- noteHashLeafIndexMap: Map<bigint, bigint>;
67
- /** The notes created in the executed function. */
68
- newNotes: NoteAndSlot[];
69
- /** Mapping of note hash counter to the counter of its nullifier. */
70
- noteHashNullifierCounterMap: Map<number, number>;
71
- /** The raw return values of the executed function. */
72
- returnValues: Fr[];
73
- /** The nested executions. */
74
- nestedExecutions: this[];
75
- /** Enqueued public function execution requests to be picked up by the sequencer. */
76
- enqueuedPublicFunctionCalls: CountedPublicExecutionRequest[];
77
- /** Public function execution requested for teardown */
78
- publicTeardownFunctionCall: PublicExecutionRequest;
79
- /**
80
- * Encrypted note logs emitted during execution of this function call.
81
- * Note: These are preimages to `noteEncryptedLogsHashes`.
82
- */
83
- noteEncryptedLogs: CountedNoteLog[];
84
- /**
85
- * Encrypted logs emitted during execution of this function call.
86
- * Note: These are preimages to `encryptedLogsHashes`.
87
- */
88
- encryptedLogs: CountedLog<EncryptedL2Log>[];
89
- /**
90
- * Unencrypted logs emitted during execution of this function call.
91
- * Note: These are preimages to `unencryptedLogsHashes`.
92
- */
93
- unencryptedLogs: CountedLog<UnencryptedL2Log>[];
94
- }
95
-
96
- export function collectNoteHashLeafIndexMap(execResult: ExecutionResult, accum: Map<bigint, bigint> = new Map()) {
97
- execResult.noteHashLeafIndexMap.forEach((value, key) => accum.set(key, value));
98
- execResult.nestedExecutions.forEach(nested => collectNoteHashLeafIndexMap(nested, accum));
99
- return accum;
100
- }
101
-
102
- export function collectNoteHashNullifierCounterMap(
103
- execResult: ExecutionResult,
104
- accum: Map<number, number> = new Map(),
105
- ) {
106
- execResult.noteHashNullifierCounterMap.forEach((value, key) => accum.set(key, value));
107
- execResult.nestedExecutions.forEach(nested => collectNoteHashNullifierCounterMap(nested, accum));
108
- return accum;
109
- }
110
-
111
- /**
112
- * Collect all encrypted logs across all nested executions.
113
- * @param execResult - The topmost execution result.
114
- * @returns All encrypted logs.
115
- */
116
- function collectNoteEncryptedLogs(
117
- execResult: ExecutionResult,
118
- noteHashNullifierCounterMap: Map<number, number>,
119
- minRevertibleSideEffectCounter: number,
120
- ): CountedLog<EncryptedL2NoteLog>[] {
121
- return [
122
- execResult.noteEncryptedLogs.filter(noteLog => {
123
- const nullifierCounter = noteHashNullifierCounterMap.get(noteLog.noteHashCounter);
124
- return (
125
- nullifierCounter === undefined ||
126
- (noteLog.noteHashCounter < minRevertibleSideEffectCounter && nullifierCounter >= minRevertibleSideEffectCounter)
127
- );
128
- }),
129
- ...execResult.nestedExecutions.flatMap(res =>
130
- collectNoteEncryptedLogs(res, noteHashNullifierCounterMap, minRevertibleSideEffectCounter),
131
- ),
132
- ].flat();
133
- }
134
-
135
- /**
136
- * Collect all encrypted logs across all nested executions and sorts by counter.
137
- * @param execResult - The topmost execution result.
138
- * @returns All encrypted logs.
139
- */
140
- export function collectSortedNoteEncryptedLogs(execResult: ExecutionResult): EncryptedNoteFunctionL2Logs {
141
- const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(execResult);
142
- const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(execResult);
143
- const allLogs = collectNoteEncryptedLogs(execResult, noteHashNullifierCounterMap, minRevertibleSideEffectCounter);
144
- const sortedLogs = sortByCounter(allLogs);
145
- return new EncryptedNoteFunctionL2Logs(sortedLogs.map(l => l.log));
146
- }
147
- /**
148
- * Collect all encrypted logs across all nested executions.
149
- * @param execResult - The topmost execution result.
150
- * @returns All encrypted logs.
151
- */
152
- function collectEncryptedLogs(execResult: ExecutionResult): CountedLog<EncryptedL2Log>[] {
153
- return [execResult.encryptedLogs, ...execResult.nestedExecutions.flatMap(collectEncryptedLogs)].flat();
154
- }
155
-
156
- /**
157
- * Collect all encrypted logs across all nested executions and sorts by counter.
158
- * @param execResult - The topmost execution result.
159
- * @returns All encrypted logs.
160
- */
161
- export function collectSortedEncryptedLogs(execResult: ExecutionResult): EncryptedFunctionL2Logs {
162
- const allLogs = collectEncryptedLogs(execResult);
163
- const sortedLogs = sortByCounter(allLogs);
164
- return new EncryptedFunctionL2Logs(sortedLogs.map(l => l.log));
165
- }
166
-
167
- /**
168
- * Collect all unencrypted logs across all nested executions.
169
- * @param execResult - The topmost execution result.
170
- * @returns All unencrypted logs.
171
- */
172
- function collectUnencryptedLogs(execResult: ExecutionResult): CountedLog<UnencryptedL2Log>[] {
173
- return [execResult.unencryptedLogs, ...execResult.nestedExecutions.flatMap(collectUnencryptedLogs)].flat();
174
- }
175
-
176
- /**
177
- * Collect all unencrypted logs across all nested executions and sorts by counter.
178
- * @param execResult - The topmost execution result.
179
- * @returns All unencrypted logs.
180
- */
181
- export function collectSortedUnencryptedLogs(execResult: ExecutionResult): UnencryptedFunctionL2Logs {
182
- const allLogs = collectUnencryptedLogs(execResult);
183
- const sortedLogs = sortByCounter(allLogs);
184
- return new UnencryptedFunctionL2Logs(sortedLogs.map(l => l.log));
185
- }
186
-
187
- function collectEnqueuedCountedPublicExecutionRequests(execResult: ExecutionResult): CountedPublicExecutionRequest[] {
188
- return [
189
- ...execResult.enqueuedPublicFunctionCalls,
190
- ...execResult.nestedExecutions.flatMap(collectEnqueuedCountedPublicExecutionRequests),
191
- ];
192
- }
193
-
194
- /**
195
- * Collect all enqueued public function calls across all nested executions.
196
- * @param execResult - The topmost execution result.
197
- * @returns All enqueued public function calls.
198
- */
199
- export function collectEnqueuedPublicFunctionCalls(execResult: ExecutionResult): PublicExecutionRequest[] {
200
- const countedRequests = collectEnqueuedCountedPublicExecutionRequests(execResult);
201
- // without the reverse sort, the logs will be in a queue like fashion which is wrong
202
- // as the kernel processes it like a stack, popping items off and pushing them to output
203
- return sortByCounter(countedRequests, false).map(r => r.request);
204
- }
205
-
206
- export function collectPublicTeardownFunctionCall(execResult: ExecutionResult): PublicExecutionRequest {
207
- const teardownCalls = [
208
- execResult.publicTeardownFunctionCall,
209
- ...execResult.nestedExecutions.flatMap(collectPublicTeardownFunctionCall),
210
- ].filter(call => !call.isEmpty());
211
-
212
- if (teardownCalls.length === 1) {
213
- return teardownCalls[0];
214
- }
215
-
216
- if (teardownCalls.length > 1) {
217
- throw new Error('Multiple public teardown calls detected');
218
- }
219
-
220
- return PublicExecutionRequest.empty();
221
- }
222
-
223
- export function getFinalMinRevertibleSideEffectCounter(execResult: ExecutionResult): number {
224
- return execResult.nestedExecutions.reduce((counter, exec) => {
225
- const nestedCounter = getFinalMinRevertibleSideEffectCounter(exec);
226
- return nestedCounter ? nestedCounter : counter;
227
- }, execResult.callStackItem.publicInputs.minRevertibleSideEffectCounter.toNumber());
228
- }
@@ -1,18 +0,0 @@
1
- import { NestedProcessReturnValues } from '@aztec/circuit-types';
2
-
3
- import type { ExecutionResult } from '../client/execution_result.js';
4
- import type { PublicExecutionResult } from '../public/execution.js';
5
-
6
- /**
7
- * Recursively accummulate the return values of a call result and its nested executions,
8
- * so they can be retrieved in order.
9
- * @param executionResult
10
- * @returns
11
- */
12
- export function accumulateReturnValues(
13
- executionResult: PublicExecutionResult | ExecutionResult,
14
- ): NestedProcessReturnValues {
15
- const acc = new NestedProcessReturnValues(executionResult.returnValues);
16
- acc.nested = executionResult.nestedExecutions.map(nestedExecution => accumulateReturnValues(nestedExecution));
17
- return acc;
18
- }