barretenberg
Loading...
Searching...
No Matches
acir.hpp
1#pragma once
2
3#include "bincode.hpp"
4#include "serde.hpp"
5
6namespace Circuit {
7
8struct Witness {
9 uint32_t value;
10
11 friend bool operator==(const Witness&, const Witness&);
12 std::vector<uint8_t> bincodeSerialize() const;
13 static Witness bincodeDeserialize(std::vector<uint8_t>);
14};
15
17 Circuit::Witness witness;
18 uint32_t num_bits;
19
20 friend bool operator==(const FunctionInput&, const FunctionInput&);
21 std::vector<uint8_t> bincodeSerialize() const;
22 static FunctionInput bincodeDeserialize(std::vector<uint8_t>);
23};
24
26
27 struct AND {
30 Circuit::Witness output;
31
32 friend bool operator==(const AND&, const AND&);
33 std::vector<uint8_t> bincodeSerialize() const;
34 static AND bincodeDeserialize(std::vector<uint8_t>);
35 };
36
37 struct XOR {
40 Circuit::Witness output;
41
42 friend bool operator==(const XOR&, const XOR&);
43 std::vector<uint8_t> bincodeSerialize() const;
44 static XOR bincodeDeserialize(std::vector<uint8_t>);
45 };
46
47 struct RANGE {
49
50 friend bool operator==(const RANGE&, const RANGE&);
51 std::vector<uint8_t> bincodeSerialize() const;
52 static RANGE bincodeDeserialize(std::vector<uint8_t>);
53 };
54
55 struct SHA256 {
56 std::vector<Circuit::FunctionInput> inputs;
57 std::vector<Circuit::Witness> outputs;
58
59 friend bool operator==(const SHA256&, const SHA256&);
60 std::vector<uint8_t> bincodeSerialize() const;
61 static SHA256 bincodeDeserialize(std::vector<uint8_t>);
62 };
63
64 struct Blake2s {
65 std::vector<Circuit::FunctionInput> inputs;
66 std::vector<Circuit::Witness> outputs;
67
68 friend bool operator==(const Blake2s&, const Blake2s&);
69 std::vector<uint8_t> bincodeSerialize() const;
70 static Blake2s bincodeDeserialize(std::vector<uint8_t>);
71 };
72
74 Circuit::FunctionInput public_key_x;
75 Circuit::FunctionInput public_key_y;
76 std::vector<Circuit::FunctionInput> signature;
77 std::vector<Circuit::FunctionInput> message;
78 Circuit::Witness output;
79
80 friend bool operator==(const SchnorrVerify&, const SchnorrVerify&);
81 std::vector<uint8_t> bincodeSerialize() const;
82 static SchnorrVerify bincodeDeserialize(std::vector<uint8_t>);
83 };
84
86 std::vector<Circuit::FunctionInput> inputs;
87 uint32_t domain_separator;
88 std::array<Circuit::Witness, 2> outputs;
89
90 friend bool operator==(const PedersenCommitment&, const PedersenCommitment&);
91 std::vector<uint8_t> bincodeSerialize() const;
92 static PedersenCommitment bincodeDeserialize(std::vector<uint8_t>);
93 };
94
95 struct PedersenHash {
96 std::vector<Circuit::FunctionInput> inputs;
97 uint32_t domain_separator;
98 Circuit::Witness output;
99
100 friend bool operator==(const PedersenHash&, const PedersenHash&);
101 std::vector<uint8_t> bincodeSerialize() const;
102 static PedersenHash bincodeDeserialize(std::vector<uint8_t>);
103 };
104
106 std::vector<Circuit::FunctionInput> inputs;
107 Circuit::Witness output;
108
109 friend bool operator==(const HashToField128Security&, const HashToField128Security&);
110 std::vector<uint8_t> bincodeSerialize() const;
111 static HashToField128Security bincodeDeserialize(std::vector<uint8_t>);
112 };
113
115 std::vector<Circuit::FunctionInput> public_key_x;
116 std::vector<Circuit::FunctionInput> public_key_y;
117 std::vector<Circuit::FunctionInput> signature;
118 std::vector<Circuit::FunctionInput> hashed_message;
119 Circuit::Witness output;
120
121 friend bool operator==(const EcdsaSecp256k1&, const EcdsaSecp256k1&);
122 std::vector<uint8_t> bincodeSerialize() const;
123 static EcdsaSecp256k1 bincodeDeserialize(std::vector<uint8_t>);
124 };
125
127 std::vector<Circuit::FunctionInput> public_key_x;
128 std::vector<Circuit::FunctionInput> public_key_y;
129 std::vector<Circuit::FunctionInput> signature;
130 std::vector<Circuit::FunctionInput> hashed_message;
131 Circuit::Witness output;
132
133 friend bool operator==(const EcdsaSecp256r1&, const EcdsaSecp256r1&);
134 std::vector<uint8_t> bincodeSerialize() const;
135 static EcdsaSecp256r1 bincodeDeserialize(std::vector<uint8_t>);
136 };
137
141 std::array<Circuit::Witness, 2> outputs;
142
143 friend bool operator==(const FixedBaseScalarMul&, const FixedBaseScalarMul&);
144 std::vector<uint8_t> bincodeSerialize() const;
145 static FixedBaseScalarMul bincodeDeserialize(std::vector<uint8_t>);
146 };
147
148 struct Keccak256 {
149 std::vector<Circuit::FunctionInput> inputs;
150 std::vector<Circuit::Witness> outputs;
151
152 friend bool operator==(const Keccak256&, const Keccak256&);
153 std::vector<uint8_t> bincodeSerialize() const;
154 static Keccak256 bincodeDeserialize(std::vector<uint8_t>);
155 };
156
158 std::vector<Circuit::FunctionInput> inputs;
159 Circuit::FunctionInput var_message_size;
160 std::vector<Circuit::Witness> outputs;
161
162 friend bool operator==(const Keccak256VariableLength&, const Keccak256VariableLength&);
163 std::vector<uint8_t> bincodeSerialize() const;
164 static Keccak256VariableLength bincodeDeserialize(std::vector<uint8_t>);
165 };
166
168 std::vector<Circuit::FunctionInput> verification_key;
169 std::vector<Circuit::FunctionInput> proof;
170 std::vector<Circuit::FunctionInput> public_inputs;
171 Circuit::FunctionInput key_hash;
172 std::optional<std::vector<Circuit::FunctionInput>> input_aggregation_object;
173 std::vector<Circuit::Witness> output_aggregation_object;
174
175 friend bool operator==(const RecursiveAggregation&, const RecursiveAggregation&);
176 std::vector<uint8_t> bincodeSerialize() const;
177 static RecursiveAggregation bincodeDeserialize(std::vector<uint8_t>);
178 };
179
180 std::variant<AND,
181 XOR,
182 RANGE,
183 SHA256,
184 Blake2s,
192 Keccak256,
195 value;
196
197 friend bool operator==(const BlackBoxFuncCall&, const BlackBoxFuncCall&);
198 std::vector<uint8_t> bincodeSerialize() const;
199 static BlackBoxFuncCall bincodeDeserialize(std::vector<uint8_t>);
200};
201
202struct BlockId {
203 uint32_t value;
204
205 friend bool operator==(const BlockId&, const BlockId&);
206 std::vector<uint8_t> bincodeSerialize() const;
207 static BlockId bincodeDeserialize(std::vector<uint8_t>);
208};
209
211 std::vector<std::tuple<std::string, Circuit::Witness, Circuit::Witness>> mul_terms;
212 std::vector<std::tuple<std::string, Circuit::Witness>> linear_combinations;
213 std::string q_c;
214
215 friend bool operator==(const Expression&, const Expression&);
216 std::vector<uint8_t> bincodeSerialize() const;
217 static Expression bincodeDeserialize(std::vector<uint8_t>);
218};
219
221
222 struct Single {
224
225 friend bool operator==(const Single&, const Single&);
226 std::vector<uint8_t> bincodeSerialize() const;
227 static Single bincodeDeserialize(std::vector<uint8_t>);
228 };
229
230 struct Array {
231 std::vector<Circuit::Expression> value;
232
233 friend bool operator==(const Array&, const Array&);
234 std::vector<uint8_t> bincodeSerialize() const;
235 static Array bincodeDeserialize(std::vector<uint8_t>);
236 };
237
238 std::variant<Single, Array> value;
239
240 friend bool operator==(const BrilligInputs&, const BrilligInputs&);
241 std::vector<uint8_t> bincodeSerialize() const;
242 static BrilligInputs bincodeDeserialize(std::vector<uint8_t>);
243};
244
246
247 struct Add {
248 friend bool operator==(const Add&, const Add&);
249 std::vector<uint8_t> bincodeSerialize() const;
250 static Add bincodeDeserialize(std::vector<uint8_t>);
251 };
252
253 struct Sub {
254 friend bool operator==(const Sub&, const Sub&);
255 std::vector<uint8_t> bincodeSerialize() const;
256 static Sub bincodeDeserialize(std::vector<uint8_t>);
257 };
258
259 struct Mul {
260 friend bool operator==(const Mul&, const Mul&);
261 std::vector<uint8_t> bincodeSerialize() const;
262 static Mul bincodeDeserialize(std::vector<uint8_t>);
263 };
264
265 struct Div {
266 friend bool operator==(const Div&, const Div&);
267 std::vector<uint8_t> bincodeSerialize() const;
268 static Div bincodeDeserialize(std::vector<uint8_t>);
269 };
270
271 struct Equals {
272 friend bool operator==(const Equals&, const Equals&);
273 std::vector<uint8_t> bincodeSerialize() const;
274 static Equals bincodeDeserialize(std::vector<uint8_t>);
275 };
276
277 std::variant<Add, Sub, Mul, Div, Equals> value;
278
279 friend bool operator==(const BinaryFieldOp&, const BinaryFieldOp&);
280 std::vector<uint8_t> bincodeSerialize() const;
281 static BinaryFieldOp bincodeDeserialize(std::vector<uint8_t>);
282};
283
285
286 struct Add {
287 friend bool operator==(const Add&, const Add&);
288 std::vector<uint8_t> bincodeSerialize() const;
289 static Add bincodeDeserialize(std::vector<uint8_t>);
290 };
291
292 struct Sub {
293 friend bool operator==(const Sub&, const Sub&);
294 std::vector<uint8_t> bincodeSerialize() const;
295 static Sub bincodeDeserialize(std::vector<uint8_t>);
296 };
297
298 struct Mul {
299 friend bool operator==(const Mul&, const Mul&);
300 std::vector<uint8_t> bincodeSerialize() const;
301 static Mul bincodeDeserialize(std::vector<uint8_t>);
302 };
303
304 struct SignedDiv {
305 friend bool operator==(const SignedDiv&, const SignedDiv&);
306 std::vector<uint8_t> bincodeSerialize() const;
307 static SignedDiv bincodeDeserialize(std::vector<uint8_t>);
308 };
309
310 struct UnsignedDiv {
311 friend bool operator==(const UnsignedDiv&, const UnsignedDiv&);
312 std::vector<uint8_t> bincodeSerialize() const;
313 static UnsignedDiv bincodeDeserialize(std::vector<uint8_t>);
314 };
315
316 struct Equals {
317 friend bool operator==(const Equals&, const Equals&);
318 std::vector<uint8_t> bincodeSerialize() const;
319 static Equals bincodeDeserialize(std::vector<uint8_t>);
320 };
321
322 struct LessThan {
323 friend bool operator==(const LessThan&, const LessThan&);
324 std::vector<uint8_t> bincodeSerialize() const;
325 static LessThan bincodeDeserialize(std::vector<uint8_t>);
326 };
327
329 friend bool operator==(const LessThanEquals&, const LessThanEquals&);
330 std::vector<uint8_t> bincodeSerialize() const;
331 static LessThanEquals bincodeDeserialize(std::vector<uint8_t>);
332 };
333
334 struct And {
335 friend bool operator==(const And&, const And&);
336 std::vector<uint8_t> bincodeSerialize() const;
337 static And bincodeDeserialize(std::vector<uint8_t>);
338 };
339
340 struct Or {
341 friend bool operator==(const Or&, const Or&);
342 std::vector<uint8_t> bincodeSerialize() const;
343 static Or bincodeDeserialize(std::vector<uint8_t>);
344 };
345
346 struct Xor {
347 friend bool operator==(const Xor&, const Xor&);
348 std::vector<uint8_t> bincodeSerialize() const;
349 static Xor bincodeDeserialize(std::vector<uint8_t>);
350 };
351
352 struct Shl {
353 friend bool operator==(const Shl&, const Shl&);
354 std::vector<uint8_t> bincodeSerialize() const;
355 static Shl bincodeDeserialize(std::vector<uint8_t>);
356 };
357
358 struct Shr {
359 friend bool operator==(const Shr&, const Shr&);
360 std::vector<uint8_t> bincodeSerialize() const;
361 static Shr bincodeDeserialize(std::vector<uint8_t>);
362 };
363
364 std::variant<Add, Sub, Mul, SignedDiv, UnsignedDiv, Equals, LessThan, LessThanEquals, And, Or, Xor, Shl, Shr> value;
365
366 friend bool operator==(const BinaryIntOp&, const BinaryIntOp&);
367 std::vector<uint8_t> bincodeSerialize() const;
368 static BinaryIntOp bincodeDeserialize(std::vector<uint8_t>);
369};
370
372 uint64_t value;
373
374 friend bool operator==(const RegisterIndex&, const RegisterIndex&);
375 std::vector<uint8_t> bincodeSerialize() const;
376 static RegisterIndex bincodeDeserialize(std::vector<uint8_t>);
377};
378
379struct HeapArray {
381 uint64_t size;
382
383 friend bool operator==(const HeapArray&, const HeapArray&);
384 std::vector<uint8_t> bincodeSerialize() const;
385 static HeapArray bincodeDeserialize(std::vector<uint8_t>);
386};
387
391
392 friend bool operator==(const HeapVector&, const HeapVector&);
393 std::vector<uint8_t> bincodeSerialize() const;
394 static HeapVector bincodeDeserialize(std::vector<uint8_t>);
395};
396
398
399 struct Sha256 {
400 Circuit::HeapVector message;
401 Circuit::HeapArray output;
402
403 friend bool operator==(const Sha256&, const Sha256&);
404 std::vector<uint8_t> bincodeSerialize() const;
405 static Sha256 bincodeDeserialize(std::vector<uint8_t>);
406 };
407
408 struct Blake2s {
409 Circuit::HeapVector message;
410 Circuit::HeapArray output;
411
412 friend bool operator==(const Blake2s&, const Blake2s&);
413 std::vector<uint8_t> bincodeSerialize() const;
414 static Blake2s bincodeDeserialize(std::vector<uint8_t>);
415 };
416
417 struct Keccak256 {
418 Circuit::HeapVector message;
419 Circuit::HeapArray output;
420
421 friend bool operator==(const Keccak256&, const Keccak256&);
422 std::vector<uint8_t> bincodeSerialize() const;
423 static Keccak256 bincodeDeserialize(std::vector<uint8_t>);
424 };
425
427 Circuit::HeapVector message;
429
430 friend bool operator==(const HashToField128Security&, const HashToField128Security&);
431 std::vector<uint8_t> bincodeSerialize() const;
432 static HashToField128Security bincodeDeserialize(std::vector<uint8_t>);
433 };
434
436 Circuit::HeapVector hashed_msg;
437 Circuit::HeapArray public_key_x;
438 Circuit::HeapArray public_key_y;
439 Circuit::HeapArray signature;
441
442 friend bool operator==(const EcdsaSecp256k1&, const EcdsaSecp256k1&);
443 std::vector<uint8_t> bincodeSerialize() const;
444 static EcdsaSecp256k1 bincodeDeserialize(std::vector<uint8_t>);
445 };
446
448 Circuit::HeapVector hashed_msg;
449 Circuit::HeapArray public_key_x;
450 Circuit::HeapArray public_key_y;
451 Circuit::HeapArray signature;
453
454 friend bool operator==(const EcdsaSecp256r1&, const EcdsaSecp256r1&);
455 std::vector<uint8_t> bincodeSerialize() const;
456 static EcdsaSecp256r1 bincodeDeserialize(std::vector<uint8_t>);
457 };
458
460 Circuit::RegisterIndex public_key_x;
461 Circuit::RegisterIndex public_key_y;
462 Circuit::HeapVector message;
463 Circuit::HeapVector signature;
465
466 friend bool operator==(const SchnorrVerify&, const SchnorrVerify&);
467 std::vector<uint8_t> bincodeSerialize() const;
468 static SchnorrVerify bincodeDeserialize(std::vector<uint8_t>);
469 };
470
472 Circuit::HeapVector inputs;
473 Circuit::RegisterIndex domain_separator;
474 Circuit::HeapArray output;
475
476 friend bool operator==(const PedersenCommitment&, const PedersenCommitment&);
477 std::vector<uint8_t> bincodeSerialize() const;
478 static PedersenCommitment bincodeDeserialize(std::vector<uint8_t>);
479 };
480
482 Circuit::HeapVector inputs;
483 Circuit::RegisterIndex domain_separator;
485
486 friend bool operator==(const PedersenHash&, const PedersenHash&);
487 std::vector<uint8_t> bincodeSerialize() const;
488 static PedersenHash bincodeDeserialize(std::vector<uint8_t>);
489 };
490
494 Circuit::HeapArray result;
495
496 friend bool operator==(const FixedBaseScalarMul&, const FixedBaseScalarMul&);
497 std::vector<uint8_t> bincodeSerialize() const;
498 static FixedBaseScalarMul bincodeDeserialize(std::vector<uint8_t>);
499 };
500
501 std::variant<Sha256,
502 Blake2s,
503 Keccak256,
511 value;
512
513 friend bool operator==(const BlackBoxOp&, const BlackBoxOp&);
514 std::vector<uint8_t> bincodeSerialize() const;
515 static BlackBoxOp bincodeDeserialize(std::vector<uint8_t>);
516};
517
519
522
523 friend bool operator==(const RegisterIndex&, const RegisterIndex&);
524 std::vector<uint8_t> bincodeSerialize() const;
525 static RegisterIndex bincodeDeserialize(std::vector<uint8_t>);
526 };
527
528 struct HeapArray {
529 Circuit::HeapArray value;
530
531 friend bool operator==(const HeapArray&, const HeapArray&);
532 std::vector<uint8_t> bincodeSerialize() const;
533 static HeapArray bincodeDeserialize(std::vector<uint8_t>);
534 };
535
536 struct HeapVector {
538
539 friend bool operator==(const HeapVector&, const HeapVector&);
540 std::vector<uint8_t> bincodeSerialize() const;
541 static HeapVector bincodeDeserialize(std::vector<uint8_t>);
542 };
543
544 std::variant<RegisterIndex, HeapArray, HeapVector> value;
545
546 friend bool operator==(const RegisterOrMemory&, const RegisterOrMemory&);
547 std::vector<uint8_t> bincodeSerialize() const;
548 static RegisterOrMemory bincodeDeserialize(std::vector<uint8_t>);
549};
550
551struct Value {
552 std::string inner;
553
554 friend bool operator==(const Value&, const Value&);
555 std::vector<uint8_t> bincodeSerialize() const;
556 static Value bincodeDeserialize(std::vector<uint8_t>);
557};
558
560
562 Circuit::RegisterIndex destination;
566
567 friend bool operator==(const BinaryFieldOp&, const BinaryFieldOp&);
568 std::vector<uint8_t> bincodeSerialize() const;
569 static BinaryFieldOp bincodeDeserialize(std::vector<uint8_t>);
570 };
571
572 struct BinaryIntOp {
573 Circuit::RegisterIndex destination;
575 uint32_t bit_size;
578
579 friend bool operator==(const BinaryIntOp&, const BinaryIntOp&);
580 std::vector<uint8_t> bincodeSerialize() const;
581 static BinaryIntOp bincodeDeserialize(std::vector<uint8_t>);
582 };
583
584 struct JumpIfNot {
585 Circuit::RegisterIndex condition;
586 uint64_t location;
587
588 friend bool operator==(const JumpIfNot&, const JumpIfNot&);
589 std::vector<uint8_t> bincodeSerialize() const;
590 static JumpIfNot bincodeDeserialize(std::vector<uint8_t>);
591 };
592
593 struct JumpIf {
594 Circuit::RegisterIndex condition;
595 uint64_t location;
596
597 friend bool operator==(const JumpIf&, const JumpIf&);
598 std::vector<uint8_t> bincodeSerialize() const;
599 static JumpIf bincodeDeserialize(std::vector<uint8_t>);
600 };
601
602 struct Jump {
603 uint64_t location;
604
605 friend bool operator==(const Jump&, const Jump&);
606 std::vector<uint8_t> bincodeSerialize() const;
607 static Jump bincodeDeserialize(std::vector<uint8_t>);
608 };
609
610 struct Call {
611 uint64_t location;
612
613 friend bool operator==(const Call&, const Call&);
614 std::vector<uint8_t> bincodeSerialize() const;
615 static Call bincodeDeserialize(std::vector<uint8_t>);
616 };
617
618 struct Const {
619 Circuit::RegisterIndex destination;
620 Circuit::Value value;
621
622 friend bool operator==(const Const&, const Const&);
623 std::vector<uint8_t> bincodeSerialize() const;
624 static Const bincodeDeserialize(std::vector<uint8_t>);
625 };
626
627 struct Return {
628 friend bool operator==(const Return&, const Return&);
629 std::vector<uint8_t> bincodeSerialize() const;
630 static Return bincodeDeserialize(std::vector<uint8_t>);
631 };
632
633 struct ForeignCall {
634 std::string function;
635 std::vector<Circuit::RegisterOrMemory> destinations;
636 std::vector<Circuit::RegisterOrMemory> inputs;
637
638 friend bool operator==(const ForeignCall&, const ForeignCall&);
639 std::vector<uint8_t> bincodeSerialize() const;
640 static ForeignCall bincodeDeserialize(std::vector<uint8_t>);
641 };
642
643 struct Mov {
644 Circuit::RegisterIndex destination;
646
647 friend bool operator==(const Mov&, const Mov&);
648 std::vector<uint8_t> bincodeSerialize() const;
649 static Mov bincodeDeserialize(std::vector<uint8_t>);
650 };
651
652 struct Load {
653 Circuit::RegisterIndex destination;
654 Circuit::RegisterIndex source_pointer;
655
656 friend bool operator==(const Load&, const Load&);
657 std::vector<uint8_t> bincodeSerialize() const;
658 static Load bincodeDeserialize(std::vector<uint8_t>);
659 };
660
661 struct Store {
662 Circuit::RegisterIndex destination_pointer;
664
665 friend bool operator==(const Store&, const Store&);
666 std::vector<uint8_t> bincodeSerialize() const;
667 static Store bincodeDeserialize(std::vector<uint8_t>);
668 };
669
670 struct BlackBox {
672
673 friend bool operator==(const BlackBox&, const BlackBox&);
674 std::vector<uint8_t> bincodeSerialize() const;
675 static BlackBox bincodeDeserialize(std::vector<uint8_t>);
676 };
677
678 struct Trap {
679 friend bool operator==(const Trap&, const Trap&);
680 std::vector<uint8_t> bincodeSerialize() const;
681 static Trap bincodeDeserialize(std::vector<uint8_t>);
682 };
683
684 struct Stop {
685 friend bool operator==(const Stop&, const Stop&);
686 std::vector<uint8_t> bincodeSerialize() const;
687 static Stop bincodeDeserialize(std::vector<uint8_t>);
688 };
689
690 std::variant<BinaryFieldOp,
692 JumpIfNot,
693 JumpIf,
694 Jump,
695 Call,
696 Const,
697 Return,
699 Mov,
700 Load,
701 Store,
702 BlackBox,
703 Trap,
704 Stop>
705 value;
706
707 friend bool operator==(const BrilligOpcode&, const BrilligOpcode&);
708 std::vector<uint8_t> bincodeSerialize() const;
709 static BrilligOpcode bincodeDeserialize(std::vector<uint8_t>);
710};
711
713
714 struct Simple {
715 Circuit::Witness value;
716
717 friend bool operator==(const Simple&, const Simple&);
718 std::vector<uint8_t> bincodeSerialize() const;
719 static Simple bincodeDeserialize(std::vector<uint8_t>);
720 };
721
722 struct Array {
723 std::vector<Circuit::Witness> value;
724
725 friend bool operator==(const Array&, const Array&);
726 std::vector<uint8_t> bincodeSerialize() const;
727 static Array bincodeDeserialize(std::vector<uint8_t>);
728 };
729
730 std::variant<Simple, Array> value;
731
732 friend bool operator==(const BrilligOutputs&, const BrilligOutputs&);
733 std::vector<uint8_t> bincodeSerialize() const;
734 static BrilligOutputs bincodeDeserialize(std::vector<uint8_t>);
735};
736
737struct Brillig {
738 std::vector<Circuit::BrilligInputs> inputs;
739 std::vector<Circuit::BrilligOutputs> outputs;
740 std::vector<Circuit::BrilligOpcode> bytecode;
741 std::optional<Circuit::Expression> predicate;
742
743 friend bool operator==(const Brillig&, const Brillig&);
744 std::vector<uint8_t> bincodeSerialize() const;
745 static Brillig bincodeDeserialize(std::vector<uint8_t>);
746};
747
753 std::optional<Circuit::Expression> predicate;
754
755 friend bool operator==(const QuotientDirective&, const QuotientDirective&);
756 std::vector<uint8_t> bincodeSerialize() const;
757 static QuotientDirective bincodeDeserialize(std::vector<uint8_t>);
758};
759
760struct Directive {
761
762 struct Quotient {
764
765 friend bool operator==(const Quotient&, const Quotient&);
766 std::vector<uint8_t> bincodeSerialize() const;
767 static Quotient bincodeDeserialize(std::vector<uint8_t>);
768 };
769
770 struct ToLeRadix {
772 std::vector<Circuit::Witness> b;
773 uint32_t radix;
774
775 friend bool operator==(const ToLeRadix&, const ToLeRadix&);
776 std::vector<uint8_t> bincodeSerialize() const;
777 static ToLeRadix bincodeDeserialize(std::vector<uint8_t>);
778 };
779
781 std::vector<std::vector<Circuit::Expression>> inputs;
782 uint32_t tuple;
783 std::vector<Circuit::Witness> bits;
784 std::vector<uint32_t> sort_by;
785
786 friend bool operator==(const PermutationSort&, const PermutationSort&);
787 std::vector<uint8_t> bincodeSerialize() const;
788 static PermutationSort bincodeDeserialize(std::vector<uint8_t>);
789 };
790
791 std::variant<Quotient, ToLeRadix, PermutationSort> value;
792
793 friend bool operator==(const Directive&, const Directive&);
794 std::vector<uint8_t> bincodeSerialize() const;
795 static Directive bincodeDeserialize(std::vector<uint8_t>);
796};
797
798struct MemOp {
799 Circuit::Expression operation;
802
803 friend bool operator==(const MemOp&, const MemOp&);
804 std::vector<uint8_t> bincodeSerialize() const;
805 static MemOp bincodeDeserialize(std::vector<uint8_t>);
806};
807
808struct Opcode {
809
810 struct Arithmetic {
812
813 friend bool operator==(const Arithmetic&, const Arithmetic&);
814 std::vector<uint8_t> bincodeSerialize() const;
815 static Arithmetic bincodeDeserialize(std::vector<uint8_t>);
816 };
817
820
821 friend bool operator==(const BlackBoxFuncCall&, const BlackBoxFuncCall&);
822 std::vector<uint8_t> bincodeSerialize() const;
823 static BlackBoxFuncCall bincodeDeserialize(std::vector<uint8_t>);
824 };
825
826 struct Directive {
827 Circuit::Directive value;
828
829 friend bool operator==(const Directive&, const Directive&);
830 std::vector<uint8_t> bincodeSerialize() const;
831 static Directive bincodeDeserialize(std::vector<uint8_t>);
832 };
833
834 struct Brillig {
835 Circuit::Brillig value;
836
837 friend bool operator==(const Brillig&, const Brillig&);
838 std::vector<uint8_t> bincodeSerialize() const;
839 static Brillig bincodeDeserialize(std::vector<uint8_t>);
840 };
841
842 struct MemoryOp {
843 Circuit::BlockId block_id;
845 std::optional<Circuit::Expression> predicate;
846
847 friend bool operator==(const MemoryOp&, const MemoryOp&);
848 std::vector<uint8_t> bincodeSerialize() const;
849 static MemoryOp bincodeDeserialize(std::vector<uint8_t>);
850 };
851
852 struct MemoryInit {
853 Circuit::BlockId block_id;
854 std::vector<Circuit::Witness> init;
855
856 friend bool operator==(const MemoryInit&, const MemoryInit&);
857 std::vector<uint8_t> bincodeSerialize() const;
858 static MemoryInit bincodeDeserialize(std::vector<uint8_t>);
859 };
860
861 std::variant<Arithmetic, BlackBoxFuncCall, Directive, Brillig, MemoryOp, MemoryInit> value;
862
863 friend bool operator==(const Opcode&, const Opcode&);
864 std::vector<uint8_t> bincodeSerialize() const;
865 static Opcode bincodeDeserialize(std::vector<uint8_t>);
866};
867
869
870 struct Acir {
871 uint64_t value;
872
873 friend bool operator==(const Acir&, const Acir&);
874 std::vector<uint8_t> bincodeSerialize() const;
875 static Acir bincodeDeserialize(std::vector<uint8_t>);
876 };
877
878 struct Brillig {
879 uint64_t acir_index;
880 uint64_t brillig_index;
881
882 friend bool operator==(const Brillig&, const Brillig&);
883 std::vector<uint8_t> bincodeSerialize() const;
884 static Brillig bincodeDeserialize(std::vector<uint8_t>);
885 };
886
887 std::variant<Acir, Brillig> value;
888
889 friend bool operator==(const OpcodeLocation&, const OpcodeLocation&);
890 std::vector<uint8_t> bincodeSerialize() const;
891 static OpcodeLocation bincodeDeserialize(std::vector<uint8_t>);
892};
893
895 std::vector<Circuit::Witness> value;
896
897 friend bool operator==(const PublicInputs&, const PublicInputs&);
898 std::vector<uint8_t> bincodeSerialize() const;
899 static PublicInputs bincodeDeserialize(std::vector<uint8_t>);
900};
901
902struct Circuit {
903 uint32_t current_witness_index;
904 std::vector<Opcode> opcodes;
905 std::vector<Witness> private_parameters;
906 PublicInputs public_parameters;
907 PublicInputs return_values;
908 std::vector<std::tuple<OpcodeLocation, std::string>> assert_messages;
909
910 friend bool operator==(const Circuit&, const Circuit&);
911 std::vector<uint8_t> bincodeSerialize() const;
912 static Circuit bincodeDeserialize(std::vector<uint8_t>);
913};
914
915} // end of namespace Circuit
916
917namespace Circuit {
918
919inline bool operator==(const BinaryFieldOp& lhs, const BinaryFieldOp& rhs)
920{
921 if (!(lhs.value == rhs.value)) {
922 return false;
923 }
924 return true;
925}
926
927inline std::vector<uint8_t> BinaryFieldOp::bincodeSerialize() const
928{
929 auto serializer = serde::BincodeSerializer();
931 return std::move(serializer).bytes();
932}
933
934inline BinaryFieldOp BinaryFieldOp::bincodeDeserialize(std::vector<uint8_t> input)
935{
936 auto deserializer = serde::BincodeDeserializer(input);
937 auto value = serde::Deserializable<BinaryFieldOp>::deserialize(deserializer);
938 if (deserializer.get_buffer_offset() < input.size()) {
939 throw_or_abort("Some input bytes were not read");
940 }
941 return value;
942}
943
944} // end of namespace Circuit
945
946template <>
947template <typename Serializer>
949{
950 serializer.increase_container_depth();
951 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
952 serializer.decrease_container_depth();
953}
954
955template <>
956template <typename Deserializer>
958{
959 deserializer.increase_container_depth();
961 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
962 deserializer.decrease_container_depth();
963 return obj;
964}
965
966namespace Circuit {
967
968inline bool operator==(const BinaryFieldOp::Add& lhs, const BinaryFieldOp::Add& rhs)
969{
970 return true;
971}
972
973inline std::vector<uint8_t> BinaryFieldOp::Add::bincodeSerialize() const
974{
975 auto serializer = serde::BincodeSerializer();
977 return std::move(serializer).bytes();
978}
979
980inline BinaryFieldOp::Add BinaryFieldOp::Add::bincodeDeserialize(std::vector<uint8_t> input)
981{
982 auto deserializer = serde::BincodeDeserializer(input);
984 if (deserializer.get_buffer_offset() < input.size()) {
985 throw_or_abort("Some input bytes were not read");
986 }
987 return value;
988}
989
990} // end of namespace Circuit
991
992template <>
993template <typename Serializer>
995 Serializer& serializer)
996{}
997
998template <>
999template <typename Deserializer>
1001{
1003 return obj;
1004}
1005
1006namespace Circuit {
1007
1008inline bool operator==(const BinaryFieldOp::Sub& lhs, const BinaryFieldOp::Sub& rhs)
1009{
1010 return true;
1011}
1012
1013inline std::vector<uint8_t> BinaryFieldOp::Sub::bincodeSerialize() const
1014{
1015 auto serializer = serde::BincodeSerializer();
1017 return std::move(serializer).bytes();
1018}
1019
1020inline BinaryFieldOp::Sub BinaryFieldOp::Sub::bincodeDeserialize(std::vector<uint8_t> input)
1021{
1022 auto deserializer = serde::BincodeDeserializer(input);
1024 if (deserializer.get_buffer_offset() < input.size()) {
1025 throw_or_abort("Some input bytes were not read");
1026 }
1027 return value;
1028}
1029
1030} // end of namespace Circuit
1031
1032template <>
1033template <typename Serializer>
1035 Serializer& serializer)
1036{}
1037
1038template <>
1039template <typename Deserializer>
1041{
1043 return obj;
1044}
1045
1046namespace Circuit {
1047
1048inline bool operator==(const BinaryFieldOp::Mul& lhs, const BinaryFieldOp::Mul& rhs)
1049{
1050 return true;
1051}
1052
1053inline std::vector<uint8_t> BinaryFieldOp::Mul::bincodeSerialize() const
1054{
1055 auto serializer = serde::BincodeSerializer();
1057 return std::move(serializer).bytes();
1058}
1059
1060inline BinaryFieldOp::Mul BinaryFieldOp::Mul::bincodeDeserialize(std::vector<uint8_t> input)
1061{
1062 auto deserializer = serde::BincodeDeserializer(input);
1064 if (deserializer.get_buffer_offset() < input.size()) {
1065 throw_or_abort("Some input bytes were not read");
1066 }
1067 return value;
1068}
1069
1070} // end of namespace Circuit
1071
1072template <>
1073template <typename Serializer>
1075 Serializer& serializer)
1076{}
1077
1078template <>
1079template <typename Deserializer>
1081{
1083 return obj;
1084}
1085
1086namespace Circuit {
1087
1088inline bool operator==(const BinaryFieldOp::Div& lhs, const BinaryFieldOp::Div& rhs)
1089{
1090 return true;
1091}
1092
1093inline std::vector<uint8_t> BinaryFieldOp::Div::bincodeSerialize() const
1094{
1095 auto serializer = serde::BincodeSerializer();
1097 return std::move(serializer).bytes();
1098}
1099
1100inline BinaryFieldOp::Div BinaryFieldOp::Div::bincodeDeserialize(std::vector<uint8_t> input)
1101{
1102 auto deserializer = serde::BincodeDeserializer(input);
1104 if (deserializer.get_buffer_offset() < input.size()) {
1105 throw_or_abort("Some input bytes were not read");
1106 }
1107 return value;
1108}
1109
1110} // end of namespace Circuit
1111
1112template <>
1113template <typename Serializer>
1115 Serializer& serializer)
1116{}
1117
1118template <>
1119template <typename Deserializer>
1121{
1123 return obj;
1124}
1125
1126namespace Circuit {
1127
1128inline bool operator==(const BinaryFieldOp::Equals& lhs, const BinaryFieldOp::Equals& rhs)
1129{
1130 return true;
1131}
1132
1133inline std::vector<uint8_t> BinaryFieldOp::Equals::bincodeSerialize() const
1134{
1135 auto serializer = serde::BincodeSerializer();
1137 return std::move(serializer).bytes();
1138}
1139
1140inline BinaryFieldOp::Equals BinaryFieldOp::Equals::bincodeDeserialize(std::vector<uint8_t> input)
1141{
1142 auto deserializer = serde::BincodeDeserializer(input);
1144 if (deserializer.get_buffer_offset() < input.size()) {
1145 throw_or_abort("Some input bytes were not read");
1146 }
1147 return value;
1148}
1149
1150} // end of namespace Circuit
1151
1152template <>
1153template <typename Serializer>
1155 Serializer& serializer)
1156{}
1157
1158template <>
1159template <typename Deserializer>
1161 Deserializer& deserializer)
1162{
1164 return obj;
1165}
1166
1167namespace Circuit {
1168
1169inline bool operator==(const BinaryIntOp& lhs, const BinaryIntOp& rhs)
1170{
1171 if (!(lhs.value == rhs.value)) {
1172 return false;
1173 }
1174 return true;
1175}
1176
1177inline std::vector<uint8_t> BinaryIntOp::bincodeSerialize() const
1178{
1179 auto serializer = serde::BincodeSerializer();
1181 return std::move(serializer).bytes();
1182}
1183
1184inline BinaryIntOp BinaryIntOp::bincodeDeserialize(std::vector<uint8_t> input)
1185{
1186 auto deserializer = serde::BincodeDeserializer(input);
1187 auto value = serde::Deserializable<BinaryIntOp>::deserialize(deserializer);
1188 if (deserializer.get_buffer_offset() < input.size()) {
1189 throw_or_abort("Some input bytes were not read");
1190 }
1191 return value;
1192}
1193
1194} // end of namespace Circuit
1195
1196template <>
1197template <typename Serializer>
1199{
1200 serializer.increase_container_depth();
1201 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
1202 serializer.decrease_container_depth();
1203}
1204
1205template <>
1206template <typename Deserializer>
1208{
1209 deserializer.increase_container_depth();
1211 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
1212 deserializer.decrease_container_depth();
1213 return obj;
1214}
1215
1216namespace Circuit {
1217
1218inline bool operator==(const BinaryIntOp::Add& lhs, const BinaryIntOp::Add& rhs)
1219{
1220 return true;
1221}
1222
1223inline std::vector<uint8_t> BinaryIntOp::Add::bincodeSerialize() const
1224{
1225 auto serializer = serde::BincodeSerializer();
1227 return std::move(serializer).bytes();
1228}
1229
1230inline BinaryIntOp::Add BinaryIntOp::Add::bincodeDeserialize(std::vector<uint8_t> input)
1231{
1232 auto deserializer = serde::BincodeDeserializer(input);
1234 if (deserializer.get_buffer_offset() < input.size()) {
1235 throw_or_abort("Some input bytes were not read");
1236 }
1237 return value;
1238}
1239
1240} // end of namespace Circuit
1241
1242template <>
1243template <typename Serializer>
1245 Serializer& serializer)
1246{}
1247
1248template <>
1249template <typename Deserializer>
1251{
1253 return obj;
1254}
1255
1256namespace Circuit {
1257
1258inline bool operator==(const BinaryIntOp::Sub& lhs, const BinaryIntOp::Sub& rhs)
1259{
1260 return true;
1261}
1262
1263inline std::vector<uint8_t> BinaryIntOp::Sub::bincodeSerialize() const
1264{
1265 auto serializer = serde::BincodeSerializer();
1267 return std::move(serializer).bytes();
1268}
1269
1270inline BinaryIntOp::Sub BinaryIntOp::Sub::bincodeDeserialize(std::vector<uint8_t> input)
1271{
1272 auto deserializer = serde::BincodeDeserializer(input);
1274 if (deserializer.get_buffer_offset() < input.size()) {
1275 throw_or_abort("Some input bytes were not read");
1276 }
1277 return value;
1278}
1279
1280} // end of namespace Circuit
1281
1282template <>
1283template <typename Serializer>
1285 Serializer& serializer)
1286{}
1287
1288template <>
1289template <typename Deserializer>
1291{
1293 return obj;
1294}
1295
1296namespace Circuit {
1297
1298inline bool operator==(const BinaryIntOp::Mul& lhs, const BinaryIntOp::Mul& rhs)
1299{
1300 return true;
1301}
1302
1303inline std::vector<uint8_t> BinaryIntOp::Mul::bincodeSerialize() const
1304{
1305 auto serializer = serde::BincodeSerializer();
1307 return std::move(serializer).bytes();
1308}
1309
1310inline BinaryIntOp::Mul BinaryIntOp::Mul::bincodeDeserialize(std::vector<uint8_t> input)
1311{
1312 auto deserializer = serde::BincodeDeserializer(input);
1314 if (deserializer.get_buffer_offset() < input.size()) {
1315 throw_or_abort("Some input bytes were not read");
1316 }
1317 return value;
1318}
1319
1320} // end of namespace Circuit
1321
1322template <>
1323template <typename Serializer>
1325 Serializer& serializer)
1326{}
1327
1328template <>
1329template <typename Deserializer>
1331{
1333 return obj;
1334}
1335
1336namespace Circuit {
1337
1338inline bool operator==(const BinaryIntOp::SignedDiv& lhs, const BinaryIntOp::SignedDiv& rhs)
1339{
1340 return true;
1341}
1342
1343inline std::vector<uint8_t> BinaryIntOp::SignedDiv::bincodeSerialize() const
1344{
1345 auto serializer = serde::BincodeSerializer();
1347 return std::move(serializer).bytes();
1348}
1349
1350inline BinaryIntOp::SignedDiv BinaryIntOp::SignedDiv::bincodeDeserialize(std::vector<uint8_t> input)
1351{
1352 auto deserializer = serde::BincodeDeserializer(input);
1354 if (deserializer.get_buffer_offset() < input.size()) {
1355 throw_or_abort("Some input bytes were not read");
1356 }
1357 return value;
1358}
1359
1360} // end of namespace Circuit
1361
1362template <>
1363template <typename Serializer>
1365 Serializer& serializer)
1366{}
1367
1368template <>
1369template <typename Deserializer>
1371 Deserializer& deserializer)
1372{
1374 return obj;
1375}
1376
1377namespace Circuit {
1378
1379inline bool operator==(const BinaryIntOp::UnsignedDiv& lhs, const BinaryIntOp::UnsignedDiv& rhs)
1380{
1381 return true;
1382}
1383
1384inline std::vector<uint8_t> BinaryIntOp::UnsignedDiv::bincodeSerialize() const
1385{
1386 auto serializer = serde::BincodeSerializer();
1388 return std::move(serializer).bytes();
1389}
1390
1391inline BinaryIntOp::UnsignedDiv BinaryIntOp::UnsignedDiv::bincodeDeserialize(std::vector<uint8_t> input)
1392{
1393 auto deserializer = serde::BincodeDeserializer(input);
1395 if (deserializer.get_buffer_offset() < input.size()) {
1396 throw_or_abort("Some input bytes were not read");
1397 }
1398 return value;
1399}
1400
1401} // end of namespace Circuit
1402
1403template <>
1404template <typename Serializer>
1406 Serializer& serializer)
1407{}
1408
1409template <>
1410template <typename Deserializer>
1412 Deserializer& deserializer)
1413{
1415 return obj;
1416}
1417
1418namespace Circuit {
1419
1420inline bool operator==(const BinaryIntOp::Equals& lhs, const BinaryIntOp::Equals& rhs)
1421{
1422 return true;
1423}
1424
1425inline std::vector<uint8_t> BinaryIntOp::Equals::bincodeSerialize() const
1426{
1427 auto serializer = serde::BincodeSerializer();
1429 return std::move(serializer).bytes();
1430}
1431
1432inline BinaryIntOp::Equals BinaryIntOp::Equals::bincodeDeserialize(std::vector<uint8_t> input)
1433{
1434 auto deserializer = serde::BincodeDeserializer(input);
1436 if (deserializer.get_buffer_offset() < input.size()) {
1437 throw_or_abort("Some input bytes were not read");
1438 }
1439 return value;
1440}
1441
1442} // end of namespace Circuit
1443
1444template <>
1445template <typename Serializer>
1447 Serializer& serializer)
1448{}
1449
1450template <>
1451template <typename Deserializer>
1453 Deserializer& deserializer)
1454{
1456 return obj;
1457}
1458
1459namespace Circuit {
1460
1461inline bool operator==(const BinaryIntOp::LessThan& lhs, const BinaryIntOp::LessThan& rhs)
1462{
1463 return true;
1464}
1465
1466inline std::vector<uint8_t> BinaryIntOp::LessThan::bincodeSerialize() const
1467{
1468 auto serializer = serde::BincodeSerializer();
1470 return std::move(serializer).bytes();
1471}
1472
1473inline BinaryIntOp::LessThan BinaryIntOp::LessThan::bincodeDeserialize(std::vector<uint8_t> input)
1474{
1475 auto deserializer = serde::BincodeDeserializer(input);
1477 if (deserializer.get_buffer_offset() < input.size()) {
1478 throw_or_abort("Some input bytes were not read");
1479 }
1480 return value;
1481}
1482
1483} // end of namespace Circuit
1484
1485template <>
1486template <typename Serializer>
1488 Serializer& serializer)
1489{}
1490
1491template <>
1492template <typename Deserializer>
1494 Deserializer& deserializer)
1495{
1497 return obj;
1498}
1499
1500namespace Circuit {
1501
1502inline bool operator==(const BinaryIntOp::LessThanEquals& lhs, const BinaryIntOp::LessThanEquals& rhs)
1503{
1504 return true;
1505}
1506
1507inline std::vector<uint8_t> BinaryIntOp::LessThanEquals::bincodeSerialize() const
1508{
1509 auto serializer = serde::BincodeSerializer();
1511 return std::move(serializer).bytes();
1512}
1513
1514inline BinaryIntOp::LessThanEquals BinaryIntOp::LessThanEquals::bincodeDeserialize(std::vector<uint8_t> input)
1515{
1516 auto deserializer = serde::BincodeDeserializer(input);
1518 if (deserializer.get_buffer_offset() < input.size()) {
1519 throw_or_abort("Some input bytes were not read");
1520 }
1521 return value;
1522}
1523
1524} // end of namespace Circuit
1525
1526template <>
1527template <typename Serializer>
1529 const Circuit::BinaryIntOp::LessThanEquals& obj, Serializer& serializer)
1530{}
1531
1532template <>
1533template <typename Deserializer>
1535 Deserializer& deserializer)
1536{
1538 return obj;
1539}
1540
1541namespace Circuit {
1542
1543inline bool operator==(const BinaryIntOp::And& lhs, const BinaryIntOp::And& rhs)
1544{
1545 return true;
1546}
1547
1548inline std::vector<uint8_t> BinaryIntOp::And::bincodeSerialize() const
1549{
1550 auto serializer = serde::BincodeSerializer();
1552 return std::move(serializer).bytes();
1553}
1554
1555inline BinaryIntOp::And BinaryIntOp::And::bincodeDeserialize(std::vector<uint8_t> input)
1556{
1557 auto deserializer = serde::BincodeDeserializer(input);
1559 if (deserializer.get_buffer_offset() < input.size()) {
1560 throw_or_abort("Some input bytes were not read");
1561 }
1562 return value;
1563}
1564
1565} // end of namespace Circuit
1566
1567template <>
1568template <typename Serializer>
1570 Serializer& serializer)
1571{}
1572
1573template <>
1574template <typename Deserializer>
1576{
1578 return obj;
1579}
1580
1581namespace Circuit {
1582
1583inline bool operator==(const BinaryIntOp::Or& lhs, const BinaryIntOp::Or& rhs)
1584{
1585 return true;
1586}
1587
1588inline std::vector<uint8_t> BinaryIntOp::Or::bincodeSerialize() const
1589{
1590 auto serializer = serde::BincodeSerializer();
1592 return std::move(serializer).bytes();
1593}
1594
1595inline BinaryIntOp::Or BinaryIntOp::Or::bincodeDeserialize(std::vector<uint8_t> input)
1596{
1597 auto deserializer = serde::BincodeDeserializer(input);
1598 auto value = serde::Deserializable<BinaryIntOp::Or>::deserialize(deserializer);
1599 if (deserializer.get_buffer_offset() < input.size()) {
1600 throw_or_abort("Some input bytes were not read");
1601 }
1602 return value;
1603}
1604
1605} // end of namespace Circuit
1606
1607template <>
1608template <typename Serializer>
1610 Serializer& serializer)
1611{}
1612
1613template <>
1614template <typename Deserializer>
1616{
1618 return obj;
1619}
1620
1621namespace Circuit {
1622
1623inline bool operator==(const BinaryIntOp::Xor& lhs, const BinaryIntOp::Xor& rhs)
1624{
1625 return true;
1626}
1627
1628inline std::vector<uint8_t> BinaryIntOp::Xor::bincodeSerialize() const
1629{
1630 auto serializer = serde::BincodeSerializer();
1632 return std::move(serializer).bytes();
1633}
1634
1635inline BinaryIntOp::Xor BinaryIntOp::Xor::bincodeDeserialize(std::vector<uint8_t> input)
1636{
1637 auto deserializer = serde::BincodeDeserializer(input);
1639 if (deserializer.get_buffer_offset() < input.size()) {
1640 throw_or_abort("Some input bytes were not read");
1641 }
1642 return value;
1643}
1644
1645} // end of namespace Circuit
1646
1647template <>
1648template <typename Serializer>
1650 Serializer& serializer)
1651{}
1652
1653template <>
1654template <typename Deserializer>
1656{
1658 return obj;
1659}
1660
1661namespace Circuit {
1662
1663inline bool operator==(const BinaryIntOp::Shl& lhs, const BinaryIntOp::Shl& rhs)
1664{
1665 return true;
1666}
1667
1668inline std::vector<uint8_t> BinaryIntOp::Shl::bincodeSerialize() const
1669{
1670 auto serializer = serde::BincodeSerializer();
1672 return std::move(serializer).bytes();
1673}
1674
1675inline BinaryIntOp::Shl BinaryIntOp::Shl::bincodeDeserialize(std::vector<uint8_t> input)
1676{
1677 auto deserializer = serde::BincodeDeserializer(input);
1679 if (deserializer.get_buffer_offset() < input.size()) {
1680 throw_or_abort("Some input bytes were not read");
1681 }
1682 return value;
1683}
1684
1685} // end of namespace Circuit
1686
1687template <>
1688template <typename Serializer>
1690 Serializer& serializer)
1691{}
1692
1693template <>
1694template <typename Deserializer>
1696{
1698 return obj;
1699}
1700
1701namespace Circuit {
1702
1703inline bool operator==(const BinaryIntOp::Shr& lhs, const BinaryIntOp::Shr& rhs)
1704{
1705 return true;
1706}
1707
1708inline std::vector<uint8_t> BinaryIntOp::Shr::bincodeSerialize() const
1709{
1710 auto serializer = serde::BincodeSerializer();
1712 return std::move(serializer).bytes();
1713}
1714
1715inline BinaryIntOp::Shr BinaryIntOp::Shr::bincodeDeserialize(std::vector<uint8_t> input)
1716{
1717 auto deserializer = serde::BincodeDeserializer(input);
1719 if (deserializer.get_buffer_offset() < input.size()) {
1720 throw_or_abort("Some input bytes were not read");
1721 }
1722 return value;
1723}
1724
1725} // end of namespace Circuit
1726
1727template <>
1728template <typename Serializer>
1730 Serializer& serializer)
1731{}
1732
1733template <>
1734template <typename Deserializer>
1736{
1738 return obj;
1739}
1740
1741namespace Circuit {
1742
1743inline bool operator==(const BlackBoxFuncCall& lhs, const BlackBoxFuncCall& rhs)
1744{
1745 if (!(lhs.value == rhs.value)) {
1746 return false;
1747 }
1748 return true;
1749}
1750
1751inline std::vector<uint8_t> BlackBoxFuncCall::bincodeSerialize() const
1752{
1753 auto serializer = serde::BincodeSerializer();
1755 return std::move(serializer).bytes();
1756}
1757
1758inline BlackBoxFuncCall BlackBoxFuncCall::bincodeDeserialize(std::vector<uint8_t> input)
1759{
1760 auto deserializer = serde::BincodeDeserializer(input);
1762 if (deserializer.get_buffer_offset() < input.size()) {
1763 throw_or_abort("Some input bytes were not read");
1764 }
1765 return value;
1766}
1767
1768} // end of namespace Circuit
1769
1770template <>
1771template <typename Serializer>
1773 Serializer& serializer)
1774{
1775 serializer.increase_container_depth();
1776 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
1777 serializer.decrease_container_depth();
1778}
1779
1780template <>
1781template <typename Deserializer>
1783{
1784 deserializer.increase_container_depth();
1786 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
1787 deserializer.decrease_container_depth();
1788 return obj;
1789}
1790
1791namespace Circuit {
1792
1793inline bool operator==(const BlackBoxFuncCall::AND& lhs, const BlackBoxFuncCall::AND& rhs)
1794{
1795 if (!(lhs.lhs == rhs.lhs)) {
1796 return false;
1797 }
1798 if (!(lhs.rhs == rhs.rhs)) {
1799 return false;
1800 }
1801 if (!(lhs.output == rhs.output)) {
1802 return false;
1803 }
1804 return true;
1805}
1806
1807inline std::vector<uint8_t> BlackBoxFuncCall::AND::bincodeSerialize() const
1808{
1809 auto serializer = serde::BincodeSerializer();
1811 return std::move(serializer).bytes();
1812}
1813
1814inline BlackBoxFuncCall::AND BlackBoxFuncCall::AND::bincodeDeserialize(std::vector<uint8_t> input)
1815{
1816 auto deserializer = serde::BincodeDeserializer(input);
1818 if (deserializer.get_buffer_offset() < input.size()) {
1819 throw_or_abort("Some input bytes were not read");
1820 }
1821 return value;
1822}
1823
1824} // end of namespace Circuit
1825
1826template <>
1827template <typename Serializer>
1829 Serializer& serializer)
1830{
1831 serde::Serializable<decltype(obj.lhs)>::serialize(obj.lhs, serializer);
1832 serde::Serializable<decltype(obj.rhs)>::serialize(obj.rhs, serializer);
1833 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
1834}
1835
1836template <>
1837template <typename Deserializer>
1839 Deserializer& deserializer)
1840{
1842 obj.lhs = serde::Deserializable<decltype(obj.lhs)>::deserialize(deserializer);
1843 obj.rhs = serde::Deserializable<decltype(obj.rhs)>::deserialize(deserializer);
1844 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
1845 return obj;
1846}
1847
1848namespace Circuit {
1849
1850inline bool operator==(const BlackBoxFuncCall::XOR& lhs, const BlackBoxFuncCall::XOR& rhs)
1851{
1852 if (!(lhs.lhs == rhs.lhs)) {
1853 return false;
1854 }
1855 if (!(lhs.rhs == rhs.rhs)) {
1856 return false;
1857 }
1858 if (!(lhs.output == rhs.output)) {
1859 return false;
1860 }
1861 return true;
1862}
1863
1864inline std::vector<uint8_t> BlackBoxFuncCall::XOR::bincodeSerialize() const
1865{
1866 auto serializer = serde::BincodeSerializer();
1868 return std::move(serializer).bytes();
1869}
1870
1871inline BlackBoxFuncCall::XOR BlackBoxFuncCall::XOR::bincodeDeserialize(std::vector<uint8_t> input)
1872{
1873 auto deserializer = serde::BincodeDeserializer(input);
1875 if (deserializer.get_buffer_offset() < input.size()) {
1876 throw_or_abort("Some input bytes were not read");
1877 }
1878 return value;
1879}
1880
1881} // end of namespace Circuit
1882
1883template <>
1884template <typename Serializer>
1886 Serializer& serializer)
1887{
1888 serde::Serializable<decltype(obj.lhs)>::serialize(obj.lhs, serializer);
1889 serde::Serializable<decltype(obj.rhs)>::serialize(obj.rhs, serializer);
1890 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
1891}
1892
1893template <>
1894template <typename Deserializer>
1896 Deserializer& deserializer)
1897{
1899 obj.lhs = serde::Deserializable<decltype(obj.lhs)>::deserialize(deserializer);
1900 obj.rhs = serde::Deserializable<decltype(obj.rhs)>::deserialize(deserializer);
1901 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
1902 return obj;
1903}
1904
1905namespace Circuit {
1906
1907inline bool operator==(const BlackBoxFuncCall::RANGE& lhs, const BlackBoxFuncCall::RANGE& rhs)
1908{
1909 if (!(lhs.input == rhs.input)) {
1910 return false;
1911 }
1912 return true;
1913}
1914
1915inline std::vector<uint8_t> BlackBoxFuncCall::RANGE::bincodeSerialize() const
1916{
1917 auto serializer = serde::BincodeSerializer();
1919 return std::move(serializer).bytes();
1920}
1921
1922inline BlackBoxFuncCall::RANGE BlackBoxFuncCall::RANGE::bincodeDeserialize(std::vector<uint8_t> input)
1923{
1924 auto deserializer = serde::BincodeDeserializer(input);
1926 if (deserializer.get_buffer_offset() < input.size()) {
1927 throw_or_abort("Some input bytes were not read");
1928 }
1929 return value;
1930}
1931
1932} // end of namespace Circuit
1933
1934template <>
1935template <typename Serializer>
1937 Serializer& serializer)
1938{
1939 serde::Serializable<decltype(obj.input)>::serialize(obj.input, serializer);
1940}
1941
1942template <>
1943template <typename Deserializer>
1945 Deserializer& deserializer)
1946{
1948 obj.input = serde::Deserializable<decltype(obj.input)>::deserialize(deserializer);
1949 return obj;
1950}
1951
1952namespace Circuit {
1953
1954inline bool operator==(const BlackBoxFuncCall::SHA256& lhs, const BlackBoxFuncCall::SHA256& rhs)
1955{
1956 if (!(lhs.inputs == rhs.inputs)) {
1957 return false;
1958 }
1959 if (!(lhs.outputs == rhs.outputs)) {
1960 return false;
1961 }
1962 return true;
1963}
1964
1965inline std::vector<uint8_t> BlackBoxFuncCall::SHA256::bincodeSerialize() const
1966{
1967 auto serializer = serde::BincodeSerializer();
1969 return std::move(serializer).bytes();
1970}
1971
1972inline BlackBoxFuncCall::SHA256 BlackBoxFuncCall::SHA256::bincodeDeserialize(std::vector<uint8_t> input)
1973{
1974 auto deserializer = serde::BincodeDeserializer(input);
1976 if (deserializer.get_buffer_offset() < input.size()) {
1977 throw_or_abort("Some input bytes were not read");
1978 }
1979 return value;
1980}
1981
1982} // end of namespace Circuit
1983
1984template <>
1985template <typename Serializer>
1987 Serializer& serializer)
1988{
1989 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
1990 serde::Serializable<decltype(obj.outputs)>::serialize(obj.outputs, serializer);
1991}
1992
1993template <>
1994template <typename Deserializer>
1996 Deserializer& deserializer)
1997{
1999 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
2000 obj.outputs = serde::Deserializable<decltype(obj.outputs)>::deserialize(deserializer);
2001 return obj;
2002}
2003
2004namespace Circuit {
2005
2006inline bool operator==(const BlackBoxFuncCall::Blake2s& lhs, const BlackBoxFuncCall::Blake2s& rhs)
2007{
2008 if (!(lhs.inputs == rhs.inputs)) {
2009 return false;
2010 }
2011 if (!(lhs.outputs == rhs.outputs)) {
2012 return false;
2013 }
2014 return true;
2015}
2016
2017inline std::vector<uint8_t> BlackBoxFuncCall::Blake2s::bincodeSerialize() const
2018{
2019 auto serializer = serde::BincodeSerializer();
2021 return std::move(serializer).bytes();
2022}
2023
2024inline BlackBoxFuncCall::Blake2s BlackBoxFuncCall::Blake2s::bincodeDeserialize(std::vector<uint8_t> input)
2025{
2026 auto deserializer = serde::BincodeDeserializer(input);
2028 if (deserializer.get_buffer_offset() < input.size()) {
2029 throw_or_abort("Some input bytes were not read");
2030 }
2031 return value;
2032}
2033
2034} // end of namespace Circuit
2035
2036template <>
2037template <typename Serializer>
2039 Serializer& serializer)
2040{
2041 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
2042 serde::Serializable<decltype(obj.outputs)>::serialize(obj.outputs, serializer);
2043}
2044
2045template <>
2046template <typename Deserializer>
2048 Deserializer& deserializer)
2049{
2051 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
2052 obj.outputs = serde::Deserializable<decltype(obj.outputs)>::deserialize(deserializer);
2053 return obj;
2054}
2055
2056namespace Circuit {
2057
2058inline bool operator==(const BlackBoxFuncCall::SchnorrVerify& lhs, const BlackBoxFuncCall::SchnorrVerify& rhs)
2059{
2060 if (!(lhs.public_key_x == rhs.public_key_x)) {
2061 return false;
2062 }
2063 if (!(lhs.public_key_y == rhs.public_key_y)) {
2064 return false;
2065 }
2066 if (!(lhs.signature == rhs.signature)) {
2067 return false;
2068 }
2069 if (!(lhs.message == rhs.message)) {
2070 return false;
2071 }
2072 if (!(lhs.output == rhs.output)) {
2073 return false;
2074 }
2075 return true;
2076}
2077
2078inline std::vector<uint8_t> BlackBoxFuncCall::SchnorrVerify::bincodeSerialize() const
2079{
2080 auto serializer = serde::BincodeSerializer();
2082 return std::move(serializer).bytes();
2083}
2084
2085inline BlackBoxFuncCall::SchnorrVerify BlackBoxFuncCall::SchnorrVerify::bincodeDeserialize(std::vector<uint8_t> input)
2086{
2087 auto deserializer = serde::BincodeDeserializer(input);
2089 if (deserializer.get_buffer_offset() < input.size()) {
2090 throw_or_abort("Some input bytes were not read");
2091 }
2092 return value;
2093}
2094
2095} // end of namespace Circuit
2096
2097template <>
2098template <typename Serializer>
2100 const Circuit::BlackBoxFuncCall::SchnorrVerify& obj, Serializer& serializer)
2101{
2102 serde::Serializable<decltype(obj.public_key_x)>::serialize(obj.public_key_x, serializer);
2103 serde::Serializable<decltype(obj.public_key_y)>::serialize(obj.public_key_y, serializer);
2104 serde::Serializable<decltype(obj.signature)>::serialize(obj.signature, serializer);
2105 serde::Serializable<decltype(obj.message)>::serialize(obj.message, serializer);
2106 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2107}
2108
2109template <>
2110template <typename Deserializer>
2112 Deserializer& deserializer)
2113{
2115 obj.public_key_x = serde::Deserializable<decltype(obj.public_key_x)>::deserialize(deserializer);
2116 obj.public_key_y = serde::Deserializable<decltype(obj.public_key_y)>::deserialize(deserializer);
2117 obj.signature = serde::Deserializable<decltype(obj.signature)>::deserialize(deserializer);
2118 obj.message = serde::Deserializable<decltype(obj.message)>::deserialize(deserializer);
2119 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2120 return obj;
2121}
2122
2123namespace Circuit {
2124
2125inline bool operator==(const BlackBoxFuncCall::PedersenCommitment& lhs, const BlackBoxFuncCall::PedersenCommitment& rhs)
2126{
2127 if (!(lhs.inputs == rhs.inputs)) {
2128 return false;
2129 }
2130 if (!(lhs.domain_separator == rhs.domain_separator)) {
2131 return false;
2132 }
2133 if (!(lhs.outputs == rhs.outputs)) {
2134 return false;
2135 }
2136 return true;
2137}
2138
2139inline std::vector<uint8_t> BlackBoxFuncCall::PedersenCommitment::bincodeSerialize() const
2140{
2141 auto serializer = serde::BincodeSerializer();
2143 return std::move(serializer).bytes();
2144}
2145
2146inline BlackBoxFuncCall::PedersenCommitment BlackBoxFuncCall::PedersenCommitment::bincodeDeserialize(
2147 std::vector<uint8_t> input)
2148{
2149 auto deserializer = serde::BincodeDeserializer(input);
2151 if (deserializer.get_buffer_offset() < input.size()) {
2152 throw_or_abort("Some input bytes were not read");
2153 }
2154 return value;
2155}
2156
2157} // end of namespace Circuit
2158
2159template <>
2160template <typename Serializer>
2162 const Circuit::BlackBoxFuncCall::PedersenCommitment& obj, Serializer& serializer)
2163{
2164 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
2165 serde::Serializable<decltype(obj.domain_separator)>::serialize(obj.domain_separator, serializer);
2166 serde::Serializable<decltype(obj.outputs)>::serialize(obj.outputs, serializer);
2167}
2168
2169template <>
2170template <typename Deserializer>
2172 Circuit::BlackBoxFuncCall::PedersenCommitment>::deserialize(Deserializer& deserializer)
2173{
2175 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
2176 obj.domain_separator = serde::Deserializable<decltype(obj.domain_separator)>::deserialize(deserializer);
2177 obj.outputs = serde::Deserializable<decltype(obj.outputs)>::deserialize(deserializer);
2178 return obj;
2179}
2180
2181namespace Circuit {
2182
2183inline bool operator==(const BlackBoxFuncCall::PedersenHash& lhs, const BlackBoxFuncCall::PedersenHash& rhs)
2184{
2185 if (!(lhs.inputs == rhs.inputs)) {
2186 return false;
2187 }
2188 if (!(lhs.domain_separator == rhs.domain_separator)) {
2189 return false;
2190 }
2191 if (!(lhs.output == rhs.output)) {
2192 return false;
2193 }
2194 return true;
2195}
2196
2197inline std::vector<uint8_t> BlackBoxFuncCall::PedersenHash::bincodeSerialize() const
2198{
2199 auto serializer = serde::BincodeSerializer();
2201 return std::move(serializer).bytes();
2202}
2203
2204inline BlackBoxFuncCall::PedersenHash BlackBoxFuncCall::PedersenHash::bincodeDeserialize(std::vector<uint8_t> input)
2205{
2206 auto deserializer = serde::BincodeDeserializer(input);
2208 if (deserializer.get_buffer_offset() < input.size()) {
2209 throw_or_abort("Some input bytes were not read");
2210 }
2211 return value;
2212}
2213
2214} // end of namespace Circuit
2215
2216template <>
2217template <typename Serializer>
2219 const Circuit::BlackBoxFuncCall::PedersenHash& obj, Serializer& serializer)
2220{
2221 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
2222 serde::Serializable<decltype(obj.domain_separator)>::serialize(obj.domain_separator, serializer);
2223 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2224}
2225
2226template <>
2227template <typename Deserializer>
2229 Deserializer& deserializer)
2230{
2232 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
2233 obj.domain_separator = serde::Deserializable<decltype(obj.domain_separator)>::deserialize(deserializer);
2234 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2235 return obj;
2236}
2237
2238namespace Circuit {
2239
2240inline bool operator==(const BlackBoxFuncCall::HashToField128Security& lhs,
2241 const BlackBoxFuncCall::HashToField128Security& rhs)
2242{
2243 if (!(lhs.inputs == rhs.inputs)) {
2244 return false;
2245 }
2246 if (!(lhs.output == rhs.output)) {
2247 return false;
2248 }
2249 return true;
2250}
2251
2252inline std::vector<uint8_t> BlackBoxFuncCall::HashToField128Security::bincodeSerialize() const
2253{
2254 auto serializer = serde::BincodeSerializer();
2256 return std::move(serializer).bytes();
2257}
2258
2259inline BlackBoxFuncCall::HashToField128Security BlackBoxFuncCall::HashToField128Security::bincodeDeserialize(
2260 std::vector<uint8_t> input)
2261{
2262 auto deserializer = serde::BincodeDeserializer(input);
2264 if (deserializer.get_buffer_offset() < input.size()) {
2265 throw_or_abort("Some input bytes were not read");
2266 }
2267 return value;
2268}
2269
2270} // end of namespace Circuit
2271
2272template <>
2273template <typename Serializer>
2275 const Circuit::BlackBoxFuncCall::HashToField128Security& obj, Serializer& serializer)
2276{
2277 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
2278 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2279}
2280
2281template <>
2282template <typename Deserializer>
2284 Circuit::BlackBoxFuncCall::HashToField128Security>::deserialize(Deserializer& deserializer)
2285{
2287 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
2288 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2289 return obj;
2290}
2291
2292namespace Circuit {
2293
2294inline bool operator==(const BlackBoxFuncCall::EcdsaSecp256k1& lhs, const BlackBoxFuncCall::EcdsaSecp256k1& rhs)
2295{
2296 if (!(lhs.public_key_x == rhs.public_key_x)) {
2297 return false;
2298 }
2299 if (!(lhs.public_key_y == rhs.public_key_y)) {
2300 return false;
2301 }
2302 if (!(lhs.signature == rhs.signature)) {
2303 return false;
2304 }
2305 if (!(lhs.hashed_message == rhs.hashed_message)) {
2306 return false;
2307 }
2308 if (!(lhs.output == rhs.output)) {
2309 return false;
2310 }
2311 return true;
2312}
2313
2314inline std::vector<uint8_t> BlackBoxFuncCall::EcdsaSecp256k1::bincodeSerialize() const
2315{
2316 auto serializer = serde::BincodeSerializer();
2318 return std::move(serializer).bytes();
2319}
2320
2321inline BlackBoxFuncCall::EcdsaSecp256k1 BlackBoxFuncCall::EcdsaSecp256k1::bincodeDeserialize(std::vector<uint8_t> input)
2322{
2323 auto deserializer = serde::BincodeDeserializer(input);
2325 if (deserializer.get_buffer_offset() < input.size()) {
2326 throw_or_abort("Some input bytes were not read");
2327 }
2328 return value;
2329}
2330
2331} // end of namespace Circuit
2332
2333template <>
2334template <typename Serializer>
2336 const Circuit::BlackBoxFuncCall::EcdsaSecp256k1& obj, Serializer& serializer)
2337{
2338 serde::Serializable<decltype(obj.public_key_x)>::serialize(obj.public_key_x, serializer);
2339 serde::Serializable<decltype(obj.public_key_y)>::serialize(obj.public_key_y, serializer);
2340 serde::Serializable<decltype(obj.signature)>::serialize(obj.signature, serializer);
2341 serde::Serializable<decltype(obj.hashed_message)>::serialize(obj.hashed_message, serializer);
2342 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2343}
2344
2345template <>
2346template <typename Deserializer>
2348 Deserializer& deserializer)
2349{
2351 obj.public_key_x = serde::Deserializable<decltype(obj.public_key_x)>::deserialize(deserializer);
2352 obj.public_key_y = serde::Deserializable<decltype(obj.public_key_y)>::deserialize(deserializer);
2353 obj.signature = serde::Deserializable<decltype(obj.signature)>::deserialize(deserializer);
2354 obj.hashed_message = serde::Deserializable<decltype(obj.hashed_message)>::deserialize(deserializer);
2355 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2356 return obj;
2357}
2358
2359namespace Circuit {
2360
2361inline bool operator==(const BlackBoxFuncCall::EcdsaSecp256r1& lhs, const BlackBoxFuncCall::EcdsaSecp256r1& rhs)
2362{
2363 if (!(lhs.public_key_x == rhs.public_key_x)) {
2364 return false;
2365 }
2366 if (!(lhs.public_key_y == rhs.public_key_y)) {
2367 return false;
2368 }
2369 if (!(lhs.signature == rhs.signature)) {
2370 return false;
2371 }
2372 if (!(lhs.hashed_message == rhs.hashed_message)) {
2373 return false;
2374 }
2375 if (!(lhs.output == rhs.output)) {
2376 return false;
2377 }
2378 return true;
2379}
2380
2381inline std::vector<uint8_t> BlackBoxFuncCall::EcdsaSecp256r1::bincodeSerialize() const
2382{
2383 auto serializer = serde::BincodeSerializer();
2385 return std::move(serializer).bytes();
2386}
2387
2388inline BlackBoxFuncCall::EcdsaSecp256r1 BlackBoxFuncCall::EcdsaSecp256r1::bincodeDeserialize(std::vector<uint8_t> input)
2389{
2390 auto deserializer = serde::BincodeDeserializer(input);
2392 if (deserializer.get_buffer_offset() < input.size()) {
2393 throw_or_abort("Some input bytes were not read");
2394 }
2395 return value;
2396}
2397
2398} // end of namespace Circuit
2399
2400template <>
2401template <typename Serializer>
2403 const Circuit::BlackBoxFuncCall::EcdsaSecp256r1& obj, Serializer& serializer)
2404{
2405 serde::Serializable<decltype(obj.public_key_x)>::serialize(obj.public_key_x, serializer);
2406 serde::Serializable<decltype(obj.public_key_y)>::serialize(obj.public_key_y, serializer);
2407 serde::Serializable<decltype(obj.signature)>::serialize(obj.signature, serializer);
2408 serde::Serializable<decltype(obj.hashed_message)>::serialize(obj.hashed_message, serializer);
2409 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2410}
2411
2412template <>
2413template <typename Deserializer>
2415 Deserializer& deserializer)
2416{
2418 obj.public_key_x = serde::Deserializable<decltype(obj.public_key_x)>::deserialize(deserializer);
2419 obj.public_key_y = serde::Deserializable<decltype(obj.public_key_y)>::deserialize(deserializer);
2420 obj.signature = serde::Deserializable<decltype(obj.signature)>::deserialize(deserializer);
2421 obj.hashed_message = serde::Deserializable<decltype(obj.hashed_message)>::deserialize(deserializer);
2422 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2423 return obj;
2424}
2425
2426namespace Circuit {
2427
2428inline bool operator==(const BlackBoxFuncCall::FixedBaseScalarMul& lhs, const BlackBoxFuncCall::FixedBaseScalarMul& rhs)
2429{
2430 if (!(lhs.low == rhs.low)) {
2431 return false;
2432 }
2433 if (!(lhs.high == rhs.high)) {
2434 return false;
2435 }
2436 if (!(lhs.outputs == rhs.outputs)) {
2437 return false;
2438 }
2439 return true;
2440}
2441
2442inline std::vector<uint8_t> BlackBoxFuncCall::FixedBaseScalarMul::bincodeSerialize() const
2443{
2444 auto serializer = serde::BincodeSerializer();
2446 return std::move(serializer).bytes();
2447}
2448
2449inline BlackBoxFuncCall::FixedBaseScalarMul BlackBoxFuncCall::FixedBaseScalarMul::bincodeDeserialize(
2450 std::vector<uint8_t> input)
2451{
2452 auto deserializer = serde::BincodeDeserializer(input);
2454 if (deserializer.get_buffer_offset() < input.size()) {
2455 throw_or_abort("Some input bytes were not read");
2456 }
2457 return value;
2458}
2459
2460} // end of namespace Circuit
2461
2462template <>
2463template <typename Serializer>
2465 const Circuit::BlackBoxFuncCall::FixedBaseScalarMul& obj, Serializer& serializer)
2466{
2467 serde::Serializable<decltype(obj.low)>::serialize(obj.low, serializer);
2468 serde::Serializable<decltype(obj.high)>::serialize(obj.high, serializer);
2469 serde::Serializable<decltype(obj.outputs)>::serialize(obj.outputs, serializer);
2470}
2471
2472template <>
2473template <typename Deserializer>
2475 Circuit::BlackBoxFuncCall::FixedBaseScalarMul>::deserialize(Deserializer& deserializer)
2476{
2478 obj.low = serde::Deserializable<decltype(obj.low)>::deserialize(deserializer);
2479 obj.high = serde::Deserializable<decltype(obj.high)>::deserialize(deserializer);
2480 obj.outputs = serde::Deserializable<decltype(obj.outputs)>::deserialize(deserializer);
2481 return obj;
2482}
2483
2484namespace Circuit {
2485
2486inline bool operator==(const BlackBoxFuncCall::Keccak256& lhs, const BlackBoxFuncCall::Keccak256& rhs)
2487{
2488 if (!(lhs.inputs == rhs.inputs)) {
2489 return false;
2490 }
2491 if (!(lhs.outputs == rhs.outputs)) {
2492 return false;
2493 }
2494 return true;
2495}
2496
2497inline std::vector<uint8_t> BlackBoxFuncCall::Keccak256::bincodeSerialize() const
2498{
2499 auto serializer = serde::BincodeSerializer();
2501 return std::move(serializer).bytes();
2502}
2503
2504inline BlackBoxFuncCall::Keccak256 BlackBoxFuncCall::Keccak256::bincodeDeserialize(std::vector<uint8_t> input)
2505{
2506 auto deserializer = serde::BincodeDeserializer(input);
2508 if (deserializer.get_buffer_offset() < input.size()) {
2509 throw_or_abort("Some input bytes were not read");
2510 }
2511 return value;
2512}
2513
2514} // end of namespace Circuit
2515
2516template <>
2517template <typename Serializer>
2519 const Circuit::BlackBoxFuncCall::Keccak256& obj, Serializer& serializer)
2520{
2521 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
2522 serde::Serializable<decltype(obj.outputs)>::serialize(obj.outputs, serializer);
2523}
2524
2525template <>
2526template <typename Deserializer>
2528 Deserializer& deserializer)
2529{
2531 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
2532 obj.outputs = serde::Deserializable<decltype(obj.outputs)>::deserialize(deserializer);
2533 return obj;
2534}
2535
2536namespace Circuit {
2537
2538inline bool operator==(const BlackBoxFuncCall::Keccak256VariableLength& lhs,
2539 const BlackBoxFuncCall::Keccak256VariableLength& rhs)
2540{
2541 if (!(lhs.inputs == rhs.inputs)) {
2542 return false;
2543 }
2544 if (!(lhs.var_message_size == rhs.var_message_size)) {
2545 return false;
2546 }
2547 if (!(lhs.outputs == rhs.outputs)) {
2548 return false;
2549 }
2550 return true;
2551}
2552
2553inline std::vector<uint8_t> BlackBoxFuncCall::Keccak256VariableLength::bincodeSerialize() const
2554{
2555 auto serializer = serde::BincodeSerializer();
2557 return std::move(serializer).bytes();
2558}
2559
2560inline BlackBoxFuncCall::Keccak256VariableLength BlackBoxFuncCall::Keccak256VariableLength::bincodeDeserialize(
2561 std::vector<uint8_t> input)
2562{
2563 auto deserializer = serde::BincodeDeserializer(input);
2565 if (deserializer.get_buffer_offset() < input.size()) {
2566 throw_or_abort("Some input bytes were not read");
2567 }
2568 return value;
2569}
2570
2571} // end of namespace Circuit
2572
2573template <>
2574template <typename Serializer>
2576 const Circuit::BlackBoxFuncCall::Keccak256VariableLength& obj, Serializer& serializer)
2577{
2578 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
2579 serde::Serializable<decltype(obj.var_message_size)>::serialize(obj.var_message_size, serializer);
2580 serde::Serializable<decltype(obj.outputs)>::serialize(obj.outputs, serializer);
2581}
2582
2583template <>
2584template <typename Deserializer>
2586 Circuit::BlackBoxFuncCall::Keccak256VariableLength>::deserialize(Deserializer& deserializer)
2587{
2589 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
2590 obj.var_message_size = serde::Deserializable<decltype(obj.var_message_size)>::deserialize(deserializer);
2591 obj.outputs = serde::Deserializable<decltype(obj.outputs)>::deserialize(deserializer);
2592 return obj;
2593}
2594
2595namespace Circuit {
2596
2597inline bool operator==(const BlackBoxFuncCall::RecursiveAggregation& lhs,
2598 const BlackBoxFuncCall::RecursiveAggregation& rhs)
2599{
2600 if (!(lhs.verification_key == rhs.verification_key)) {
2601 return false;
2602 }
2603 if (!(lhs.proof == rhs.proof)) {
2604 return false;
2605 }
2606 if (!(lhs.public_inputs == rhs.public_inputs)) {
2607 return false;
2608 }
2609 if (!(lhs.key_hash == rhs.key_hash)) {
2610 return false;
2611 }
2612 if (!(lhs.input_aggregation_object == rhs.input_aggregation_object)) {
2613 return false;
2614 }
2615 if (!(lhs.output_aggregation_object == rhs.output_aggregation_object)) {
2616 return false;
2617 }
2618 return true;
2619}
2620
2621inline std::vector<uint8_t> BlackBoxFuncCall::RecursiveAggregation::bincodeSerialize() const
2622{
2623 auto serializer = serde::BincodeSerializer();
2625 return std::move(serializer).bytes();
2626}
2627
2628inline BlackBoxFuncCall::RecursiveAggregation BlackBoxFuncCall::RecursiveAggregation::bincodeDeserialize(
2629 std::vector<uint8_t> input)
2630{
2631 auto deserializer = serde::BincodeDeserializer(input);
2633 if (deserializer.get_buffer_offset() < input.size()) {
2634 throw_or_abort("Some input bytes were not read");
2635 }
2636 return value;
2637}
2638
2639} // end of namespace Circuit
2640
2641template <>
2642template <typename Serializer>
2644 const Circuit::BlackBoxFuncCall::RecursiveAggregation& obj, Serializer& serializer)
2645{
2646 serde::Serializable<decltype(obj.verification_key)>::serialize(obj.verification_key, serializer);
2647 serde::Serializable<decltype(obj.proof)>::serialize(obj.proof, serializer);
2648 serde::Serializable<decltype(obj.public_inputs)>::serialize(obj.public_inputs, serializer);
2649 serde::Serializable<decltype(obj.key_hash)>::serialize(obj.key_hash, serializer);
2650 serde::Serializable<decltype(obj.input_aggregation_object)>::serialize(obj.input_aggregation_object, serializer);
2651 serde::Serializable<decltype(obj.output_aggregation_object)>::serialize(obj.output_aggregation_object, serializer);
2652}
2653
2654template <>
2655template <typename Deserializer>
2657 Circuit::BlackBoxFuncCall::RecursiveAggregation>::deserialize(Deserializer& deserializer)
2658{
2660 obj.verification_key = serde::Deserializable<decltype(obj.verification_key)>::deserialize(deserializer);
2661 obj.proof = serde::Deserializable<decltype(obj.proof)>::deserialize(deserializer);
2662 obj.public_inputs = serde::Deserializable<decltype(obj.public_inputs)>::deserialize(deserializer);
2663 obj.key_hash = serde::Deserializable<decltype(obj.key_hash)>::deserialize(deserializer);
2664 obj.input_aggregation_object =
2665 serde::Deserializable<decltype(obj.input_aggregation_object)>::deserialize(deserializer);
2666 obj.output_aggregation_object =
2667 serde::Deserializable<decltype(obj.output_aggregation_object)>::deserialize(deserializer);
2668 return obj;
2669}
2670
2671namespace Circuit {
2672
2673inline bool operator==(const BlackBoxOp& lhs, const BlackBoxOp& rhs)
2674{
2675 if (!(lhs.value == rhs.value)) {
2676 return false;
2677 }
2678 return true;
2679}
2680
2681inline std::vector<uint8_t> BlackBoxOp::bincodeSerialize() const
2682{
2683 auto serializer = serde::BincodeSerializer();
2685 return std::move(serializer).bytes();
2686}
2687
2688inline BlackBoxOp BlackBoxOp::bincodeDeserialize(std::vector<uint8_t> input)
2689{
2690 auto deserializer = serde::BincodeDeserializer(input);
2691 auto value = serde::Deserializable<BlackBoxOp>::deserialize(deserializer);
2692 if (deserializer.get_buffer_offset() < input.size()) {
2693 throw_or_abort("Some input bytes were not read");
2694 }
2695 return value;
2696}
2697
2698} // end of namespace Circuit
2699
2700template <>
2701template <typename Serializer>
2702void serde::Serializable<Circuit::BlackBoxOp>::serialize(const Circuit::BlackBoxOp& obj, Serializer& serializer)
2703{
2704 serializer.increase_container_depth();
2705 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
2706 serializer.decrease_container_depth();
2707}
2708
2709template <>
2710template <typename Deserializer>
2712{
2713 deserializer.increase_container_depth();
2715 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
2716 deserializer.decrease_container_depth();
2717 return obj;
2718}
2719
2720namespace Circuit {
2721
2722inline bool operator==(const BlackBoxOp::Sha256& lhs, const BlackBoxOp::Sha256& rhs)
2723{
2724 if (!(lhs.message == rhs.message)) {
2725 return false;
2726 }
2727 if (!(lhs.output == rhs.output)) {
2728 return false;
2729 }
2730 return true;
2731}
2732
2733inline std::vector<uint8_t> BlackBoxOp::Sha256::bincodeSerialize() const
2734{
2735 auto serializer = serde::BincodeSerializer();
2737 return std::move(serializer).bytes();
2738}
2739
2740inline BlackBoxOp::Sha256 BlackBoxOp::Sha256::bincodeDeserialize(std::vector<uint8_t> input)
2741{
2742 auto deserializer = serde::BincodeDeserializer(input);
2744 if (deserializer.get_buffer_offset() < input.size()) {
2745 throw_or_abort("Some input bytes were not read");
2746 }
2747 return value;
2748}
2749
2750} // end of namespace Circuit
2751
2752template <>
2753template <typename Serializer>
2755 Serializer& serializer)
2756{
2757 serde::Serializable<decltype(obj.message)>::serialize(obj.message, serializer);
2758 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2759}
2760
2761template <>
2762template <typename Deserializer>
2764{
2766 obj.message = serde::Deserializable<decltype(obj.message)>::deserialize(deserializer);
2767 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2768 return obj;
2769}
2770
2771namespace Circuit {
2772
2773inline bool operator==(const BlackBoxOp::Blake2s& lhs, const BlackBoxOp::Blake2s& rhs)
2774{
2775 if (!(lhs.message == rhs.message)) {
2776 return false;
2777 }
2778 if (!(lhs.output == rhs.output)) {
2779 return false;
2780 }
2781 return true;
2782}
2783
2784inline std::vector<uint8_t> BlackBoxOp::Blake2s::bincodeSerialize() const
2785{
2786 auto serializer = serde::BincodeSerializer();
2788 return std::move(serializer).bytes();
2789}
2790
2791inline BlackBoxOp::Blake2s BlackBoxOp::Blake2s::bincodeDeserialize(std::vector<uint8_t> input)
2792{
2793 auto deserializer = serde::BincodeDeserializer(input);
2795 if (deserializer.get_buffer_offset() < input.size()) {
2796 throw_or_abort("Some input bytes were not read");
2797 }
2798 return value;
2799}
2800
2801} // end of namespace Circuit
2802
2803template <>
2804template <typename Serializer>
2806 Serializer& serializer)
2807{
2808 serde::Serializable<decltype(obj.message)>::serialize(obj.message, serializer);
2809 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2810}
2811
2812template <>
2813template <typename Deserializer>
2815 Deserializer& deserializer)
2816{
2818 obj.message = serde::Deserializable<decltype(obj.message)>::deserialize(deserializer);
2819 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2820 return obj;
2821}
2822
2823namespace Circuit {
2824
2825inline bool operator==(const BlackBoxOp::Keccak256& lhs, const BlackBoxOp::Keccak256& rhs)
2826{
2827 if (!(lhs.message == rhs.message)) {
2828 return false;
2829 }
2830 if (!(lhs.output == rhs.output)) {
2831 return false;
2832 }
2833 return true;
2834}
2835
2836inline std::vector<uint8_t> BlackBoxOp::Keccak256::bincodeSerialize() const
2837{
2838 auto serializer = serde::BincodeSerializer();
2840 return std::move(serializer).bytes();
2841}
2842
2843inline BlackBoxOp::Keccak256 BlackBoxOp::Keccak256::bincodeDeserialize(std::vector<uint8_t> input)
2844{
2845 auto deserializer = serde::BincodeDeserializer(input);
2847 if (deserializer.get_buffer_offset() < input.size()) {
2848 throw_or_abort("Some input bytes were not read");
2849 }
2850 return value;
2851}
2852
2853} // end of namespace Circuit
2854
2855template <>
2856template <typename Serializer>
2858 Serializer& serializer)
2859{
2860 serde::Serializable<decltype(obj.message)>::serialize(obj.message, serializer);
2861 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2862}
2863
2864template <>
2865template <typename Deserializer>
2867 Deserializer& deserializer)
2868{
2870 obj.message = serde::Deserializable<decltype(obj.message)>::deserialize(deserializer);
2871 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2872 return obj;
2873}
2874
2875namespace Circuit {
2876
2877inline bool operator==(const BlackBoxOp::HashToField128Security& lhs, const BlackBoxOp::HashToField128Security& rhs)
2878{
2879 if (!(lhs.message == rhs.message)) {
2880 return false;
2881 }
2882 if (!(lhs.output == rhs.output)) {
2883 return false;
2884 }
2885 return true;
2886}
2887
2888inline std::vector<uint8_t> BlackBoxOp::HashToField128Security::bincodeSerialize() const
2889{
2890 auto serializer = serde::BincodeSerializer();
2892 return std::move(serializer).bytes();
2893}
2894
2895inline BlackBoxOp::HashToField128Security BlackBoxOp::HashToField128Security::bincodeDeserialize(
2896 std::vector<uint8_t> input)
2897{
2898 auto deserializer = serde::BincodeDeserializer(input);
2900 if (deserializer.get_buffer_offset() < input.size()) {
2901 throw_or_abort("Some input bytes were not read");
2902 }
2903 return value;
2904}
2905
2906} // end of namespace Circuit
2907
2908template <>
2909template <typename Serializer>
2911 const Circuit::BlackBoxOp::HashToField128Security& obj, Serializer& serializer)
2912{
2913 serde::Serializable<decltype(obj.message)>::serialize(obj.message, serializer);
2914 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
2915}
2916
2917template <>
2918template <typename Deserializer>
2920 Circuit::BlackBoxOp::HashToField128Security>::deserialize(Deserializer& deserializer)
2921{
2923 obj.message = serde::Deserializable<decltype(obj.message)>::deserialize(deserializer);
2924 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
2925 return obj;
2926}
2927
2928namespace Circuit {
2929
2930inline bool operator==(const BlackBoxOp::EcdsaSecp256k1& lhs, const BlackBoxOp::EcdsaSecp256k1& rhs)
2931{
2932 if (!(lhs.hashed_msg == rhs.hashed_msg)) {
2933 return false;
2934 }
2935 if (!(lhs.public_key_x == rhs.public_key_x)) {
2936 return false;
2937 }
2938 if (!(lhs.public_key_y == rhs.public_key_y)) {
2939 return false;
2940 }
2941 if (!(lhs.signature == rhs.signature)) {
2942 return false;
2943 }
2944 if (!(lhs.result == rhs.result)) {
2945 return false;
2946 }
2947 return true;
2948}
2949
2950inline std::vector<uint8_t> BlackBoxOp::EcdsaSecp256k1::bincodeSerialize() const
2951{
2952 auto serializer = serde::BincodeSerializer();
2954 return std::move(serializer).bytes();
2955}
2956
2957inline BlackBoxOp::EcdsaSecp256k1 BlackBoxOp::EcdsaSecp256k1::bincodeDeserialize(std::vector<uint8_t> input)
2958{
2959 auto deserializer = serde::BincodeDeserializer(input);
2961 if (deserializer.get_buffer_offset() < input.size()) {
2962 throw_or_abort("Some input bytes were not read");
2963 }
2964 return value;
2965}
2966
2967} // end of namespace Circuit
2968
2969template <>
2970template <typename Serializer>
2972 Serializer& serializer)
2973{
2974 serde::Serializable<decltype(obj.hashed_msg)>::serialize(obj.hashed_msg, serializer);
2975 serde::Serializable<decltype(obj.public_key_x)>::serialize(obj.public_key_x, serializer);
2976 serde::Serializable<decltype(obj.public_key_y)>::serialize(obj.public_key_y, serializer);
2977 serde::Serializable<decltype(obj.signature)>::serialize(obj.signature, serializer);
2978 serde::Serializable<decltype(obj.result)>::serialize(obj.result, serializer);
2979}
2980
2981template <>
2982template <typename Deserializer>
2984 Deserializer& deserializer)
2985{
2987 obj.hashed_msg = serde::Deserializable<decltype(obj.hashed_msg)>::deserialize(deserializer);
2988 obj.public_key_x = serde::Deserializable<decltype(obj.public_key_x)>::deserialize(deserializer);
2989 obj.public_key_y = serde::Deserializable<decltype(obj.public_key_y)>::deserialize(deserializer);
2990 obj.signature = serde::Deserializable<decltype(obj.signature)>::deserialize(deserializer);
2991 obj.result = serde::Deserializable<decltype(obj.result)>::deserialize(deserializer);
2992 return obj;
2993}
2994
2995namespace Circuit {
2996
2997inline bool operator==(const BlackBoxOp::EcdsaSecp256r1& lhs, const BlackBoxOp::EcdsaSecp256r1& rhs)
2998{
2999 if (!(lhs.hashed_msg == rhs.hashed_msg)) {
3000 return false;
3001 }
3002 if (!(lhs.public_key_x == rhs.public_key_x)) {
3003 return false;
3004 }
3005 if (!(lhs.public_key_y == rhs.public_key_y)) {
3006 return false;
3007 }
3008 if (!(lhs.signature == rhs.signature)) {
3009 return false;
3010 }
3011 if (!(lhs.result == rhs.result)) {
3012 return false;
3013 }
3014 return true;
3015}
3016
3017inline std::vector<uint8_t> BlackBoxOp::EcdsaSecp256r1::bincodeSerialize() const
3018{
3019 auto serializer = serde::BincodeSerializer();
3021 return std::move(serializer).bytes();
3022}
3023
3024inline BlackBoxOp::EcdsaSecp256r1 BlackBoxOp::EcdsaSecp256r1::bincodeDeserialize(std::vector<uint8_t> input)
3025{
3026 auto deserializer = serde::BincodeDeserializer(input);
3028 if (deserializer.get_buffer_offset() < input.size()) {
3029 throw_or_abort("Some input bytes were not read");
3030 }
3031 return value;
3032}
3033
3034} // end of namespace Circuit
3035
3036template <>
3037template <typename Serializer>
3039 Serializer& serializer)
3040{
3041 serde::Serializable<decltype(obj.hashed_msg)>::serialize(obj.hashed_msg, serializer);
3042 serde::Serializable<decltype(obj.public_key_x)>::serialize(obj.public_key_x, serializer);
3043 serde::Serializable<decltype(obj.public_key_y)>::serialize(obj.public_key_y, serializer);
3044 serde::Serializable<decltype(obj.signature)>::serialize(obj.signature, serializer);
3045 serde::Serializable<decltype(obj.result)>::serialize(obj.result, serializer);
3046}
3047
3048template <>
3049template <typename Deserializer>
3051 Deserializer& deserializer)
3052{
3054 obj.hashed_msg = serde::Deserializable<decltype(obj.hashed_msg)>::deserialize(deserializer);
3055 obj.public_key_x = serde::Deserializable<decltype(obj.public_key_x)>::deserialize(deserializer);
3056 obj.public_key_y = serde::Deserializable<decltype(obj.public_key_y)>::deserialize(deserializer);
3057 obj.signature = serde::Deserializable<decltype(obj.signature)>::deserialize(deserializer);
3058 obj.result = serde::Deserializable<decltype(obj.result)>::deserialize(deserializer);
3059 return obj;
3060}
3061
3062namespace Circuit {
3063
3064inline bool operator==(const BlackBoxOp::SchnorrVerify& lhs, const BlackBoxOp::SchnorrVerify& rhs)
3065{
3066 if (!(lhs.public_key_x == rhs.public_key_x)) {
3067 return false;
3068 }
3069 if (!(lhs.public_key_y == rhs.public_key_y)) {
3070 return false;
3071 }
3072 if (!(lhs.message == rhs.message)) {
3073 return false;
3074 }
3075 if (!(lhs.signature == rhs.signature)) {
3076 return false;
3077 }
3078 if (!(lhs.result == rhs.result)) {
3079 return false;
3080 }
3081 return true;
3082}
3083
3084inline std::vector<uint8_t> BlackBoxOp::SchnorrVerify::bincodeSerialize() const
3085{
3086 auto serializer = serde::BincodeSerializer();
3088 return std::move(serializer).bytes();
3089}
3090
3091inline BlackBoxOp::SchnorrVerify BlackBoxOp::SchnorrVerify::bincodeDeserialize(std::vector<uint8_t> input)
3092{
3093 auto deserializer = serde::BincodeDeserializer(input);
3095 if (deserializer.get_buffer_offset() < input.size()) {
3096 throw_or_abort("Some input bytes were not read");
3097 }
3098 return value;
3099}
3100
3101} // end of namespace Circuit
3102
3103template <>
3104template <typename Serializer>
3106 Serializer& serializer)
3107{
3108 serde::Serializable<decltype(obj.public_key_x)>::serialize(obj.public_key_x, serializer);
3109 serde::Serializable<decltype(obj.public_key_y)>::serialize(obj.public_key_y, serializer);
3110 serde::Serializable<decltype(obj.message)>::serialize(obj.message, serializer);
3111 serde::Serializable<decltype(obj.signature)>::serialize(obj.signature, serializer);
3112 serde::Serializable<decltype(obj.result)>::serialize(obj.result, serializer);
3113}
3114
3115template <>
3116template <typename Deserializer>
3118 Deserializer& deserializer)
3119{
3121 obj.public_key_x = serde::Deserializable<decltype(obj.public_key_x)>::deserialize(deserializer);
3122 obj.public_key_y = serde::Deserializable<decltype(obj.public_key_y)>::deserialize(deserializer);
3123 obj.message = serde::Deserializable<decltype(obj.message)>::deserialize(deserializer);
3124 obj.signature = serde::Deserializable<decltype(obj.signature)>::deserialize(deserializer);
3125 obj.result = serde::Deserializable<decltype(obj.result)>::deserialize(deserializer);
3126 return obj;
3127}
3128
3129namespace Circuit {
3130
3131inline bool operator==(const BlackBoxOp::PedersenCommitment& lhs, const BlackBoxOp::PedersenCommitment& rhs)
3132{
3133 if (!(lhs.inputs == rhs.inputs)) {
3134 return false;
3135 }
3136 if (!(lhs.domain_separator == rhs.domain_separator)) {
3137 return false;
3138 }
3139 if (!(lhs.output == rhs.output)) {
3140 return false;
3141 }
3142 return true;
3143}
3144
3145inline std::vector<uint8_t> BlackBoxOp::PedersenCommitment::bincodeSerialize() const
3146{
3147 auto serializer = serde::BincodeSerializer();
3149 return std::move(serializer).bytes();
3150}
3151
3152inline BlackBoxOp::PedersenCommitment BlackBoxOp::PedersenCommitment::bincodeDeserialize(std::vector<uint8_t> input)
3153{
3154 auto deserializer = serde::BincodeDeserializer(input);
3156 if (deserializer.get_buffer_offset() < input.size()) {
3157 throw_or_abort("Some input bytes were not read");
3158 }
3159 return value;
3160}
3161
3162} // end of namespace Circuit
3163
3164template <>
3165template <typename Serializer>
3167 const Circuit::BlackBoxOp::PedersenCommitment& obj, Serializer& serializer)
3168{
3169 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
3170 serde::Serializable<decltype(obj.domain_separator)>::serialize(obj.domain_separator, serializer);
3171 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
3172}
3173
3174template <>
3175template <typename Deserializer>
3177 Deserializer& deserializer)
3178{
3180 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
3181 obj.domain_separator = serde::Deserializable<decltype(obj.domain_separator)>::deserialize(deserializer);
3182 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
3183 return obj;
3184}
3185
3186namespace Circuit {
3187
3188inline bool operator==(const BlackBoxOp::PedersenHash& lhs, const BlackBoxOp::PedersenHash& rhs)
3189{
3190 if (!(lhs.inputs == rhs.inputs)) {
3191 return false;
3192 }
3193 if (!(lhs.domain_separator == rhs.domain_separator)) {
3194 return false;
3195 }
3196 if (!(lhs.output == rhs.output)) {
3197 return false;
3198 }
3199 return true;
3200}
3201
3202inline std::vector<uint8_t> BlackBoxOp::PedersenHash::bincodeSerialize() const
3203{
3204 auto serializer = serde::BincodeSerializer();
3206 return std::move(serializer).bytes();
3207}
3208
3209inline BlackBoxOp::PedersenHash BlackBoxOp::PedersenHash::bincodeDeserialize(std::vector<uint8_t> input)
3210{
3211 auto deserializer = serde::BincodeDeserializer(input);
3213 if (deserializer.get_buffer_offset() < input.size()) {
3214 throw_or_abort("Some input bytes were not read");
3215 }
3216 return value;
3217}
3218
3219} // end of namespace Circuit
3220
3221template <>
3222template <typename Serializer>
3224 Serializer& serializer)
3225{
3226 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
3227 serde::Serializable<decltype(obj.domain_separator)>::serialize(obj.domain_separator, serializer);
3228 serde::Serializable<decltype(obj.output)>::serialize(obj.output, serializer);
3229}
3230
3231template <>
3232template <typename Deserializer>
3234 Deserializer& deserializer)
3235{
3237 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
3238 obj.domain_separator = serde::Deserializable<decltype(obj.domain_separator)>::deserialize(deserializer);
3239 obj.output = serde::Deserializable<decltype(obj.output)>::deserialize(deserializer);
3240 return obj;
3241}
3242
3243namespace Circuit {
3244
3245inline bool operator==(const BlackBoxOp::FixedBaseScalarMul& lhs, const BlackBoxOp::FixedBaseScalarMul& rhs)
3246{
3247 if (!(lhs.low == rhs.low)) {
3248 return false;
3249 }
3250 if (!(lhs.high == rhs.high)) {
3251 return false;
3252 }
3253 if (!(lhs.result == rhs.result)) {
3254 return false;
3255 }
3256 return true;
3257}
3258
3259inline std::vector<uint8_t> BlackBoxOp::FixedBaseScalarMul::bincodeSerialize() const
3260{
3261 auto serializer = serde::BincodeSerializer();
3263 return std::move(serializer).bytes();
3264}
3265
3266inline BlackBoxOp::FixedBaseScalarMul BlackBoxOp::FixedBaseScalarMul::bincodeDeserialize(std::vector<uint8_t> input)
3267{
3268 auto deserializer = serde::BincodeDeserializer(input);
3270 if (deserializer.get_buffer_offset() < input.size()) {
3271 throw_or_abort("Some input bytes were not read");
3272 }
3273 return value;
3274}
3275
3276} // end of namespace Circuit
3277
3278template <>
3279template <typename Serializer>
3281 const Circuit::BlackBoxOp::FixedBaseScalarMul& obj, Serializer& serializer)
3282{
3283 serde::Serializable<decltype(obj.low)>::serialize(obj.low, serializer);
3284 serde::Serializable<decltype(obj.high)>::serialize(obj.high, serializer);
3285 serde::Serializable<decltype(obj.result)>::serialize(obj.result, serializer);
3286}
3287
3288template <>
3289template <typename Deserializer>
3291 Deserializer& deserializer)
3292{
3294 obj.low = serde::Deserializable<decltype(obj.low)>::deserialize(deserializer);
3295 obj.high = serde::Deserializable<decltype(obj.high)>::deserialize(deserializer);
3296 obj.result = serde::Deserializable<decltype(obj.result)>::deserialize(deserializer);
3297 return obj;
3298}
3299
3300namespace Circuit {
3301
3302inline bool operator==(const BlockId& lhs, const BlockId& rhs)
3303{
3304 if (!(lhs.value == rhs.value)) {
3305 return false;
3306 }
3307 return true;
3308}
3309
3310inline std::vector<uint8_t> BlockId::bincodeSerialize() const
3311{
3312 auto serializer = serde::BincodeSerializer();
3313 serde::Serializable<BlockId>::serialize(*this, serializer);
3314 return std::move(serializer).bytes();
3315}
3316
3317inline BlockId BlockId::bincodeDeserialize(std::vector<uint8_t> input)
3318{
3319 auto deserializer = serde::BincodeDeserializer(input);
3320 auto value = serde::Deserializable<BlockId>::deserialize(deserializer);
3321 if (deserializer.get_buffer_offset() < input.size()) {
3322 throw_or_abort("Some input bytes were not read");
3323 }
3324 return value;
3325}
3326
3327} // end of namespace Circuit
3328
3329template <>
3330template <typename Serializer>
3331void serde::Serializable<Circuit::BlockId>::serialize(const Circuit::BlockId& obj, Serializer& serializer)
3332{
3333 serializer.increase_container_depth();
3334 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
3335 serializer.decrease_container_depth();
3336}
3337
3338template <>
3339template <typename Deserializer>
3341{
3342 deserializer.increase_container_depth();
3343 Circuit::BlockId obj;
3344 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
3345 deserializer.decrease_container_depth();
3346 return obj;
3347}
3348
3349namespace Circuit {
3350
3351inline bool operator==(const Brillig& lhs, const Brillig& rhs)
3352{
3353 if (!(lhs.inputs == rhs.inputs)) {
3354 return false;
3355 }
3356 if (!(lhs.outputs == rhs.outputs)) {
3357 return false;
3358 }
3359 if (!(lhs.bytecode == rhs.bytecode)) {
3360 return false;
3361 }
3362 if (!(lhs.predicate == rhs.predicate)) {
3363 return false;
3364 }
3365 return true;
3366}
3367
3368inline std::vector<uint8_t> Brillig::bincodeSerialize() const
3369{
3370 auto serializer = serde::BincodeSerializer();
3371 serde::Serializable<Brillig>::serialize(*this, serializer);
3372 return std::move(serializer).bytes();
3373}
3374
3375inline Brillig Brillig::bincodeDeserialize(std::vector<uint8_t> input)
3376{
3377 auto deserializer = serde::BincodeDeserializer(input);
3378 auto value = serde::Deserializable<Brillig>::deserialize(deserializer);
3379 if (deserializer.get_buffer_offset() < input.size()) {
3380 throw_or_abort("Some input bytes were not read");
3381 }
3382 return value;
3383}
3384
3385} // end of namespace Circuit
3386
3387template <>
3388template <typename Serializer>
3389void serde::Serializable<Circuit::Brillig>::serialize(const Circuit::Brillig& obj, Serializer& serializer)
3390{
3391 serializer.increase_container_depth();
3392 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
3393 serde::Serializable<decltype(obj.outputs)>::serialize(obj.outputs, serializer);
3394 serde::Serializable<decltype(obj.bytecode)>::serialize(obj.bytecode, serializer);
3395 serde::Serializable<decltype(obj.predicate)>::serialize(obj.predicate, serializer);
3396 serializer.decrease_container_depth();
3397}
3398
3399template <>
3400template <typename Deserializer>
3402{
3403 deserializer.increase_container_depth();
3404 Circuit::Brillig obj;
3405 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
3406 obj.outputs = serde::Deserializable<decltype(obj.outputs)>::deserialize(deserializer);
3407 obj.bytecode = serde::Deserializable<decltype(obj.bytecode)>::deserialize(deserializer);
3408 obj.predicate = serde::Deserializable<decltype(obj.predicate)>::deserialize(deserializer);
3409 deserializer.decrease_container_depth();
3410 return obj;
3411}
3412
3413namespace Circuit {
3414
3415inline bool operator==(const BrilligInputs& lhs, const BrilligInputs& rhs)
3416{
3417 if (!(lhs.value == rhs.value)) {
3418 return false;
3419 }
3420 return true;
3421}
3422
3423inline std::vector<uint8_t> BrilligInputs::bincodeSerialize() const
3424{
3425 auto serializer = serde::BincodeSerializer();
3427 return std::move(serializer).bytes();
3428}
3429
3430inline BrilligInputs BrilligInputs::bincodeDeserialize(std::vector<uint8_t> input)
3431{
3432 auto deserializer = serde::BincodeDeserializer(input);
3433 auto value = serde::Deserializable<BrilligInputs>::deserialize(deserializer);
3434 if (deserializer.get_buffer_offset() < input.size()) {
3435 throw_or_abort("Some input bytes were not read");
3436 }
3437 return value;
3438}
3439
3440} // end of namespace Circuit
3441
3442template <>
3443template <typename Serializer>
3445{
3446 serializer.increase_container_depth();
3447 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
3448 serializer.decrease_container_depth();
3449}
3450
3451template <>
3452template <typename Deserializer>
3454{
3455 deserializer.increase_container_depth();
3457 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
3458 deserializer.decrease_container_depth();
3459 return obj;
3460}
3461
3462namespace Circuit {
3463
3464inline bool operator==(const BrilligInputs::Single& lhs, const BrilligInputs::Single& rhs)
3465{
3466 if (!(lhs.value == rhs.value)) {
3467 return false;
3468 }
3469 return true;
3470}
3471
3472inline std::vector<uint8_t> BrilligInputs::Single::bincodeSerialize() const
3473{
3474 auto serializer = serde::BincodeSerializer();
3476 return std::move(serializer).bytes();
3477}
3478
3479inline BrilligInputs::Single BrilligInputs::Single::bincodeDeserialize(std::vector<uint8_t> input)
3480{
3481 auto deserializer = serde::BincodeDeserializer(input);
3483 if (deserializer.get_buffer_offset() < input.size()) {
3484 throw_or_abort("Some input bytes were not read");
3485 }
3486 return value;
3487}
3488
3489} // end of namespace Circuit
3490
3491template <>
3492template <typename Serializer>
3494 Serializer& serializer)
3495{
3496 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
3497}
3498
3499template <>
3500template <typename Deserializer>
3502 Deserializer& deserializer)
3503{
3505 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
3506 return obj;
3507}
3508
3509namespace Circuit {
3510
3511inline bool operator==(const BrilligInputs::Array& lhs, const BrilligInputs::Array& rhs)
3512{
3513 if (!(lhs.value == rhs.value)) {
3514 return false;
3515 }
3516 return true;
3517}
3518
3519inline std::vector<uint8_t> BrilligInputs::Array::bincodeSerialize() const
3520{
3521 auto serializer = serde::BincodeSerializer();
3523 return std::move(serializer).bytes();
3524}
3525
3526inline BrilligInputs::Array BrilligInputs::Array::bincodeDeserialize(std::vector<uint8_t> input)
3527{
3528 auto deserializer = serde::BincodeDeserializer(input);
3530 if (deserializer.get_buffer_offset() < input.size()) {
3531 throw_or_abort("Some input bytes were not read");
3532 }
3533 return value;
3534}
3535
3536} // end of namespace Circuit
3537
3538template <>
3539template <typename Serializer>
3541 Serializer& serializer)
3542{
3543 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
3544}
3545
3546template <>
3547template <typename Deserializer>
3549 Deserializer& deserializer)
3550{
3552 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
3553 return obj;
3554}
3555
3556namespace Circuit {
3557
3558inline bool operator==(const BrilligOpcode& lhs, const BrilligOpcode& rhs)
3559{
3560 if (!(lhs.value == rhs.value)) {
3561 return false;
3562 }
3563 return true;
3564}
3565
3566inline std::vector<uint8_t> BrilligOpcode::bincodeSerialize() const
3567{
3568 auto serializer = serde::BincodeSerializer();
3570 return std::move(serializer).bytes();
3571}
3572
3573inline BrilligOpcode BrilligOpcode::bincodeDeserialize(std::vector<uint8_t> input)
3574{
3575 auto deserializer = serde::BincodeDeserializer(input);
3576 auto value = serde::Deserializable<BrilligOpcode>::deserialize(deserializer);
3577 if (deserializer.get_buffer_offset() < input.size()) {
3578 throw_or_abort("Some input bytes were not read");
3579 }
3580 return value;
3581}
3582
3583} // end of namespace Circuit
3584
3585template <>
3586template <typename Serializer>
3588{
3589 serializer.increase_container_depth();
3590 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
3591 serializer.decrease_container_depth();
3592}
3593
3594template <>
3595template <typename Deserializer>
3597{
3598 deserializer.increase_container_depth();
3600 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
3601 deserializer.decrease_container_depth();
3602 return obj;
3603}
3604
3605namespace Circuit {
3606
3607inline bool operator==(const BrilligOpcode::BinaryFieldOp& lhs, const BrilligOpcode::BinaryFieldOp& rhs)
3608{
3609 if (!(lhs.destination == rhs.destination)) {
3610 return false;
3611 }
3612 if (!(lhs.op == rhs.op)) {
3613 return false;
3614 }
3615 if (!(lhs.lhs == rhs.lhs)) {
3616 return false;
3617 }
3618 if (!(lhs.rhs == rhs.rhs)) {
3619 return false;
3620 }
3621 return true;
3622}
3623
3624inline std::vector<uint8_t> BrilligOpcode::BinaryFieldOp::bincodeSerialize() const
3625{
3626 auto serializer = serde::BincodeSerializer();
3628 return std::move(serializer).bytes();
3629}
3630
3631inline BrilligOpcode::BinaryFieldOp BrilligOpcode::BinaryFieldOp::bincodeDeserialize(std::vector<uint8_t> input)
3632{
3633 auto deserializer = serde::BincodeDeserializer(input);
3635 if (deserializer.get_buffer_offset() < input.size()) {
3636 throw_or_abort("Some input bytes were not read");
3637 }
3638 return value;
3639}
3640
3641} // end of namespace Circuit
3642
3643template <>
3644template <typename Serializer>
3646 const Circuit::BrilligOpcode::BinaryFieldOp& obj, Serializer& serializer)
3647{
3648 serde::Serializable<decltype(obj.destination)>::serialize(obj.destination, serializer);
3649 serde::Serializable<decltype(obj.op)>::serialize(obj.op, serializer);
3650 serde::Serializable<decltype(obj.lhs)>::serialize(obj.lhs, serializer);
3651 serde::Serializable<decltype(obj.rhs)>::serialize(obj.rhs, serializer);
3652}
3653
3654template <>
3655template <typename Deserializer>
3657 Deserializer& deserializer)
3658{
3660 obj.destination = serde::Deserializable<decltype(obj.destination)>::deserialize(deserializer);
3661 obj.op = serde::Deserializable<decltype(obj.op)>::deserialize(deserializer);
3662 obj.lhs = serde::Deserializable<decltype(obj.lhs)>::deserialize(deserializer);
3663 obj.rhs = serde::Deserializable<decltype(obj.rhs)>::deserialize(deserializer);
3664 return obj;
3665}
3666
3667namespace Circuit {
3668
3669inline bool operator==(const BrilligOpcode::BinaryIntOp& lhs, const BrilligOpcode::BinaryIntOp& rhs)
3670{
3671 if (!(lhs.destination == rhs.destination)) {
3672 return false;
3673 }
3674 if (!(lhs.op == rhs.op)) {
3675 return false;
3676 }
3677 if (!(lhs.bit_size == rhs.bit_size)) {
3678 return false;
3679 }
3680 if (!(lhs.lhs == rhs.lhs)) {
3681 return false;
3682 }
3683 if (!(lhs.rhs == rhs.rhs)) {
3684 return false;
3685 }
3686 return true;
3687}
3688
3689inline std::vector<uint8_t> BrilligOpcode::BinaryIntOp::bincodeSerialize() const
3690{
3691 auto serializer = serde::BincodeSerializer();
3693 return std::move(serializer).bytes();
3694}
3695
3696inline BrilligOpcode::BinaryIntOp BrilligOpcode::BinaryIntOp::bincodeDeserialize(std::vector<uint8_t> input)
3697{
3698 auto deserializer = serde::BincodeDeserializer(input);
3700 if (deserializer.get_buffer_offset() < input.size()) {
3701 throw_or_abort("Some input bytes were not read");
3702 }
3703 return value;
3704}
3705
3706} // end of namespace Circuit
3707
3708template <>
3709template <typename Serializer>
3711 Serializer& serializer)
3712{
3713 serde::Serializable<decltype(obj.destination)>::serialize(obj.destination, serializer);
3714 serde::Serializable<decltype(obj.op)>::serialize(obj.op, serializer);
3715 serde::Serializable<decltype(obj.bit_size)>::serialize(obj.bit_size, serializer);
3716 serde::Serializable<decltype(obj.lhs)>::serialize(obj.lhs, serializer);
3717 serde::Serializable<decltype(obj.rhs)>::serialize(obj.rhs, serializer);
3718}
3719
3720template <>
3721template <typename Deserializer>
3723 Deserializer& deserializer)
3724{
3726 obj.destination = serde::Deserializable<decltype(obj.destination)>::deserialize(deserializer);
3727 obj.op = serde::Deserializable<decltype(obj.op)>::deserialize(deserializer);
3728 obj.bit_size = serde::Deserializable<decltype(obj.bit_size)>::deserialize(deserializer);
3729 obj.lhs = serde::Deserializable<decltype(obj.lhs)>::deserialize(deserializer);
3730 obj.rhs = serde::Deserializable<decltype(obj.rhs)>::deserialize(deserializer);
3731 return obj;
3732}
3733
3734namespace Circuit {
3735
3736inline bool operator==(const BrilligOpcode::JumpIfNot& lhs, const BrilligOpcode::JumpIfNot& rhs)
3737{
3738 if (!(lhs.condition == rhs.condition)) {
3739 return false;
3740 }
3741 if (!(lhs.location == rhs.location)) {
3742 return false;
3743 }
3744 return true;
3745}
3746
3747inline std::vector<uint8_t> BrilligOpcode::JumpIfNot::bincodeSerialize() const
3748{
3749 auto serializer = serde::BincodeSerializer();
3751 return std::move(serializer).bytes();
3752}
3753
3754inline BrilligOpcode::JumpIfNot BrilligOpcode::JumpIfNot::bincodeDeserialize(std::vector<uint8_t> input)
3755{
3756 auto deserializer = serde::BincodeDeserializer(input);
3758 if (deserializer.get_buffer_offset() < input.size()) {
3759 throw_or_abort("Some input bytes were not read");
3760 }
3761 return value;
3762}
3763
3764} // end of namespace Circuit
3765
3766template <>
3767template <typename Serializer>
3769 Serializer& serializer)
3770{
3771 serde::Serializable<decltype(obj.condition)>::serialize(obj.condition, serializer);
3772 serde::Serializable<decltype(obj.location)>::serialize(obj.location, serializer);
3773}
3774
3775template <>
3776template <typename Deserializer>
3778 Deserializer& deserializer)
3779{
3781 obj.condition = serde::Deserializable<decltype(obj.condition)>::deserialize(deserializer);
3782 obj.location = serde::Deserializable<decltype(obj.location)>::deserialize(deserializer);
3783 return obj;
3784}
3785
3786namespace Circuit {
3787
3788inline bool operator==(const BrilligOpcode::JumpIf& lhs, const BrilligOpcode::JumpIf& rhs)
3789{
3790 if (!(lhs.condition == rhs.condition)) {
3791 return false;
3792 }
3793 if (!(lhs.location == rhs.location)) {
3794 return false;
3795 }
3796 return true;
3797}
3798
3799inline std::vector<uint8_t> BrilligOpcode::JumpIf::bincodeSerialize() const
3800{
3801 auto serializer = serde::BincodeSerializer();
3803 return std::move(serializer).bytes();
3804}
3805
3806inline BrilligOpcode::JumpIf BrilligOpcode::JumpIf::bincodeDeserialize(std::vector<uint8_t> input)
3807{
3808 auto deserializer = serde::BincodeDeserializer(input);
3810 if (deserializer.get_buffer_offset() < input.size()) {
3811 throw_or_abort("Some input bytes were not read");
3812 }
3813 return value;
3814}
3815
3816} // end of namespace Circuit
3817
3818template <>
3819template <typename Serializer>
3821 Serializer& serializer)
3822{
3823 serde::Serializable<decltype(obj.condition)>::serialize(obj.condition, serializer);
3824 serde::Serializable<decltype(obj.location)>::serialize(obj.location, serializer);
3825}
3826
3827template <>
3828template <typename Deserializer>
3830 Deserializer& deserializer)
3831{
3833 obj.condition = serde::Deserializable<decltype(obj.condition)>::deserialize(deserializer);
3834 obj.location = serde::Deserializable<decltype(obj.location)>::deserialize(deserializer);
3835 return obj;
3836}
3837
3838namespace Circuit {
3839
3840inline bool operator==(const BrilligOpcode::Jump& lhs, const BrilligOpcode::Jump& rhs)
3841{
3842 if (!(lhs.location == rhs.location)) {
3843 return false;
3844 }
3845 return true;
3846}
3847
3848inline std::vector<uint8_t> BrilligOpcode::Jump::bincodeSerialize() const
3849{
3850 auto serializer = serde::BincodeSerializer();
3852 return std::move(serializer).bytes();
3853}
3854
3855inline BrilligOpcode::Jump BrilligOpcode::Jump::bincodeDeserialize(std::vector<uint8_t> input)
3856{
3857 auto deserializer = serde::BincodeDeserializer(input);
3859 if (deserializer.get_buffer_offset() < input.size()) {
3860 throw_or_abort("Some input bytes were not read");
3861 }
3862 return value;
3863}
3864
3865} // end of namespace Circuit
3866
3867template <>
3868template <typename Serializer>
3870 Serializer& serializer)
3871{
3872 serde::Serializable<decltype(obj.location)>::serialize(obj.location, serializer);
3873}
3874
3875template <>
3876template <typename Deserializer>
3878 Deserializer& deserializer)
3879{
3881 obj.location = serde::Deserializable<decltype(obj.location)>::deserialize(deserializer);
3882 return obj;
3883}
3884
3885namespace Circuit {
3886
3887inline bool operator==(const BrilligOpcode::Call& lhs, const BrilligOpcode::Call& rhs)
3888{
3889 if (!(lhs.location == rhs.location)) {
3890 return false;
3891 }
3892 return true;
3893}
3894
3895inline std::vector<uint8_t> BrilligOpcode::Call::bincodeSerialize() const
3896{
3897 auto serializer = serde::BincodeSerializer();
3899 return std::move(serializer).bytes();
3900}
3901
3902inline BrilligOpcode::Call BrilligOpcode::Call::bincodeDeserialize(std::vector<uint8_t> input)
3903{
3904 auto deserializer = serde::BincodeDeserializer(input);
3906 if (deserializer.get_buffer_offset() < input.size()) {
3907 throw_or_abort("Some input bytes were not read");
3908 }
3909 return value;
3910}
3911
3912} // end of namespace Circuit
3913
3914template <>
3915template <typename Serializer>
3917 Serializer& serializer)
3918{
3919 serde::Serializable<decltype(obj.location)>::serialize(obj.location, serializer);
3920}
3921
3922template <>
3923template <typename Deserializer>
3925 Deserializer& deserializer)
3926{
3928 obj.location = serde::Deserializable<decltype(obj.location)>::deserialize(deserializer);
3929 return obj;
3930}
3931
3932namespace Circuit {
3933
3934inline bool operator==(const BrilligOpcode::Const& lhs, const BrilligOpcode::Const& rhs)
3935{
3936 if (!(lhs.destination == rhs.destination)) {
3937 return false;
3938 }
3939 if (!(lhs.value == rhs.value)) {
3940 return false;
3941 }
3942 return true;
3943}
3944
3945inline std::vector<uint8_t> BrilligOpcode::Const::bincodeSerialize() const
3946{
3947 auto serializer = serde::BincodeSerializer();
3949 return std::move(serializer).bytes();
3950}
3951
3952inline BrilligOpcode::Const BrilligOpcode::Const::bincodeDeserialize(std::vector<uint8_t> input)
3953{
3954 auto deserializer = serde::BincodeDeserializer(input);
3956 if (deserializer.get_buffer_offset() < input.size()) {
3957 throw_or_abort("Some input bytes were not read");
3958 }
3959 return value;
3960}
3961
3962} // end of namespace Circuit
3963
3964template <>
3965template <typename Serializer>
3967 Serializer& serializer)
3968{
3969 serde::Serializable<decltype(obj.destination)>::serialize(obj.destination, serializer);
3970 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
3971}
3972
3973template <>
3974template <typename Deserializer>
3976 Deserializer& deserializer)
3977{
3979 obj.destination = serde::Deserializable<decltype(obj.destination)>::deserialize(deserializer);
3980 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
3981 return obj;
3982}
3983
3984namespace Circuit {
3985
3986inline bool operator==(const BrilligOpcode::Return& lhs, const BrilligOpcode::Return& rhs)
3987{
3988 return true;
3989}
3990
3991inline std::vector<uint8_t> BrilligOpcode::Return::bincodeSerialize() const
3992{
3993 auto serializer = serde::BincodeSerializer();
3995 return std::move(serializer).bytes();
3996}
3997
3998inline BrilligOpcode::Return BrilligOpcode::Return::bincodeDeserialize(std::vector<uint8_t> input)
3999{
4000 auto deserializer = serde::BincodeDeserializer(input);
4002 if (deserializer.get_buffer_offset() < input.size()) {
4003 throw_or_abort("Some input bytes were not read");
4004 }
4005 return value;
4006}
4007
4008} // end of namespace Circuit
4009
4010template <>
4011template <typename Serializer>
4013 Serializer& serializer)
4014{}
4015
4016template <>
4017template <typename Deserializer>
4019 Deserializer& deserializer)
4020{
4022 return obj;
4023}
4024
4025namespace Circuit {
4026
4027inline bool operator==(const BrilligOpcode::ForeignCall& lhs, const BrilligOpcode::ForeignCall& rhs)
4028{
4029 if (!(lhs.function == rhs.function)) {
4030 return false;
4031 }
4032 if (!(lhs.destinations == rhs.destinations)) {
4033 return false;
4034 }
4035 if (!(lhs.inputs == rhs.inputs)) {
4036 return false;
4037 }
4038 return true;
4039}
4040
4041inline std::vector<uint8_t> BrilligOpcode::ForeignCall::bincodeSerialize() const
4042{
4043 auto serializer = serde::BincodeSerializer();
4045 return std::move(serializer).bytes();
4046}
4047
4048inline BrilligOpcode::ForeignCall BrilligOpcode::ForeignCall::bincodeDeserialize(std::vector<uint8_t> input)
4049{
4050 auto deserializer = serde::BincodeDeserializer(input);
4052 if (deserializer.get_buffer_offset() < input.size()) {
4053 throw_or_abort("Some input bytes were not read");
4054 }
4055 return value;
4056}
4057
4058} // end of namespace Circuit
4059
4060template <>
4061template <typename Serializer>
4063 Serializer& serializer)
4064{
4065 serde::Serializable<decltype(obj.function)>::serialize(obj.function, serializer);
4066 serde::Serializable<decltype(obj.destinations)>::serialize(obj.destinations, serializer);
4067 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
4068}
4069
4070template <>
4071template <typename Deserializer>
4073 Deserializer& deserializer)
4074{
4076 obj.function = serde::Deserializable<decltype(obj.function)>::deserialize(deserializer);
4077 obj.destinations = serde::Deserializable<decltype(obj.destinations)>::deserialize(deserializer);
4078 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
4079 return obj;
4080}
4081
4082namespace Circuit {
4083
4084inline bool operator==(const BrilligOpcode::Mov& lhs, const BrilligOpcode::Mov& rhs)
4085{
4086 if (!(lhs.destination == rhs.destination)) {
4087 return false;
4088 }
4089 if (!(lhs.source == rhs.source)) {
4090 return false;
4091 }
4092 return true;
4093}
4094
4095inline std::vector<uint8_t> BrilligOpcode::Mov::bincodeSerialize() const
4096{
4097 auto serializer = serde::BincodeSerializer();
4099 return std::move(serializer).bytes();
4100}
4101
4102inline BrilligOpcode::Mov BrilligOpcode::Mov::bincodeDeserialize(std::vector<uint8_t> input)
4103{
4104 auto deserializer = serde::BincodeDeserializer(input);
4106 if (deserializer.get_buffer_offset() < input.size()) {
4107 throw_or_abort("Some input bytes were not read");
4108 }
4109 return value;
4110}
4111
4112} // end of namespace Circuit
4113
4114template <>
4115template <typename Serializer>
4117 Serializer& serializer)
4118{
4119 serde::Serializable<decltype(obj.destination)>::serialize(obj.destination, serializer);
4120 serde::Serializable<decltype(obj.source)>::serialize(obj.source, serializer);
4121}
4122
4123template <>
4124template <typename Deserializer>
4126{
4128 obj.destination = serde::Deserializable<decltype(obj.destination)>::deserialize(deserializer);
4129 obj.source = serde::Deserializable<decltype(obj.source)>::deserialize(deserializer);
4130 return obj;
4131}
4132
4133namespace Circuit {
4134
4135inline bool operator==(const BrilligOpcode::Load& lhs, const BrilligOpcode::Load& rhs)
4136{
4137 if (!(lhs.destination == rhs.destination)) {
4138 return false;
4139 }
4140 if (!(lhs.source_pointer == rhs.source_pointer)) {
4141 return false;
4142 }
4143 return true;
4144}
4145
4146inline std::vector<uint8_t> BrilligOpcode::Load::bincodeSerialize() const
4147{
4148 auto serializer = serde::BincodeSerializer();
4150 return std::move(serializer).bytes();
4151}
4152
4153inline BrilligOpcode::Load BrilligOpcode::Load::bincodeDeserialize(std::vector<uint8_t> input)
4154{
4155 auto deserializer = serde::BincodeDeserializer(input);
4157 if (deserializer.get_buffer_offset() < input.size()) {
4158 throw_or_abort("Some input bytes were not read");
4159 }
4160 return value;
4161}
4162
4163} // end of namespace Circuit
4164
4165template <>
4166template <typename Serializer>
4168 Serializer& serializer)
4169{
4170 serde::Serializable<decltype(obj.destination)>::serialize(obj.destination, serializer);
4171 serde::Serializable<decltype(obj.source_pointer)>::serialize(obj.source_pointer, serializer);
4172}
4173
4174template <>
4175template <typename Deserializer>
4177 Deserializer& deserializer)
4178{
4180 obj.destination = serde::Deserializable<decltype(obj.destination)>::deserialize(deserializer);
4181 obj.source_pointer = serde::Deserializable<decltype(obj.source_pointer)>::deserialize(deserializer);
4182 return obj;
4183}
4184
4185namespace Circuit {
4186
4187inline bool operator==(const BrilligOpcode::Store& lhs, const BrilligOpcode::Store& rhs)
4188{
4189 if (!(lhs.destination_pointer == rhs.destination_pointer)) {
4190 return false;
4191 }
4192 if (!(lhs.source == rhs.source)) {
4193 return false;
4194 }
4195 return true;
4196}
4197
4198inline std::vector<uint8_t> BrilligOpcode::Store::bincodeSerialize() const
4199{
4200 auto serializer = serde::BincodeSerializer();
4202 return std::move(serializer).bytes();
4203}
4204
4205inline BrilligOpcode::Store BrilligOpcode::Store::bincodeDeserialize(std::vector<uint8_t> input)
4206{
4207 auto deserializer = serde::BincodeDeserializer(input);
4209 if (deserializer.get_buffer_offset() < input.size()) {
4210 throw_or_abort("Some input bytes were not read");
4211 }
4212 return value;
4213}
4214
4215} // end of namespace Circuit
4216
4217template <>
4218template <typename Serializer>
4220 Serializer& serializer)
4221{
4222 serde::Serializable<decltype(obj.destination_pointer)>::serialize(obj.destination_pointer, serializer);
4223 serde::Serializable<decltype(obj.source)>::serialize(obj.source, serializer);
4224}
4225
4226template <>
4227template <typename Deserializer>
4229 Deserializer& deserializer)
4230{
4232 obj.destination_pointer = serde::Deserializable<decltype(obj.destination_pointer)>::deserialize(deserializer);
4233 obj.source = serde::Deserializable<decltype(obj.source)>::deserialize(deserializer);
4234 return obj;
4235}
4236
4237namespace Circuit {
4238
4239inline bool operator==(const BrilligOpcode::BlackBox& lhs, const BrilligOpcode::BlackBox& rhs)
4240{
4241 if (!(lhs.value == rhs.value)) {
4242 return false;
4243 }
4244 return true;
4245}
4246
4247inline std::vector<uint8_t> BrilligOpcode::BlackBox::bincodeSerialize() const
4248{
4249 auto serializer = serde::BincodeSerializer();
4251 return std::move(serializer).bytes();
4252}
4253
4254inline BrilligOpcode::BlackBox BrilligOpcode::BlackBox::bincodeDeserialize(std::vector<uint8_t> input)
4255{
4256 auto deserializer = serde::BincodeDeserializer(input);
4258 if (deserializer.get_buffer_offset() < input.size()) {
4259 throw_or_abort("Some input bytes were not read");
4260 }
4261 return value;
4262}
4263
4264} // end of namespace Circuit
4265
4266template <>
4267template <typename Serializer>
4269 Serializer& serializer)
4270{
4271 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
4272}
4273
4274template <>
4275template <typename Deserializer>
4277 Deserializer& deserializer)
4278{
4280 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
4281 return obj;
4282}
4283
4284namespace Circuit {
4285
4286inline bool operator==(const BrilligOpcode::Trap& lhs, const BrilligOpcode::Trap& rhs)
4287{
4288 return true;
4289}
4290
4291inline std::vector<uint8_t> BrilligOpcode::Trap::bincodeSerialize() const
4292{
4293 auto serializer = serde::BincodeSerializer();
4295 return std::move(serializer).bytes();
4296}
4297
4298inline BrilligOpcode::Trap BrilligOpcode::Trap::bincodeDeserialize(std::vector<uint8_t> input)
4299{
4300 auto deserializer = serde::BincodeDeserializer(input);
4302 if (deserializer.get_buffer_offset() < input.size()) {
4303 throw_or_abort("Some input bytes were not read");
4304 }
4305 return value;
4306}
4307
4308} // end of namespace Circuit
4309
4310template <>
4311template <typename Serializer>
4313 Serializer& serializer)
4314{}
4315
4316template <>
4317template <typename Deserializer>
4319 Deserializer& deserializer)
4320{
4322 return obj;
4323}
4324
4325namespace Circuit {
4326
4327inline bool operator==(const BrilligOpcode::Stop& lhs, const BrilligOpcode::Stop& rhs)
4328{
4329 return true;
4330}
4331
4332inline std::vector<uint8_t> BrilligOpcode::Stop::bincodeSerialize() const
4333{
4334 auto serializer = serde::BincodeSerializer();
4336 return std::move(serializer).bytes();
4337}
4338
4339inline BrilligOpcode::Stop BrilligOpcode::Stop::bincodeDeserialize(std::vector<uint8_t> input)
4340{
4341 auto deserializer = serde::BincodeDeserializer(input);
4343 if (deserializer.get_buffer_offset() < input.size()) {
4344 throw_or_abort("Some input bytes were not read");
4345 }
4346 return value;
4347}
4348
4349} // end of namespace Circuit
4350
4351template <>
4352template <typename Serializer>
4354 Serializer& serializer)
4355{}
4356
4357template <>
4358template <typename Deserializer>
4360 Deserializer& deserializer)
4361{
4363 return obj;
4364}
4365
4366namespace Circuit {
4367
4368inline bool operator==(const BrilligOutputs& lhs, const BrilligOutputs& rhs)
4369{
4370 if (!(lhs.value == rhs.value)) {
4371 return false;
4372 }
4373 return true;
4374}
4375
4376inline std::vector<uint8_t> BrilligOutputs::bincodeSerialize() const
4377{
4378 auto serializer = serde::BincodeSerializer();
4380 return std::move(serializer).bytes();
4381}
4382
4383inline BrilligOutputs BrilligOutputs::bincodeDeserialize(std::vector<uint8_t> input)
4384{
4385 auto deserializer = serde::BincodeDeserializer(input);
4386 auto value = serde::Deserializable<BrilligOutputs>::deserialize(deserializer);
4387 if (deserializer.get_buffer_offset() < input.size()) {
4388 throw_or_abort("Some input bytes were not read");
4389 }
4390 return value;
4391}
4392
4393} // end of namespace Circuit
4394
4395template <>
4396template <typename Serializer>
4398{
4399 serializer.increase_container_depth();
4400 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
4401 serializer.decrease_container_depth();
4402}
4403
4404template <>
4405template <typename Deserializer>
4407{
4408 deserializer.increase_container_depth();
4410 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
4411 deserializer.decrease_container_depth();
4412 return obj;
4413}
4414
4415namespace Circuit {
4416
4417inline bool operator==(const BrilligOutputs::Simple& lhs, const BrilligOutputs::Simple& rhs)
4418{
4419 if (!(lhs.value == rhs.value)) {
4420 return false;
4421 }
4422 return true;
4423}
4424
4425inline std::vector<uint8_t> BrilligOutputs::Simple::bincodeSerialize() const
4426{
4427 auto serializer = serde::BincodeSerializer();
4429 return std::move(serializer).bytes();
4430}
4431
4432inline BrilligOutputs::Simple BrilligOutputs::Simple::bincodeDeserialize(std::vector<uint8_t> input)
4433{
4434 auto deserializer = serde::BincodeDeserializer(input);
4436 if (deserializer.get_buffer_offset() < input.size()) {
4437 throw_or_abort("Some input bytes were not read");
4438 }
4439 return value;
4440}
4441
4442} // end of namespace Circuit
4443
4444template <>
4445template <typename Serializer>
4447 Serializer& serializer)
4448{
4449 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
4450}
4451
4452template <>
4453template <typename Deserializer>
4455 Deserializer& deserializer)
4456{
4458 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
4459 return obj;
4460}
4461
4462namespace Circuit {
4463
4464inline bool operator==(const BrilligOutputs::Array& lhs, const BrilligOutputs::Array& rhs)
4465{
4466 if (!(lhs.value == rhs.value)) {
4467 return false;
4468 }
4469 return true;
4470}
4471
4472inline std::vector<uint8_t> BrilligOutputs::Array::bincodeSerialize() const
4473{
4474 auto serializer = serde::BincodeSerializer();
4476 return std::move(serializer).bytes();
4477}
4478
4479inline BrilligOutputs::Array BrilligOutputs::Array::bincodeDeserialize(std::vector<uint8_t> input)
4480{
4481 auto deserializer = serde::BincodeDeserializer(input);
4483 if (deserializer.get_buffer_offset() < input.size()) {
4484 throw_or_abort("Some input bytes were not read");
4485 }
4486 return value;
4487}
4488
4489} // end of namespace Circuit
4490
4491template <>
4492template <typename Serializer>
4494 Serializer& serializer)
4495{
4496 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
4497}
4498
4499template <>
4500template <typename Deserializer>
4502 Deserializer& deserializer)
4503{
4505 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
4506 return obj;
4507}
4508
4509namespace Circuit {
4510
4511inline bool operator==(const Circuit& lhs, const Circuit& rhs)
4512{
4513 if (!(lhs.current_witness_index == rhs.current_witness_index)) {
4514 return false;
4515 }
4516 if (!(lhs.opcodes == rhs.opcodes)) {
4517 return false;
4518 }
4519 if (!(lhs.private_parameters == rhs.private_parameters)) {
4520 return false;
4521 }
4522 if (!(lhs.public_parameters == rhs.public_parameters)) {
4523 return false;
4524 }
4525 if (!(lhs.return_values == rhs.return_values)) {
4526 return false;
4527 }
4528 if (!(lhs.assert_messages == rhs.assert_messages)) {
4529 return false;
4530 }
4531 return true;
4532}
4533
4534inline std::vector<uint8_t> Circuit::bincodeSerialize() const
4535{
4536 auto serializer = serde::BincodeSerializer();
4537 serde::Serializable<Circuit>::serialize(*this, serializer);
4538 return std::move(serializer).bytes();
4539}
4540
4541inline Circuit Circuit::bincodeDeserialize(std::vector<uint8_t> input)
4542{
4543 auto deserializer = serde::BincodeDeserializer(input);
4544 auto value = serde::Deserializable<Circuit>::deserialize(deserializer);
4545 if (deserializer.get_buffer_offset() < input.size()) {
4546 throw_or_abort("Some input bytes were not read");
4547 }
4548 return value;
4549}
4550
4551} // end of namespace Circuit
4552
4553template <>
4554template <typename Serializer>
4555void serde::Serializable<Circuit::Circuit>::serialize(const Circuit::Circuit& obj, Serializer& serializer)
4556{
4557 serializer.increase_container_depth();
4558 serde::Serializable<decltype(obj.current_witness_index)>::serialize(obj.current_witness_index, serializer);
4559 serde::Serializable<decltype(obj.opcodes)>::serialize(obj.opcodes, serializer);
4560 serde::Serializable<decltype(obj.private_parameters)>::serialize(obj.private_parameters, serializer);
4561 serde::Serializable<decltype(obj.public_parameters)>::serialize(obj.public_parameters, serializer);
4562 serde::Serializable<decltype(obj.return_values)>::serialize(obj.return_values, serializer);
4563 serde::Serializable<decltype(obj.assert_messages)>::serialize(obj.assert_messages, serializer);
4564 serializer.decrease_container_depth();
4565}
4566
4567template <>
4568template <typename Deserializer>
4570{
4571 deserializer.increase_container_depth();
4572 Circuit::Circuit obj;
4573 obj.current_witness_index = serde::Deserializable<decltype(obj.current_witness_index)>::deserialize(deserializer);
4574 obj.opcodes = serde::Deserializable<decltype(obj.opcodes)>::deserialize(deserializer);
4575 obj.private_parameters = serde::Deserializable<decltype(obj.private_parameters)>::deserialize(deserializer);
4576 obj.public_parameters = serde::Deserializable<decltype(obj.public_parameters)>::deserialize(deserializer);
4577 obj.return_values = serde::Deserializable<decltype(obj.return_values)>::deserialize(deserializer);
4578 obj.assert_messages = serde::Deserializable<decltype(obj.assert_messages)>::deserialize(deserializer);
4579 deserializer.decrease_container_depth();
4580 return obj;
4581}
4582
4583namespace Circuit {
4584
4585inline bool operator==(const Directive& lhs, const Directive& rhs)
4586{
4587 if (!(lhs.value == rhs.value)) {
4588 return false;
4589 }
4590 return true;
4591}
4592
4593inline std::vector<uint8_t> Directive::bincodeSerialize() const
4594{
4595 auto serializer = serde::BincodeSerializer();
4597 return std::move(serializer).bytes();
4598}
4599
4600inline Directive Directive::bincodeDeserialize(std::vector<uint8_t> input)
4601{
4602 auto deserializer = serde::BincodeDeserializer(input);
4603 auto value = serde::Deserializable<Directive>::deserialize(deserializer);
4604 if (deserializer.get_buffer_offset() < input.size()) {
4605 throw_or_abort("Some input bytes were not read");
4606 }
4607 return value;
4608}
4609
4610} // end of namespace Circuit
4611
4612template <>
4613template <typename Serializer>
4614void serde::Serializable<Circuit::Directive>::serialize(const Circuit::Directive& obj, Serializer& serializer)
4615{
4616 serializer.increase_container_depth();
4617 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
4618 serializer.decrease_container_depth();
4619}
4620
4621template <>
4622template <typename Deserializer>
4624{
4625 deserializer.increase_container_depth();
4627 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
4628 deserializer.decrease_container_depth();
4629 return obj;
4630}
4631
4632namespace Circuit {
4633
4634inline bool operator==(const Directive::Quotient& lhs, const Directive::Quotient& rhs)
4635{
4636 if (!(lhs.value == rhs.value)) {
4637 return false;
4638 }
4639 return true;
4640}
4641
4642inline std::vector<uint8_t> Directive::Quotient::bincodeSerialize() const
4643{
4644 auto serializer = serde::BincodeSerializer();
4646 return std::move(serializer).bytes();
4647}
4648
4649inline Directive::Quotient Directive::Quotient::bincodeDeserialize(std::vector<uint8_t> input)
4650{
4651 auto deserializer = serde::BincodeDeserializer(input);
4653 if (deserializer.get_buffer_offset() < input.size()) {
4654 throw_or_abort("Some input bytes were not read");
4655 }
4656 return value;
4657}
4658
4659} // end of namespace Circuit
4660
4661template <>
4662template <typename Serializer>
4664 Serializer& serializer)
4665{
4666 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
4667}
4668
4669template <>
4670template <typename Deserializer>
4672 Deserializer& deserializer)
4673{
4675 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
4676 return obj;
4677}
4678
4679namespace Circuit {
4680
4681inline bool operator==(const Directive::ToLeRadix& lhs, const Directive::ToLeRadix& rhs)
4682{
4683 if (!(lhs.a == rhs.a)) {
4684 return false;
4685 }
4686 if (!(lhs.b == rhs.b)) {
4687 return false;
4688 }
4689 if (!(lhs.radix == rhs.radix)) {
4690 return false;
4691 }
4692 return true;
4693}
4694
4695inline std::vector<uint8_t> Directive::ToLeRadix::bincodeSerialize() const
4696{
4697 auto serializer = serde::BincodeSerializer();
4699 return std::move(serializer).bytes();
4700}
4701
4702inline Directive::ToLeRadix Directive::ToLeRadix::bincodeDeserialize(std::vector<uint8_t> input)
4703{
4704 auto deserializer = serde::BincodeDeserializer(input);
4706 if (deserializer.get_buffer_offset() < input.size()) {
4707 throw_or_abort("Some input bytes were not read");
4708 }
4709 return value;
4710}
4711
4712} // end of namespace Circuit
4713
4714template <>
4715template <typename Serializer>
4717 Serializer& serializer)
4718{
4719 serde::Serializable<decltype(obj.a)>::serialize(obj.a, serializer);
4720 serde::Serializable<decltype(obj.b)>::serialize(obj.b, serializer);
4721 serde::Serializable<decltype(obj.radix)>::serialize(obj.radix, serializer);
4722}
4723
4724template <>
4725template <typename Deserializer>
4727 Deserializer& deserializer)
4728{
4730 obj.a = serde::Deserializable<decltype(obj.a)>::deserialize(deserializer);
4731 obj.b = serde::Deserializable<decltype(obj.b)>::deserialize(deserializer);
4732 obj.radix = serde::Deserializable<decltype(obj.radix)>::deserialize(deserializer);
4733 return obj;
4734}
4735
4736namespace Circuit {
4737
4738inline bool operator==(const Directive::PermutationSort& lhs, const Directive::PermutationSort& rhs)
4739{
4740 if (!(lhs.inputs == rhs.inputs)) {
4741 return false;
4742 }
4743 if (!(lhs.tuple == rhs.tuple)) {
4744 return false;
4745 }
4746 if (!(lhs.bits == rhs.bits)) {
4747 return false;
4748 }
4749 if (!(lhs.sort_by == rhs.sort_by)) {
4750 return false;
4751 }
4752 return true;
4753}
4754
4755inline std::vector<uint8_t> Directive::PermutationSort::bincodeSerialize() const
4756{
4757 auto serializer = serde::BincodeSerializer();
4759 return std::move(serializer).bytes();
4760}
4761
4762inline Directive::PermutationSort Directive::PermutationSort::bincodeDeserialize(std::vector<uint8_t> input)
4763{
4764 auto deserializer = serde::BincodeDeserializer(input);
4766 if (deserializer.get_buffer_offset() < input.size()) {
4767 throw_or_abort("Some input bytes were not read");
4768 }
4769 return value;
4770}
4771
4772} // end of namespace Circuit
4773
4774template <>
4775template <typename Serializer>
4777 Serializer& serializer)
4778{
4779 serde::Serializable<decltype(obj.inputs)>::serialize(obj.inputs, serializer);
4780 serde::Serializable<decltype(obj.tuple)>::serialize(obj.tuple, serializer);
4781 serde::Serializable<decltype(obj.bits)>::serialize(obj.bits, serializer);
4782 serde::Serializable<decltype(obj.sort_by)>::serialize(obj.sort_by, serializer);
4783}
4784
4785template <>
4786template <typename Deserializer>
4788 Deserializer& deserializer)
4789{
4791 obj.inputs = serde::Deserializable<decltype(obj.inputs)>::deserialize(deserializer);
4792 obj.tuple = serde::Deserializable<decltype(obj.tuple)>::deserialize(deserializer);
4793 obj.bits = serde::Deserializable<decltype(obj.bits)>::deserialize(deserializer);
4794 obj.sort_by = serde::Deserializable<decltype(obj.sort_by)>::deserialize(deserializer);
4795 return obj;
4796}
4797
4798namespace Circuit {
4799
4800inline bool operator==(const Expression& lhs, const Expression& rhs)
4801{
4802 if (!(lhs.mul_terms == rhs.mul_terms)) {
4803 return false;
4804 }
4805 if (!(lhs.linear_combinations == rhs.linear_combinations)) {
4806 return false;
4807 }
4808 if (!(lhs.q_c == rhs.q_c)) {
4809 return false;
4810 }
4811 return true;
4812}
4813
4814inline std::vector<uint8_t> Expression::bincodeSerialize() const
4815{
4816 auto serializer = serde::BincodeSerializer();
4818 return std::move(serializer).bytes();
4819}
4820
4821inline Expression Expression::bincodeDeserialize(std::vector<uint8_t> input)
4822{
4823 auto deserializer = serde::BincodeDeserializer(input);
4824 auto value = serde::Deserializable<Expression>::deserialize(deserializer);
4825 if (deserializer.get_buffer_offset() < input.size()) {
4826 throw_or_abort("Some input bytes were not read");
4827 }
4828 return value;
4829}
4830
4831} // end of namespace Circuit
4832
4833template <>
4834template <typename Serializer>
4835void serde::Serializable<Circuit::Expression>::serialize(const Circuit::Expression& obj, Serializer& serializer)
4836{
4837 serializer.increase_container_depth();
4838 serde::Serializable<decltype(obj.mul_terms)>::serialize(obj.mul_terms, serializer);
4839 serde::Serializable<decltype(obj.linear_combinations)>::serialize(obj.linear_combinations, serializer);
4840 serde::Serializable<decltype(obj.q_c)>::serialize(obj.q_c, serializer);
4841 serializer.decrease_container_depth();
4842}
4843
4844template <>
4845template <typename Deserializer>
4847{
4848 deserializer.increase_container_depth();
4850 obj.mul_terms = serde::Deserializable<decltype(obj.mul_terms)>::deserialize(deserializer);
4851 obj.linear_combinations = serde::Deserializable<decltype(obj.linear_combinations)>::deserialize(deserializer);
4852 obj.q_c = serde::Deserializable<decltype(obj.q_c)>::deserialize(deserializer);
4853 deserializer.decrease_container_depth();
4854 return obj;
4855}
4856
4857namespace Circuit {
4858
4859inline bool operator==(const FunctionInput& lhs, const FunctionInput& rhs)
4860{
4861 if (!(lhs.witness == rhs.witness)) {
4862 return false;
4863 }
4864 if (!(lhs.num_bits == rhs.num_bits)) {
4865 return false;
4866 }
4867 return true;
4868}
4869
4870inline std::vector<uint8_t> FunctionInput::bincodeSerialize() const
4871{
4872 auto serializer = serde::BincodeSerializer();
4874 return std::move(serializer).bytes();
4875}
4876
4877inline FunctionInput FunctionInput::bincodeDeserialize(std::vector<uint8_t> input)
4878{
4879 auto deserializer = serde::BincodeDeserializer(input);
4880 auto value = serde::Deserializable<FunctionInput>::deserialize(deserializer);
4881 if (deserializer.get_buffer_offset() < input.size()) {
4882 throw_or_abort("Some input bytes were not read");
4883 }
4884 return value;
4885}
4886
4887} // end of namespace Circuit
4888
4889template <>
4890template <typename Serializer>
4892{
4893 serializer.increase_container_depth();
4894 serde::Serializable<decltype(obj.witness)>::serialize(obj.witness, serializer);
4895 serde::Serializable<decltype(obj.num_bits)>::serialize(obj.num_bits, serializer);
4896 serializer.decrease_container_depth();
4897}
4898
4899template <>
4900template <typename Deserializer>
4902{
4903 deserializer.increase_container_depth();
4905 obj.witness = serde::Deserializable<decltype(obj.witness)>::deserialize(deserializer);
4906 obj.num_bits = serde::Deserializable<decltype(obj.num_bits)>::deserialize(deserializer);
4907 deserializer.decrease_container_depth();
4908 return obj;
4909}
4910
4911namespace Circuit {
4912
4913inline bool operator==(const HeapArray& lhs, const HeapArray& rhs)
4914{
4915 if (!(lhs.pointer == rhs.pointer)) {
4916 return false;
4917 }
4918 if (!(lhs.size == rhs.size)) {
4919 return false;
4920 }
4921 return true;
4922}
4923
4924inline std::vector<uint8_t> HeapArray::bincodeSerialize() const
4925{
4926 auto serializer = serde::BincodeSerializer();
4928 return std::move(serializer).bytes();
4929}
4930
4931inline HeapArray HeapArray::bincodeDeserialize(std::vector<uint8_t> input)
4932{
4933 auto deserializer = serde::BincodeDeserializer(input);
4934 auto value = serde::Deserializable<HeapArray>::deserialize(deserializer);
4935 if (deserializer.get_buffer_offset() < input.size()) {
4936 throw_or_abort("Some input bytes were not read");
4937 }
4938 return value;
4939}
4940
4941} // end of namespace Circuit
4942
4943template <>
4944template <typename Serializer>
4945void serde::Serializable<Circuit::HeapArray>::serialize(const Circuit::HeapArray& obj, Serializer& serializer)
4946{
4947 serializer.increase_container_depth();
4948 serde::Serializable<decltype(obj.pointer)>::serialize(obj.pointer, serializer);
4949 serde::Serializable<decltype(obj.size)>::serialize(obj.size, serializer);
4950 serializer.decrease_container_depth();
4951}
4952
4953template <>
4954template <typename Deserializer>
4956{
4957 deserializer.increase_container_depth();
4959 obj.pointer = serde::Deserializable<decltype(obj.pointer)>::deserialize(deserializer);
4960 obj.size = serde::Deserializable<decltype(obj.size)>::deserialize(deserializer);
4961 deserializer.decrease_container_depth();
4962 return obj;
4963}
4964
4965namespace Circuit {
4966
4967inline bool operator==(const HeapVector& lhs, const HeapVector& rhs)
4968{
4969 if (!(lhs.pointer == rhs.pointer)) {
4970 return false;
4971 }
4972 if (!(lhs.size == rhs.size)) {
4973 return false;
4974 }
4975 return true;
4976}
4977
4978inline std::vector<uint8_t> HeapVector::bincodeSerialize() const
4979{
4980 auto serializer = serde::BincodeSerializer();
4982 return std::move(serializer).bytes();
4983}
4984
4985inline HeapVector HeapVector::bincodeDeserialize(std::vector<uint8_t> input)
4986{
4987 auto deserializer = serde::BincodeDeserializer(input);
4988 auto value = serde::Deserializable<HeapVector>::deserialize(deserializer);
4989 if (deserializer.get_buffer_offset() < input.size()) {
4990 throw_or_abort("Some input bytes were not read");
4991 }
4992 return value;
4993}
4994
4995} // end of namespace Circuit
4996
4997template <>
4998template <typename Serializer>
4999void serde::Serializable<Circuit::HeapVector>::serialize(const Circuit::HeapVector& obj, Serializer& serializer)
5000{
5001 serializer.increase_container_depth();
5002 serde::Serializable<decltype(obj.pointer)>::serialize(obj.pointer, serializer);
5003 serde::Serializable<decltype(obj.size)>::serialize(obj.size, serializer);
5004 serializer.decrease_container_depth();
5005}
5006
5007template <>
5008template <typename Deserializer>
5010{
5011 deserializer.increase_container_depth();
5013 obj.pointer = serde::Deserializable<decltype(obj.pointer)>::deserialize(deserializer);
5014 obj.size = serde::Deserializable<decltype(obj.size)>::deserialize(deserializer);
5015 deserializer.decrease_container_depth();
5016 return obj;
5017}
5018
5019namespace Circuit {
5020
5021inline bool operator==(const MemOp& lhs, const MemOp& rhs)
5022{
5023 if (!(lhs.operation == rhs.operation)) {
5024 return false;
5025 }
5026 if (!(lhs.index == rhs.index)) {
5027 return false;
5028 }
5029 if (!(lhs.value == rhs.value)) {
5030 return false;
5031 }
5032 return true;
5033}
5034
5035inline std::vector<uint8_t> MemOp::bincodeSerialize() const
5036{
5037 auto serializer = serde::BincodeSerializer();
5038 serde::Serializable<MemOp>::serialize(*this, serializer);
5039 return std::move(serializer).bytes();
5040}
5041
5042inline MemOp MemOp::bincodeDeserialize(std::vector<uint8_t> input)
5043{
5044 auto deserializer = serde::BincodeDeserializer(input);
5045 auto value = serde::Deserializable<MemOp>::deserialize(deserializer);
5046 if (deserializer.get_buffer_offset() < input.size()) {
5047 throw_or_abort("Some input bytes were not read");
5048 }
5049 return value;
5050}
5051
5052} // end of namespace Circuit
5053
5054template <>
5055template <typename Serializer>
5056void serde::Serializable<Circuit::MemOp>::serialize(const Circuit::MemOp& obj, Serializer& serializer)
5057{
5058 serializer.increase_container_depth();
5059 serde::Serializable<decltype(obj.operation)>::serialize(obj.operation, serializer);
5060 serde::Serializable<decltype(obj.index)>::serialize(obj.index, serializer);
5061 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5062 serializer.decrease_container_depth();
5063}
5064
5065template <>
5066template <typename Deserializer>
5068{
5069 deserializer.increase_container_depth();
5070 Circuit::MemOp obj;
5071 obj.operation = serde::Deserializable<decltype(obj.operation)>::deserialize(deserializer);
5072 obj.index = serde::Deserializable<decltype(obj.index)>::deserialize(deserializer);
5073 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5074 deserializer.decrease_container_depth();
5075 return obj;
5076}
5077
5078namespace Circuit {
5079
5080inline bool operator==(const Opcode& lhs, const Opcode& rhs)
5081{
5082 if (!(lhs.value == rhs.value)) {
5083 return false;
5084 }
5085 return true;
5086}
5087
5088inline std::vector<uint8_t> Opcode::bincodeSerialize() const
5089{
5090 auto serializer = serde::BincodeSerializer();
5091 serde::Serializable<Opcode>::serialize(*this, serializer);
5092 return std::move(serializer).bytes();
5093}
5094
5095inline Opcode Opcode::bincodeDeserialize(std::vector<uint8_t> input)
5096{
5097 auto deserializer = serde::BincodeDeserializer(input);
5098 auto value = serde::Deserializable<Opcode>::deserialize(deserializer);
5099 if (deserializer.get_buffer_offset() < input.size()) {
5100 throw_or_abort("Some input bytes were not read");
5101 }
5102 return value;
5103}
5104
5105} // end of namespace Circuit
5106
5107template <>
5108template <typename Serializer>
5109void serde::Serializable<Circuit::Opcode>::serialize(const Circuit::Opcode& obj, Serializer& serializer)
5110{
5111 serializer.increase_container_depth();
5112 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5113 serializer.decrease_container_depth();
5114}
5115
5116template <>
5117template <typename Deserializer>
5119{
5120 deserializer.increase_container_depth();
5121 Circuit::Opcode obj;
5122 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5123 deserializer.decrease_container_depth();
5124 return obj;
5125}
5126
5127namespace Circuit {
5128
5129inline bool operator==(const Opcode::Arithmetic& lhs, const Opcode::Arithmetic& rhs)
5130{
5131 if (!(lhs.value == rhs.value)) {
5132 return false;
5133 }
5134 return true;
5135}
5136
5137inline std::vector<uint8_t> Opcode::Arithmetic::bincodeSerialize() const
5138{
5139 auto serializer = serde::BincodeSerializer();
5141 return std::move(serializer).bytes();
5142}
5143
5144inline Opcode::Arithmetic Opcode::Arithmetic::bincodeDeserialize(std::vector<uint8_t> input)
5145{
5146 auto deserializer = serde::BincodeDeserializer(input);
5148 if (deserializer.get_buffer_offset() < input.size()) {
5149 throw_or_abort("Some input bytes were not read");
5150 }
5151 return value;
5152}
5153
5154} // end of namespace Circuit
5155
5156template <>
5157template <typename Serializer>
5159 Serializer& serializer)
5160{
5161 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5162}
5163
5164template <>
5165template <typename Deserializer>
5167{
5169 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5170 return obj;
5171}
5172
5173namespace Circuit {
5174
5175inline bool operator==(const Opcode::BlackBoxFuncCall& lhs, const Opcode::BlackBoxFuncCall& rhs)
5176{
5177 if (!(lhs.value == rhs.value)) {
5178 return false;
5179 }
5180 return true;
5181}
5182
5183inline std::vector<uint8_t> Opcode::BlackBoxFuncCall::bincodeSerialize() const
5184{
5185 auto serializer = serde::BincodeSerializer();
5187 return std::move(serializer).bytes();
5188}
5189
5190inline Opcode::BlackBoxFuncCall Opcode::BlackBoxFuncCall::bincodeDeserialize(std::vector<uint8_t> input)
5191{
5192 auto deserializer = serde::BincodeDeserializer(input);
5194 if (deserializer.get_buffer_offset() < input.size()) {
5195 throw_or_abort("Some input bytes were not read");
5196 }
5197 return value;
5198}
5199
5200} // end of namespace Circuit
5201
5202template <>
5203template <typename Serializer>
5205 Serializer& serializer)
5206{
5207 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5208}
5209
5210template <>
5211template <typename Deserializer>
5213 Deserializer& deserializer)
5214{
5216 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5217 return obj;
5218}
5219
5220namespace Circuit {
5221
5222inline bool operator==(const Opcode::Directive& lhs, const Opcode::Directive& rhs)
5223{
5224 if (!(lhs.value == rhs.value)) {
5225 return false;
5226 }
5227 return true;
5228}
5229
5230inline std::vector<uint8_t> Opcode::Directive::bincodeSerialize() const
5231{
5232 auto serializer = serde::BincodeSerializer();
5234 return std::move(serializer).bytes();
5235}
5236
5237inline Opcode::Directive Opcode::Directive::bincodeDeserialize(std::vector<uint8_t> input)
5238{
5239 auto deserializer = serde::BincodeDeserializer(input);
5241 if (deserializer.get_buffer_offset() < input.size()) {
5242 throw_or_abort("Some input bytes were not read");
5243 }
5244 return value;
5245}
5246
5247} // end of namespace Circuit
5248
5249template <>
5250template <typename Serializer>
5252 Serializer& serializer)
5253{
5254 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5255}
5256
5257template <>
5258template <typename Deserializer>
5260{
5262 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5263 return obj;
5264}
5265
5266namespace Circuit {
5267
5268inline bool operator==(const Opcode::Brillig& lhs, const Opcode::Brillig& rhs)
5269{
5270 if (!(lhs.value == rhs.value)) {
5271 return false;
5272 }
5273 return true;
5274}
5275
5276inline std::vector<uint8_t> Opcode::Brillig::bincodeSerialize() const
5277{
5278 auto serializer = serde::BincodeSerializer();
5280 return std::move(serializer).bytes();
5281}
5282
5283inline Opcode::Brillig Opcode::Brillig::bincodeDeserialize(std::vector<uint8_t> input)
5284{
5285 auto deserializer = serde::BincodeDeserializer(input);
5286 auto value = serde::Deserializable<Opcode::Brillig>::deserialize(deserializer);
5287 if (deserializer.get_buffer_offset() < input.size()) {
5288 throw_or_abort("Some input bytes were not read");
5289 }
5290 return value;
5291}
5292
5293} // end of namespace Circuit
5294
5295template <>
5296template <typename Serializer>
5298 Serializer& serializer)
5299{
5300 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5301}
5302
5303template <>
5304template <typename Deserializer>
5306{
5308 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5309 return obj;
5310}
5311
5312namespace Circuit {
5313
5314inline bool operator==(const Opcode::MemoryOp& lhs, const Opcode::MemoryOp& rhs)
5315{
5316 if (!(lhs.block_id == rhs.block_id)) {
5317 return false;
5318 }
5319 if (!(lhs.op == rhs.op)) {
5320 return false;
5321 }
5322 if (!(lhs.predicate == rhs.predicate)) {
5323 return false;
5324 }
5325 return true;
5326}
5327
5328inline std::vector<uint8_t> Opcode::MemoryOp::bincodeSerialize() const
5329{
5330 auto serializer = serde::BincodeSerializer();
5332 return std::move(serializer).bytes();
5333}
5334
5335inline Opcode::MemoryOp Opcode::MemoryOp::bincodeDeserialize(std::vector<uint8_t> input)
5336{
5337 auto deserializer = serde::BincodeDeserializer(input);
5339 if (deserializer.get_buffer_offset() < input.size()) {
5340 throw_or_abort("Some input bytes were not read");
5341 }
5342 return value;
5343}
5344
5345} // end of namespace Circuit
5346
5347template <>
5348template <typename Serializer>
5350 Serializer& serializer)
5351{
5352 serde::Serializable<decltype(obj.block_id)>::serialize(obj.block_id, serializer);
5353 serde::Serializable<decltype(obj.op)>::serialize(obj.op, serializer);
5354 serde::Serializable<decltype(obj.predicate)>::serialize(obj.predicate, serializer);
5355}
5356
5357template <>
5358template <typename Deserializer>
5360{
5362 obj.block_id = serde::Deserializable<decltype(obj.block_id)>::deserialize(deserializer);
5363 obj.op = serde::Deserializable<decltype(obj.op)>::deserialize(deserializer);
5364 obj.predicate = serde::Deserializable<decltype(obj.predicate)>::deserialize(deserializer);
5365 return obj;
5366}
5367
5368namespace Circuit {
5369
5370inline bool operator==(const Opcode::MemoryInit& lhs, const Opcode::MemoryInit& rhs)
5371{
5372 if (!(lhs.block_id == rhs.block_id)) {
5373 return false;
5374 }
5375 if (!(lhs.init == rhs.init)) {
5376 return false;
5377 }
5378 return true;
5379}
5380
5381inline std::vector<uint8_t> Opcode::MemoryInit::bincodeSerialize() const
5382{
5383 auto serializer = serde::BincodeSerializer();
5385 return std::move(serializer).bytes();
5386}
5387
5388inline Opcode::MemoryInit Opcode::MemoryInit::bincodeDeserialize(std::vector<uint8_t> input)
5389{
5390 auto deserializer = serde::BincodeDeserializer(input);
5392 if (deserializer.get_buffer_offset() < input.size()) {
5393 throw_or_abort("Some input bytes were not read");
5394 }
5395 return value;
5396}
5397
5398} // end of namespace Circuit
5399
5400template <>
5401template <typename Serializer>
5403 Serializer& serializer)
5404{
5405 serde::Serializable<decltype(obj.block_id)>::serialize(obj.block_id, serializer);
5406 serde::Serializable<decltype(obj.init)>::serialize(obj.init, serializer);
5407}
5408
5409template <>
5410template <typename Deserializer>
5412{
5414 obj.block_id = serde::Deserializable<decltype(obj.block_id)>::deserialize(deserializer);
5415 obj.init = serde::Deserializable<decltype(obj.init)>::deserialize(deserializer);
5416 return obj;
5417}
5418
5419namespace Circuit {
5420
5421inline bool operator==(const OpcodeLocation& lhs, const OpcodeLocation& rhs)
5422{
5423 if (!(lhs.value == rhs.value)) {
5424 return false;
5425 }
5426 return true;
5427}
5428
5429inline std::vector<uint8_t> OpcodeLocation::bincodeSerialize() const
5430{
5431 auto serializer = serde::BincodeSerializer();
5433 return std::move(serializer).bytes();
5434}
5435
5436inline OpcodeLocation OpcodeLocation::bincodeDeserialize(std::vector<uint8_t> input)
5437{
5438 auto deserializer = serde::BincodeDeserializer(input);
5439 auto value = serde::Deserializable<OpcodeLocation>::deserialize(deserializer);
5440 if (deserializer.get_buffer_offset() < input.size()) {
5441 throw_or_abort("Some input bytes were not read");
5442 }
5443 return value;
5444}
5445
5446} // end of namespace Circuit
5447
5448template <>
5449template <typename Serializer>
5451{
5452 serializer.increase_container_depth();
5453 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5454 serializer.decrease_container_depth();
5455}
5456
5457template <>
5458template <typename Deserializer>
5460{
5461 deserializer.increase_container_depth();
5463 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5464 deserializer.decrease_container_depth();
5465 return obj;
5466}
5467
5468namespace Circuit {
5469
5470inline bool operator==(const OpcodeLocation::Acir& lhs, const OpcodeLocation::Acir& rhs)
5471{
5472 if (!(lhs.value == rhs.value)) {
5473 return false;
5474 }
5475 return true;
5476}
5477
5478inline std::vector<uint8_t> OpcodeLocation::Acir::bincodeSerialize() const
5479{
5480 auto serializer = serde::BincodeSerializer();
5482 return std::move(serializer).bytes();
5483}
5484
5485inline OpcodeLocation::Acir OpcodeLocation::Acir::bincodeDeserialize(std::vector<uint8_t> input)
5486{
5487 auto deserializer = serde::BincodeDeserializer(input);
5489 if (deserializer.get_buffer_offset() < input.size()) {
5490 throw_or_abort("Some input bytes were not read");
5491 }
5492 return value;
5493}
5494
5495} // end of namespace Circuit
5496
5497template <>
5498template <typename Serializer>
5500 Serializer& serializer)
5501{
5502 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5503}
5504
5505template <>
5506template <typename Deserializer>
5508 Deserializer& deserializer)
5509{
5511 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5512 return obj;
5513}
5514
5515namespace Circuit {
5516
5517inline bool operator==(const OpcodeLocation::Brillig& lhs, const OpcodeLocation::Brillig& rhs)
5518{
5519 if (!(lhs.acir_index == rhs.acir_index)) {
5520 return false;
5521 }
5522 if (!(lhs.brillig_index == rhs.brillig_index)) {
5523 return false;
5524 }
5525 return true;
5526}
5527
5528inline std::vector<uint8_t> OpcodeLocation::Brillig::bincodeSerialize() const
5529{
5530 auto serializer = serde::BincodeSerializer();
5532 return std::move(serializer).bytes();
5533}
5534
5535inline OpcodeLocation::Brillig OpcodeLocation::Brillig::bincodeDeserialize(std::vector<uint8_t> input)
5536{
5537 auto deserializer = serde::BincodeDeserializer(input);
5539 if (deserializer.get_buffer_offset() < input.size()) {
5540 throw_or_abort("Some input bytes were not read");
5541 }
5542 return value;
5543}
5544
5545} // end of namespace Circuit
5546
5547template <>
5548template <typename Serializer>
5550 Serializer& serializer)
5551{
5552 serde::Serializable<decltype(obj.acir_index)>::serialize(obj.acir_index, serializer);
5553 serde::Serializable<decltype(obj.brillig_index)>::serialize(obj.brillig_index, serializer);
5554}
5555
5556template <>
5557template <typename Deserializer>
5559 Deserializer& deserializer)
5560{
5562 obj.acir_index = serde::Deserializable<decltype(obj.acir_index)>::deserialize(deserializer);
5563 obj.brillig_index = serde::Deserializable<decltype(obj.brillig_index)>::deserialize(deserializer);
5564 return obj;
5565}
5566
5567namespace Circuit {
5568
5569inline bool operator==(const PublicInputs& lhs, const PublicInputs& rhs)
5570{
5571 if (!(lhs.value == rhs.value)) {
5572 return false;
5573 }
5574 return true;
5575}
5576
5577inline std::vector<uint8_t> PublicInputs::bincodeSerialize() const
5578{
5579 auto serializer = serde::BincodeSerializer();
5581 return std::move(serializer).bytes();
5582}
5583
5584inline PublicInputs PublicInputs::bincodeDeserialize(std::vector<uint8_t> input)
5585{
5586 auto deserializer = serde::BincodeDeserializer(input);
5587 auto value = serde::Deserializable<PublicInputs>::deserialize(deserializer);
5588 if (deserializer.get_buffer_offset() < input.size()) {
5589 throw_or_abort("Some input bytes were not read");
5590 }
5591 return value;
5592}
5593
5594} // end of namespace Circuit
5595
5596template <>
5597template <typename Serializer>
5599{
5600 serializer.increase_container_depth();
5601 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5602 serializer.decrease_container_depth();
5603}
5604
5605template <>
5606template <typename Deserializer>
5608{
5609 deserializer.increase_container_depth();
5611 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5612 deserializer.decrease_container_depth();
5613 return obj;
5614}
5615
5616namespace Circuit {
5617
5618inline bool operator==(const QuotientDirective& lhs, const QuotientDirective& rhs)
5619{
5620 if (!(lhs.a == rhs.a)) {
5621 return false;
5622 }
5623 if (!(lhs.b == rhs.b)) {
5624 return false;
5625 }
5626 if (!(lhs.q == rhs.q)) {
5627 return false;
5628 }
5629 if (!(lhs.r == rhs.r)) {
5630 return false;
5631 }
5632 if (!(lhs.predicate == rhs.predicate)) {
5633 return false;
5634 }
5635 return true;
5636}
5637
5638inline std::vector<uint8_t> QuotientDirective::bincodeSerialize() const
5639{
5640 auto serializer = serde::BincodeSerializer();
5642 return std::move(serializer).bytes();
5643}
5644
5645inline QuotientDirective QuotientDirective::bincodeDeserialize(std::vector<uint8_t> input)
5646{
5647 auto deserializer = serde::BincodeDeserializer(input);
5649 if (deserializer.get_buffer_offset() < input.size()) {
5650 throw_or_abort("Some input bytes were not read");
5651 }
5652 return value;
5653}
5654
5655} // end of namespace Circuit
5656
5657template <>
5658template <typename Serializer>
5660 Serializer& serializer)
5661{
5662 serializer.increase_container_depth();
5663 serde::Serializable<decltype(obj.a)>::serialize(obj.a, serializer);
5664 serde::Serializable<decltype(obj.b)>::serialize(obj.b, serializer);
5665 serde::Serializable<decltype(obj.q)>::serialize(obj.q, serializer);
5666 serde::Serializable<decltype(obj.r)>::serialize(obj.r, serializer);
5667 serde::Serializable<decltype(obj.predicate)>::serialize(obj.predicate, serializer);
5668 serializer.decrease_container_depth();
5669}
5670
5671template <>
5672template <typename Deserializer>
5674{
5675 deserializer.increase_container_depth();
5677 obj.a = serde::Deserializable<decltype(obj.a)>::deserialize(deserializer);
5678 obj.b = serde::Deserializable<decltype(obj.b)>::deserialize(deserializer);
5679 obj.q = serde::Deserializable<decltype(obj.q)>::deserialize(deserializer);
5680 obj.r = serde::Deserializable<decltype(obj.r)>::deserialize(deserializer);
5681 obj.predicate = serde::Deserializable<decltype(obj.predicate)>::deserialize(deserializer);
5682 deserializer.decrease_container_depth();
5683 return obj;
5684}
5685
5686namespace Circuit {
5687
5688inline bool operator==(const RegisterIndex& lhs, const RegisterIndex& rhs)
5689{
5690 if (!(lhs.value == rhs.value)) {
5691 return false;
5692 }
5693 return true;
5694}
5695
5696inline std::vector<uint8_t> RegisterIndex::bincodeSerialize() const
5697{
5698 auto serializer = serde::BincodeSerializer();
5700 return std::move(serializer).bytes();
5701}
5702
5703inline RegisterIndex RegisterIndex::bincodeDeserialize(std::vector<uint8_t> input)
5704{
5705 auto deserializer = serde::BincodeDeserializer(input);
5706 auto value = serde::Deserializable<RegisterIndex>::deserialize(deserializer);
5707 if (deserializer.get_buffer_offset() < input.size()) {
5708 throw_or_abort("Some input bytes were not read");
5709 }
5710 return value;
5711}
5712
5713} // end of namespace Circuit
5714
5715template <>
5716template <typename Serializer>
5718{
5719 serializer.increase_container_depth();
5720 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5721 serializer.decrease_container_depth();
5722}
5723
5724template <>
5725template <typename Deserializer>
5727{
5728 deserializer.increase_container_depth();
5730 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5731 deserializer.decrease_container_depth();
5732 return obj;
5733}
5734
5735namespace Circuit {
5736
5737inline bool operator==(const RegisterOrMemory& lhs, const RegisterOrMemory& rhs)
5738{
5739 if (!(lhs.value == rhs.value)) {
5740 return false;
5741 }
5742 return true;
5743}
5744
5745inline std::vector<uint8_t> RegisterOrMemory::bincodeSerialize() const
5746{
5747 auto serializer = serde::BincodeSerializer();
5749 return std::move(serializer).bytes();
5750}
5751
5752inline RegisterOrMemory RegisterOrMemory::bincodeDeserialize(std::vector<uint8_t> input)
5753{
5754 auto deserializer = serde::BincodeDeserializer(input);
5756 if (deserializer.get_buffer_offset() < input.size()) {
5757 throw_or_abort("Some input bytes were not read");
5758 }
5759 return value;
5760}
5761
5762} // end of namespace Circuit
5763
5764template <>
5765template <typename Serializer>
5767 Serializer& serializer)
5768{
5769 serializer.increase_container_depth();
5770 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5771 serializer.decrease_container_depth();
5772}
5773
5774template <>
5775template <typename Deserializer>
5777{
5778 deserializer.increase_container_depth();
5780 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5781 deserializer.decrease_container_depth();
5782 return obj;
5783}
5784
5785namespace Circuit {
5786
5787inline bool operator==(const RegisterOrMemory::RegisterIndex& lhs, const RegisterOrMemory::RegisterIndex& rhs)
5788{
5789 if (!(lhs.value == rhs.value)) {
5790 return false;
5791 }
5792 return true;
5793}
5794
5795inline std::vector<uint8_t> RegisterOrMemory::RegisterIndex::bincodeSerialize() const
5796{
5797 auto serializer = serde::BincodeSerializer();
5799 return std::move(serializer).bytes();
5800}
5801
5802inline RegisterOrMemory::RegisterIndex RegisterOrMemory::RegisterIndex::bincodeDeserialize(std::vector<uint8_t> input)
5803{
5804 auto deserializer = serde::BincodeDeserializer(input);
5806 if (deserializer.get_buffer_offset() < input.size()) {
5807 throw_or_abort("Some input bytes were not read");
5808 }
5809 return value;
5810}
5811
5812} // end of namespace Circuit
5813
5814template <>
5815template <typename Serializer>
5817 const Circuit::RegisterOrMemory::RegisterIndex& obj, Serializer& serializer)
5818{
5819 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5820}
5821
5822template <>
5823template <typename Deserializer>
5825 Deserializer& deserializer)
5826{
5828 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5829 return obj;
5830}
5831
5832namespace Circuit {
5833
5834inline bool operator==(const RegisterOrMemory::HeapArray& lhs, const RegisterOrMemory::HeapArray& rhs)
5835{
5836 if (!(lhs.value == rhs.value)) {
5837 return false;
5838 }
5839 return true;
5840}
5841
5842inline std::vector<uint8_t> RegisterOrMemory::HeapArray::bincodeSerialize() const
5843{
5844 auto serializer = serde::BincodeSerializer();
5846 return std::move(serializer).bytes();
5847}
5848
5849inline RegisterOrMemory::HeapArray RegisterOrMemory::HeapArray::bincodeDeserialize(std::vector<uint8_t> input)
5850{
5851 auto deserializer = serde::BincodeDeserializer(input);
5853 if (deserializer.get_buffer_offset() < input.size()) {
5854 throw_or_abort("Some input bytes were not read");
5855 }
5856 return value;
5857}
5858
5859} // end of namespace Circuit
5860
5861template <>
5862template <typename Serializer>
5864 const Circuit::RegisterOrMemory::HeapArray& obj, Serializer& serializer)
5865{
5866 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5867}
5868
5869template <>
5870template <typename Deserializer>
5872 Deserializer& deserializer)
5873{
5875 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5876 return obj;
5877}
5878
5879namespace Circuit {
5880
5881inline bool operator==(const RegisterOrMemory::HeapVector& lhs, const RegisterOrMemory::HeapVector& rhs)
5882{
5883 if (!(lhs.value == rhs.value)) {
5884 return false;
5885 }
5886 return true;
5887}
5888
5889inline std::vector<uint8_t> RegisterOrMemory::HeapVector::bincodeSerialize() const
5890{
5891 auto serializer = serde::BincodeSerializer();
5893 return std::move(serializer).bytes();
5894}
5895
5896inline RegisterOrMemory::HeapVector RegisterOrMemory::HeapVector::bincodeDeserialize(std::vector<uint8_t> input)
5897{
5898 auto deserializer = serde::BincodeDeserializer(input);
5900 if (deserializer.get_buffer_offset() < input.size()) {
5901 throw_or_abort("Some input bytes were not read");
5902 }
5903 return value;
5904}
5905
5906} // end of namespace Circuit
5907
5908template <>
5909template <typename Serializer>
5911 const Circuit::RegisterOrMemory::HeapVector& obj, Serializer& serializer)
5912{
5913 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
5914}
5915
5916template <>
5917template <typename Deserializer>
5919 Deserializer& deserializer)
5920{
5922 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
5923 return obj;
5924}
5925
5926namespace Circuit {
5927
5928inline bool operator==(const Value& lhs, const Value& rhs)
5929{
5930 if (!(lhs.inner == rhs.inner)) {
5931 return false;
5932 }
5933 return true;
5934}
5935
5936inline std::vector<uint8_t> Value::bincodeSerialize() const
5937{
5938 auto serializer = serde::BincodeSerializer();
5939 serde::Serializable<Value>::serialize(*this, serializer);
5940 return std::move(serializer).bytes();
5941}
5942
5943inline Value Value::bincodeDeserialize(std::vector<uint8_t> input)
5944{
5945 auto deserializer = serde::BincodeDeserializer(input);
5946 auto value = serde::Deserializable<Value>::deserialize(deserializer);
5947 if (deserializer.get_buffer_offset() < input.size()) {
5948 throw_or_abort("Some input bytes were not read");
5949 }
5950 return value;
5951}
5952
5953} // end of namespace Circuit
5954
5955template <>
5956template <typename Serializer>
5957void serde::Serializable<Circuit::Value>::serialize(const Circuit::Value& obj, Serializer& serializer)
5958{
5959 serializer.increase_container_depth();
5960 serde::Serializable<decltype(obj.inner)>::serialize(obj.inner, serializer);
5961 serializer.decrease_container_depth();
5962}
5963
5964template <>
5965template <typename Deserializer>
5967{
5968 deserializer.increase_container_depth();
5969 Circuit::Value obj;
5970 obj.inner = serde::Deserializable<decltype(obj.inner)>::deserialize(deserializer);
5971 deserializer.decrease_container_depth();
5972 return obj;
5973}
5974
5975namespace Circuit {
5976
5977inline bool operator==(const Witness& lhs, const Witness& rhs)
5978{
5979 if (!(lhs.value == rhs.value)) {
5980 return false;
5981 }
5982 return true;
5983}
5984
5985inline std::vector<uint8_t> Witness::bincodeSerialize() const
5986{
5987 auto serializer = serde::BincodeSerializer();
5988 serde::Serializable<Witness>::serialize(*this, serializer);
5989 return std::move(serializer).bytes();
5990}
5991
5992inline Witness Witness::bincodeDeserialize(std::vector<uint8_t> input)
5993{
5994 auto deserializer = serde::BincodeDeserializer(input);
5995 auto value = serde::Deserializable<Witness>::deserialize(deserializer);
5996 if (deserializer.get_buffer_offset() < input.size()) {
5997 throw_or_abort("Some input bytes were not read");
5998 }
5999 return value;
6000}
6001
6002} // end of namespace Circuit
6003
6004template <>
6005template <typename Serializer>
6006void serde::Serializable<Circuit::Witness>::serialize(const Circuit::Witness& obj, Serializer& serializer)
6007{
6008 serializer.increase_container_depth();
6009 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
6010 serializer.decrease_container_depth();
6011}
6012
6013template <>
6014template <typename Deserializer>
6016{
6017 deserializer.increase_container_depth();
6018 Circuit::Witness obj;
6019 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
6020 deserializer.decrease_container_depth();
6021 return obj;
6022}
Definition: bincode.hpp:33
Definition: bincode.hpp:17
Definition: acir.hpp:247
Definition: acir.hpp:265
Definition: acir.hpp:271
Definition: acir.hpp:259
Definition: acir.hpp:253
Definition: acir.hpp:245
Definition: acir.hpp:286
Definition: acir.hpp:334
Definition: acir.hpp:316
Definition: acir.hpp:328
Definition: acir.hpp:322
Definition: acir.hpp:298
Definition: acir.hpp:340
Definition: acir.hpp:352
Definition: acir.hpp:358
Definition: acir.hpp:304
Definition: acir.hpp:292
Definition: acir.hpp:310
Definition: acir.hpp:346
Definition: acir.hpp:284
Definition: acir.hpp:27
Definition: acir.hpp:64
Definition: acir.hpp:148
Definition: acir.hpp:47
Definition: acir.hpp:55
Definition: acir.hpp:37
Definition: acir.hpp:25
Definition: acir.hpp:408
Definition: acir.hpp:435
Definition: acir.hpp:447
Definition: acir.hpp:417
Definition: acir.hpp:481
Definition: acir.hpp:459
Definition: acir.hpp:399
Definition: acir.hpp:397
Definition: acir.hpp:202
Definition: acir.hpp:230
Definition: acir.hpp:222
Definition: acir.hpp:220
Definition: acir.hpp:572
Definition: acir.hpp:670
Definition: acir.hpp:610
Definition: acir.hpp:618
Definition: acir.hpp:633
Definition: acir.hpp:584
Definition: acir.hpp:593
Definition: acir.hpp:602
Definition: acir.hpp:652
Definition: acir.hpp:643
Definition: acir.hpp:627
Definition: acir.hpp:684
Definition: acir.hpp:661
Definition: acir.hpp:678
Definition: acir.hpp:559
Definition: acir.hpp:722
Definition: acir.hpp:714
Definition: acir.hpp:712
Definition: acir.hpp:737
Definition: acir.hpp:902
Definition: acir.hpp:780
Definition: acir.hpp:762
Definition: acir.hpp:770
Definition: acir.hpp:760
Definition: acir.hpp:210
Definition: acir.hpp:16
Definition: acir.hpp:379
Definition: acir.hpp:388
Definition: acir.hpp:798
Definition: acir.hpp:870
Definition: acir.hpp:878
Definition: acir.hpp:868
Definition: acir.hpp:810
Definition: acir.hpp:818
Definition: acir.hpp:834
Definition: acir.hpp:826
Definition: acir.hpp:852
Definition: acir.hpp:842
Definition: acir.hpp:808
Definition: acir.hpp:894
Definition: acir.hpp:748
Definition: acir.hpp:371
Definition: acir.hpp:528
Definition: acir.hpp:518
Definition: acir.hpp:551
Definition: acir.hpp:8
Definition: serde.hpp:131
Definition: serde.hpp:125