@aztec/bb.js 0.0.1-commit.d3ec352c → 0.0.1-commit.e310a4c8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/amd64-linux/bb +0 -0
- package/build/amd64-linux/nodejs_module.node +0 -0
- package/build/amd64-macos/bb +0 -0
- package/build/amd64-macos/nodejs_module.node +0 -0
- package/build/arm64-linux/bb +0 -0
- package/build/arm64-linux/nodejs_module.node +0 -0
- package/build/arm64-macos/bb +0 -0
- package/build/arm64-macos/nodejs_module.node +0 -0
- package/dest/browser/barretenberg/backend.d.ts +49 -17
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +109 -9
- package/dest/browser/barretenberg/index.d.ts +2 -2
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg/index.js +2 -2
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/browser/bb_backends/index.d.ts +3 -1
- package/dest/browser/bb_backends/index.d.ts.map +1 -1
- package/dest/browser/cbind/generate.d.ts +5 -2
- package/dest/browser/cbind/generate.d.ts.map +1 -1
- package/dest/browser/cbind/generate.js +47 -25
- package/dest/browser/cbind/generated/api_types.d.ts +765 -1672
- package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/browser/cbind/generated/api_types.js +1453 -1525
- package/dest/browser/cbind/generated/async.d.ts +3 -5
- package/dest/browser/cbind/generated/async.d.ts.map +1 -1
- package/dest/browser/cbind/generated/async.js +13 -33
- package/dest/browser/cbind/generated/sync.d.ts +3 -5
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
- package/dest/browser/cbind/generated/sync.js +13 -31
- package/dest/browser/cbind/naming.d.ts +16 -0
- package/dest/browser/cbind/naming.d.ts.map +1 -0
- package/dest/browser/cbind/naming.js +24 -0
- package/dest/browser/cbind/rust_codegen.d.ts +26 -0
- package/dest/browser/cbind/rust_codegen.d.ts.map +1 -0
- package/dest/browser/cbind/rust_codegen.js +461 -0
- package/dest/browser/cbind/schema_visitor.d.ts +47 -0
- package/dest/browser/cbind/schema_visitor.d.ts.map +1 -0
- package/dest/browser/cbind/schema_visitor.js +158 -0
- package/dest/browser/cbind/typescript_codegen.d.ts +30 -0
- package/dest/browser/cbind/typescript_codegen.d.ts.map +1 -0
- package/dest/browser/cbind/typescript_codegen.js +365 -0
- package/dest/browser/index.d.ts +2 -2
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +2 -2
- package/dest/node/barretenberg/backend.d.ts +49 -17
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +109 -9
- package/dest/node/barretenberg/backend.test.d.ts +2 -0
- package/dest/node/barretenberg/backend.test.d.ts.map +1 -0
- package/dest/node/barretenberg/backend.test.js +103 -0
- package/dest/node/barretenberg/index.d.ts +2 -2
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +2 -2
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
- package/dest/node/bb_backends/index.d.ts +3 -1
- package/dest/node/bb_backends/index.d.ts.map +1 -1
- package/dest/node/bb_backends/node/index.d.ts +1 -1
- package/dest/node/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node/bb_backends/node/index.js +5 -5
- package/dest/node/bb_backends/node/native_shm.d.ts +3 -2
- package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm.js +40 -21
- package/dest/node/bb_backends/node/native_shm_async.d.ts +2 -2
- package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm_async.js +17 -21
- package/dest/node/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_socket.js +7 -5
- package/dest/node/bb_backends/node/platform.d.ts +1 -1
- package/dest/node/bb_backends/node/platform.d.ts.map +1 -1
- package/dest/node/bb_backends/node/platform.js +7 -2
- package/dest/node/cbind/generate.d.ts +5 -2
- package/dest/node/cbind/generate.d.ts.map +1 -1
- package/dest/node/cbind/generate.js +47 -25
- package/dest/node/cbind/generated/api_types.d.ts +765 -1672
- package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node/cbind/generated/api_types.js +1453 -1525
- package/dest/node/cbind/generated/async.d.ts +3 -5
- package/dest/node/cbind/generated/async.d.ts.map +1 -1
- package/dest/node/cbind/generated/async.js +13 -33
- package/dest/node/cbind/generated/sync.d.ts +3 -5
- package/dest/node/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node/cbind/generated/sync.js +13 -31
- package/dest/node/cbind/naming.d.ts +16 -0
- package/dest/node/cbind/naming.d.ts.map +1 -0
- package/dest/node/cbind/naming.js +24 -0
- package/dest/node/cbind/rust_codegen.d.ts +26 -0
- package/dest/node/cbind/rust_codegen.d.ts.map +1 -0
- package/dest/node/cbind/rust_codegen.js +461 -0
- package/dest/node/cbind/schema_visitor.d.ts +47 -0
- package/dest/node/cbind/schema_visitor.d.ts.map +1 -0
- package/dest/node/cbind/schema_visitor.js +158 -0
- package/dest/node/cbind/typescript_codegen.d.ts +30 -0
- package/dest/node/cbind/typescript_codegen.d.ts.map +1 -0
- package/dest/node/cbind/typescript_codegen.js +365 -0
- package/dest/node/index.d.ts +2 -2
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +2 -2
- package/dest/node-cjs/barretenberg/backend.d.ts +49 -17
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +111 -9
- package/dest/node-cjs/barretenberg/backend.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/backend.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/backend.test.js +105 -0
- package/dest/node-cjs/barretenberg/index.d.ts +2 -2
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +4 -2
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
- package/dest/node-cjs/bb_backends/index.d.ts +3 -1
- package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/index.js +5 -5
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts +3 -2
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm.js +39 -20
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +2 -2
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm_async.js +17 -21
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.js +7 -5
- package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/platform.js +7 -2
- package/dest/node-cjs/cbind/generate.d.ts +5 -2
- package/dest/node-cjs/cbind/generate.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generate.js +47 -25
- package/dest/node-cjs/cbind/generated/api_types.d.ts +765 -1672
- package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/api_types.js +1662 -1742
- package/dest/node-cjs/cbind/generated/async.d.ts +3 -5
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/async.js +12 -32
- package/dest/node-cjs/cbind/generated/sync.d.ts +3 -5
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/sync.js +12 -30
- package/dest/node-cjs/cbind/naming.d.ts +16 -0
- package/dest/node-cjs/cbind/naming.d.ts.map +1 -0
- package/dest/node-cjs/cbind/naming.js +28 -0
- package/dest/node-cjs/cbind/rust_codegen.d.ts +26 -0
- package/dest/node-cjs/cbind/rust_codegen.d.ts.map +1 -0
- package/dest/node-cjs/cbind/rust_codegen.js +465 -0
- package/dest/node-cjs/cbind/schema_visitor.d.ts +47 -0
- package/dest/node-cjs/cbind/schema_visitor.d.ts.map +1 -0
- package/dest/node-cjs/cbind/schema_visitor.js +162 -0
- package/dest/node-cjs/cbind/typescript_codegen.d.ts +30 -0
- package/dest/node-cjs/cbind/typescript_codegen.d.ts.map +1 -0
- package/dest/node-cjs/cbind/typescript_codegen.js +369 -0
- package/dest/node-cjs/index.d.ts +2 -2
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +4 -2
- package/package.json +1 -1
- package/src/barretenberg/backend.test.ts +122 -0
- package/src/barretenberg/backend.ts +149 -23
- package/src/barretenberg/index.ts +9 -1
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +1 -1
- package/src/bb_backends/index.ts +3 -0
- package/src/bb_backends/node/index.ts +9 -4
- package/src/bb_backends/node/native_shm.ts +38 -19
- package/src/bb_backends/node/native_shm_async.ts +15 -19
- package/src/bb_backends/node/native_socket.ts +7 -5
- package/src/bb_backends/node/platform.ts +6 -1
- package/src/cbind/generate.ts +51 -32
- package/src/cbind/naming.ts +27 -0
- package/src/cbind/rust_codegen.ts +504 -0
- package/src/cbind/schema_visitor.ts +219 -0
- package/src/cbind/typescript_codegen.ts +419 -0
- package/src/index.ts +4 -0
- package/dest/browser/cbind/schema_compiler.d.ts +0 -68
- package/dest/browser/cbind/schema_compiler.d.ts.map +0 -1
- package/dest/browser/cbind/schema_compiler.js +0 -600
- package/dest/node/cbind/schema_compiler.d.ts +0 -68
- package/dest/node/cbind/schema_compiler.d.ts.map +0 -1
- package/dest/node/cbind/schema_compiler.js +0 -600
- package/dest/node-cjs/cbind/schema_compiler.d.ts +0 -68
- package/dest/node-cjs/cbind/schema_compiler.d.ts.map +0 -1
- package/dest/node-cjs/cbind/schema_compiler.js +0 -607
- package/src/cbind/generated/api_types.ts +0 -4241
- package/src/cbind/generated/async.ts +0 -717
- package/src/cbind/generated/curve_constants.ts +0 -53
- package/src/cbind/generated/sync.ts +0 -663
- package/src/cbind/schema_compiler.ts +0 -745
|
@@ -1,420 +1,473 @@
|
|
|
1
1
|
// AUTOGENERATED FILE - DO NOT EDIT
|
|
2
2
|
// Conversion functions (exported)
|
|
3
|
-
export function
|
|
4
|
-
if (o.
|
|
5
|
-
throw new Error("Expected
|
|
6
|
-
}
|
|
7
|
-
if (o.iv === undefined) {
|
|
8
|
-
throw new Error("Expected iv in AesDecrypt deserialization");
|
|
3
|
+
export function toCircuitComputeVkResponse(o) {
|
|
4
|
+
if (o.bytes === undefined) {
|
|
5
|
+
throw new Error("Expected bytes in CircuitComputeVkResponse deserialization");
|
|
9
6
|
}
|
|
10
|
-
if (o.
|
|
11
|
-
throw new Error("Expected
|
|
7
|
+
if (o.fields === undefined) {
|
|
8
|
+
throw new Error("Expected fields in CircuitComputeVkResponse deserialization");
|
|
12
9
|
}
|
|
13
|
-
if (o.
|
|
14
|
-
throw new Error("Expected
|
|
10
|
+
if (o.hash === undefined) {
|
|
11
|
+
throw new Error("Expected hash in CircuitComputeVkResponse deserialization");
|
|
15
12
|
}
|
|
16
13
|
;
|
|
17
14
|
return {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
length: o.length,
|
|
15
|
+
bytes: o.bytes,
|
|
16
|
+
fields: o.fields,
|
|
17
|
+
hash: o.hash,
|
|
22
18
|
};
|
|
23
19
|
}
|
|
24
|
-
export function
|
|
25
|
-
if (o.
|
|
26
|
-
throw new Error("Expected
|
|
27
|
-
}
|
|
28
|
-
if (o.iv === undefined) {
|
|
29
|
-
throw new Error("Expected iv in AesDecrypt serialization");
|
|
20
|
+
export function toCircuitInput(o) {
|
|
21
|
+
if (o.name === undefined) {
|
|
22
|
+
throw new Error("Expected name in CircuitInput deserialization");
|
|
30
23
|
}
|
|
31
|
-
if (o.
|
|
32
|
-
throw new Error("Expected
|
|
24
|
+
if (o.bytecode === undefined) {
|
|
25
|
+
throw new Error("Expected bytecode in CircuitInput deserialization");
|
|
33
26
|
}
|
|
34
|
-
if (o.
|
|
35
|
-
throw new Error("Expected
|
|
27
|
+
if (o.verification_key === undefined) {
|
|
28
|
+
throw new Error("Expected verification_key in CircuitInput deserialization");
|
|
36
29
|
}
|
|
37
30
|
;
|
|
38
31
|
return {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
length: o.length,
|
|
32
|
+
name: o.name,
|
|
33
|
+
bytecode: o.bytecode,
|
|
34
|
+
verificationKey: o.verification_key,
|
|
43
35
|
};
|
|
44
36
|
}
|
|
45
|
-
export function
|
|
46
|
-
if (o.
|
|
47
|
-
throw new Error("Expected
|
|
37
|
+
export function toProofSystemSettings(o) {
|
|
38
|
+
if (o.ipa_accumulation === undefined) {
|
|
39
|
+
throw new Error("Expected ipa_accumulation in ProofSystemSettings deserialization");
|
|
40
|
+
}
|
|
41
|
+
if (o.oracle_hash_type === undefined) {
|
|
42
|
+
throw new Error("Expected oracle_hash_type in ProofSystemSettings deserialization");
|
|
43
|
+
}
|
|
44
|
+
if (o.disable_zk === undefined) {
|
|
45
|
+
throw new Error("Expected disable_zk in ProofSystemSettings deserialization");
|
|
46
|
+
}
|
|
47
|
+
if (o.optimized_solidity_verifier === undefined) {
|
|
48
|
+
throw new Error("Expected optimized_solidity_verifier in ProofSystemSettings deserialization");
|
|
48
49
|
}
|
|
49
50
|
;
|
|
50
51
|
return {
|
|
51
|
-
|
|
52
|
+
ipaAccumulation: o.ipa_accumulation,
|
|
53
|
+
oracleHashType: o.oracle_hash_type,
|
|
54
|
+
disableZk: o.disable_zk,
|
|
55
|
+
optimizedSolidityVerifier: o.optimized_solidity_verifier,
|
|
52
56
|
};
|
|
53
57
|
}
|
|
54
|
-
export function
|
|
55
|
-
if (o.
|
|
56
|
-
throw new Error("Expected
|
|
58
|
+
export function toCircuitProve(o) {
|
|
59
|
+
if (o.circuit === undefined) {
|
|
60
|
+
throw new Error("Expected circuit in CircuitProve deserialization");
|
|
61
|
+
}
|
|
62
|
+
if (o.witness === undefined) {
|
|
63
|
+
throw new Error("Expected witness in CircuitProve deserialization");
|
|
64
|
+
}
|
|
65
|
+
if (o.settings === undefined) {
|
|
66
|
+
throw new Error("Expected settings in CircuitProve deserialization");
|
|
57
67
|
}
|
|
58
68
|
;
|
|
59
69
|
return {
|
|
60
|
-
|
|
70
|
+
circuit: toCircuitInput(o.circuit),
|
|
71
|
+
witness: o.witness,
|
|
72
|
+
settings: toProofSystemSettings(o.settings),
|
|
61
73
|
};
|
|
62
74
|
}
|
|
63
|
-
export function
|
|
64
|
-
if (o.
|
|
65
|
-
throw new Error("Expected
|
|
75
|
+
export function toCircuitInputNoVK(o) {
|
|
76
|
+
if (o.name === undefined) {
|
|
77
|
+
throw new Error("Expected name in CircuitInputNoVK deserialization");
|
|
66
78
|
}
|
|
67
|
-
if (o.
|
|
68
|
-
throw new Error("Expected
|
|
79
|
+
if (o.bytecode === undefined) {
|
|
80
|
+
throw new Error("Expected bytecode in CircuitInputNoVK deserialization");
|
|
69
81
|
}
|
|
70
|
-
|
|
71
|
-
|
|
82
|
+
;
|
|
83
|
+
return {
|
|
84
|
+
name: o.name,
|
|
85
|
+
bytecode: o.bytecode,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export function toCircuitComputeVk(o) {
|
|
89
|
+
if (o.circuit === undefined) {
|
|
90
|
+
throw new Error("Expected circuit in CircuitComputeVk deserialization");
|
|
72
91
|
}
|
|
73
|
-
if (o.
|
|
74
|
-
throw new Error("Expected
|
|
92
|
+
if (o.settings === undefined) {
|
|
93
|
+
throw new Error("Expected settings in CircuitComputeVk deserialization");
|
|
75
94
|
}
|
|
76
95
|
;
|
|
77
96
|
return {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
key: o.key,
|
|
81
|
-
length: o.length,
|
|
97
|
+
circuit: toCircuitInputNoVK(o.circuit),
|
|
98
|
+
settings: toProofSystemSettings(o.settings),
|
|
82
99
|
};
|
|
83
100
|
}
|
|
84
|
-
export function
|
|
85
|
-
if (o.
|
|
86
|
-
throw new Error("Expected
|
|
87
|
-
}
|
|
88
|
-
if (o.iv === undefined) {
|
|
89
|
-
throw new Error("Expected iv in AesEncrypt serialization");
|
|
101
|
+
export function toCircuitStats(o) {
|
|
102
|
+
if (o.circuit === undefined) {
|
|
103
|
+
throw new Error("Expected circuit in CircuitStats deserialization");
|
|
90
104
|
}
|
|
91
|
-
if (o.
|
|
92
|
-
throw new Error("Expected
|
|
105
|
+
if (o.include_gates_per_opcode === undefined) {
|
|
106
|
+
throw new Error("Expected include_gates_per_opcode in CircuitStats deserialization");
|
|
93
107
|
}
|
|
94
|
-
if (o.
|
|
95
|
-
throw new Error("Expected
|
|
108
|
+
if (o.settings === undefined) {
|
|
109
|
+
throw new Error("Expected settings in CircuitStats deserialization");
|
|
96
110
|
}
|
|
97
111
|
;
|
|
98
112
|
return {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
length: o.length,
|
|
113
|
+
circuit: toCircuitInput(o.circuit),
|
|
114
|
+
includeGatesPerOpcode: o.include_gates_per_opcode,
|
|
115
|
+
settings: toProofSystemSettings(o.settings),
|
|
103
116
|
};
|
|
104
117
|
}
|
|
105
|
-
export function
|
|
106
|
-
if (o.
|
|
107
|
-
throw new Error("Expected
|
|
118
|
+
export function toCircuitVerify(o) {
|
|
119
|
+
if (o.verification_key === undefined) {
|
|
120
|
+
throw new Error("Expected verification_key in CircuitVerify deserialization");
|
|
121
|
+
}
|
|
122
|
+
if (o.public_inputs === undefined) {
|
|
123
|
+
throw new Error("Expected public_inputs in CircuitVerify deserialization");
|
|
124
|
+
}
|
|
125
|
+
if (o.proof === undefined) {
|
|
126
|
+
throw new Error("Expected proof in CircuitVerify deserialization");
|
|
127
|
+
}
|
|
128
|
+
if (o.settings === undefined) {
|
|
129
|
+
throw new Error("Expected settings in CircuitVerify deserialization");
|
|
108
130
|
}
|
|
109
131
|
;
|
|
110
132
|
return {
|
|
111
|
-
|
|
133
|
+
verificationKey: o.verification_key,
|
|
134
|
+
publicInputs: o.public_inputs,
|
|
135
|
+
proof: o.proof,
|
|
136
|
+
settings: toProofSystemSettings(o.settings),
|
|
112
137
|
};
|
|
113
138
|
}
|
|
114
|
-
export function
|
|
115
|
-
if (o.
|
|
116
|
-
throw new Error("Expected
|
|
139
|
+
export function toChonkComputeVk(o) {
|
|
140
|
+
if (o.circuit === undefined) {
|
|
141
|
+
throw new Error("Expected circuit in ChonkComputeVk deserialization");
|
|
117
142
|
}
|
|
118
143
|
;
|
|
119
144
|
return {
|
|
120
|
-
|
|
145
|
+
circuit: toCircuitInputNoVK(o.circuit),
|
|
121
146
|
};
|
|
122
147
|
}
|
|
123
|
-
export function
|
|
124
|
-
if (o.
|
|
125
|
-
throw new Error("Expected
|
|
148
|
+
export function toChonkStart(o) {
|
|
149
|
+
if (o.num_circuits === undefined) {
|
|
150
|
+
throw new Error("Expected num_circuits in ChonkStart deserialization");
|
|
126
151
|
}
|
|
127
152
|
;
|
|
128
153
|
return {
|
|
129
|
-
|
|
154
|
+
numCircuits: o.num_circuits,
|
|
130
155
|
};
|
|
131
156
|
}
|
|
132
|
-
export function
|
|
133
|
-
if (o.
|
|
134
|
-
throw new Error("Expected
|
|
157
|
+
export function toChonkLoad(o) {
|
|
158
|
+
if (o.circuit === undefined) {
|
|
159
|
+
throw new Error("Expected circuit in ChonkLoad deserialization");
|
|
135
160
|
}
|
|
136
161
|
;
|
|
137
162
|
return {
|
|
138
|
-
|
|
163
|
+
circuit: toCircuitInput(o.circuit),
|
|
139
164
|
};
|
|
140
165
|
}
|
|
141
|
-
export function
|
|
142
|
-
if (o.
|
|
143
|
-
throw new Error("Expected
|
|
166
|
+
export function toChonkAccumulate(o) {
|
|
167
|
+
if (o.witness === undefined) {
|
|
168
|
+
throw new Error("Expected witness in ChonkAccumulate deserialization");
|
|
144
169
|
}
|
|
145
170
|
;
|
|
146
171
|
return {
|
|
147
|
-
|
|
172
|
+
witness: o.witness,
|
|
148
173
|
};
|
|
149
174
|
}
|
|
150
|
-
export function
|
|
151
|
-
|
|
152
|
-
|
|
175
|
+
export function toChonkProve(o) {
|
|
176
|
+
return {};
|
|
177
|
+
}
|
|
178
|
+
export function toGoblinProof(o) {
|
|
179
|
+
if (o.merge_proof === undefined) {
|
|
180
|
+
throw new Error("Expected merge_proof in GoblinProof deserialization");
|
|
181
|
+
}
|
|
182
|
+
if (o.eccvm_proof === undefined) {
|
|
183
|
+
throw new Error("Expected eccvm_proof in GoblinProof deserialization");
|
|
184
|
+
}
|
|
185
|
+
if (o.ipa_proof === undefined) {
|
|
186
|
+
throw new Error("Expected ipa_proof in GoblinProof deserialization");
|
|
187
|
+
}
|
|
188
|
+
if (o.translator_proof === undefined) {
|
|
189
|
+
throw new Error("Expected translator_proof in GoblinProof deserialization");
|
|
153
190
|
}
|
|
154
191
|
;
|
|
155
192
|
return {
|
|
156
|
-
|
|
193
|
+
mergeProof: o.merge_proof,
|
|
194
|
+
eccvmProof: o.eccvm_proof,
|
|
195
|
+
ipaProof: o.ipa_proof,
|
|
196
|
+
translatorProof: o.translator_proof,
|
|
157
197
|
};
|
|
158
198
|
}
|
|
159
|
-
export function
|
|
160
|
-
if (o.
|
|
161
|
-
throw new Error("Expected
|
|
199
|
+
export function toChonkProof(o) {
|
|
200
|
+
if (o.mega_proof === undefined) {
|
|
201
|
+
throw new Error("Expected mega_proof in ChonkProof deserialization");
|
|
202
|
+
}
|
|
203
|
+
if (o.goblin_proof === undefined) {
|
|
204
|
+
throw new Error("Expected goblin_proof in ChonkProof deserialization");
|
|
162
205
|
}
|
|
163
206
|
;
|
|
164
207
|
return {
|
|
165
|
-
|
|
208
|
+
megaProof: o.mega_proof,
|
|
209
|
+
goblinProof: toGoblinProof(o.goblin_proof),
|
|
166
210
|
};
|
|
167
211
|
}
|
|
168
|
-
export function
|
|
169
|
-
if (o.
|
|
170
|
-
throw new Error("Expected
|
|
212
|
+
export function toChonkVerify(o) {
|
|
213
|
+
if (o.proof === undefined) {
|
|
214
|
+
throw new Error("Expected proof in ChonkVerify deserialization");
|
|
215
|
+
}
|
|
216
|
+
if (o.vk === undefined) {
|
|
217
|
+
throw new Error("Expected vk in ChonkVerify deserialization");
|
|
171
218
|
}
|
|
172
219
|
;
|
|
173
220
|
return {
|
|
174
|
-
|
|
221
|
+
proof: toChonkProof(o.proof),
|
|
222
|
+
vk: o.vk,
|
|
175
223
|
};
|
|
176
224
|
}
|
|
177
|
-
export function
|
|
178
|
-
if (o.
|
|
179
|
-
throw new Error("Expected
|
|
225
|
+
export function toVkAsFields(o) {
|
|
226
|
+
if (o.verification_key === undefined) {
|
|
227
|
+
throw new Error("Expected verification_key in VkAsFields deserialization");
|
|
180
228
|
}
|
|
181
229
|
;
|
|
182
230
|
return {
|
|
183
|
-
|
|
231
|
+
verificationKey: o.verification_key,
|
|
184
232
|
};
|
|
185
233
|
}
|
|
186
|
-
export function
|
|
187
|
-
if (o.
|
|
188
|
-
throw new Error("Expected
|
|
234
|
+
export function toMegaVkAsFields(o) {
|
|
235
|
+
if (o.verification_key === undefined) {
|
|
236
|
+
throw new Error("Expected verification_key in MegaVkAsFields deserialization");
|
|
189
237
|
}
|
|
190
238
|
;
|
|
191
239
|
return {
|
|
192
|
-
|
|
240
|
+
verificationKey: o.verification_key,
|
|
193
241
|
};
|
|
194
242
|
}
|
|
195
|
-
export function
|
|
196
|
-
if (o.
|
|
197
|
-
throw new Error("Expected
|
|
243
|
+
export function toCircuitWriteSolidityVerifier(o) {
|
|
244
|
+
if (o.verification_key === undefined) {
|
|
245
|
+
throw new Error("Expected verification_key in CircuitWriteSolidityVerifier deserialization");
|
|
246
|
+
}
|
|
247
|
+
if (o.settings === undefined) {
|
|
248
|
+
throw new Error("Expected settings in CircuitWriteSolidityVerifier deserialization");
|
|
198
249
|
}
|
|
199
250
|
;
|
|
200
251
|
return {
|
|
201
|
-
|
|
252
|
+
verificationKey: o.verification_key,
|
|
253
|
+
settings: toProofSystemSettings(o.settings),
|
|
202
254
|
};
|
|
203
255
|
}
|
|
204
|
-
export function
|
|
205
|
-
if (o.
|
|
206
|
-
throw new Error("Expected
|
|
256
|
+
export function toChonkCheckPrecomputedVk(o) {
|
|
257
|
+
if (o.circuit === undefined) {
|
|
258
|
+
throw new Error("Expected circuit in ChonkCheckPrecomputedVk deserialization");
|
|
207
259
|
}
|
|
208
260
|
;
|
|
209
261
|
return {
|
|
210
|
-
|
|
262
|
+
circuit: toCircuitInput(o.circuit),
|
|
211
263
|
};
|
|
212
264
|
}
|
|
213
|
-
export function
|
|
214
|
-
if (o.
|
|
215
|
-
throw new Error("Expected
|
|
265
|
+
export function toChonkStats(o) {
|
|
266
|
+
if (o.circuit === undefined) {
|
|
267
|
+
throw new Error("Expected circuit in ChonkStats deserialization");
|
|
216
268
|
}
|
|
217
|
-
if (o.
|
|
218
|
-
throw new Error("Expected
|
|
269
|
+
if (o.include_gates_per_opcode === undefined) {
|
|
270
|
+
throw new Error("Expected include_gates_per_opcode in ChonkStats deserialization");
|
|
219
271
|
}
|
|
220
272
|
;
|
|
221
273
|
return {
|
|
222
|
-
|
|
223
|
-
|
|
274
|
+
circuit: toCircuitInputNoVK(o.circuit),
|
|
275
|
+
includeGatesPerOpcode: o.include_gates_per_opcode,
|
|
224
276
|
};
|
|
225
277
|
}
|
|
226
|
-
export function
|
|
227
|
-
if (o.
|
|
228
|
-
throw new Error("Expected
|
|
229
|
-
}
|
|
230
|
-
if (o.value === undefined) {
|
|
231
|
-
throw new Error("Expected value in Bn254FqSqrtResponse serialization");
|
|
278
|
+
export function toPoseidon2Hash(o) {
|
|
279
|
+
if (o.inputs === undefined) {
|
|
280
|
+
throw new Error("Expected inputs in Poseidon2Hash deserialization");
|
|
232
281
|
}
|
|
233
282
|
;
|
|
234
283
|
return {
|
|
235
|
-
|
|
236
|
-
value: o.value,
|
|
284
|
+
inputs: o.inputs,
|
|
237
285
|
};
|
|
238
286
|
}
|
|
239
|
-
export function
|
|
240
|
-
if (o.
|
|
241
|
-
throw new Error("Expected
|
|
287
|
+
export function toPoseidon2Permutation(o) {
|
|
288
|
+
if (o.inputs === undefined) {
|
|
289
|
+
throw new Error("Expected inputs in Poseidon2Permutation deserialization");
|
|
242
290
|
}
|
|
243
291
|
;
|
|
244
292
|
return {
|
|
245
|
-
|
|
293
|
+
inputs: o.inputs,
|
|
246
294
|
};
|
|
247
295
|
}
|
|
248
|
-
export function
|
|
249
|
-
if (o.
|
|
250
|
-
throw new Error("Expected
|
|
296
|
+
export function toPedersenCommit(o) {
|
|
297
|
+
if (o.inputs === undefined) {
|
|
298
|
+
throw new Error("Expected inputs in PedersenCommit deserialization");
|
|
299
|
+
}
|
|
300
|
+
if (o.hash_index === undefined) {
|
|
301
|
+
throw new Error("Expected hash_index in PedersenCommit deserialization");
|
|
251
302
|
}
|
|
252
303
|
;
|
|
253
304
|
return {
|
|
254
|
-
|
|
305
|
+
inputs: o.inputs,
|
|
306
|
+
hashIndex: o.hash_index,
|
|
255
307
|
};
|
|
256
308
|
}
|
|
257
|
-
export function
|
|
258
|
-
if (o.
|
|
259
|
-
throw new Error("Expected
|
|
309
|
+
export function toPedersenHash(o) {
|
|
310
|
+
if (o.inputs === undefined) {
|
|
311
|
+
throw new Error("Expected inputs in PedersenHash deserialization");
|
|
260
312
|
}
|
|
261
|
-
if (o.
|
|
262
|
-
throw new Error("Expected
|
|
313
|
+
if (o.hash_index === undefined) {
|
|
314
|
+
throw new Error("Expected hash_index in PedersenHash deserialization");
|
|
263
315
|
}
|
|
264
316
|
;
|
|
265
317
|
return {
|
|
266
|
-
|
|
267
|
-
|
|
318
|
+
inputs: o.inputs,
|
|
319
|
+
hashIndex: o.hash_index,
|
|
268
320
|
};
|
|
269
321
|
}
|
|
270
|
-
export function
|
|
271
|
-
if (o.
|
|
272
|
-
throw new Error("Expected
|
|
322
|
+
export function toPedersenHashBuffer(o) {
|
|
323
|
+
if (o.input === undefined) {
|
|
324
|
+
throw new Error("Expected input in PedersenHashBuffer deserialization");
|
|
273
325
|
}
|
|
274
|
-
if (o.
|
|
275
|
-
throw new Error("Expected
|
|
326
|
+
if (o.hash_index === undefined) {
|
|
327
|
+
throw new Error("Expected hash_index in PedersenHashBuffer deserialization");
|
|
276
328
|
}
|
|
277
329
|
;
|
|
278
330
|
return {
|
|
279
|
-
|
|
280
|
-
|
|
331
|
+
input: o.input,
|
|
332
|
+
hashIndex: o.hash_index,
|
|
281
333
|
};
|
|
282
334
|
}
|
|
283
|
-
export function
|
|
284
|
-
if (o.
|
|
285
|
-
throw new Error("Expected
|
|
335
|
+
export function toBlake2s(o) {
|
|
336
|
+
if (o.data === undefined) {
|
|
337
|
+
throw new Error("Expected data in Blake2s deserialization");
|
|
286
338
|
}
|
|
287
339
|
;
|
|
288
340
|
return {
|
|
289
|
-
|
|
341
|
+
data: o.data,
|
|
290
342
|
};
|
|
291
343
|
}
|
|
292
|
-
export function
|
|
293
|
-
if (o.
|
|
294
|
-
throw new Error("Expected
|
|
344
|
+
export function toBlake2sToField(o) {
|
|
345
|
+
if (o.data === undefined) {
|
|
346
|
+
throw new Error("Expected data in Blake2sToField deserialization");
|
|
295
347
|
}
|
|
296
348
|
;
|
|
297
349
|
return {
|
|
298
|
-
|
|
350
|
+
data: o.data,
|
|
299
351
|
};
|
|
300
352
|
}
|
|
301
|
-
export function
|
|
302
|
-
if (o.
|
|
303
|
-
throw new Error("Expected
|
|
353
|
+
export function toAesEncrypt(o) {
|
|
354
|
+
if (o.plaintext === undefined) {
|
|
355
|
+
throw new Error("Expected plaintext in AesEncrypt deserialization");
|
|
304
356
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
point: toBn254G1Point(o.point),
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
export function fromBn254G1FromCompressedResponse(o) {
|
|
311
|
-
if (o.point === undefined) {
|
|
312
|
-
throw new Error("Expected point in Bn254G1FromCompressedResponse serialization");
|
|
357
|
+
if (o.iv === undefined) {
|
|
358
|
+
throw new Error("Expected iv in AesEncrypt deserialization");
|
|
313
359
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
point: fromBn254G1Point(o.point),
|
|
317
|
-
};
|
|
318
|
-
}
|
|
319
|
-
export function toBn254G1IsOnCurve(o) {
|
|
320
|
-
if (o.point === undefined) {
|
|
321
|
-
throw new Error("Expected point in Bn254G1IsOnCurve deserialization");
|
|
360
|
+
if (o.key === undefined) {
|
|
361
|
+
throw new Error("Expected key in AesEncrypt deserialization");
|
|
322
362
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
point: toBn254G1Point(o.point),
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
|
-
export function fromBn254G1IsOnCurve(o) {
|
|
329
|
-
if (o.point === undefined) {
|
|
330
|
-
throw new Error("Expected point in Bn254G1IsOnCurve serialization");
|
|
363
|
+
if (o.length === undefined) {
|
|
364
|
+
throw new Error("Expected length in AesEncrypt deserialization");
|
|
331
365
|
}
|
|
332
366
|
;
|
|
333
367
|
return {
|
|
334
|
-
|
|
368
|
+
plaintext: o.plaintext,
|
|
369
|
+
iv: o.iv,
|
|
370
|
+
key: o.key,
|
|
371
|
+
length: o.length,
|
|
335
372
|
};
|
|
336
373
|
}
|
|
337
|
-
export function
|
|
338
|
-
if (o.
|
|
339
|
-
throw new Error("Expected
|
|
374
|
+
export function toAesDecrypt(o) {
|
|
375
|
+
if (o.ciphertext === undefined) {
|
|
376
|
+
throw new Error("Expected ciphertext in AesDecrypt deserialization");
|
|
377
|
+
}
|
|
378
|
+
if (o.iv === undefined) {
|
|
379
|
+
throw new Error("Expected iv in AesDecrypt deserialization");
|
|
380
|
+
}
|
|
381
|
+
if (o.key === undefined) {
|
|
382
|
+
throw new Error("Expected key in AesDecrypt deserialization");
|
|
383
|
+
}
|
|
384
|
+
if (o.length === undefined) {
|
|
385
|
+
throw new Error("Expected length in AesDecrypt deserialization");
|
|
340
386
|
}
|
|
341
387
|
;
|
|
342
388
|
return {
|
|
343
|
-
|
|
389
|
+
ciphertext: o.ciphertext,
|
|
390
|
+
iv: o.iv,
|
|
391
|
+
key: o.key,
|
|
392
|
+
length: o.length,
|
|
344
393
|
};
|
|
345
394
|
}
|
|
346
|
-
export function
|
|
347
|
-
if (o.
|
|
348
|
-
throw new Error("Expected
|
|
395
|
+
export function toGrumpkinPoint(o) {
|
|
396
|
+
if (o.x === undefined) {
|
|
397
|
+
throw new Error("Expected x in GrumpkinPoint deserialization");
|
|
398
|
+
}
|
|
399
|
+
if (o.y === undefined) {
|
|
400
|
+
throw new Error("Expected y in GrumpkinPoint deserialization");
|
|
349
401
|
}
|
|
350
402
|
;
|
|
351
403
|
return {
|
|
352
|
-
|
|
404
|
+
x: o.x,
|
|
405
|
+
y: o.y,
|
|
353
406
|
};
|
|
354
407
|
}
|
|
355
|
-
export function
|
|
408
|
+
export function toGrumpkinMul(o) {
|
|
356
409
|
if (o.point === undefined) {
|
|
357
|
-
throw new Error("Expected point in
|
|
410
|
+
throw new Error("Expected point in GrumpkinMul deserialization");
|
|
358
411
|
}
|
|
359
412
|
if (o.scalar === undefined) {
|
|
360
|
-
throw new Error("Expected scalar in
|
|
413
|
+
throw new Error("Expected scalar in GrumpkinMul deserialization");
|
|
361
414
|
}
|
|
362
415
|
;
|
|
363
416
|
return {
|
|
364
|
-
point:
|
|
417
|
+
point: toGrumpkinPoint(o.point),
|
|
365
418
|
scalar: o.scalar,
|
|
366
419
|
};
|
|
367
420
|
}
|
|
368
|
-
export function
|
|
369
|
-
if (o.
|
|
370
|
-
throw new Error("Expected
|
|
421
|
+
export function toGrumpkinAdd(o) {
|
|
422
|
+
if (o.point_a === undefined) {
|
|
423
|
+
throw new Error("Expected point_a in GrumpkinAdd deserialization");
|
|
371
424
|
}
|
|
372
|
-
if (o.
|
|
373
|
-
throw new Error("Expected
|
|
425
|
+
if (o.point_b === undefined) {
|
|
426
|
+
throw new Error("Expected point_b in GrumpkinAdd deserialization");
|
|
374
427
|
}
|
|
375
428
|
;
|
|
376
429
|
return {
|
|
377
|
-
|
|
378
|
-
|
|
430
|
+
pointA: toGrumpkinPoint(o.point_a),
|
|
431
|
+
pointB: toGrumpkinPoint(o.point_b),
|
|
379
432
|
};
|
|
380
433
|
}
|
|
381
|
-
export function
|
|
382
|
-
if (o.
|
|
383
|
-
throw new Error("Expected
|
|
434
|
+
export function toGrumpkinBatchMul(o) {
|
|
435
|
+
if (o.points === undefined) {
|
|
436
|
+
throw new Error("Expected points in GrumpkinBatchMul deserialization");
|
|
437
|
+
}
|
|
438
|
+
if (o.scalar === undefined) {
|
|
439
|
+
throw new Error("Expected scalar in GrumpkinBatchMul deserialization");
|
|
384
440
|
}
|
|
385
441
|
;
|
|
386
442
|
return {
|
|
387
|
-
|
|
443
|
+
points: o.points.map((v) => toGrumpkinPoint(v)),
|
|
444
|
+
scalar: o.scalar,
|
|
388
445
|
};
|
|
389
446
|
}
|
|
390
|
-
export function
|
|
391
|
-
if (o.
|
|
392
|
-
throw new Error("Expected
|
|
447
|
+
export function toGrumpkinGetRandomFr(o) {
|
|
448
|
+
if (o.dummy === undefined) {
|
|
449
|
+
throw new Error("Expected dummy in GrumpkinGetRandomFr deserialization");
|
|
393
450
|
}
|
|
394
451
|
;
|
|
395
452
|
return {
|
|
396
|
-
|
|
453
|
+
dummy: o.dummy,
|
|
397
454
|
};
|
|
398
455
|
}
|
|
399
|
-
export function
|
|
400
|
-
if (o.
|
|
401
|
-
throw new Error("Expected
|
|
402
|
-
}
|
|
403
|
-
if (o.y === undefined) {
|
|
404
|
-
throw new Error("Expected y in Bn254G1Point deserialization");
|
|
456
|
+
export function toGrumpkinReduce512(o) {
|
|
457
|
+
if (o.input === undefined) {
|
|
458
|
+
throw new Error("Expected input in GrumpkinReduce512 deserialization");
|
|
405
459
|
}
|
|
406
460
|
;
|
|
407
461
|
return {
|
|
408
|
-
|
|
409
|
-
y: o.y,
|
|
462
|
+
input: o.input,
|
|
410
463
|
};
|
|
411
464
|
}
|
|
412
|
-
export function
|
|
465
|
+
export function toSecp256k1Point(o) {
|
|
413
466
|
if (o.x === undefined) {
|
|
414
|
-
throw new Error("Expected x in
|
|
467
|
+
throw new Error("Expected x in Secp256k1Point deserialization");
|
|
415
468
|
}
|
|
416
469
|
if (o.y === undefined) {
|
|
417
|
-
throw new Error("Expected y in
|
|
470
|
+
throw new Error("Expected y in Secp256k1Point deserialization");
|
|
418
471
|
}
|
|
419
472
|
;
|
|
420
473
|
return {
|
|
@@ -422,69 +475,61 @@ export function fromBn254G1Point(o) {
|
|
|
422
475
|
y: o.y,
|
|
423
476
|
};
|
|
424
477
|
}
|
|
425
|
-
export function
|
|
478
|
+
export function toSecp256k1Mul(o) {
|
|
426
479
|
if (o.point === undefined) {
|
|
427
|
-
throw new Error("Expected point in
|
|
480
|
+
throw new Error("Expected point in Secp256k1Mul deserialization");
|
|
428
481
|
}
|
|
429
482
|
if (o.scalar === undefined) {
|
|
430
|
-
throw new Error("Expected scalar in
|
|
483
|
+
throw new Error("Expected scalar in Secp256k1Mul deserialization");
|
|
431
484
|
}
|
|
432
485
|
;
|
|
433
486
|
return {
|
|
434
|
-
point:
|
|
487
|
+
point: toSecp256k1Point(o.point),
|
|
435
488
|
scalar: o.scalar,
|
|
436
489
|
};
|
|
437
490
|
}
|
|
438
|
-
export function
|
|
439
|
-
if (o.
|
|
440
|
-
throw new Error("Expected
|
|
441
|
-
}
|
|
442
|
-
if (o.scalar === undefined) {
|
|
443
|
-
throw new Error("Expected scalar in Bn254G2Mul serialization");
|
|
491
|
+
export function toSecp256k1GetRandomFr(o) {
|
|
492
|
+
if (o.dummy === undefined) {
|
|
493
|
+
throw new Error("Expected dummy in Secp256k1GetRandomFr deserialization");
|
|
444
494
|
}
|
|
445
495
|
;
|
|
446
496
|
return {
|
|
447
|
-
|
|
448
|
-
scalar: o.scalar,
|
|
497
|
+
dummy: o.dummy,
|
|
449
498
|
};
|
|
450
499
|
}
|
|
451
|
-
export function
|
|
452
|
-
if (o.
|
|
453
|
-
throw new Error("Expected
|
|
500
|
+
export function toSecp256k1Reduce512(o) {
|
|
501
|
+
if (o.input === undefined) {
|
|
502
|
+
throw new Error("Expected input in Secp256k1Reduce512 deserialization");
|
|
454
503
|
}
|
|
455
504
|
;
|
|
456
505
|
return {
|
|
457
|
-
|
|
506
|
+
input: o.input,
|
|
458
507
|
};
|
|
459
508
|
}
|
|
460
|
-
export function
|
|
461
|
-
if (o.
|
|
462
|
-
throw new Error("Expected
|
|
509
|
+
export function toBn254FrSqrt(o) {
|
|
510
|
+
if (o.input === undefined) {
|
|
511
|
+
throw new Error("Expected input in Bn254FrSqrt deserialization");
|
|
463
512
|
}
|
|
464
513
|
;
|
|
465
514
|
return {
|
|
466
|
-
|
|
515
|
+
input: o.input,
|
|
467
516
|
};
|
|
468
517
|
}
|
|
469
|
-
export function
|
|
470
|
-
if (o.
|
|
471
|
-
throw new Error("Expected
|
|
472
|
-
}
|
|
473
|
-
if (o.y === undefined) {
|
|
474
|
-
throw new Error("Expected y in Bn254G2Point deserialization");
|
|
518
|
+
export function toBn254FqSqrt(o) {
|
|
519
|
+
if (o.input === undefined) {
|
|
520
|
+
throw new Error("Expected input in Bn254FqSqrt deserialization");
|
|
475
521
|
}
|
|
476
522
|
;
|
|
477
523
|
return {
|
|
478
|
-
|
|
479
|
-
y: o.y,
|
|
524
|
+
input: o.input,
|
|
480
525
|
};
|
|
481
526
|
}
|
|
482
|
-
export function
|
|
527
|
+
export function toBn254G1Point(o) {
|
|
483
528
|
if (o.x === undefined) {
|
|
484
|
-
throw new Error("Expected x in
|
|
529
|
+
throw new Error("Expected x in Bn254G1Point deserialization");
|
|
485
530
|
}
|
|
486
531
|
if (o.y === undefined) {
|
|
487
|
-
throw new Error("Expected y in
|
|
532
|
+
throw new Error("Expected y in Bn254G1Point deserialization");
|
|
488
533
|
}
|
|
489
534
|
;
|
|
490
535
|
return {
|
|
@@ -492,336 +537,373 @@ export function fromBn254G2Point(o) {
|
|
|
492
537
|
y: o.y,
|
|
493
538
|
};
|
|
494
539
|
}
|
|
495
|
-
export function
|
|
496
|
-
if (o.
|
|
497
|
-
throw new Error("Expected
|
|
540
|
+
export function toBn254G1Mul(o) {
|
|
541
|
+
if (o.point === undefined) {
|
|
542
|
+
throw new Error("Expected point in Bn254G1Mul deserialization");
|
|
498
543
|
}
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
witness: o.witness,
|
|
502
|
-
};
|
|
503
|
-
}
|
|
504
|
-
export function fromChonkAccumulate(o) {
|
|
505
|
-
if (o.witness === undefined) {
|
|
506
|
-
throw new Error("Expected witness in ChonkAccumulate serialization");
|
|
544
|
+
if (o.scalar === undefined) {
|
|
545
|
+
throw new Error("Expected scalar in Bn254G1Mul deserialization");
|
|
507
546
|
}
|
|
508
547
|
;
|
|
509
548
|
return {
|
|
510
|
-
|
|
549
|
+
point: toBn254G1Point(o.point),
|
|
550
|
+
scalar: o.scalar,
|
|
511
551
|
};
|
|
512
552
|
}
|
|
513
|
-
export function
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
export function fromChonkAccumulateResponse(o) {
|
|
517
|
-
return {};
|
|
518
|
-
}
|
|
519
|
-
export function toChonkCheckPrecomputedVk(o) {
|
|
520
|
-
if (o.circuit === undefined) {
|
|
521
|
-
throw new Error("Expected circuit in ChonkCheckPrecomputedVk deserialization");
|
|
553
|
+
export function toBn254G2Point(o) {
|
|
554
|
+
if (o.x === undefined) {
|
|
555
|
+
throw new Error("Expected x in Bn254G2Point deserialization");
|
|
522
556
|
}
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
circuit: toCircuitInput(o.circuit),
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
export function fromChonkCheckPrecomputedVk(o) {
|
|
529
|
-
if (o.circuit === undefined) {
|
|
530
|
-
throw new Error("Expected circuit in ChonkCheckPrecomputedVk serialization");
|
|
557
|
+
if (o.y === undefined) {
|
|
558
|
+
throw new Error("Expected y in Bn254G2Point deserialization");
|
|
531
559
|
}
|
|
532
560
|
;
|
|
533
561
|
return {
|
|
534
|
-
|
|
562
|
+
x: o.x,
|
|
563
|
+
y: o.y,
|
|
535
564
|
};
|
|
536
565
|
}
|
|
537
|
-
export function
|
|
538
|
-
if (o.
|
|
539
|
-
throw new Error("Expected
|
|
566
|
+
export function toBn254G2Mul(o) {
|
|
567
|
+
if (o.point === undefined) {
|
|
568
|
+
throw new Error("Expected point in Bn254G2Mul deserialization");
|
|
540
569
|
}
|
|
541
|
-
if (o.
|
|
542
|
-
throw new Error("Expected
|
|
570
|
+
if (o.scalar === undefined) {
|
|
571
|
+
throw new Error("Expected scalar in Bn254G2Mul deserialization");
|
|
543
572
|
}
|
|
544
573
|
;
|
|
545
574
|
return {
|
|
546
|
-
|
|
547
|
-
|
|
575
|
+
point: toBn254G2Point(o.point),
|
|
576
|
+
scalar: o.scalar,
|
|
548
577
|
};
|
|
549
578
|
}
|
|
550
|
-
export function
|
|
551
|
-
if (o.
|
|
552
|
-
throw new Error("Expected
|
|
553
|
-
}
|
|
554
|
-
if (o.actualVk === undefined) {
|
|
555
|
-
throw new Error("Expected actualVk in ChonkCheckPrecomputedVkResponse serialization");
|
|
579
|
+
export function toBn254G1IsOnCurve(o) {
|
|
580
|
+
if (o.point === undefined) {
|
|
581
|
+
throw new Error("Expected point in Bn254G1IsOnCurve deserialization");
|
|
556
582
|
}
|
|
557
583
|
;
|
|
558
584
|
return {
|
|
559
|
-
|
|
560
|
-
actual_vk: o.actualVk,
|
|
585
|
+
point: toBn254G1Point(o.point),
|
|
561
586
|
};
|
|
562
587
|
}
|
|
563
|
-
export function
|
|
564
|
-
if (o.
|
|
565
|
-
throw new Error("Expected
|
|
588
|
+
export function toBn254G1FromCompressed(o) {
|
|
589
|
+
if (o.compressed === undefined) {
|
|
590
|
+
throw new Error("Expected compressed in Bn254G1FromCompressed deserialization");
|
|
566
591
|
}
|
|
567
592
|
;
|
|
568
593
|
return {
|
|
569
|
-
|
|
594
|
+
compressed: o.compressed,
|
|
570
595
|
};
|
|
571
596
|
}
|
|
572
|
-
export function
|
|
573
|
-
if (o.
|
|
574
|
-
throw new Error("Expected
|
|
597
|
+
export function toSchnorrComputePublicKey(o) {
|
|
598
|
+
if (o.private_key === undefined) {
|
|
599
|
+
throw new Error("Expected private_key in SchnorrComputePublicKey deserialization");
|
|
575
600
|
}
|
|
576
601
|
;
|
|
577
602
|
return {
|
|
578
|
-
|
|
603
|
+
privateKey: o.private_key,
|
|
579
604
|
};
|
|
580
605
|
}
|
|
581
|
-
export function
|
|
582
|
-
if (o.
|
|
583
|
-
throw new Error("Expected
|
|
606
|
+
export function toSchnorrConstructSignature(o) {
|
|
607
|
+
if (o.message === undefined) {
|
|
608
|
+
throw new Error("Expected message in SchnorrConstructSignature deserialization");
|
|
609
|
+
}
|
|
610
|
+
if (o.private_key === undefined) {
|
|
611
|
+
throw new Error("Expected private_key in SchnorrConstructSignature deserialization");
|
|
584
612
|
}
|
|
585
613
|
;
|
|
586
614
|
return {
|
|
587
|
-
|
|
615
|
+
message: o.message,
|
|
616
|
+
privateKey: o.private_key,
|
|
588
617
|
};
|
|
589
618
|
}
|
|
590
|
-
export function
|
|
591
|
-
if (o.
|
|
592
|
-
throw new Error("Expected
|
|
619
|
+
export function toSchnorrVerifySignature(o) {
|
|
620
|
+
if (o.message === undefined) {
|
|
621
|
+
throw new Error("Expected message in SchnorrVerifySignature deserialization");
|
|
622
|
+
}
|
|
623
|
+
if (o.public_key === undefined) {
|
|
624
|
+
throw new Error("Expected public_key in SchnorrVerifySignature deserialization");
|
|
625
|
+
}
|
|
626
|
+
if (o.s === undefined) {
|
|
627
|
+
throw new Error("Expected s in SchnorrVerifySignature deserialization");
|
|
628
|
+
}
|
|
629
|
+
if (o.e === undefined) {
|
|
630
|
+
throw new Error("Expected e in SchnorrVerifySignature deserialization");
|
|
593
631
|
}
|
|
594
632
|
;
|
|
595
633
|
return {
|
|
596
|
-
|
|
634
|
+
message: o.message,
|
|
635
|
+
publicKey: toGrumpkinPoint(o.public_key),
|
|
636
|
+
s: o.s,
|
|
637
|
+
e: o.e,
|
|
597
638
|
};
|
|
598
639
|
}
|
|
599
|
-
export function
|
|
600
|
-
if (o.
|
|
601
|
-
throw new Error("Expected
|
|
640
|
+
export function toEcdsaSecp256k1ComputePublicKey(o) {
|
|
641
|
+
if (o.private_key === undefined) {
|
|
642
|
+
throw new Error("Expected private_key in EcdsaSecp256k1ComputePublicKey deserialization");
|
|
602
643
|
}
|
|
603
644
|
;
|
|
604
645
|
return {
|
|
605
|
-
|
|
646
|
+
privateKey: o.private_key,
|
|
606
647
|
};
|
|
607
648
|
}
|
|
608
|
-
export function
|
|
609
|
-
if (o.
|
|
610
|
-
throw new Error("Expected
|
|
649
|
+
export function toEcdsaSecp256r1ComputePublicKey(o) {
|
|
650
|
+
if (o.private_key === undefined) {
|
|
651
|
+
throw new Error("Expected private_key in EcdsaSecp256r1ComputePublicKey deserialization");
|
|
611
652
|
}
|
|
612
653
|
;
|
|
613
654
|
return {
|
|
614
|
-
|
|
655
|
+
privateKey: o.private_key,
|
|
615
656
|
};
|
|
616
657
|
}
|
|
617
|
-
export function
|
|
618
|
-
if (o.
|
|
619
|
-
throw new Error("Expected
|
|
658
|
+
export function toEcdsaSecp256k1ConstructSignature(o) {
|
|
659
|
+
if (o.message === undefined) {
|
|
660
|
+
throw new Error("Expected message in EcdsaSecp256k1ConstructSignature deserialization");
|
|
620
661
|
}
|
|
621
|
-
if (o.
|
|
622
|
-
throw new Error("Expected
|
|
662
|
+
if (o.private_key === undefined) {
|
|
663
|
+
throw new Error("Expected private_key in EcdsaSecp256k1ConstructSignature deserialization");
|
|
623
664
|
}
|
|
624
665
|
;
|
|
625
666
|
return {
|
|
626
|
-
|
|
627
|
-
|
|
667
|
+
message: o.message,
|
|
668
|
+
privateKey: o.private_key,
|
|
628
669
|
};
|
|
629
670
|
}
|
|
630
|
-
export function
|
|
631
|
-
if (o.
|
|
632
|
-
throw new Error("Expected
|
|
671
|
+
export function toEcdsaSecp256r1ConstructSignature(o) {
|
|
672
|
+
if (o.message === undefined) {
|
|
673
|
+
throw new Error("Expected message in EcdsaSecp256r1ConstructSignature deserialization");
|
|
633
674
|
}
|
|
634
|
-
if (o.
|
|
635
|
-
throw new Error("Expected
|
|
675
|
+
if (o.private_key === undefined) {
|
|
676
|
+
throw new Error("Expected private_key in EcdsaSecp256r1ConstructSignature deserialization");
|
|
636
677
|
}
|
|
637
678
|
;
|
|
638
679
|
return {
|
|
639
|
-
|
|
640
|
-
|
|
680
|
+
message: o.message,
|
|
681
|
+
privateKey: o.private_key,
|
|
641
682
|
};
|
|
642
683
|
}
|
|
643
|
-
export function
|
|
644
|
-
if (o.
|
|
645
|
-
throw new Error("Expected
|
|
684
|
+
export function toEcdsaSecp256k1RecoverPublicKey(o) {
|
|
685
|
+
if (o.message === undefined) {
|
|
686
|
+
throw new Error("Expected message in EcdsaSecp256k1RecoverPublicKey deserialization");
|
|
687
|
+
}
|
|
688
|
+
if (o.r === undefined) {
|
|
689
|
+
throw new Error("Expected r in EcdsaSecp256k1RecoverPublicKey deserialization");
|
|
690
|
+
}
|
|
691
|
+
if (o.s === undefined) {
|
|
692
|
+
throw new Error("Expected s in EcdsaSecp256k1RecoverPublicKey deserialization");
|
|
693
|
+
}
|
|
694
|
+
if (o.v === undefined) {
|
|
695
|
+
throw new Error("Expected v in EcdsaSecp256k1RecoverPublicKey deserialization");
|
|
646
696
|
}
|
|
647
697
|
;
|
|
648
698
|
return {
|
|
649
|
-
|
|
699
|
+
message: o.message,
|
|
700
|
+
r: o.r,
|
|
701
|
+
s: o.s,
|
|
702
|
+
v: o.v,
|
|
650
703
|
};
|
|
651
704
|
}
|
|
652
|
-
export function
|
|
653
|
-
if (o.
|
|
654
|
-
throw new Error("Expected
|
|
705
|
+
export function toEcdsaSecp256r1RecoverPublicKey(o) {
|
|
706
|
+
if (o.message === undefined) {
|
|
707
|
+
throw new Error("Expected message in EcdsaSecp256r1RecoverPublicKey deserialization");
|
|
708
|
+
}
|
|
709
|
+
if (o.r === undefined) {
|
|
710
|
+
throw new Error("Expected r in EcdsaSecp256r1RecoverPublicKey deserialization");
|
|
711
|
+
}
|
|
712
|
+
if (o.s === undefined) {
|
|
713
|
+
throw new Error("Expected s in EcdsaSecp256r1RecoverPublicKey deserialization");
|
|
714
|
+
}
|
|
715
|
+
if (o.v === undefined) {
|
|
716
|
+
throw new Error("Expected v in EcdsaSecp256r1RecoverPublicKey deserialization");
|
|
655
717
|
}
|
|
656
718
|
;
|
|
657
719
|
return {
|
|
658
|
-
|
|
720
|
+
message: o.message,
|
|
721
|
+
r: o.r,
|
|
722
|
+
s: o.s,
|
|
723
|
+
v: o.v,
|
|
659
724
|
};
|
|
660
725
|
}
|
|
661
|
-
export function
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
export function fromChonkLoadResponse(o) {
|
|
665
|
-
return {};
|
|
666
|
-
}
|
|
667
|
-
export function toChonkProof(o) {
|
|
668
|
-
if (o.mega_proof === undefined) {
|
|
669
|
-
throw new Error("Expected mega_proof in ChonkProof deserialization");
|
|
726
|
+
export function toEcdsaSecp256k1VerifySignature(o) {
|
|
727
|
+
if (o.message === undefined) {
|
|
728
|
+
throw new Error("Expected message in EcdsaSecp256k1VerifySignature deserialization");
|
|
670
729
|
}
|
|
671
|
-
if (o.
|
|
672
|
-
throw new Error("Expected
|
|
730
|
+
if (o.public_key === undefined) {
|
|
731
|
+
throw new Error("Expected public_key in EcdsaSecp256k1VerifySignature deserialization");
|
|
732
|
+
}
|
|
733
|
+
if (o.r === undefined) {
|
|
734
|
+
throw new Error("Expected r in EcdsaSecp256k1VerifySignature deserialization");
|
|
735
|
+
}
|
|
736
|
+
if (o.s === undefined) {
|
|
737
|
+
throw new Error("Expected s in EcdsaSecp256k1VerifySignature deserialization");
|
|
738
|
+
}
|
|
739
|
+
if (o.v === undefined) {
|
|
740
|
+
throw new Error("Expected v in EcdsaSecp256k1VerifySignature deserialization");
|
|
673
741
|
}
|
|
674
742
|
;
|
|
675
743
|
return {
|
|
676
|
-
|
|
677
|
-
|
|
744
|
+
message: o.message,
|
|
745
|
+
publicKey: toSecp256k1Point(o.public_key),
|
|
746
|
+
r: o.r,
|
|
747
|
+
s: o.s,
|
|
748
|
+
v: o.v,
|
|
678
749
|
};
|
|
679
750
|
}
|
|
680
|
-
export function
|
|
681
|
-
if (o.
|
|
682
|
-
throw new Error("Expected
|
|
751
|
+
export function toSecp256r1Point(o) {
|
|
752
|
+
if (o.x === undefined) {
|
|
753
|
+
throw new Error("Expected x in Secp256r1Point deserialization");
|
|
683
754
|
}
|
|
684
|
-
if (o.
|
|
685
|
-
throw new Error("Expected
|
|
755
|
+
if (o.y === undefined) {
|
|
756
|
+
throw new Error("Expected y in Secp256r1Point deserialization");
|
|
686
757
|
}
|
|
687
758
|
;
|
|
688
759
|
return {
|
|
689
|
-
|
|
690
|
-
|
|
760
|
+
x: o.x,
|
|
761
|
+
y: o.y,
|
|
691
762
|
};
|
|
692
763
|
}
|
|
693
|
-
export function
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
export function fromChonkProve(o) {
|
|
697
|
-
return {};
|
|
698
|
-
}
|
|
699
|
-
export function toChonkProveResponse(o) {
|
|
700
|
-
if (o.proof === undefined) {
|
|
701
|
-
throw new Error("Expected proof in ChonkProveResponse deserialization");
|
|
764
|
+
export function toEcdsaSecp256r1VerifySignature(o) {
|
|
765
|
+
if (o.message === undefined) {
|
|
766
|
+
throw new Error("Expected message in EcdsaSecp256r1VerifySignature deserialization");
|
|
702
767
|
}
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
if (o.
|
|
710
|
-
throw new Error("Expected
|
|
768
|
+
if (o.public_key === undefined) {
|
|
769
|
+
throw new Error("Expected public_key in EcdsaSecp256r1VerifySignature deserialization");
|
|
770
|
+
}
|
|
771
|
+
if (o.r === undefined) {
|
|
772
|
+
throw new Error("Expected r in EcdsaSecp256r1VerifySignature deserialization");
|
|
773
|
+
}
|
|
774
|
+
if (o.s === undefined) {
|
|
775
|
+
throw new Error("Expected s in EcdsaSecp256r1VerifySignature deserialization");
|
|
776
|
+
}
|
|
777
|
+
if (o.v === undefined) {
|
|
778
|
+
throw new Error("Expected v in EcdsaSecp256r1VerifySignature deserialization");
|
|
711
779
|
}
|
|
712
780
|
;
|
|
713
781
|
return {
|
|
714
|
-
|
|
782
|
+
message: o.message,
|
|
783
|
+
publicKey: toSecp256r1Point(o.public_key),
|
|
784
|
+
r: o.r,
|
|
785
|
+
s: o.s,
|
|
786
|
+
v: o.v,
|
|
715
787
|
};
|
|
716
788
|
}
|
|
717
|
-
export function
|
|
718
|
-
if (o.
|
|
719
|
-
throw new Error("Expected
|
|
789
|
+
export function toSrsInitSrs(o) {
|
|
790
|
+
if (o.points_buf === undefined) {
|
|
791
|
+
throw new Error("Expected points_buf in SrsInitSrs deserialization");
|
|
792
|
+
}
|
|
793
|
+
if (o.num_points === undefined) {
|
|
794
|
+
throw new Error("Expected num_points in SrsInitSrs deserialization");
|
|
795
|
+
}
|
|
796
|
+
if (o.g2_point === undefined) {
|
|
797
|
+
throw new Error("Expected g2_point in SrsInitSrs deserialization");
|
|
720
798
|
}
|
|
721
799
|
;
|
|
722
800
|
return {
|
|
723
|
-
|
|
801
|
+
pointsBuf: o.points_buf,
|
|
802
|
+
numPoints: o.num_points,
|
|
803
|
+
g2Point: o.g2_point,
|
|
724
804
|
};
|
|
725
805
|
}
|
|
726
|
-
export function
|
|
727
|
-
if (o.
|
|
728
|
-
throw new Error("Expected
|
|
806
|
+
export function toSrsInitGrumpkinSrs(o) {
|
|
807
|
+
if (o.points_buf === undefined) {
|
|
808
|
+
throw new Error("Expected points_buf in SrsInitGrumpkinSrs deserialization");
|
|
809
|
+
}
|
|
810
|
+
if (o.num_points === undefined) {
|
|
811
|
+
throw new Error("Expected num_points in SrsInitGrumpkinSrs deserialization");
|
|
729
812
|
}
|
|
730
813
|
;
|
|
731
814
|
return {
|
|
732
|
-
|
|
815
|
+
pointsBuf: o.points_buf,
|
|
816
|
+
numPoints: o.num_points,
|
|
733
817
|
};
|
|
734
818
|
}
|
|
735
|
-
export function
|
|
736
|
-
return {};
|
|
737
|
-
}
|
|
738
|
-
export function fromChonkStartResponse(o) {
|
|
819
|
+
export function toShutdown(o) {
|
|
739
820
|
return {};
|
|
740
821
|
}
|
|
741
|
-
export function
|
|
742
|
-
if (o.
|
|
743
|
-
throw new Error("Expected
|
|
744
|
-
}
|
|
745
|
-
if (o.include_gates_per_opcode === undefined) {
|
|
746
|
-
throw new Error("Expected include_gates_per_opcode in ChonkStats deserialization");
|
|
822
|
+
export function toErrorResponse(o) {
|
|
823
|
+
if (o.message === undefined) {
|
|
824
|
+
throw new Error("Expected message in ErrorResponse deserialization");
|
|
747
825
|
}
|
|
748
826
|
;
|
|
749
827
|
return {
|
|
750
|
-
|
|
751
|
-
includeGatesPerOpcode: o.include_gates_per_opcode,
|
|
828
|
+
message: o.message,
|
|
752
829
|
};
|
|
753
830
|
}
|
|
754
|
-
export function
|
|
755
|
-
if (o.
|
|
756
|
-
throw new Error("Expected
|
|
831
|
+
export function toCircuitProveResponse(o) {
|
|
832
|
+
if (o.public_inputs === undefined) {
|
|
833
|
+
throw new Error("Expected public_inputs in CircuitProveResponse deserialization");
|
|
757
834
|
}
|
|
758
|
-
if (o.
|
|
759
|
-
throw new Error("Expected
|
|
835
|
+
if (o.proof === undefined) {
|
|
836
|
+
throw new Error("Expected proof in CircuitProveResponse deserialization");
|
|
837
|
+
}
|
|
838
|
+
if (o.vk === undefined) {
|
|
839
|
+
throw new Error("Expected vk in CircuitProveResponse deserialization");
|
|
760
840
|
}
|
|
761
841
|
;
|
|
762
842
|
return {
|
|
763
|
-
|
|
764
|
-
|
|
843
|
+
publicInputs: o.public_inputs,
|
|
844
|
+
proof: o.proof,
|
|
845
|
+
vk: toCircuitComputeVkResponse(o.vk),
|
|
765
846
|
};
|
|
766
847
|
}
|
|
767
|
-
export function
|
|
768
|
-
if (o.
|
|
769
|
-
throw new Error("Expected
|
|
848
|
+
export function toCircuitInfoResponse(o) {
|
|
849
|
+
if (o.num_gates === undefined) {
|
|
850
|
+
throw new Error("Expected num_gates in CircuitInfoResponse deserialization");
|
|
770
851
|
}
|
|
771
|
-
if (o.
|
|
772
|
-
throw new Error("Expected
|
|
852
|
+
if (o.num_gates_dyadic === undefined) {
|
|
853
|
+
throw new Error("Expected num_gates_dyadic in CircuitInfoResponse deserialization");
|
|
854
|
+
}
|
|
855
|
+
if (o.num_acir_opcodes === undefined) {
|
|
856
|
+
throw new Error("Expected num_acir_opcodes in CircuitInfoResponse deserialization");
|
|
773
857
|
}
|
|
774
858
|
if (o.gates_per_opcode === undefined) {
|
|
775
|
-
throw new Error("Expected gates_per_opcode in
|
|
859
|
+
throw new Error("Expected gates_per_opcode in CircuitInfoResponse deserialization");
|
|
776
860
|
}
|
|
777
861
|
;
|
|
778
862
|
return {
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
863
|
+
numGates: o.num_gates,
|
|
864
|
+
numGatesDyadic: o.num_gates_dyadic,
|
|
865
|
+
numAcirOpcodes: o.num_acir_opcodes,
|
|
866
|
+
gatesPerOpcode: o.gates_per_opcode,
|
|
782
867
|
};
|
|
783
868
|
}
|
|
784
|
-
export function
|
|
785
|
-
if (o.
|
|
786
|
-
throw new Error("Expected
|
|
787
|
-
}
|
|
788
|
-
if (o.circuitSize === undefined) {
|
|
789
|
-
throw new Error("Expected circuitSize in ChonkStatsResponse serialization");
|
|
790
|
-
}
|
|
791
|
-
if (o.gatesPerOpcode === undefined) {
|
|
792
|
-
throw new Error("Expected gatesPerOpcode in ChonkStatsResponse serialization");
|
|
869
|
+
export function toCircuitVerifyResponse(o) {
|
|
870
|
+
if (o.verified === undefined) {
|
|
871
|
+
throw new Error("Expected verified in CircuitVerifyResponse deserialization");
|
|
793
872
|
}
|
|
794
873
|
;
|
|
795
874
|
return {
|
|
796
|
-
|
|
797
|
-
circuit_size: o.circuitSize,
|
|
798
|
-
gates_per_opcode: o.gatesPerOpcode.map((v) => v),
|
|
875
|
+
verified: o.verified,
|
|
799
876
|
};
|
|
800
877
|
}
|
|
801
|
-
export function
|
|
802
|
-
if (o.
|
|
803
|
-
throw new Error("Expected
|
|
878
|
+
export function toChonkComputeVkResponse(o) {
|
|
879
|
+
if (o.bytes === undefined) {
|
|
880
|
+
throw new Error("Expected bytes in ChonkComputeVkResponse deserialization");
|
|
804
881
|
}
|
|
805
|
-
if (o.
|
|
806
|
-
throw new Error("Expected
|
|
882
|
+
if (o.fields === undefined) {
|
|
883
|
+
throw new Error("Expected fields in ChonkComputeVkResponse deserialization");
|
|
807
884
|
}
|
|
808
885
|
;
|
|
809
886
|
return {
|
|
810
|
-
|
|
811
|
-
|
|
887
|
+
bytes: o.bytes,
|
|
888
|
+
fields: o.fields,
|
|
812
889
|
};
|
|
813
890
|
}
|
|
814
|
-
export function
|
|
891
|
+
export function toChonkStartResponse(o) {
|
|
892
|
+
return {};
|
|
893
|
+
}
|
|
894
|
+
export function toChonkLoadResponse(o) {
|
|
895
|
+
return {};
|
|
896
|
+
}
|
|
897
|
+
export function toChonkAccumulateResponse(o) {
|
|
898
|
+
return {};
|
|
899
|
+
}
|
|
900
|
+
export function toChonkProveResponse(o) {
|
|
815
901
|
if (o.proof === undefined) {
|
|
816
|
-
throw new Error("Expected proof in
|
|
817
|
-
}
|
|
818
|
-
if (o.vk === undefined) {
|
|
819
|
-
throw new Error("Expected vk in ChonkVerify serialization");
|
|
902
|
+
throw new Error("Expected proof in ChonkProveResponse deserialization");
|
|
820
903
|
}
|
|
821
904
|
;
|
|
822
905
|
return {
|
|
823
|
-
proof:
|
|
824
|
-
vk: o.vk,
|
|
906
|
+
proof: toChonkProof(o.proof),
|
|
825
907
|
};
|
|
826
908
|
}
|
|
827
909
|
export function toChonkVerifyResponse(o) {
|
|
@@ -833,869 +915,592 @@ export function toChonkVerifyResponse(o) {
|
|
|
833
915
|
valid: o.valid,
|
|
834
916
|
};
|
|
835
917
|
}
|
|
836
|
-
export function
|
|
837
|
-
if (o.valid === undefined) {
|
|
838
|
-
throw new Error("Expected valid in ChonkVerifyResponse serialization");
|
|
839
|
-
}
|
|
840
|
-
;
|
|
841
|
-
return {
|
|
842
|
-
valid: o.valid,
|
|
843
|
-
};
|
|
844
|
-
}
|
|
845
|
-
export function toCircuitComputeVk(o) {
|
|
846
|
-
if (o.circuit === undefined) {
|
|
847
|
-
throw new Error("Expected circuit in CircuitComputeVk deserialization");
|
|
848
|
-
}
|
|
849
|
-
if (o.settings === undefined) {
|
|
850
|
-
throw new Error("Expected settings in CircuitComputeVk deserialization");
|
|
851
|
-
}
|
|
852
|
-
;
|
|
853
|
-
return {
|
|
854
|
-
circuit: toCircuitInputNoVK(o.circuit),
|
|
855
|
-
settings: toProofSystemSettings(o.settings),
|
|
856
|
-
};
|
|
857
|
-
}
|
|
858
|
-
export function fromCircuitComputeVk(o) {
|
|
859
|
-
if (o.circuit === undefined) {
|
|
860
|
-
throw new Error("Expected circuit in CircuitComputeVk serialization");
|
|
861
|
-
}
|
|
862
|
-
if (o.settings === undefined) {
|
|
863
|
-
throw new Error("Expected settings in CircuitComputeVk serialization");
|
|
864
|
-
}
|
|
865
|
-
;
|
|
866
|
-
return {
|
|
867
|
-
circuit: fromCircuitInputNoVK(o.circuit),
|
|
868
|
-
settings: fromProofSystemSettings(o.settings),
|
|
869
|
-
};
|
|
870
|
-
}
|
|
871
|
-
export function toCircuitComputeVkResponse(o) {
|
|
872
|
-
if (o.bytes === undefined) {
|
|
873
|
-
throw new Error("Expected bytes in CircuitComputeVkResponse deserialization");
|
|
874
|
-
}
|
|
918
|
+
export function toVkAsFieldsResponse(o) {
|
|
875
919
|
if (o.fields === undefined) {
|
|
876
|
-
throw new Error("Expected fields in
|
|
877
|
-
}
|
|
878
|
-
if (o.hash === undefined) {
|
|
879
|
-
throw new Error("Expected hash in CircuitComputeVkResponse deserialization");
|
|
920
|
+
throw new Error("Expected fields in VkAsFieldsResponse deserialization");
|
|
880
921
|
}
|
|
881
922
|
;
|
|
882
923
|
return {
|
|
883
|
-
|
|
884
|
-
fields: o.fields.map((v) => v),
|
|
885
|
-
hash: o.hash,
|
|
924
|
+
fields: o.fields,
|
|
886
925
|
};
|
|
887
926
|
}
|
|
888
|
-
export function
|
|
889
|
-
if (o.bytes === undefined) {
|
|
890
|
-
throw new Error("Expected bytes in CircuitComputeVkResponse serialization");
|
|
891
|
-
}
|
|
927
|
+
export function toMegaVkAsFieldsResponse(o) {
|
|
892
928
|
if (o.fields === undefined) {
|
|
893
|
-
throw new Error("Expected fields in
|
|
894
|
-
}
|
|
895
|
-
if (o.hash === undefined) {
|
|
896
|
-
throw new Error("Expected hash in CircuitComputeVkResponse serialization");
|
|
897
|
-
}
|
|
898
|
-
;
|
|
899
|
-
return {
|
|
900
|
-
bytes: o.bytes,
|
|
901
|
-
fields: o.fields.map((v) => v),
|
|
902
|
-
hash: o.hash,
|
|
903
|
-
};
|
|
904
|
-
}
|
|
905
|
-
export function toCircuitInfoResponse(o) {
|
|
906
|
-
if (o.num_gates === undefined) {
|
|
907
|
-
throw new Error("Expected num_gates in CircuitInfoResponse deserialization");
|
|
908
|
-
}
|
|
909
|
-
if (o.num_gates_dyadic === undefined) {
|
|
910
|
-
throw new Error("Expected num_gates_dyadic in CircuitInfoResponse deserialization");
|
|
911
|
-
}
|
|
912
|
-
if (o.num_acir_opcodes === undefined) {
|
|
913
|
-
throw new Error("Expected num_acir_opcodes in CircuitInfoResponse deserialization");
|
|
914
|
-
}
|
|
915
|
-
if (o.gates_per_opcode === undefined) {
|
|
916
|
-
throw new Error("Expected gates_per_opcode in CircuitInfoResponse deserialization");
|
|
929
|
+
throw new Error("Expected fields in MegaVkAsFieldsResponse deserialization");
|
|
917
930
|
}
|
|
918
931
|
;
|
|
919
932
|
return {
|
|
920
|
-
|
|
921
|
-
numGatesDyadic: o.num_gates_dyadic,
|
|
922
|
-
numAcirOpcodes: o.num_acir_opcodes,
|
|
923
|
-
gatesPerOpcode: o.gates_per_opcode.map((v) => v),
|
|
933
|
+
fields: o.fields,
|
|
924
934
|
};
|
|
925
935
|
}
|
|
926
|
-
export function
|
|
927
|
-
if (o.
|
|
928
|
-
throw new Error("Expected
|
|
929
|
-
}
|
|
930
|
-
if (o.numGatesDyadic === undefined) {
|
|
931
|
-
throw new Error("Expected numGatesDyadic in CircuitInfoResponse serialization");
|
|
932
|
-
}
|
|
933
|
-
if (o.numAcirOpcodes === undefined) {
|
|
934
|
-
throw new Error("Expected numAcirOpcodes in CircuitInfoResponse serialization");
|
|
935
|
-
}
|
|
936
|
-
if (o.gatesPerOpcode === undefined) {
|
|
937
|
-
throw new Error("Expected gatesPerOpcode in CircuitInfoResponse serialization");
|
|
936
|
+
export function toCircuitWriteSolidityVerifierResponse(o) {
|
|
937
|
+
if (o.solidity_code === undefined) {
|
|
938
|
+
throw new Error("Expected solidity_code in CircuitWriteSolidityVerifierResponse deserialization");
|
|
938
939
|
}
|
|
939
940
|
;
|
|
940
941
|
return {
|
|
941
|
-
|
|
942
|
-
num_gates_dyadic: o.numGatesDyadic,
|
|
943
|
-
num_acir_opcodes: o.numAcirOpcodes,
|
|
944
|
-
gates_per_opcode: o.gatesPerOpcode.map((v) => v),
|
|
942
|
+
solidityCode: o.solidity_code,
|
|
945
943
|
};
|
|
946
944
|
}
|
|
947
|
-
export function
|
|
948
|
-
if (o.
|
|
949
|
-
throw new Error("Expected
|
|
950
|
-
}
|
|
951
|
-
if (o.bytecode === undefined) {
|
|
952
|
-
throw new Error("Expected bytecode in CircuitInput deserialization");
|
|
945
|
+
export function toChonkCheckPrecomputedVkResponse(o) {
|
|
946
|
+
if (o.valid === undefined) {
|
|
947
|
+
throw new Error("Expected valid in ChonkCheckPrecomputedVkResponse deserialization");
|
|
953
948
|
}
|
|
954
|
-
if (o.
|
|
955
|
-
throw new Error("Expected
|
|
949
|
+
if (o.actual_vk === undefined) {
|
|
950
|
+
throw new Error("Expected actual_vk in ChonkCheckPrecomputedVkResponse deserialization");
|
|
956
951
|
}
|
|
957
952
|
;
|
|
958
953
|
return {
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
verificationKey: o.verification_key,
|
|
954
|
+
valid: o.valid,
|
|
955
|
+
actualVk: o.actual_vk,
|
|
962
956
|
};
|
|
963
957
|
}
|
|
964
|
-
export function
|
|
965
|
-
if (o.
|
|
966
|
-
throw new Error("Expected
|
|
958
|
+
export function toChonkStatsResponse(o) {
|
|
959
|
+
if (o.acir_opcodes === undefined) {
|
|
960
|
+
throw new Error("Expected acir_opcodes in ChonkStatsResponse deserialization");
|
|
967
961
|
}
|
|
968
|
-
if (o.
|
|
969
|
-
throw new Error("Expected
|
|
962
|
+
if (o.circuit_size === undefined) {
|
|
963
|
+
throw new Error("Expected circuit_size in ChonkStatsResponse deserialization");
|
|
970
964
|
}
|
|
971
|
-
if (o.
|
|
972
|
-
throw new Error("Expected
|
|
965
|
+
if (o.gates_per_opcode === undefined) {
|
|
966
|
+
throw new Error("Expected gates_per_opcode in ChonkStatsResponse deserialization");
|
|
973
967
|
}
|
|
974
968
|
;
|
|
975
969
|
return {
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
970
|
+
acirOpcodes: o.acir_opcodes,
|
|
971
|
+
circuitSize: o.circuit_size,
|
|
972
|
+
gatesPerOpcode: o.gates_per_opcode,
|
|
979
973
|
};
|
|
980
974
|
}
|
|
981
|
-
export function
|
|
982
|
-
if (o.
|
|
983
|
-
throw new Error("Expected
|
|
984
|
-
}
|
|
985
|
-
if (o.bytecode === undefined) {
|
|
986
|
-
throw new Error("Expected bytecode in CircuitInputNoVK deserialization");
|
|
975
|
+
export function toPoseidon2HashResponse(o) {
|
|
976
|
+
if (o.hash === undefined) {
|
|
977
|
+
throw new Error("Expected hash in Poseidon2HashResponse deserialization");
|
|
987
978
|
}
|
|
988
979
|
;
|
|
989
980
|
return {
|
|
990
|
-
|
|
991
|
-
bytecode: o.bytecode,
|
|
981
|
+
hash: o.hash,
|
|
992
982
|
};
|
|
993
983
|
}
|
|
994
|
-
export function
|
|
995
|
-
if (o.
|
|
996
|
-
throw new Error("Expected
|
|
997
|
-
}
|
|
998
|
-
if (o.bytecode === undefined) {
|
|
999
|
-
throw new Error("Expected bytecode in CircuitInputNoVK serialization");
|
|
984
|
+
export function toPoseidon2PermutationResponse(o) {
|
|
985
|
+
if (o.outputs === undefined) {
|
|
986
|
+
throw new Error("Expected outputs in Poseidon2PermutationResponse deserialization");
|
|
1000
987
|
}
|
|
1001
988
|
;
|
|
1002
989
|
return {
|
|
1003
|
-
|
|
1004
|
-
bytecode: o.bytecode,
|
|
990
|
+
outputs: o.outputs,
|
|
1005
991
|
};
|
|
1006
992
|
}
|
|
1007
|
-
export function
|
|
1008
|
-
if (o.
|
|
1009
|
-
throw new Error("Expected
|
|
1010
|
-
}
|
|
1011
|
-
if (o.witness === undefined) {
|
|
1012
|
-
throw new Error("Expected witness in CircuitProve deserialization");
|
|
1013
|
-
}
|
|
1014
|
-
if (o.settings === undefined) {
|
|
1015
|
-
throw new Error("Expected settings in CircuitProve deserialization");
|
|
993
|
+
export function toPedersenCommitResponse(o) {
|
|
994
|
+
if (o.point === undefined) {
|
|
995
|
+
throw new Error("Expected point in PedersenCommitResponse deserialization");
|
|
1016
996
|
}
|
|
1017
997
|
;
|
|
1018
998
|
return {
|
|
1019
|
-
|
|
1020
|
-
witness: o.witness,
|
|
1021
|
-
settings: toProofSystemSettings(o.settings),
|
|
999
|
+
point: toGrumpkinPoint(o.point),
|
|
1022
1000
|
};
|
|
1023
1001
|
}
|
|
1024
|
-
export function
|
|
1025
|
-
if (o.
|
|
1026
|
-
throw new Error("Expected
|
|
1027
|
-
}
|
|
1028
|
-
if (o.witness === undefined) {
|
|
1029
|
-
throw new Error("Expected witness in CircuitProve serialization");
|
|
1030
|
-
}
|
|
1031
|
-
if (o.settings === undefined) {
|
|
1032
|
-
throw new Error("Expected settings in CircuitProve serialization");
|
|
1002
|
+
export function toPedersenHashResponse(o) {
|
|
1003
|
+
if (o.hash === undefined) {
|
|
1004
|
+
throw new Error("Expected hash in PedersenHashResponse deserialization");
|
|
1033
1005
|
}
|
|
1034
1006
|
;
|
|
1035
1007
|
return {
|
|
1036
|
-
|
|
1037
|
-
witness: o.witness,
|
|
1038
|
-
settings: fromProofSystemSettings(o.settings),
|
|
1008
|
+
hash: o.hash,
|
|
1039
1009
|
};
|
|
1040
1010
|
}
|
|
1041
|
-
export function
|
|
1042
|
-
if (o.
|
|
1043
|
-
throw new Error("Expected
|
|
1044
|
-
}
|
|
1045
|
-
if (o.proof === undefined) {
|
|
1046
|
-
throw new Error("Expected proof in CircuitProveResponse deserialization");
|
|
1047
|
-
}
|
|
1048
|
-
if (o.vk === undefined) {
|
|
1049
|
-
throw new Error("Expected vk in CircuitProveResponse deserialization");
|
|
1011
|
+
export function toPedersenHashBufferResponse(o) {
|
|
1012
|
+
if (o.hash === undefined) {
|
|
1013
|
+
throw new Error("Expected hash in PedersenHashBufferResponse deserialization");
|
|
1050
1014
|
}
|
|
1051
1015
|
;
|
|
1052
1016
|
return {
|
|
1053
|
-
|
|
1054
|
-
proof: o.proof.map((v) => v),
|
|
1055
|
-
vk: toCircuitComputeVkResponse(o.vk),
|
|
1017
|
+
hash: o.hash,
|
|
1056
1018
|
};
|
|
1057
1019
|
}
|
|
1058
|
-
export function
|
|
1059
|
-
if (o.
|
|
1060
|
-
throw new Error("Expected
|
|
1061
|
-
}
|
|
1062
|
-
if (o.proof === undefined) {
|
|
1063
|
-
throw new Error("Expected proof in CircuitProveResponse serialization");
|
|
1064
|
-
}
|
|
1065
|
-
if (o.vk === undefined) {
|
|
1066
|
-
throw new Error("Expected vk in CircuitProveResponse serialization");
|
|
1020
|
+
export function toBlake2sResponse(o) {
|
|
1021
|
+
if (o.hash === undefined) {
|
|
1022
|
+
throw new Error("Expected hash in Blake2sResponse deserialization");
|
|
1067
1023
|
}
|
|
1068
1024
|
;
|
|
1069
1025
|
return {
|
|
1070
|
-
|
|
1071
|
-
proof: o.proof.map((v) => v),
|
|
1072
|
-
vk: fromCircuitComputeVkResponse(o.vk),
|
|
1026
|
+
hash: o.hash,
|
|
1073
1027
|
};
|
|
1074
1028
|
}
|
|
1075
|
-
export function
|
|
1076
|
-
if (o.
|
|
1077
|
-
throw new Error("Expected
|
|
1078
|
-
}
|
|
1079
|
-
if (o.include_gates_per_opcode === undefined) {
|
|
1080
|
-
throw new Error("Expected include_gates_per_opcode in CircuitStats deserialization");
|
|
1081
|
-
}
|
|
1082
|
-
if (o.settings === undefined) {
|
|
1083
|
-
throw new Error("Expected settings in CircuitStats deserialization");
|
|
1029
|
+
export function toBlake2sToFieldResponse(o) {
|
|
1030
|
+
if (o.field === undefined) {
|
|
1031
|
+
throw new Error("Expected field in Blake2sToFieldResponse deserialization");
|
|
1084
1032
|
}
|
|
1085
1033
|
;
|
|
1086
1034
|
return {
|
|
1087
|
-
|
|
1088
|
-
includeGatesPerOpcode: o.include_gates_per_opcode,
|
|
1089
|
-
settings: toProofSystemSettings(o.settings),
|
|
1035
|
+
field: o.field,
|
|
1090
1036
|
};
|
|
1091
1037
|
}
|
|
1092
|
-
export function
|
|
1093
|
-
if (o.
|
|
1094
|
-
throw new Error("Expected
|
|
1095
|
-
}
|
|
1096
|
-
if (o.includeGatesPerOpcode === undefined) {
|
|
1097
|
-
throw new Error("Expected includeGatesPerOpcode in CircuitStats serialization");
|
|
1098
|
-
}
|
|
1099
|
-
if (o.settings === undefined) {
|
|
1100
|
-
throw new Error("Expected settings in CircuitStats serialization");
|
|
1038
|
+
export function toAesEncryptResponse(o) {
|
|
1039
|
+
if (o.ciphertext === undefined) {
|
|
1040
|
+
throw new Error("Expected ciphertext in AesEncryptResponse deserialization");
|
|
1101
1041
|
}
|
|
1102
1042
|
;
|
|
1103
1043
|
return {
|
|
1104
|
-
|
|
1105
|
-
include_gates_per_opcode: o.includeGatesPerOpcode,
|
|
1106
|
-
settings: fromProofSystemSettings(o.settings),
|
|
1044
|
+
ciphertext: o.ciphertext,
|
|
1107
1045
|
};
|
|
1108
1046
|
}
|
|
1109
|
-
export function
|
|
1110
|
-
if (o.
|
|
1111
|
-
throw new Error("Expected
|
|
1112
|
-
}
|
|
1113
|
-
if (o.public_inputs === undefined) {
|
|
1114
|
-
throw new Error("Expected public_inputs in CircuitVerify deserialization");
|
|
1115
|
-
}
|
|
1116
|
-
if (o.proof === undefined) {
|
|
1117
|
-
throw new Error("Expected proof in CircuitVerify deserialization");
|
|
1118
|
-
}
|
|
1119
|
-
if (o.settings === undefined) {
|
|
1120
|
-
throw new Error("Expected settings in CircuitVerify deserialization");
|
|
1047
|
+
export function toAesDecryptResponse(o) {
|
|
1048
|
+
if (o.plaintext === undefined) {
|
|
1049
|
+
throw new Error("Expected plaintext in AesDecryptResponse deserialization");
|
|
1121
1050
|
}
|
|
1122
1051
|
;
|
|
1123
1052
|
return {
|
|
1124
|
-
|
|
1125
|
-
publicInputs: o.public_inputs.map((v) => v),
|
|
1126
|
-
proof: o.proof.map((v) => v),
|
|
1127
|
-
settings: toProofSystemSettings(o.settings),
|
|
1053
|
+
plaintext: o.plaintext,
|
|
1128
1054
|
};
|
|
1129
1055
|
}
|
|
1130
|
-
export function
|
|
1131
|
-
if (o.
|
|
1132
|
-
throw new Error("Expected
|
|
1133
|
-
}
|
|
1134
|
-
if (o.publicInputs === undefined) {
|
|
1135
|
-
throw new Error("Expected publicInputs in CircuitVerify serialization");
|
|
1136
|
-
}
|
|
1137
|
-
if (o.proof === undefined) {
|
|
1138
|
-
throw new Error("Expected proof in CircuitVerify serialization");
|
|
1139
|
-
}
|
|
1140
|
-
if (o.settings === undefined) {
|
|
1141
|
-
throw new Error("Expected settings in CircuitVerify serialization");
|
|
1056
|
+
export function toGrumpkinMulResponse(o) {
|
|
1057
|
+
if (o.point === undefined) {
|
|
1058
|
+
throw new Error("Expected point in GrumpkinMulResponse deserialization");
|
|
1142
1059
|
}
|
|
1143
1060
|
;
|
|
1144
1061
|
return {
|
|
1145
|
-
|
|
1146
|
-
public_inputs: o.publicInputs.map((v) => v),
|
|
1147
|
-
proof: o.proof.map((v) => v),
|
|
1148
|
-
settings: fromProofSystemSettings(o.settings),
|
|
1062
|
+
point: toGrumpkinPoint(o.point),
|
|
1149
1063
|
};
|
|
1150
1064
|
}
|
|
1151
|
-
export function
|
|
1152
|
-
if (o.
|
|
1153
|
-
throw new Error("Expected
|
|
1065
|
+
export function toGrumpkinAddResponse(o) {
|
|
1066
|
+
if (o.point === undefined) {
|
|
1067
|
+
throw new Error("Expected point in GrumpkinAddResponse deserialization");
|
|
1154
1068
|
}
|
|
1155
1069
|
;
|
|
1156
1070
|
return {
|
|
1157
|
-
|
|
1071
|
+
point: toGrumpkinPoint(o.point),
|
|
1158
1072
|
};
|
|
1159
1073
|
}
|
|
1160
|
-
export function
|
|
1161
|
-
if (o.
|
|
1162
|
-
throw new Error("Expected
|
|
1074
|
+
export function toGrumpkinBatchMulResponse(o) {
|
|
1075
|
+
if (o.points === undefined) {
|
|
1076
|
+
throw new Error("Expected points in GrumpkinBatchMulResponse deserialization");
|
|
1163
1077
|
}
|
|
1164
1078
|
;
|
|
1165
1079
|
return {
|
|
1166
|
-
|
|
1080
|
+
points: o.points.map((v) => toGrumpkinPoint(v)),
|
|
1167
1081
|
};
|
|
1168
1082
|
}
|
|
1169
|
-
export function
|
|
1170
|
-
if (o.
|
|
1171
|
-
throw new Error("Expected
|
|
1172
|
-
}
|
|
1173
|
-
if (o.settings === undefined) {
|
|
1174
|
-
throw new Error("Expected settings in CircuitWriteSolidityVerifier deserialization");
|
|
1083
|
+
export function toGrumpkinGetRandomFrResponse(o) {
|
|
1084
|
+
if (o.value === undefined) {
|
|
1085
|
+
throw new Error("Expected value in GrumpkinGetRandomFrResponse deserialization");
|
|
1175
1086
|
}
|
|
1176
1087
|
;
|
|
1177
1088
|
return {
|
|
1178
|
-
|
|
1179
|
-
settings: toProofSystemSettings(o.settings),
|
|
1089
|
+
value: o.value,
|
|
1180
1090
|
};
|
|
1181
1091
|
}
|
|
1182
|
-
export function
|
|
1183
|
-
if (o.
|
|
1184
|
-
throw new Error("Expected
|
|
1185
|
-
}
|
|
1186
|
-
if (o.settings === undefined) {
|
|
1187
|
-
throw new Error("Expected settings in CircuitWriteSolidityVerifier serialization");
|
|
1092
|
+
export function toGrumpkinReduce512Response(o) {
|
|
1093
|
+
if (o.value === undefined) {
|
|
1094
|
+
throw new Error("Expected value in GrumpkinReduce512Response deserialization");
|
|
1188
1095
|
}
|
|
1189
1096
|
;
|
|
1190
1097
|
return {
|
|
1191
|
-
|
|
1192
|
-
settings: fromProofSystemSettings(o.settings),
|
|
1098
|
+
value: o.value,
|
|
1193
1099
|
};
|
|
1194
1100
|
}
|
|
1195
|
-
export function
|
|
1196
|
-
if (o.
|
|
1197
|
-
throw new Error("Expected
|
|
1101
|
+
export function toSecp256k1MulResponse(o) {
|
|
1102
|
+
if (o.point === undefined) {
|
|
1103
|
+
throw new Error("Expected point in Secp256k1MulResponse deserialization");
|
|
1198
1104
|
}
|
|
1199
1105
|
;
|
|
1200
1106
|
return {
|
|
1201
|
-
|
|
1107
|
+
point: toSecp256k1Point(o.point),
|
|
1202
1108
|
};
|
|
1203
1109
|
}
|
|
1204
|
-
export function
|
|
1205
|
-
if (o.
|
|
1206
|
-
throw new Error("Expected
|
|
1110
|
+
export function toSecp256k1GetRandomFrResponse(o) {
|
|
1111
|
+
if (o.value === undefined) {
|
|
1112
|
+
throw new Error("Expected value in Secp256k1GetRandomFrResponse deserialization");
|
|
1207
1113
|
}
|
|
1208
1114
|
;
|
|
1209
1115
|
return {
|
|
1210
|
-
|
|
1116
|
+
value: o.value,
|
|
1211
1117
|
};
|
|
1212
1118
|
}
|
|
1213
|
-
export function
|
|
1214
|
-
if (o.
|
|
1215
|
-
throw new Error("Expected
|
|
1119
|
+
export function toSecp256k1Reduce512Response(o) {
|
|
1120
|
+
if (o.value === undefined) {
|
|
1121
|
+
throw new Error("Expected value in Secp256k1Reduce512Response deserialization");
|
|
1216
1122
|
}
|
|
1217
1123
|
;
|
|
1218
1124
|
return {
|
|
1219
|
-
|
|
1125
|
+
value: o.value,
|
|
1220
1126
|
};
|
|
1221
1127
|
}
|
|
1222
|
-
export function
|
|
1223
|
-
if (o.
|
|
1224
|
-
throw new Error("Expected
|
|
1128
|
+
export function toBn254FrSqrtResponse(o) {
|
|
1129
|
+
if (o.is_square_root === undefined) {
|
|
1130
|
+
throw new Error("Expected is_square_root in Bn254FrSqrtResponse deserialization");
|
|
1131
|
+
}
|
|
1132
|
+
if (o.value === undefined) {
|
|
1133
|
+
throw new Error("Expected value in Bn254FrSqrtResponse deserialization");
|
|
1225
1134
|
}
|
|
1226
1135
|
;
|
|
1227
1136
|
return {
|
|
1228
|
-
|
|
1137
|
+
isSquareRoot: o.is_square_root,
|
|
1138
|
+
value: o.value,
|
|
1229
1139
|
};
|
|
1230
1140
|
}
|
|
1231
|
-
export function
|
|
1232
|
-
if (o.
|
|
1233
|
-
throw new Error("Expected
|
|
1141
|
+
export function toBn254FqSqrtResponse(o) {
|
|
1142
|
+
if (o.is_square_root === undefined) {
|
|
1143
|
+
throw new Error("Expected is_square_root in Bn254FqSqrtResponse deserialization");
|
|
1144
|
+
}
|
|
1145
|
+
if (o.value === undefined) {
|
|
1146
|
+
throw new Error("Expected value in Bn254FqSqrtResponse deserialization");
|
|
1234
1147
|
}
|
|
1235
1148
|
;
|
|
1236
1149
|
return {
|
|
1237
|
-
|
|
1150
|
+
isSquareRoot: o.is_square_root,
|
|
1151
|
+
value: o.value,
|
|
1238
1152
|
};
|
|
1239
1153
|
}
|
|
1240
|
-
export function
|
|
1241
|
-
if (o.
|
|
1242
|
-
throw new Error("Expected
|
|
1154
|
+
export function toBn254G1MulResponse(o) {
|
|
1155
|
+
if (o.point === undefined) {
|
|
1156
|
+
throw new Error("Expected point in Bn254G1MulResponse deserialization");
|
|
1243
1157
|
}
|
|
1244
1158
|
;
|
|
1245
1159
|
return {
|
|
1246
|
-
|
|
1160
|
+
point: toBn254G1Point(o.point),
|
|
1247
1161
|
};
|
|
1248
1162
|
}
|
|
1249
|
-
export function
|
|
1250
|
-
if (o.
|
|
1251
|
-
throw new Error("Expected
|
|
1252
|
-
}
|
|
1253
|
-
if (o.private_key === undefined) {
|
|
1254
|
-
throw new Error("Expected private_key in EcdsaSecp256k1ConstructSignature deserialization");
|
|
1163
|
+
export function toBn254G2MulResponse(o) {
|
|
1164
|
+
if (o.point === undefined) {
|
|
1165
|
+
throw new Error("Expected point in Bn254G2MulResponse deserialization");
|
|
1255
1166
|
}
|
|
1256
1167
|
;
|
|
1257
1168
|
return {
|
|
1258
|
-
|
|
1259
|
-
privateKey: o.private_key,
|
|
1169
|
+
point: toBn254G2Point(o.point),
|
|
1260
1170
|
};
|
|
1261
1171
|
}
|
|
1262
|
-
export function
|
|
1263
|
-
if (o.
|
|
1264
|
-
throw new Error("Expected
|
|
1265
|
-
}
|
|
1266
|
-
if (o.privateKey === undefined) {
|
|
1267
|
-
throw new Error("Expected privateKey in EcdsaSecp256k1ConstructSignature serialization");
|
|
1172
|
+
export function toBn254G1IsOnCurveResponse(o) {
|
|
1173
|
+
if (o.is_on_curve === undefined) {
|
|
1174
|
+
throw new Error("Expected is_on_curve in Bn254G1IsOnCurveResponse deserialization");
|
|
1268
1175
|
}
|
|
1269
1176
|
;
|
|
1270
1177
|
return {
|
|
1271
|
-
|
|
1272
|
-
private_key: o.privateKey,
|
|
1178
|
+
isOnCurve: o.is_on_curve,
|
|
1273
1179
|
};
|
|
1274
1180
|
}
|
|
1275
|
-
export function
|
|
1276
|
-
if (o.
|
|
1277
|
-
throw new Error("Expected
|
|
1278
|
-
}
|
|
1279
|
-
if (o.s === undefined) {
|
|
1280
|
-
throw new Error("Expected s in EcdsaSecp256k1ConstructSignatureResponse deserialization");
|
|
1281
|
-
}
|
|
1282
|
-
if (o.v === undefined) {
|
|
1283
|
-
throw new Error("Expected v in EcdsaSecp256k1ConstructSignatureResponse deserialization");
|
|
1181
|
+
export function toBn254G1FromCompressedResponse(o) {
|
|
1182
|
+
if (o.point === undefined) {
|
|
1183
|
+
throw new Error("Expected point in Bn254G1FromCompressedResponse deserialization");
|
|
1284
1184
|
}
|
|
1285
1185
|
;
|
|
1286
1186
|
return {
|
|
1287
|
-
|
|
1288
|
-
s: o.s,
|
|
1289
|
-
v: o.v,
|
|
1187
|
+
point: toBn254G1Point(o.point),
|
|
1290
1188
|
};
|
|
1291
1189
|
}
|
|
1292
|
-
export function
|
|
1293
|
-
if (o.
|
|
1294
|
-
throw new Error("Expected
|
|
1295
|
-
}
|
|
1296
|
-
if (o.s === undefined) {
|
|
1297
|
-
throw new Error("Expected s in EcdsaSecp256k1ConstructSignatureResponse serialization");
|
|
1298
|
-
}
|
|
1299
|
-
if (o.v === undefined) {
|
|
1300
|
-
throw new Error("Expected v in EcdsaSecp256k1ConstructSignatureResponse serialization");
|
|
1190
|
+
export function toSchnorrComputePublicKeyResponse(o) {
|
|
1191
|
+
if (o.public_key === undefined) {
|
|
1192
|
+
throw new Error("Expected public_key in SchnorrComputePublicKeyResponse deserialization");
|
|
1301
1193
|
}
|
|
1302
1194
|
;
|
|
1303
1195
|
return {
|
|
1304
|
-
|
|
1305
|
-
s: o.s,
|
|
1306
|
-
v: o.v,
|
|
1196
|
+
publicKey: toGrumpkinPoint(o.public_key),
|
|
1307
1197
|
};
|
|
1308
1198
|
}
|
|
1309
|
-
export function
|
|
1310
|
-
if (o.message === undefined) {
|
|
1311
|
-
throw new Error("Expected message in EcdsaSecp256k1RecoverPublicKey deserialization");
|
|
1312
|
-
}
|
|
1313
|
-
if (o.r === undefined) {
|
|
1314
|
-
throw new Error("Expected r in EcdsaSecp256k1RecoverPublicKey deserialization");
|
|
1315
|
-
}
|
|
1199
|
+
export function toSchnorrConstructSignatureResponse(o) {
|
|
1316
1200
|
if (o.s === undefined) {
|
|
1317
|
-
throw new Error("Expected s in
|
|
1201
|
+
throw new Error("Expected s in SchnorrConstructSignatureResponse deserialization");
|
|
1318
1202
|
}
|
|
1319
|
-
if (o.
|
|
1320
|
-
throw new Error("Expected
|
|
1203
|
+
if (o.e === undefined) {
|
|
1204
|
+
throw new Error("Expected e in SchnorrConstructSignatureResponse deserialization");
|
|
1321
1205
|
}
|
|
1322
1206
|
;
|
|
1323
1207
|
return {
|
|
1324
|
-
message: o.message,
|
|
1325
|
-
r: o.r,
|
|
1326
1208
|
s: o.s,
|
|
1327
|
-
|
|
1209
|
+
e: o.e,
|
|
1328
1210
|
};
|
|
1329
1211
|
}
|
|
1330
|
-
export function
|
|
1331
|
-
if (o.
|
|
1332
|
-
throw new Error("Expected
|
|
1333
|
-
}
|
|
1334
|
-
if (o.r === undefined) {
|
|
1335
|
-
throw new Error("Expected r in EcdsaSecp256k1RecoverPublicKey serialization");
|
|
1336
|
-
}
|
|
1337
|
-
if (o.s === undefined) {
|
|
1338
|
-
throw new Error("Expected s in EcdsaSecp256k1RecoverPublicKey serialization");
|
|
1339
|
-
}
|
|
1340
|
-
if (o.v === undefined) {
|
|
1341
|
-
throw new Error("Expected v in EcdsaSecp256k1RecoverPublicKey serialization");
|
|
1212
|
+
export function toSchnorrVerifySignatureResponse(o) {
|
|
1213
|
+
if (o.verified === undefined) {
|
|
1214
|
+
throw new Error("Expected verified in SchnorrVerifySignatureResponse deserialization");
|
|
1342
1215
|
}
|
|
1343
1216
|
;
|
|
1344
1217
|
return {
|
|
1345
|
-
|
|
1346
|
-
r: o.r,
|
|
1347
|
-
s: o.s,
|
|
1348
|
-
v: o.v,
|
|
1218
|
+
verified: o.verified,
|
|
1349
1219
|
};
|
|
1350
1220
|
}
|
|
1351
|
-
export function
|
|
1221
|
+
export function toEcdsaSecp256k1ComputePublicKeyResponse(o) {
|
|
1352
1222
|
if (o.public_key === undefined) {
|
|
1353
|
-
throw new Error("Expected public_key in
|
|
1223
|
+
throw new Error("Expected public_key in EcdsaSecp256k1ComputePublicKeyResponse deserialization");
|
|
1354
1224
|
}
|
|
1355
1225
|
;
|
|
1356
1226
|
return {
|
|
1357
1227
|
publicKey: toSecp256k1Point(o.public_key),
|
|
1358
1228
|
};
|
|
1359
1229
|
}
|
|
1360
|
-
export function
|
|
1361
|
-
if (o.
|
|
1362
|
-
throw new Error("Expected
|
|
1230
|
+
export function toEcdsaSecp256r1ComputePublicKeyResponse(o) {
|
|
1231
|
+
if (o.public_key === undefined) {
|
|
1232
|
+
throw new Error("Expected public_key in EcdsaSecp256r1ComputePublicKeyResponse deserialization");
|
|
1363
1233
|
}
|
|
1364
1234
|
;
|
|
1365
1235
|
return {
|
|
1366
|
-
|
|
1236
|
+
publicKey: toSecp256r1Point(o.public_key),
|
|
1367
1237
|
};
|
|
1368
1238
|
}
|
|
1369
|
-
export function
|
|
1370
|
-
if (o.message === undefined) {
|
|
1371
|
-
throw new Error("Expected message in EcdsaSecp256k1VerifySignature deserialization");
|
|
1372
|
-
}
|
|
1373
|
-
if (o.public_key === undefined) {
|
|
1374
|
-
throw new Error("Expected public_key in EcdsaSecp256k1VerifySignature deserialization");
|
|
1375
|
-
}
|
|
1239
|
+
export function toEcdsaSecp256k1ConstructSignatureResponse(o) {
|
|
1376
1240
|
if (o.r === undefined) {
|
|
1377
|
-
throw new Error("Expected r in
|
|
1241
|
+
throw new Error("Expected r in EcdsaSecp256k1ConstructSignatureResponse deserialization");
|
|
1378
1242
|
}
|
|
1379
1243
|
if (o.s === undefined) {
|
|
1380
|
-
throw new Error("Expected s in
|
|
1244
|
+
throw new Error("Expected s in EcdsaSecp256k1ConstructSignatureResponse deserialization");
|
|
1381
1245
|
}
|
|
1382
1246
|
if (o.v === undefined) {
|
|
1383
|
-
throw new Error("Expected v in
|
|
1247
|
+
throw new Error("Expected v in EcdsaSecp256k1ConstructSignatureResponse deserialization");
|
|
1384
1248
|
}
|
|
1385
1249
|
;
|
|
1386
1250
|
return {
|
|
1387
|
-
message: o.message,
|
|
1388
|
-
publicKey: toSecp256k1Point(o.public_key),
|
|
1389
1251
|
r: o.r,
|
|
1390
1252
|
s: o.s,
|
|
1391
1253
|
v: o.v,
|
|
1392
1254
|
};
|
|
1393
1255
|
}
|
|
1394
|
-
export function
|
|
1395
|
-
if (o.message === undefined) {
|
|
1396
|
-
throw new Error("Expected message in EcdsaSecp256k1VerifySignature serialization");
|
|
1397
|
-
}
|
|
1398
|
-
if (o.publicKey === undefined) {
|
|
1399
|
-
throw new Error("Expected publicKey in EcdsaSecp256k1VerifySignature serialization");
|
|
1400
|
-
}
|
|
1256
|
+
export function toEcdsaSecp256r1ConstructSignatureResponse(o) {
|
|
1401
1257
|
if (o.r === undefined) {
|
|
1402
|
-
throw new Error("Expected r in
|
|
1258
|
+
throw new Error("Expected r in EcdsaSecp256r1ConstructSignatureResponse deserialization");
|
|
1403
1259
|
}
|
|
1404
1260
|
if (o.s === undefined) {
|
|
1405
|
-
throw new Error("Expected s in
|
|
1261
|
+
throw new Error("Expected s in EcdsaSecp256r1ConstructSignatureResponse deserialization");
|
|
1406
1262
|
}
|
|
1407
1263
|
if (o.v === undefined) {
|
|
1408
|
-
throw new Error("Expected v in
|
|
1264
|
+
throw new Error("Expected v in EcdsaSecp256r1ConstructSignatureResponse deserialization");
|
|
1409
1265
|
}
|
|
1410
1266
|
;
|
|
1411
1267
|
return {
|
|
1412
|
-
message: o.message,
|
|
1413
|
-
public_key: fromSecp256k1Point(o.publicKey),
|
|
1414
1268
|
r: o.r,
|
|
1415
1269
|
s: o.s,
|
|
1416
1270
|
v: o.v,
|
|
1417
1271
|
};
|
|
1418
1272
|
}
|
|
1419
|
-
export function
|
|
1420
|
-
if (o.
|
|
1421
|
-
throw new Error("Expected
|
|
1422
|
-
}
|
|
1423
|
-
;
|
|
1424
|
-
return {
|
|
1425
|
-
verified: o.verified,
|
|
1426
|
-
};
|
|
1427
|
-
}
|
|
1428
|
-
export function fromEcdsaSecp256k1VerifySignatureResponse(o) {
|
|
1429
|
-
if (o.verified === undefined) {
|
|
1430
|
-
throw new Error("Expected verified in EcdsaSecp256k1VerifySignatureResponse serialization");
|
|
1273
|
+
export function toEcdsaSecp256k1RecoverPublicKeyResponse(o) {
|
|
1274
|
+
if (o.public_key === undefined) {
|
|
1275
|
+
throw new Error("Expected public_key in EcdsaSecp256k1RecoverPublicKeyResponse deserialization");
|
|
1431
1276
|
}
|
|
1432
1277
|
;
|
|
1433
1278
|
return {
|
|
1434
|
-
|
|
1279
|
+
publicKey: toSecp256k1Point(o.public_key),
|
|
1435
1280
|
};
|
|
1436
1281
|
}
|
|
1437
|
-
export function
|
|
1438
|
-
if (o.
|
|
1439
|
-
throw new Error("Expected
|
|
1282
|
+
export function toEcdsaSecp256r1RecoverPublicKeyResponse(o) {
|
|
1283
|
+
if (o.public_key === undefined) {
|
|
1284
|
+
throw new Error("Expected public_key in EcdsaSecp256r1RecoverPublicKeyResponse deserialization");
|
|
1440
1285
|
}
|
|
1441
1286
|
;
|
|
1442
1287
|
return {
|
|
1443
|
-
|
|
1288
|
+
publicKey: toSecp256r1Point(o.public_key),
|
|
1444
1289
|
};
|
|
1445
1290
|
}
|
|
1446
|
-
export function
|
|
1447
|
-
if (o.
|
|
1448
|
-
throw new Error("Expected
|
|
1291
|
+
export function toEcdsaSecp256k1VerifySignatureResponse(o) {
|
|
1292
|
+
if (o.verified === undefined) {
|
|
1293
|
+
throw new Error("Expected verified in EcdsaSecp256k1VerifySignatureResponse deserialization");
|
|
1449
1294
|
}
|
|
1450
1295
|
;
|
|
1451
1296
|
return {
|
|
1452
|
-
|
|
1297
|
+
verified: o.verified,
|
|
1453
1298
|
};
|
|
1454
1299
|
}
|
|
1455
|
-
export function
|
|
1456
|
-
if (o.
|
|
1457
|
-
throw new Error("Expected
|
|
1300
|
+
export function toEcdsaSecp256r1VerifySignatureResponse(o) {
|
|
1301
|
+
if (o.verified === undefined) {
|
|
1302
|
+
throw new Error("Expected verified in EcdsaSecp256r1VerifySignatureResponse deserialization");
|
|
1458
1303
|
}
|
|
1459
1304
|
;
|
|
1460
1305
|
return {
|
|
1461
|
-
|
|
1306
|
+
verified: o.verified,
|
|
1462
1307
|
};
|
|
1463
1308
|
}
|
|
1464
|
-
export function
|
|
1465
|
-
if (o.
|
|
1466
|
-
throw new Error("Expected
|
|
1309
|
+
export function toSrsInitSrsResponse(o) {
|
|
1310
|
+
if (o.dummy === undefined) {
|
|
1311
|
+
throw new Error("Expected dummy in SrsInitSrsResponse deserialization");
|
|
1467
1312
|
}
|
|
1468
1313
|
;
|
|
1469
1314
|
return {
|
|
1470
|
-
|
|
1315
|
+
dummy: o.dummy,
|
|
1471
1316
|
};
|
|
1472
1317
|
}
|
|
1473
|
-
export function
|
|
1474
|
-
if (o.
|
|
1475
|
-
throw new Error("Expected
|
|
1476
|
-
}
|
|
1477
|
-
if (o.private_key === undefined) {
|
|
1478
|
-
throw new Error("Expected private_key in EcdsaSecp256r1ConstructSignature deserialization");
|
|
1318
|
+
export function toSrsInitGrumpkinSrsResponse(o) {
|
|
1319
|
+
if (o.dummy === undefined) {
|
|
1320
|
+
throw new Error("Expected dummy in SrsInitGrumpkinSrsResponse deserialization");
|
|
1479
1321
|
}
|
|
1480
1322
|
;
|
|
1481
1323
|
return {
|
|
1482
|
-
|
|
1483
|
-
privateKey: o.private_key,
|
|
1324
|
+
dummy: o.dummy,
|
|
1484
1325
|
};
|
|
1485
1326
|
}
|
|
1486
|
-
export function
|
|
1487
|
-
|
|
1488
|
-
throw new Error("Expected message in EcdsaSecp256r1ConstructSignature serialization");
|
|
1489
|
-
}
|
|
1490
|
-
if (o.privateKey === undefined) {
|
|
1491
|
-
throw new Error("Expected privateKey in EcdsaSecp256r1ConstructSignature serialization");
|
|
1492
|
-
}
|
|
1493
|
-
;
|
|
1494
|
-
return {
|
|
1495
|
-
message: o.message,
|
|
1496
|
-
private_key: o.privateKey,
|
|
1497
|
-
};
|
|
1327
|
+
export function toShutdownResponse(o) {
|
|
1328
|
+
return {};
|
|
1498
1329
|
}
|
|
1499
|
-
export function
|
|
1500
|
-
if (o.
|
|
1501
|
-
throw new Error("Expected
|
|
1330
|
+
export function fromCircuitComputeVkResponse(o) {
|
|
1331
|
+
if (o.bytes === undefined) {
|
|
1332
|
+
throw new Error("Expected bytes in CircuitComputeVkResponse serialization");
|
|
1502
1333
|
}
|
|
1503
|
-
if (o.
|
|
1504
|
-
throw new Error("Expected
|
|
1334
|
+
if (o.fields === undefined) {
|
|
1335
|
+
throw new Error("Expected fields in CircuitComputeVkResponse serialization");
|
|
1505
1336
|
}
|
|
1506
|
-
if (o.
|
|
1507
|
-
throw new Error("Expected
|
|
1337
|
+
if (o.hash === undefined) {
|
|
1338
|
+
throw new Error("Expected hash in CircuitComputeVkResponse serialization");
|
|
1508
1339
|
}
|
|
1509
1340
|
;
|
|
1510
1341
|
return {
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1342
|
+
bytes: o.bytes,
|
|
1343
|
+
fields: o.fields,
|
|
1344
|
+
hash: o.hash,
|
|
1514
1345
|
};
|
|
1515
1346
|
}
|
|
1516
|
-
export function
|
|
1517
|
-
if (o.
|
|
1518
|
-
throw new Error("Expected
|
|
1347
|
+
export function fromCircuitInput(o) {
|
|
1348
|
+
if (o.name === undefined) {
|
|
1349
|
+
throw new Error("Expected name in CircuitInput serialization");
|
|
1519
1350
|
}
|
|
1520
|
-
if (o.
|
|
1521
|
-
throw new Error("Expected
|
|
1351
|
+
if (o.bytecode === undefined) {
|
|
1352
|
+
throw new Error("Expected bytecode in CircuitInput serialization");
|
|
1522
1353
|
}
|
|
1523
|
-
if (o.
|
|
1524
|
-
throw new Error("Expected
|
|
1354
|
+
if (o.verificationKey === undefined) {
|
|
1355
|
+
throw new Error("Expected verificationKey in CircuitInput serialization");
|
|
1525
1356
|
}
|
|
1526
1357
|
;
|
|
1527
1358
|
return {
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1359
|
+
name: o.name,
|
|
1360
|
+
bytecode: o.bytecode,
|
|
1361
|
+
verification_key: o.verificationKey,
|
|
1531
1362
|
};
|
|
1532
1363
|
}
|
|
1533
|
-
export function
|
|
1534
|
-
if (o.
|
|
1535
|
-
throw new Error("Expected
|
|
1536
|
-
}
|
|
1537
|
-
if (o.r === undefined) {
|
|
1538
|
-
throw new Error("Expected r in EcdsaSecp256r1RecoverPublicKey deserialization");
|
|
1364
|
+
export function fromProofSystemSettings(o) {
|
|
1365
|
+
if (o.ipaAccumulation === undefined) {
|
|
1366
|
+
throw new Error("Expected ipaAccumulation in ProofSystemSettings serialization");
|
|
1539
1367
|
}
|
|
1540
|
-
if (o.
|
|
1541
|
-
throw new Error("Expected
|
|
1368
|
+
if (o.oracleHashType === undefined) {
|
|
1369
|
+
throw new Error("Expected oracleHashType in ProofSystemSettings serialization");
|
|
1542
1370
|
}
|
|
1543
|
-
if (o.
|
|
1544
|
-
throw new Error("Expected
|
|
1371
|
+
if (o.disableZk === undefined) {
|
|
1372
|
+
throw new Error("Expected disableZk in ProofSystemSettings serialization");
|
|
1373
|
+
}
|
|
1374
|
+
if (o.optimizedSolidityVerifier === undefined) {
|
|
1375
|
+
throw new Error("Expected optimizedSolidityVerifier in ProofSystemSettings serialization");
|
|
1545
1376
|
}
|
|
1546
1377
|
;
|
|
1547
1378
|
return {
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1379
|
+
ipa_accumulation: o.ipaAccumulation,
|
|
1380
|
+
oracle_hash_type: o.oracleHashType,
|
|
1381
|
+
disable_zk: o.disableZk,
|
|
1382
|
+
optimized_solidity_verifier: o.optimizedSolidityVerifier,
|
|
1552
1383
|
};
|
|
1553
1384
|
}
|
|
1554
|
-
export function
|
|
1555
|
-
if (o.
|
|
1556
|
-
throw new Error("Expected
|
|
1557
|
-
}
|
|
1558
|
-
if (o.r === undefined) {
|
|
1559
|
-
throw new Error("Expected r in EcdsaSecp256r1RecoverPublicKey serialization");
|
|
1385
|
+
export function fromCircuitProve(o) {
|
|
1386
|
+
if (o.circuit === undefined) {
|
|
1387
|
+
throw new Error("Expected circuit in CircuitProve serialization");
|
|
1560
1388
|
}
|
|
1561
|
-
if (o.
|
|
1562
|
-
throw new Error("Expected
|
|
1389
|
+
if (o.witness === undefined) {
|
|
1390
|
+
throw new Error("Expected witness in CircuitProve serialization");
|
|
1563
1391
|
}
|
|
1564
|
-
if (o.
|
|
1565
|
-
throw new Error("Expected
|
|
1392
|
+
if (o.settings === undefined) {
|
|
1393
|
+
throw new Error("Expected settings in CircuitProve serialization");
|
|
1566
1394
|
}
|
|
1567
1395
|
;
|
|
1568
1396
|
return {
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
v: o.v,
|
|
1397
|
+
circuit: fromCircuitInput(o.circuit),
|
|
1398
|
+
witness: o.witness,
|
|
1399
|
+
settings: fromProofSystemSettings(o.settings),
|
|
1573
1400
|
};
|
|
1574
1401
|
}
|
|
1575
|
-
export function
|
|
1576
|
-
if (o.
|
|
1577
|
-
throw new Error("Expected
|
|
1402
|
+
export function fromCircuitInputNoVK(o) {
|
|
1403
|
+
if (o.name === undefined) {
|
|
1404
|
+
throw new Error("Expected name in CircuitInputNoVK serialization");
|
|
1405
|
+
}
|
|
1406
|
+
if (o.bytecode === undefined) {
|
|
1407
|
+
throw new Error("Expected bytecode in CircuitInputNoVK serialization");
|
|
1578
1408
|
}
|
|
1579
1409
|
;
|
|
1580
1410
|
return {
|
|
1581
|
-
|
|
1411
|
+
name: o.name,
|
|
1412
|
+
bytecode: o.bytecode,
|
|
1582
1413
|
};
|
|
1583
1414
|
}
|
|
1584
|
-
export function
|
|
1585
|
-
if (o.
|
|
1586
|
-
throw new Error("Expected
|
|
1415
|
+
export function fromCircuitComputeVk(o) {
|
|
1416
|
+
if (o.circuit === undefined) {
|
|
1417
|
+
throw new Error("Expected circuit in CircuitComputeVk serialization");
|
|
1418
|
+
}
|
|
1419
|
+
if (o.settings === undefined) {
|
|
1420
|
+
throw new Error("Expected settings in CircuitComputeVk serialization");
|
|
1587
1421
|
}
|
|
1588
1422
|
;
|
|
1589
1423
|
return {
|
|
1590
|
-
|
|
1424
|
+
circuit: fromCircuitInputNoVK(o.circuit),
|
|
1425
|
+
settings: fromProofSystemSettings(o.settings),
|
|
1591
1426
|
};
|
|
1592
1427
|
}
|
|
1593
|
-
export function
|
|
1594
|
-
if (o.
|
|
1595
|
-
throw new Error("Expected
|
|
1596
|
-
}
|
|
1597
|
-
if (o.public_key === undefined) {
|
|
1598
|
-
throw new Error("Expected public_key in EcdsaSecp256r1VerifySignature deserialization");
|
|
1599
|
-
}
|
|
1600
|
-
if (o.r === undefined) {
|
|
1601
|
-
throw new Error("Expected r in EcdsaSecp256r1VerifySignature deserialization");
|
|
1428
|
+
export function fromCircuitStats(o) {
|
|
1429
|
+
if (o.circuit === undefined) {
|
|
1430
|
+
throw new Error("Expected circuit in CircuitStats serialization");
|
|
1602
1431
|
}
|
|
1603
|
-
if (o.
|
|
1604
|
-
throw new Error("Expected
|
|
1432
|
+
if (o.includeGatesPerOpcode === undefined) {
|
|
1433
|
+
throw new Error("Expected includeGatesPerOpcode in CircuitStats serialization");
|
|
1605
1434
|
}
|
|
1606
|
-
if (o.
|
|
1607
|
-
throw new Error("Expected
|
|
1435
|
+
if (o.settings === undefined) {
|
|
1436
|
+
throw new Error("Expected settings in CircuitStats serialization");
|
|
1608
1437
|
}
|
|
1609
1438
|
;
|
|
1610
1439
|
return {
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
s: o.s,
|
|
1615
|
-
v: o.v,
|
|
1440
|
+
circuit: fromCircuitInput(o.circuit),
|
|
1441
|
+
include_gates_per_opcode: o.includeGatesPerOpcode,
|
|
1442
|
+
settings: fromProofSystemSettings(o.settings),
|
|
1616
1443
|
};
|
|
1617
1444
|
}
|
|
1618
|
-
export function
|
|
1619
|
-
if (o.
|
|
1620
|
-
throw new Error("Expected
|
|
1621
|
-
}
|
|
1622
|
-
if (o.publicKey === undefined) {
|
|
1623
|
-
throw new Error("Expected publicKey in EcdsaSecp256r1VerifySignature serialization");
|
|
1445
|
+
export function fromCircuitVerify(o) {
|
|
1446
|
+
if (o.verificationKey === undefined) {
|
|
1447
|
+
throw new Error("Expected verificationKey in CircuitVerify serialization");
|
|
1624
1448
|
}
|
|
1625
|
-
if (o.
|
|
1626
|
-
throw new Error("Expected
|
|
1449
|
+
if (o.publicInputs === undefined) {
|
|
1450
|
+
throw new Error("Expected publicInputs in CircuitVerify serialization");
|
|
1627
1451
|
}
|
|
1628
|
-
if (o.
|
|
1629
|
-
throw new Error("Expected
|
|
1452
|
+
if (o.proof === undefined) {
|
|
1453
|
+
throw new Error("Expected proof in CircuitVerify serialization");
|
|
1630
1454
|
}
|
|
1631
|
-
if (o.
|
|
1632
|
-
throw new Error("Expected
|
|
1455
|
+
if (o.settings === undefined) {
|
|
1456
|
+
throw new Error("Expected settings in CircuitVerify serialization");
|
|
1633
1457
|
}
|
|
1634
1458
|
;
|
|
1635
1459
|
return {
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
v: o.v,
|
|
1460
|
+
verification_key: o.verificationKey,
|
|
1461
|
+
public_inputs: o.publicInputs,
|
|
1462
|
+
proof: o.proof,
|
|
1463
|
+
settings: fromProofSystemSettings(o.settings),
|
|
1641
1464
|
};
|
|
1642
1465
|
}
|
|
1643
|
-
export function
|
|
1644
|
-
if (o.
|
|
1645
|
-
throw new Error("Expected
|
|
1466
|
+
export function fromChonkComputeVk(o) {
|
|
1467
|
+
if (o.circuit === undefined) {
|
|
1468
|
+
throw new Error("Expected circuit in ChonkComputeVk serialization");
|
|
1646
1469
|
}
|
|
1647
1470
|
;
|
|
1648
1471
|
return {
|
|
1649
|
-
|
|
1472
|
+
circuit: fromCircuitInputNoVK(o.circuit),
|
|
1650
1473
|
};
|
|
1651
1474
|
}
|
|
1652
|
-
export function
|
|
1653
|
-
if (o.
|
|
1654
|
-
throw new Error("Expected
|
|
1475
|
+
export function fromChonkStart(o) {
|
|
1476
|
+
if (o.numCircuits === undefined) {
|
|
1477
|
+
throw new Error("Expected numCircuits in ChonkStart serialization");
|
|
1655
1478
|
}
|
|
1656
1479
|
;
|
|
1657
1480
|
return {
|
|
1658
|
-
|
|
1481
|
+
num_circuits: o.numCircuits,
|
|
1659
1482
|
};
|
|
1660
1483
|
}
|
|
1661
|
-
export function
|
|
1662
|
-
if (o.
|
|
1663
|
-
throw new Error("Expected
|
|
1484
|
+
export function fromChonkLoad(o) {
|
|
1485
|
+
if (o.circuit === undefined) {
|
|
1486
|
+
throw new Error("Expected circuit in ChonkLoad serialization");
|
|
1664
1487
|
}
|
|
1665
1488
|
;
|
|
1666
1489
|
return {
|
|
1667
|
-
|
|
1490
|
+
circuit: fromCircuitInput(o.circuit),
|
|
1668
1491
|
};
|
|
1669
1492
|
}
|
|
1670
|
-
export function
|
|
1671
|
-
if (o.
|
|
1672
|
-
throw new Error("Expected
|
|
1493
|
+
export function fromChonkAccumulate(o) {
|
|
1494
|
+
if (o.witness === undefined) {
|
|
1495
|
+
throw new Error("Expected witness in ChonkAccumulate serialization");
|
|
1673
1496
|
}
|
|
1674
1497
|
;
|
|
1675
1498
|
return {
|
|
1676
|
-
|
|
1499
|
+
witness: o.witness,
|
|
1677
1500
|
};
|
|
1678
1501
|
}
|
|
1679
|
-
export function
|
|
1680
|
-
|
|
1681
|
-
throw new Error("Expected merge_proof in GoblinProof deserialization");
|
|
1682
|
-
}
|
|
1683
|
-
if (o.eccvm_proof === undefined) {
|
|
1684
|
-
throw new Error("Expected eccvm_proof in GoblinProof deserialization");
|
|
1685
|
-
}
|
|
1686
|
-
if (o.ipa_proof === undefined) {
|
|
1687
|
-
throw new Error("Expected ipa_proof in GoblinProof deserialization");
|
|
1688
|
-
}
|
|
1689
|
-
if (o.translator_proof === undefined) {
|
|
1690
|
-
throw new Error("Expected translator_proof in GoblinProof deserialization");
|
|
1691
|
-
}
|
|
1692
|
-
;
|
|
1693
|
-
return {
|
|
1694
|
-
mergeProof: o.merge_proof.map((v) => v),
|
|
1695
|
-
eccvmProof: o.eccvm_proof.map((v) => v),
|
|
1696
|
-
ipaProof: o.ipa_proof.map((v) => v),
|
|
1697
|
-
translatorProof: o.translator_proof.map((v) => v),
|
|
1698
|
-
};
|
|
1502
|
+
export function fromChonkProve(o) {
|
|
1503
|
+
return {};
|
|
1699
1504
|
}
|
|
1700
1505
|
export function fromGoblinProof(o) {
|
|
1701
1506
|
if (o.mergeProof === undefined) {
|
|
@@ -1712,147 +1517,219 @@ export function fromGoblinProof(o) {
|
|
|
1712
1517
|
}
|
|
1713
1518
|
;
|
|
1714
1519
|
return {
|
|
1715
|
-
merge_proof: o.mergeProof
|
|
1716
|
-
eccvm_proof: o.eccvmProof
|
|
1717
|
-
ipa_proof: o.ipaProof
|
|
1718
|
-
translator_proof: o.translatorProof
|
|
1520
|
+
merge_proof: o.mergeProof,
|
|
1521
|
+
eccvm_proof: o.eccvmProof,
|
|
1522
|
+
ipa_proof: o.ipaProof,
|
|
1523
|
+
translator_proof: o.translatorProof,
|
|
1719
1524
|
};
|
|
1720
1525
|
}
|
|
1721
|
-
export function
|
|
1722
|
-
if (o.
|
|
1723
|
-
throw new Error("Expected
|
|
1526
|
+
export function fromChonkProof(o) {
|
|
1527
|
+
if (o.megaProof === undefined) {
|
|
1528
|
+
throw new Error("Expected megaProof in ChonkProof serialization");
|
|
1724
1529
|
}
|
|
1725
|
-
if (o.
|
|
1726
|
-
throw new Error("Expected
|
|
1530
|
+
if (o.goblinProof === undefined) {
|
|
1531
|
+
throw new Error("Expected goblinProof in ChonkProof serialization");
|
|
1727
1532
|
}
|
|
1728
1533
|
;
|
|
1729
1534
|
return {
|
|
1730
|
-
|
|
1731
|
-
|
|
1535
|
+
mega_proof: o.megaProof,
|
|
1536
|
+
goblin_proof: fromGoblinProof(o.goblinProof),
|
|
1732
1537
|
};
|
|
1733
1538
|
}
|
|
1734
|
-
export function
|
|
1735
|
-
if (o.
|
|
1736
|
-
throw new Error("Expected
|
|
1539
|
+
export function fromChonkVerify(o) {
|
|
1540
|
+
if (o.proof === undefined) {
|
|
1541
|
+
throw new Error("Expected proof in ChonkVerify serialization");
|
|
1737
1542
|
}
|
|
1738
|
-
if (o.
|
|
1739
|
-
throw new Error("Expected
|
|
1543
|
+
if (o.vk === undefined) {
|
|
1544
|
+
throw new Error("Expected vk in ChonkVerify serialization");
|
|
1740
1545
|
}
|
|
1741
1546
|
;
|
|
1742
1547
|
return {
|
|
1743
|
-
|
|
1744
|
-
|
|
1548
|
+
proof: fromChonkProof(o.proof),
|
|
1549
|
+
vk: o.vk,
|
|
1745
1550
|
};
|
|
1746
1551
|
}
|
|
1747
|
-
export function
|
|
1748
|
-
if (o.
|
|
1749
|
-
throw new Error("Expected
|
|
1552
|
+
export function fromVkAsFields(o) {
|
|
1553
|
+
if (o.verificationKey === undefined) {
|
|
1554
|
+
throw new Error("Expected verificationKey in VkAsFields serialization");
|
|
1750
1555
|
}
|
|
1751
1556
|
;
|
|
1752
1557
|
return {
|
|
1753
|
-
|
|
1558
|
+
verification_key: o.verificationKey,
|
|
1754
1559
|
};
|
|
1755
1560
|
}
|
|
1756
|
-
export function
|
|
1757
|
-
if (o.
|
|
1758
|
-
throw new Error("Expected
|
|
1561
|
+
export function fromMegaVkAsFields(o) {
|
|
1562
|
+
if (o.verificationKey === undefined) {
|
|
1563
|
+
throw new Error("Expected verificationKey in MegaVkAsFields serialization");
|
|
1759
1564
|
}
|
|
1760
1565
|
;
|
|
1761
1566
|
return {
|
|
1762
|
-
|
|
1567
|
+
verification_key: o.verificationKey,
|
|
1763
1568
|
};
|
|
1764
1569
|
}
|
|
1765
|
-
export function
|
|
1766
|
-
if (o.
|
|
1767
|
-
throw new Error("Expected
|
|
1570
|
+
export function fromCircuitWriteSolidityVerifier(o) {
|
|
1571
|
+
if (o.verificationKey === undefined) {
|
|
1572
|
+
throw new Error("Expected verificationKey in CircuitWriteSolidityVerifier serialization");
|
|
1768
1573
|
}
|
|
1769
|
-
if (o.
|
|
1770
|
-
throw new Error("Expected
|
|
1574
|
+
if (o.settings === undefined) {
|
|
1575
|
+
throw new Error("Expected settings in CircuitWriteSolidityVerifier serialization");
|
|
1576
|
+
}
|
|
1577
|
+
;
|
|
1578
|
+
return {
|
|
1579
|
+
verification_key: o.verificationKey,
|
|
1580
|
+
settings: fromProofSystemSettings(o.settings),
|
|
1581
|
+
};
|
|
1582
|
+
}
|
|
1583
|
+
export function fromChonkCheckPrecomputedVk(o) {
|
|
1584
|
+
if (o.circuit === undefined) {
|
|
1585
|
+
throw new Error("Expected circuit in ChonkCheckPrecomputedVk serialization");
|
|
1586
|
+
}
|
|
1587
|
+
;
|
|
1588
|
+
return {
|
|
1589
|
+
circuit: fromCircuitInput(o.circuit),
|
|
1590
|
+
};
|
|
1591
|
+
}
|
|
1592
|
+
export function fromChonkStats(o) {
|
|
1593
|
+
if (o.circuit === undefined) {
|
|
1594
|
+
throw new Error("Expected circuit in ChonkStats serialization");
|
|
1595
|
+
}
|
|
1596
|
+
if (o.includeGatesPerOpcode === undefined) {
|
|
1597
|
+
throw new Error("Expected includeGatesPerOpcode in ChonkStats serialization");
|
|
1598
|
+
}
|
|
1599
|
+
;
|
|
1600
|
+
return {
|
|
1601
|
+
circuit: fromCircuitInputNoVK(o.circuit),
|
|
1602
|
+
include_gates_per_opcode: o.includeGatesPerOpcode,
|
|
1603
|
+
};
|
|
1604
|
+
}
|
|
1605
|
+
export function fromPoseidon2Hash(o) {
|
|
1606
|
+
if (o.inputs === undefined) {
|
|
1607
|
+
throw new Error("Expected inputs in Poseidon2Hash serialization");
|
|
1608
|
+
}
|
|
1609
|
+
;
|
|
1610
|
+
return {
|
|
1611
|
+
inputs: o.inputs,
|
|
1612
|
+
};
|
|
1613
|
+
}
|
|
1614
|
+
export function fromPoseidon2Permutation(o) {
|
|
1615
|
+
if (o.inputs === undefined) {
|
|
1616
|
+
throw new Error("Expected inputs in Poseidon2Permutation serialization");
|
|
1771
1617
|
}
|
|
1772
1618
|
;
|
|
1773
1619
|
return {
|
|
1774
|
-
|
|
1775
|
-
scalar: o.scalar,
|
|
1620
|
+
inputs: o.inputs,
|
|
1776
1621
|
};
|
|
1777
1622
|
}
|
|
1778
|
-
export function
|
|
1779
|
-
if (o.
|
|
1780
|
-
throw new Error("Expected
|
|
1623
|
+
export function fromPedersenCommit(o) {
|
|
1624
|
+
if (o.inputs === undefined) {
|
|
1625
|
+
throw new Error("Expected inputs in PedersenCommit serialization");
|
|
1781
1626
|
}
|
|
1782
|
-
if (o.
|
|
1783
|
-
throw new Error("Expected
|
|
1627
|
+
if (o.hashIndex === undefined) {
|
|
1628
|
+
throw new Error("Expected hashIndex in PedersenCommit serialization");
|
|
1784
1629
|
}
|
|
1785
1630
|
;
|
|
1786
1631
|
return {
|
|
1787
|
-
|
|
1788
|
-
|
|
1632
|
+
inputs: o.inputs,
|
|
1633
|
+
hash_index: o.hashIndex,
|
|
1789
1634
|
};
|
|
1790
1635
|
}
|
|
1791
|
-
export function
|
|
1792
|
-
if (o.
|
|
1793
|
-
throw new Error("Expected
|
|
1636
|
+
export function fromPedersenHash(o) {
|
|
1637
|
+
if (o.inputs === undefined) {
|
|
1638
|
+
throw new Error("Expected inputs in PedersenHash serialization");
|
|
1639
|
+
}
|
|
1640
|
+
if (o.hashIndex === undefined) {
|
|
1641
|
+
throw new Error("Expected hashIndex in PedersenHash serialization");
|
|
1794
1642
|
}
|
|
1795
1643
|
;
|
|
1796
1644
|
return {
|
|
1797
|
-
|
|
1645
|
+
inputs: o.inputs,
|
|
1646
|
+
hash_index: o.hashIndex,
|
|
1798
1647
|
};
|
|
1799
1648
|
}
|
|
1800
|
-
export function
|
|
1801
|
-
if (o.
|
|
1802
|
-
throw new Error("Expected
|
|
1649
|
+
export function fromPedersenHashBuffer(o) {
|
|
1650
|
+
if (o.input === undefined) {
|
|
1651
|
+
throw new Error("Expected input in PedersenHashBuffer serialization");
|
|
1652
|
+
}
|
|
1653
|
+
if (o.hashIndex === undefined) {
|
|
1654
|
+
throw new Error("Expected hashIndex in PedersenHashBuffer serialization");
|
|
1803
1655
|
}
|
|
1804
1656
|
;
|
|
1805
1657
|
return {
|
|
1806
|
-
|
|
1658
|
+
input: o.input,
|
|
1659
|
+
hash_index: o.hashIndex,
|
|
1807
1660
|
};
|
|
1808
1661
|
}
|
|
1809
|
-
export function
|
|
1810
|
-
if (o.
|
|
1811
|
-
throw new Error("Expected
|
|
1662
|
+
export function fromBlake2s(o) {
|
|
1663
|
+
if (o.data === undefined) {
|
|
1664
|
+
throw new Error("Expected data in Blake2s serialization");
|
|
1812
1665
|
}
|
|
1813
1666
|
;
|
|
1814
1667
|
return {
|
|
1815
|
-
|
|
1668
|
+
data: o.data,
|
|
1816
1669
|
};
|
|
1817
1670
|
}
|
|
1818
|
-
export function
|
|
1819
|
-
if (o.
|
|
1820
|
-
throw new Error("Expected
|
|
1671
|
+
export function fromBlake2sToField(o) {
|
|
1672
|
+
if (o.data === undefined) {
|
|
1673
|
+
throw new Error("Expected data in Blake2sToField serialization");
|
|
1821
1674
|
}
|
|
1822
1675
|
;
|
|
1823
1676
|
return {
|
|
1824
|
-
|
|
1677
|
+
data: o.data,
|
|
1825
1678
|
};
|
|
1826
1679
|
}
|
|
1827
|
-
export function
|
|
1828
|
-
if (o.
|
|
1829
|
-
throw new Error("Expected
|
|
1680
|
+
export function fromAesEncrypt(o) {
|
|
1681
|
+
if (o.plaintext === undefined) {
|
|
1682
|
+
throw new Error("Expected plaintext in AesEncrypt serialization");
|
|
1683
|
+
}
|
|
1684
|
+
if (o.iv === undefined) {
|
|
1685
|
+
throw new Error("Expected iv in AesEncrypt serialization");
|
|
1686
|
+
}
|
|
1687
|
+
if (o.key === undefined) {
|
|
1688
|
+
throw new Error("Expected key in AesEncrypt serialization");
|
|
1689
|
+
}
|
|
1690
|
+
if (o.length === undefined) {
|
|
1691
|
+
throw new Error("Expected length in AesEncrypt serialization");
|
|
1830
1692
|
}
|
|
1831
1693
|
;
|
|
1832
1694
|
return {
|
|
1833
|
-
|
|
1695
|
+
plaintext: o.plaintext,
|
|
1696
|
+
iv: o.iv,
|
|
1697
|
+
key: o.key,
|
|
1698
|
+
length: o.length,
|
|
1834
1699
|
};
|
|
1835
1700
|
}
|
|
1836
|
-
export function
|
|
1837
|
-
if (o.
|
|
1838
|
-
throw new Error("Expected
|
|
1701
|
+
export function fromAesDecrypt(o) {
|
|
1702
|
+
if (o.ciphertext === undefined) {
|
|
1703
|
+
throw new Error("Expected ciphertext in AesDecrypt serialization");
|
|
1704
|
+
}
|
|
1705
|
+
if (o.iv === undefined) {
|
|
1706
|
+
throw new Error("Expected iv in AesDecrypt serialization");
|
|
1707
|
+
}
|
|
1708
|
+
if (o.key === undefined) {
|
|
1709
|
+
throw new Error("Expected key in AesDecrypt serialization");
|
|
1710
|
+
}
|
|
1711
|
+
if (o.length === undefined) {
|
|
1712
|
+
throw new Error("Expected length in AesDecrypt serialization");
|
|
1839
1713
|
}
|
|
1840
1714
|
;
|
|
1841
1715
|
return {
|
|
1842
|
-
|
|
1716
|
+
ciphertext: o.ciphertext,
|
|
1717
|
+
iv: o.iv,
|
|
1718
|
+
key: o.key,
|
|
1719
|
+
length: o.length,
|
|
1843
1720
|
};
|
|
1844
1721
|
}
|
|
1845
|
-
export function
|
|
1846
|
-
if (o.
|
|
1847
|
-
throw new Error("Expected
|
|
1722
|
+
export function fromGrumpkinPoint(o) {
|
|
1723
|
+
if (o.x === undefined) {
|
|
1724
|
+
throw new Error("Expected x in GrumpkinPoint serialization");
|
|
1848
1725
|
}
|
|
1849
|
-
if (o.
|
|
1850
|
-
throw new Error("Expected
|
|
1726
|
+
if (o.y === undefined) {
|
|
1727
|
+
throw new Error("Expected y in GrumpkinPoint serialization");
|
|
1851
1728
|
}
|
|
1852
1729
|
;
|
|
1853
1730
|
return {
|
|
1854
|
-
|
|
1855
|
-
|
|
1731
|
+
x: o.x,
|
|
1732
|
+
y: o.y,
|
|
1856
1733
|
};
|
|
1857
1734
|
}
|
|
1858
1735
|
export function fromGrumpkinMul(o) {
|
|
@@ -1868,621 +1745,684 @@ export function fromGrumpkinMul(o) {
|
|
|
1868
1745
|
scalar: o.scalar,
|
|
1869
1746
|
};
|
|
1870
1747
|
}
|
|
1871
|
-
export function
|
|
1872
|
-
if (o.
|
|
1873
|
-
throw new Error("Expected
|
|
1748
|
+
export function fromGrumpkinAdd(o) {
|
|
1749
|
+
if (o.pointA === undefined) {
|
|
1750
|
+
throw new Error("Expected pointA in GrumpkinAdd serialization");
|
|
1874
1751
|
}
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
point: toGrumpkinPoint(o.point),
|
|
1878
|
-
};
|
|
1879
|
-
}
|
|
1880
|
-
export function fromGrumpkinMulResponse(o) {
|
|
1881
|
-
if (o.point === undefined) {
|
|
1882
|
-
throw new Error("Expected point in GrumpkinMulResponse serialization");
|
|
1752
|
+
if (o.pointB === undefined) {
|
|
1753
|
+
throw new Error("Expected pointB in GrumpkinAdd serialization");
|
|
1883
1754
|
}
|
|
1884
1755
|
;
|
|
1885
1756
|
return {
|
|
1886
|
-
|
|
1757
|
+
point_a: fromGrumpkinPoint(o.pointA),
|
|
1758
|
+
point_b: fromGrumpkinPoint(o.pointB),
|
|
1887
1759
|
};
|
|
1888
1760
|
}
|
|
1889
|
-
export function
|
|
1890
|
-
if (o.
|
|
1891
|
-
throw new Error("Expected
|
|
1761
|
+
export function fromGrumpkinBatchMul(o) {
|
|
1762
|
+
if (o.points === undefined) {
|
|
1763
|
+
throw new Error("Expected points in GrumpkinBatchMul serialization");
|
|
1892
1764
|
}
|
|
1893
|
-
if (o.
|
|
1894
|
-
throw new Error("Expected
|
|
1765
|
+
if (o.scalar === undefined) {
|
|
1766
|
+
throw new Error("Expected scalar in GrumpkinBatchMul serialization");
|
|
1895
1767
|
}
|
|
1896
1768
|
;
|
|
1897
1769
|
return {
|
|
1898
|
-
|
|
1899
|
-
|
|
1770
|
+
points: o.points.map((v) => fromGrumpkinPoint(v)),
|
|
1771
|
+
scalar: o.scalar,
|
|
1900
1772
|
};
|
|
1901
1773
|
}
|
|
1902
|
-
export function
|
|
1903
|
-
if (o.
|
|
1904
|
-
throw new Error("Expected
|
|
1905
|
-
}
|
|
1906
|
-
if (o.y === undefined) {
|
|
1907
|
-
throw new Error("Expected y in GrumpkinPoint serialization");
|
|
1774
|
+
export function fromGrumpkinGetRandomFr(o) {
|
|
1775
|
+
if (o.dummy === undefined) {
|
|
1776
|
+
throw new Error("Expected dummy in GrumpkinGetRandomFr serialization");
|
|
1908
1777
|
}
|
|
1909
1778
|
;
|
|
1910
1779
|
return {
|
|
1911
|
-
|
|
1912
|
-
y: o.y,
|
|
1780
|
+
dummy: o.dummy,
|
|
1913
1781
|
};
|
|
1914
1782
|
}
|
|
1915
|
-
export function
|
|
1783
|
+
export function fromGrumpkinReduce512(o) {
|
|
1916
1784
|
if (o.input === undefined) {
|
|
1917
|
-
throw new Error("Expected input in GrumpkinReduce512
|
|
1785
|
+
throw new Error("Expected input in GrumpkinReduce512 serialization");
|
|
1918
1786
|
}
|
|
1919
1787
|
;
|
|
1920
1788
|
return {
|
|
1921
1789
|
input: o.input,
|
|
1922
1790
|
};
|
|
1923
1791
|
}
|
|
1924
|
-
export function
|
|
1925
|
-
if (o.
|
|
1926
|
-
throw new Error("Expected
|
|
1792
|
+
export function fromSecp256k1Point(o) {
|
|
1793
|
+
if (o.x === undefined) {
|
|
1794
|
+
throw new Error("Expected x in Secp256k1Point serialization");
|
|
1795
|
+
}
|
|
1796
|
+
if (o.y === undefined) {
|
|
1797
|
+
throw new Error("Expected y in Secp256k1Point serialization");
|
|
1927
1798
|
}
|
|
1928
1799
|
;
|
|
1929
1800
|
return {
|
|
1930
|
-
|
|
1801
|
+
x: o.x,
|
|
1802
|
+
y: o.y,
|
|
1931
1803
|
};
|
|
1932
1804
|
}
|
|
1933
|
-
export function
|
|
1934
|
-
if (o.
|
|
1935
|
-
throw new Error("Expected
|
|
1805
|
+
export function fromSecp256k1Mul(o) {
|
|
1806
|
+
if (o.point === undefined) {
|
|
1807
|
+
throw new Error("Expected point in Secp256k1Mul serialization");
|
|
1808
|
+
}
|
|
1809
|
+
if (o.scalar === undefined) {
|
|
1810
|
+
throw new Error("Expected scalar in Secp256k1Mul serialization");
|
|
1936
1811
|
}
|
|
1937
1812
|
;
|
|
1938
1813
|
return {
|
|
1939
|
-
|
|
1814
|
+
point: fromSecp256k1Point(o.point),
|
|
1815
|
+
scalar: o.scalar,
|
|
1940
1816
|
};
|
|
1941
1817
|
}
|
|
1942
|
-
export function
|
|
1943
|
-
if (o.
|
|
1944
|
-
throw new Error("Expected
|
|
1818
|
+
export function fromSecp256k1GetRandomFr(o) {
|
|
1819
|
+
if (o.dummy === undefined) {
|
|
1820
|
+
throw new Error("Expected dummy in Secp256k1GetRandomFr serialization");
|
|
1945
1821
|
}
|
|
1946
1822
|
;
|
|
1947
1823
|
return {
|
|
1948
|
-
|
|
1824
|
+
dummy: o.dummy,
|
|
1949
1825
|
};
|
|
1950
1826
|
}
|
|
1951
|
-
export function
|
|
1952
|
-
if (o.
|
|
1953
|
-
throw new Error("Expected
|
|
1827
|
+
export function fromSecp256k1Reduce512(o) {
|
|
1828
|
+
if (o.input === undefined) {
|
|
1829
|
+
throw new Error("Expected input in Secp256k1Reduce512 serialization");
|
|
1954
1830
|
}
|
|
1955
1831
|
;
|
|
1956
1832
|
return {
|
|
1957
|
-
|
|
1833
|
+
input: o.input,
|
|
1958
1834
|
};
|
|
1959
1835
|
}
|
|
1960
|
-
export function
|
|
1961
|
-
if (o.
|
|
1962
|
-
throw new Error("Expected
|
|
1836
|
+
export function fromBn254FrSqrt(o) {
|
|
1837
|
+
if (o.input === undefined) {
|
|
1838
|
+
throw new Error("Expected input in Bn254FrSqrt serialization");
|
|
1963
1839
|
}
|
|
1964
1840
|
;
|
|
1965
1841
|
return {
|
|
1966
|
-
|
|
1842
|
+
input: o.input,
|
|
1967
1843
|
};
|
|
1968
1844
|
}
|
|
1969
|
-
export function
|
|
1970
|
-
if (o.
|
|
1971
|
-
throw new Error("Expected
|
|
1845
|
+
export function fromBn254FqSqrt(o) {
|
|
1846
|
+
if (o.input === undefined) {
|
|
1847
|
+
throw new Error("Expected input in Bn254FqSqrt serialization");
|
|
1972
1848
|
}
|
|
1973
1849
|
;
|
|
1974
1850
|
return {
|
|
1975
|
-
|
|
1851
|
+
input: o.input,
|
|
1976
1852
|
};
|
|
1977
1853
|
}
|
|
1978
|
-
export function
|
|
1979
|
-
if (o.
|
|
1980
|
-
throw new Error("Expected
|
|
1854
|
+
export function fromBn254G1Point(o) {
|
|
1855
|
+
if (o.x === undefined) {
|
|
1856
|
+
throw new Error("Expected x in Bn254G1Point serialization");
|
|
1857
|
+
}
|
|
1858
|
+
if (o.y === undefined) {
|
|
1859
|
+
throw new Error("Expected y in Bn254G1Point serialization");
|
|
1981
1860
|
}
|
|
1982
1861
|
;
|
|
1983
1862
|
return {
|
|
1984
|
-
|
|
1863
|
+
x: o.x,
|
|
1864
|
+
y: o.y,
|
|
1985
1865
|
};
|
|
1986
1866
|
}
|
|
1987
|
-
export function
|
|
1988
|
-
if (o.
|
|
1989
|
-
throw new Error("Expected
|
|
1867
|
+
export function fromBn254G1Mul(o) {
|
|
1868
|
+
if (o.point === undefined) {
|
|
1869
|
+
throw new Error("Expected point in Bn254G1Mul serialization");
|
|
1990
1870
|
}
|
|
1991
|
-
if (o.
|
|
1992
|
-
throw new Error("Expected
|
|
1871
|
+
if (o.scalar === undefined) {
|
|
1872
|
+
throw new Error("Expected scalar in Bn254G1Mul serialization");
|
|
1993
1873
|
}
|
|
1994
1874
|
;
|
|
1995
1875
|
return {
|
|
1996
|
-
|
|
1997
|
-
|
|
1876
|
+
point: fromBn254G1Point(o.point),
|
|
1877
|
+
scalar: o.scalar,
|
|
1998
1878
|
};
|
|
1999
1879
|
}
|
|
2000
|
-
export function
|
|
2001
|
-
if (o.
|
|
2002
|
-
throw new Error("Expected
|
|
1880
|
+
export function fromBn254G2Point(o) {
|
|
1881
|
+
if (o.x === undefined) {
|
|
1882
|
+
throw new Error("Expected x in Bn254G2Point serialization");
|
|
2003
1883
|
}
|
|
2004
|
-
if (o.
|
|
2005
|
-
throw new Error("Expected
|
|
1884
|
+
if (o.y === undefined) {
|
|
1885
|
+
throw new Error("Expected y in Bn254G2Point serialization");
|
|
2006
1886
|
}
|
|
2007
1887
|
;
|
|
2008
1888
|
return {
|
|
2009
|
-
|
|
2010
|
-
|
|
1889
|
+
x: o.x,
|
|
1890
|
+
y: o.y,
|
|
2011
1891
|
};
|
|
2012
1892
|
}
|
|
2013
|
-
export function
|
|
1893
|
+
export function fromBn254G2Mul(o) {
|
|
2014
1894
|
if (o.point === undefined) {
|
|
2015
|
-
throw new Error("Expected point in
|
|
1895
|
+
throw new Error("Expected point in Bn254G2Mul serialization");
|
|
1896
|
+
}
|
|
1897
|
+
if (o.scalar === undefined) {
|
|
1898
|
+
throw new Error("Expected scalar in Bn254G2Mul serialization");
|
|
2016
1899
|
}
|
|
2017
1900
|
;
|
|
2018
1901
|
return {
|
|
2019
|
-
point:
|
|
1902
|
+
point: fromBn254G2Point(o.point),
|
|
1903
|
+
scalar: o.scalar,
|
|
2020
1904
|
};
|
|
2021
1905
|
}
|
|
2022
|
-
export function
|
|
1906
|
+
export function fromBn254G1IsOnCurve(o) {
|
|
2023
1907
|
if (o.point === undefined) {
|
|
2024
|
-
throw new Error("Expected point in
|
|
1908
|
+
throw new Error("Expected point in Bn254G1IsOnCurve serialization");
|
|
2025
1909
|
}
|
|
2026
1910
|
;
|
|
2027
1911
|
return {
|
|
2028
|
-
point:
|
|
1912
|
+
point: fromBn254G1Point(o.point),
|
|
2029
1913
|
};
|
|
2030
1914
|
}
|
|
2031
|
-
export function
|
|
2032
|
-
if (o.
|
|
2033
|
-
throw new Error("Expected
|
|
2034
|
-
}
|
|
2035
|
-
if (o.hash_index === undefined) {
|
|
2036
|
-
throw new Error("Expected hash_index in PedersenHash deserialization");
|
|
1915
|
+
export function fromBn254G1FromCompressed(o) {
|
|
1916
|
+
if (o.compressed === undefined) {
|
|
1917
|
+
throw new Error("Expected compressed in Bn254G1FromCompressed serialization");
|
|
2037
1918
|
}
|
|
2038
1919
|
;
|
|
2039
1920
|
return {
|
|
2040
|
-
|
|
2041
|
-
hashIndex: o.hash_index,
|
|
1921
|
+
compressed: o.compressed,
|
|
2042
1922
|
};
|
|
2043
1923
|
}
|
|
2044
|
-
export function
|
|
2045
|
-
if (o.
|
|
2046
|
-
throw new Error("Expected
|
|
2047
|
-
}
|
|
2048
|
-
if (o.hashIndex === undefined) {
|
|
2049
|
-
throw new Error("Expected hashIndex in PedersenHash serialization");
|
|
1924
|
+
export function fromSchnorrComputePublicKey(o) {
|
|
1925
|
+
if (o.privateKey === undefined) {
|
|
1926
|
+
throw new Error("Expected privateKey in SchnorrComputePublicKey serialization");
|
|
2050
1927
|
}
|
|
2051
1928
|
;
|
|
2052
1929
|
return {
|
|
2053
|
-
|
|
2054
|
-
hash_index: o.hashIndex,
|
|
1930
|
+
private_key: o.privateKey,
|
|
2055
1931
|
};
|
|
2056
1932
|
}
|
|
2057
|
-
export function
|
|
2058
|
-
if (o.
|
|
2059
|
-
throw new Error("Expected
|
|
1933
|
+
export function fromSchnorrConstructSignature(o) {
|
|
1934
|
+
if (o.message === undefined) {
|
|
1935
|
+
throw new Error("Expected message in SchnorrConstructSignature serialization");
|
|
2060
1936
|
}
|
|
2061
|
-
if (o.
|
|
2062
|
-
throw new Error("Expected
|
|
1937
|
+
if (o.privateKey === undefined) {
|
|
1938
|
+
throw new Error("Expected privateKey in SchnorrConstructSignature serialization");
|
|
2063
1939
|
}
|
|
2064
1940
|
;
|
|
2065
1941
|
return {
|
|
2066
|
-
|
|
2067
|
-
|
|
1942
|
+
message: o.message,
|
|
1943
|
+
private_key: o.privateKey,
|
|
2068
1944
|
};
|
|
2069
1945
|
}
|
|
2070
|
-
export function
|
|
2071
|
-
if (o.
|
|
2072
|
-
throw new Error("Expected
|
|
1946
|
+
export function fromSchnorrVerifySignature(o) {
|
|
1947
|
+
if (o.message === undefined) {
|
|
1948
|
+
throw new Error("Expected message in SchnorrVerifySignature serialization");
|
|
2073
1949
|
}
|
|
2074
|
-
if (o.
|
|
2075
|
-
throw new Error("Expected
|
|
1950
|
+
if (o.publicKey === undefined) {
|
|
1951
|
+
throw new Error("Expected publicKey in SchnorrVerifySignature serialization");
|
|
1952
|
+
}
|
|
1953
|
+
if (o.s === undefined) {
|
|
1954
|
+
throw new Error("Expected s in SchnorrVerifySignature serialization");
|
|
1955
|
+
}
|
|
1956
|
+
if (o.e === undefined) {
|
|
1957
|
+
throw new Error("Expected e in SchnorrVerifySignature serialization");
|
|
2076
1958
|
}
|
|
2077
1959
|
;
|
|
2078
1960
|
return {
|
|
2079
|
-
|
|
2080
|
-
|
|
1961
|
+
message: o.message,
|
|
1962
|
+
public_key: fromGrumpkinPoint(o.publicKey),
|
|
1963
|
+
s: o.s,
|
|
1964
|
+
e: o.e,
|
|
2081
1965
|
};
|
|
2082
1966
|
}
|
|
2083
|
-
export function
|
|
2084
|
-
if (o.
|
|
2085
|
-
throw new Error("Expected
|
|
1967
|
+
export function fromEcdsaSecp256k1ComputePublicKey(o) {
|
|
1968
|
+
if (o.privateKey === undefined) {
|
|
1969
|
+
throw new Error("Expected privateKey in EcdsaSecp256k1ComputePublicKey serialization");
|
|
2086
1970
|
}
|
|
2087
1971
|
;
|
|
2088
1972
|
return {
|
|
2089
|
-
|
|
1973
|
+
private_key: o.privateKey,
|
|
2090
1974
|
};
|
|
2091
1975
|
}
|
|
2092
|
-
export function
|
|
2093
|
-
if (o.
|
|
2094
|
-
throw new Error("Expected
|
|
1976
|
+
export function fromEcdsaSecp256r1ComputePublicKey(o) {
|
|
1977
|
+
if (o.privateKey === undefined) {
|
|
1978
|
+
throw new Error("Expected privateKey in EcdsaSecp256r1ComputePublicKey serialization");
|
|
2095
1979
|
}
|
|
2096
1980
|
;
|
|
2097
1981
|
return {
|
|
2098
|
-
|
|
1982
|
+
private_key: o.privateKey,
|
|
2099
1983
|
};
|
|
2100
1984
|
}
|
|
2101
|
-
export function
|
|
2102
|
-
if (o.
|
|
2103
|
-
throw new Error("Expected
|
|
1985
|
+
export function fromEcdsaSecp256k1ConstructSignature(o) {
|
|
1986
|
+
if (o.message === undefined) {
|
|
1987
|
+
throw new Error("Expected message in EcdsaSecp256k1ConstructSignature serialization");
|
|
1988
|
+
}
|
|
1989
|
+
if (o.privateKey === undefined) {
|
|
1990
|
+
throw new Error("Expected privateKey in EcdsaSecp256k1ConstructSignature serialization");
|
|
2104
1991
|
}
|
|
2105
1992
|
;
|
|
2106
1993
|
return {
|
|
2107
|
-
|
|
1994
|
+
message: o.message,
|
|
1995
|
+
private_key: o.privateKey,
|
|
2108
1996
|
};
|
|
2109
1997
|
}
|
|
2110
|
-
export function
|
|
2111
|
-
if (o.
|
|
2112
|
-
throw new Error("Expected
|
|
1998
|
+
export function fromEcdsaSecp256r1ConstructSignature(o) {
|
|
1999
|
+
if (o.message === undefined) {
|
|
2000
|
+
throw new Error("Expected message in EcdsaSecp256r1ConstructSignature serialization");
|
|
2001
|
+
}
|
|
2002
|
+
if (o.privateKey === undefined) {
|
|
2003
|
+
throw new Error("Expected privateKey in EcdsaSecp256r1ConstructSignature serialization");
|
|
2113
2004
|
}
|
|
2114
2005
|
;
|
|
2115
2006
|
return {
|
|
2116
|
-
|
|
2007
|
+
message: o.message,
|
|
2008
|
+
private_key: o.privateKey,
|
|
2117
2009
|
};
|
|
2118
2010
|
}
|
|
2119
|
-
export function
|
|
2120
|
-
if (o.
|
|
2121
|
-
throw new Error("Expected
|
|
2011
|
+
export function fromEcdsaSecp256k1RecoverPublicKey(o) {
|
|
2012
|
+
if (o.message === undefined) {
|
|
2013
|
+
throw new Error("Expected message in EcdsaSecp256k1RecoverPublicKey serialization");
|
|
2014
|
+
}
|
|
2015
|
+
if (o.r === undefined) {
|
|
2016
|
+
throw new Error("Expected r in EcdsaSecp256k1RecoverPublicKey serialization");
|
|
2017
|
+
}
|
|
2018
|
+
if (o.s === undefined) {
|
|
2019
|
+
throw new Error("Expected s in EcdsaSecp256k1RecoverPublicKey serialization");
|
|
2020
|
+
}
|
|
2021
|
+
if (o.v === undefined) {
|
|
2022
|
+
throw new Error("Expected v in EcdsaSecp256k1RecoverPublicKey serialization");
|
|
2122
2023
|
}
|
|
2123
2024
|
;
|
|
2124
2025
|
return {
|
|
2125
|
-
|
|
2026
|
+
message: o.message,
|
|
2027
|
+
r: o.r,
|
|
2028
|
+
s: o.s,
|
|
2029
|
+
v: o.v,
|
|
2126
2030
|
};
|
|
2127
2031
|
}
|
|
2128
|
-
export function
|
|
2129
|
-
if (o.
|
|
2130
|
-
throw new Error("Expected
|
|
2032
|
+
export function fromEcdsaSecp256r1RecoverPublicKey(o) {
|
|
2033
|
+
if (o.message === undefined) {
|
|
2034
|
+
throw new Error("Expected message in EcdsaSecp256r1RecoverPublicKey serialization");
|
|
2035
|
+
}
|
|
2036
|
+
if (o.r === undefined) {
|
|
2037
|
+
throw new Error("Expected r in EcdsaSecp256r1RecoverPublicKey serialization");
|
|
2038
|
+
}
|
|
2039
|
+
if (o.s === undefined) {
|
|
2040
|
+
throw new Error("Expected s in EcdsaSecp256r1RecoverPublicKey serialization");
|
|
2041
|
+
}
|
|
2042
|
+
if (o.v === undefined) {
|
|
2043
|
+
throw new Error("Expected v in EcdsaSecp256r1RecoverPublicKey serialization");
|
|
2131
2044
|
}
|
|
2132
2045
|
;
|
|
2133
2046
|
return {
|
|
2134
|
-
|
|
2047
|
+
message: o.message,
|
|
2048
|
+
r: o.r,
|
|
2049
|
+
s: o.s,
|
|
2050
|
+
v: o.v,
|
|
2135
2051
|
};
|
|
2136
2052
|
}
|
|
2137
|
-
export function
|
|
2138
|
-
if (o.
|
|
2139
|
-
throw new Error("Expected
|
|
2053
|
+
export function fromEcdsaSecp256k1VerifySignature(o) {
|
|
2054
|
+
if (o.message === undefined) {
|
|
2055
|
+
throw new Error("Expected message in EcdsaSecp256k1VerifySignature serialization");
|
|
2056
|
+
}
|
|
2057
|
+
if (o.publicKey === undefined) {
|
|
2058
|
+
throw new Error("Expected publicKey in EcdsaSecp256k1VerifySignature serialization");
|
|
2059
|
+
}
|
|
2060
|
+
if (o.r === undefined) {
|
|
2061
|
+
throw new Error("Expected r in EcdsaSecp256k1VerifySignature serialization");
|
|
2062
|
+
}
|
|
2063
|
+
if (o.s === undefined) {
|
|
2064
|
+
throw new Error("Expected s in EcdsaSecp256k1VerifySignature serialization");
|
|
2065
|
+
}
|
|
2066
|
+
if (o.v === undefined) {
|
|
2067
|
+
throw new Error("Expected v in EcdsaSecp256k1VerifySignature serialization");
|
|
2140
2068
|
}
|
|
2141
2069
|
;
|
|
2142
2070
|
return {
|
|
2143
|
-
|
|
2071
|
+
message: o.message,
|
|
2072
|
+
public_key: fromSecp256k1Point(o.publicKey),
|
|
2073
|
+
r: o.r,
|
|
2074
|
+
s: o.s,
|
|
2075
|
+
v: o.v,
|
|
2144
2076
|
};
|
|
2145
2077
|
}
|
|
2146
|
-
export function
|
|
2147
|
-
if (o.
|
|
2148
|
-
throw new Error("Expected
|
|
2078
|
+
export function fromSecp256r1Point(o) {
|
|
2079
|
+
if (o.x === undefined) {
|
|
2080
|
+
throw new Error("Expected x in Secp256r1Point serialization");
|
|
2081
|
+
}
|
|
2082
|
+
if (o.y === undefined) {
|
|
2083
|
+
throw new Error("Expected y in Secp256r1Point serialization");
|
|
2149
2084
|
}
|
|
2150
2085
|
;
|
|
2151
2086
|
return {
|
|
2152
|
-
|
|
2087
|
+
x: o.x,
|
|
2088
|
+
y: o.y,
|
|
2153
2089
|
};
|
|
2154
2090
|
}
|
|
2155
|
-
export function
|
|
2156
|
-
if (o.
|
|
2157
|
-
throw new Error("Expected
|
|
2091
|
+
export function fromEcdsaSecp256r1VerifySignature(o) {
|
|
2092
|
+
if (o.message === undefined) {
|
|
2093
|
+
throw new Error("Expected message in EcdsaSecp256r1VerifySignature serialization");
|
|
2094
|
+
}
|
|
2095
|
+
if (o.publicKey === undefined) {
|
|
2096
|
+
throw new Error("Expected publicKey in EcdsaSecp256r1VerifySignature serialization");
|
|
2097
|
+
}
|
|
2098
|
+
if (o.r === undefined) {
|
|
2099
|
+
throw new Error("Expected r in EcdsaSecp256r1VerifySignature serialization");
|
|
2100
|
+
}
|
|
2101
|
+
if (o.s === undefined) {
|
|
2102
|
+
throw new Error("Expected s in EcdsaSecp256r1VerifySignature serialization");
|
|
2103
|
+
}
|
|
2104
|
+
if (o.v === undefined) {
|
|
2105
|
+
throw new Error("Expected v in EcdsaSecp256r1VerifySignature serialization");
|
|
2158
2106
|
}
|
|
2159
2107
|
;
|
|
2160
2108
|
return {
|
|
2161
|
-
|
|
2109
|
+
message: o.message,
|
|
2110
|
+
public_key: fromSecp256r1Point(o.publicKey),
|
|
2111
|
+
r: o.r,
|
|
2112
|
+
s: o.s,
|
|
2113
|
+
v: o.v,
|
|
2162
2114
|
};
|
|
2163
2115
|
}
|
|
2164
|
-
export function
|
|
2165
|
-
if (o.
|
|
2166
|
-
throw new Error("Expected
|
|
2116
|
+
export function fromSrsInitSrs(o) {
|
|
2117
|
+
if (o.pointsBuf === undefined) {
|
|
2118
|
+
throw new Error("Expected pointsBuf in SrsInitSrs serialization");
|
|
2119
|
+
}
|
|
2120
|
+
if (o.numPoints === undefined) {
|
|
2121
|
+
throw new Error("Expected numPoints in SrsInitSrs serialization");
|
|
2122
|
+
}
|
|
2123
|
+
if (o.g2Point === undefined) {
|
|
2124
|
+
throw new Error("Expected g2Point in SrsInitSrs serialization");
|
|
2167
2125
|
}
|
|
2168
2126
|
;
|
|
2169
2127
|
return {
|
|
2170
|
-
|
|
2128
|
+
points_buf: o.pointsBuf,
|
|
2129
|
+
num_points: o.numPoints,
|
|
2130
|
+
g2_point: o.g2Point,
|
|
2171
2131
|
};
|
|
2172
2132
|
}
|
|
2173
|
-
export function
|
|
2174
|
-
if (o.
|
|
2175
|
-
throw new Error("Expected
|
|
2133
|
+
export function fromSrsInitGrumpkinSrs(o) {
|
|
2134
|
+
if (o.pointsBuf === undefined) {
|
|
2135
|
+
throw new Error("Expected pointsBuf in SrsInitGrumpkinSrs serialization");
|
|
2136
|
+
}
|
|
2137
|
+
if (o.numPoints === undefined) {
|
|
2138
|
+
throw new Error("Expected numPoints in SrsInitGrumpkinSrs serialization");
|
|
2176
2139
|
}
|
|
2177
2140
|
;
|
|
2178
2141
|
return {
|
|
2179
|
-
|
|
2142
|
+
points_buf: o.pointsBuf,
|
|
2143
|
+
num_points: o.numPoints,
|
|
2180
2144
|
};
|
|
2181
2145
|
}
|
|
2182
|
-
export function
|
|
2183
|
-
|
|
2184
|
-
|
|
2146
|
+
export function fromShutdown(o) {
|
|
2147
|
+
return {};
|
|
2148
|
+
}
|
|
2149
|
+
export function fromErrorResponse(o) {
|
|
2150
|
+
if (o.message === undefined) {
|
|
2151
|
+
throw new Error("Expected message in ErrorResponse serialization");
|
|
2185
2152
|
}
|
|
2186
2153
|
;
|
|
2187
2154
|
return {
|
|
2188
|
-
|
|
2155
|
+
message: o.message,
|
|
2189
2156
|
};
|
|
2190
2157
|
}
|
|
2191
|
-
export function
|
|
2192
|
-
if (o.
|
|
2193
|
-
throw new Error("Expected
|
|
2158
|
+
export function fromCircuitProveResponse(o) {
|
|
2159
|
+
if (o.publicInputs === undefined) {
|
|
2160
|
+
throw new Error("Expected publicInputs in CircuitProveResponse serialization");
|
|
2161
|
+
}
|
|
2162
|
+
if (o.proof === undefined) {
|
|
2163
|
+
throw new Error("Expected proof in CircuitProveResponse serialization");
|
|
2164
|
+
}
|
|
2165
|
+
if (o.vk === undefined) {
|
|
2166
|
+
throw new Error("Expected vk in CircuitProveResponse serialization");
|
|
2194
2167
|
}
|
|
2195
2168
|
;
|
|
2196
2169
|
return {
|
|
2197
|
-
|
|
2170
|
+
public_inputs: o.publicInputs,
|
|
2171
|
+
proof: o.proof,
|
|
2172
|
+
vk: fromCircuitComputeVkResponse(o.vk),
|
|
2198
2173
|
};
|
|
2199
2174
|
}
|
|
2200
|
-
export function
|
|
2201
|
-
if (o.
|
|
2202
|
-
throw new Error("Expected
|
|
2175
|
+
export function fromCircuitInfoResponse(o) {
|
|
2176
|
+
if (o.numGates === undefined) {
|
|
2177
|
+
throw new Error("Expected numGates in CircuitInfoResponse serialization");
|
|
2178
|
+
}
|
|
2179
|
+
if (o.numGatesDyadic === undefined) {
|
|
2180
|
+
throw new Error("Expected numGatesDyadic in CircuitInfoResponse serialization");
|
|
2181
|
+
}
|
|
2182
|
+
if (o.numAcirOpcodes === undefined) {
|
|
2183
|
+
throw new Error("Expected numAcirOpcodes in CircuitInfoResponse serialization");
|
|
2203
2184
|
}
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
inputs: o.inputs.map((v) => v),
|
|
2207
|
-
};
|
|
2208
|
-
}
|
|
2209
|
-
export function toPoseidon2PermutationResponse(o) {
|
|
2210
|
-
if (o.outputs === undefined) {
|
|
2211
|
-
throw new Error("Expected outputs in Poseidon2PermutationResponse deserialization");
|
|
2185
|
+
if (o.gatesPerOpcode === undefined) {
|
|
2186
|
+
throw new Error("Expected gatesPerOpcode in CircuitInfoResponse serialization");
|
|
2212
2187
|
}
|
|
2213
2188
|
;
|
|
2214
2189
|
return {
|
|
2215
|
-
|
|
2190
|
+
num_gates: o.numGates,
|
|
2191
|
+
num_gates_dyadic: o.numGatesDyadic,
|
|
2192
|
+
num_acir_opcodes: o.numAcirOpcodes,
|
|
2193
|
+
gates_per_opcode: o.gatesPerOpcode,
|
|
2216
2194
|
};
|
|
2217
2195
|
}
|
|
2218
|
-
export function
|
|
2219
|
-
if (o.
|
|
2220
|
-
throw new Error("Expected
|
|
2196
|
+
export function fromCircuitVerifyResponse(o) {
|
|
2197
|
+
if (o.verified === undefined) {
|
|
2198
|
+
throw new Error("Expected verified in CircuitVerifyResponse serialization");
|
|
2221
2199
|
}
|
|
2222
2200
|
;
|
|
2223
2201
|
return {
|
|
2224
|
-
|
|
2202
|
+
verified: o.verified,
|
|
2225
2203
|
};
|
|
2226
2204
|
}
|
|
2227
|
-
export function
|
|
2228
|
-
if (o.
|
|
2229
|
-
throw new Error("Expected
|
|
2230
|
-
}
|
|
2231
|
-
if (o.oracle_hash_type === undefined) {
|
|
2232
|
-
throw new Error("Expected oracle_hash_type in ProofSystemSettings deserialization");
|
|
2233
|
-
}
|
|
2234
|
-
if (o.disable_zk === undefined) {
|
|
2235
|
-
throw new Error("Expected disable_zk in ProofSystemSettings deserialization");
|
|
2205
|
+
export function fromChonkComputeVkResponse(o) {
|
|
2206
|
+
if (o.bytes === undefined) {
|
|
2207
|
+
throw new Error("Expected bytes in ChonkComputeVkResponse serialization");
|
|
2236
2208
|
}
|
|
2237
|
-
if (o.
|
|
2238
|
-
throw new Error("Expected
|
|
2209
|
+
if (o.fields === undefined) {
|
|
2210
|
+
throw new Error("Expected fields in ChonkComputeVkResponse serialization");
|
|
2239
2211
|
}
|
|
2240
2212
|
;
|
|
2241
2213
|
return {
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
disableZk: o.disable_zk,
|
|
2245
|
-
optimizedSolidityVerifier: o.optimized_solidity_verifier,
|
|
2214
|
+
bytes: o.bytes,
|
|
2215
|
+
fields: o.fields,
|
|
2246
2216
|
};
|
|
2247
2217
|
}
|
|
2248
|
-
export function
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
if (o.
|
|
2259
|
-
throw new Error("Expected
|
|
2218
|
+
export function fromChonkStartResponse(o) {
|
|
2219
|
+
return {};
|
|
2220
|
+
}
|
|
2221
|
+
export function fromChonkLoadResponse(o) {
|
|
2222
|
+
return {};
|
|
2223
|
+
}
|
|
2224
|
+
export function fromChonkAccumulateResponse(o) {
|
|
2225
|
+
return {};
|
|
2226
|
+
}
|
|
2227
|
+
export function fromChonkProveResponse(o) {
|
|
2228
|
+
if (o.proof === undefined) {
|
|
2229
|
+
throw new Error("Expected proof in ChonkProveResponse serialization");
|
|
2260
2230
|
}
|
|
2261
2231
|
;
|
|
2262
2232
|
return {
|
|
2263
|
-
|
|
2264
|
-
oracle_hash_type: o.oracleHashType,
|
|
2265
|
-
disable_zk: o.disableZk,
|
|
2266
|
-
optimized_solidity_verifier: o.optimizedSolidityVerifier,
|
|
2233
|
+
proof: fromChonkProof(o.proof),
|
|
2267
2234
|
};
|
|
2268
2235
|
}
|
|
2269
|
-
export function
|
|
2270
|
-
if (o.
|
|
2271
|
-
throw new Error("Expected
|
|
2236
|
+
export function fromChonkVerifyResponse(o) {
|
|
2237
|
+
if (o.valid === undefined) {
|
|
2238
|
+
throw new Error("Expected valid in ChonkVerifyResponse serialization");
|
|
2272
2239
|
}
|
|
2273
2240
|
;
|
|
2274
2241
|
return {
|
|
2275
|
-
|
|
2242
|
+
valid: o.valid,
|
|
2276
2243
|
};
|
|
2277
2244
|
}
|
|
2278
|
-
export function
|
|
2279
|
-
if (o.
|
|
2280
|
-
throw new Error("Expected
|
|
2245
|
+
export function fromVkAsFieldsResponse(o) {
|
|
2246
|
+
if (o.fields === undefined) {
|
|
2247
|
+
throw new Error("Expected fields in VkAsFieldsResponse serialization");
|
|
2281
2248
|
}
|
|
2282
2249
|
;
|
|
2283
2250
|
return {
|
|
2284
|
-
|
|
2251
|
+
fields: o.fields,
|
|
2285
2252
|
};
|
|
2286
2253
|
}
|
|
2287
|
-
export function
|
|
2288
|
-
if (o.
|
|
2289
|
-
throw new Error("Expected
|
|
2254
|
+
export function fromMegaVkAsFieldsResponse(o) {
|
|
2255
|
+
if (o.fields === undefined) {
|
|
2256
|
+
throw new Error("Expected fields in MegaVkAsFieldsResponse serialization");
|
|
2290
2257
|
}
|
|
2291
2258
|
;
|
|
2292
2259
|
return {
|
|
2293
|
-
|
|
2260
|
+
fields: o.fields,
|
|
2294
2261
|
};
|
|
2295
2262
|
}
|
|
2296
|
-
export function
|
|
2297
|
-
if (o.
|
|
2298
|
-
throw new Error("Expected
|
|
2263
|
+
export function fromCircuitWriteSolidityVerifierResponse(o) {
|
|
2264
|
+
if (o.solidityCode === undefined) {
|
|
2265
|
+
throw new Error("Expected solidityCode in CircuitWriteSolidityVerifierResponse serialization");
|
|
2299
2266
|
}
|
|
2300
2267
|
;
|
|
2301
2268
|
return {
|
|
2302
|
-
|
|
2269
|
+
solidity_code: o.solidityCode,
|
|
2303
2270
|
};
|
|
2304
2271
|
}
|
|
2305
|
-
export function
|
|
2306
|
-
if (o.
|
|
2307
|
-
throw new Error("Expected
|
|
2272
|
+
export function fromChonkCheckPrecomputedVkResponse(o) {
|
|
2273
|
+
if (o.valid === undefined) {
|
|
2274
|
+
throw new Error("Expected valid in ChonkCheckPrecomputedVkResponse serialization");
|
|
2308
2275
|
}
|
|
2309
|
-
if (o.
|
|
2310
|
-
throw new Error("Expected
|
|
2276
|
+
if (o.actualVk === undefined) {
|
|
2277
|
+
throw new Error("Expected actualVk in ChonkCheckPrecomputedVkResponse serialization");
|
|
2311
2278
|
}
|
|
2312
2279
|
;
|
|
2313
2280
|
return {
|
|
2314
|
-
|
|
2315
|
-
|
|
2281
|
+
valid: o.valid,
|
|
2282
|
+
actual_vk: o.actualVk,
|
|
2316
2283
|
};
|
|
2317
2284
|
}
|
|
2318
|
-
export function
|
|
2319
|
-
if (o.
|
|
2320
|
-
throw new Error("Expected
|
|
2285
|
+
export function fromChonkStatsResponse(o) {
|
|
2286
|
+
if (o.acirOpcodes === undefined) {
|
|
2287
|
+
throw new Error("Expected acirOpcodes in ChonkStatsResponse serialization");
|
|
2321
2288
|
}
|
|
2322
|
-
if (o.
|
|
2323
|
-
throw new Error("Expected
|
|
2289
|
+
if (o.circuitSize === undefined) {
|
|
2290
|
+
throw new Error("Expected circuitSize in ChonkStatsResponse serialization");
|
|
2291
|
+
}
|
|
2292
|
+
if (o.gatesPerOpcode === undefined) {
|
|
2293
|
+
throw new Error("Expected gatesPerOpcode in ChonkStatsResponse serialization");
|
|
2324
2294
|
}
|
|
2325
2295
|
;
|
|
2326
2296
|
return {
|
|
2327
|
-
|
|
2328
|
-
|
|
2297
|
+
acir_opcodes: o.acirOpcodes,
|
|
2298
|
+
circuit_size: o.circuitSize,
|
|
2299
|
+
gates_per_opcode: o.gatesPerOpcode,
|
|
2329
2300
|
};
|
|
2330
2301
|
}
|
|
2331
|
-
export function
|
|
2332
|
-
if (o.
|
|
2333
|
-
throw new Error("Expected
|
|
2334
|
-
}
|
|
2335
|
-
if (o.e === undefined) {
|
|
2336
|
-
throw new Error("Expected e in SchnorrConstructSignatureResponse deserialization");
|
|
2302
|
+
export function fromPoseidon2HashResponse(o) {
|
|
2303
|
+
if (o.hash === undefined) {
|
|
2304
|
+
throw new Error("Expected hash in Poseidon2HashResponse serialization");
|
|
2337
2305
|
}
|
|
2338
2306
|
;
|
|
2339
2307
|
return {
|
|
2340
|
-
|
|
2341
|
-
e: o.e,
|
|
2308
|
+
hash: o.hash,
|
|
2342
2309
|
};
|
|
2343
2310
|
}
|
|
2344
|
-
export function
|
|
2345
|
-
if (o.
|
|
2346
|
-
throw new Error("Expected
|
|
2347
|
-
}
|
|
2348
|
-
if (o.e === undefined) {
|
|
2349
|
-
throw new Error("Expected e in SchnorrConstructSignatureResponse serialization");
|
|
2311
|
+
export function fromPoseidon2PermutationResponse(o) {
|
|
2312
|
+
if (o.outputs === undefined) {
|
|
2313
|
+
throw new Error("Expected outputs in Poseidon2PermutationResponse serialization");
|
|
2350
2314
|
}
|
|
2351
2315
|
;
|
|
2352
2316
|
return {
|
|
2353
|
-
|
|
2354
|
-
e: o.e,
|
|
2317
|
+
outputs: o.outputs,
|
|
2355
2318
|
};
|
|
2356
2319
|
}
|
|
2357
|
-
export function
|
|
2358
|
-
if (o.
|
|
2359
|
-
throw new Error("Expected
|
|
2360
|
-
}
|
|
2361
|
-
if (o.public_key === undefined) {
|
|
2362
|
-
throw new Error("Expected public_key in SchnorrVerifySignature deserialization");
|
|
2363
|
-
}
|
|
2364
|
-
if (o.s === undefined) {
|
|
2365
|
-
throw new Error("Expected s in SchnorrVerifySignature deserialization");
|
|
2366
|
-
}
|
|
2367
|
-
if (o.e === undefined) {
|
|
2368
|
-
throw new Error("Expected e in SchnorrVerifySignature deserialization");
|
|
2320
|
+
export function fromPedersenCommitResponse(o) {
|
|
2321
|
+
if (o.point === undefined) {
|
|
2322
|
+
throw new Error("Expected point in PedersenCommitResponse serialization");
|
|
2369
2323
|
}
|
|
2370
2324
|
;
|
|
2371
2325
|
return {
|
|
2372
|
-
|
|
2373
|
-
publicKey: toGrumpkinPoint(o.public_key),
|
|
2374
|
-
s: o.s,
|
|
2375
|
-
e: o.e,
|
|
2326
|
+
point: fromGrumpkinPoint(o.point),
|
|
2376
2327
|
};
|
|
2377
2328
|
}
|
|
2378
|
-
export function
|
|
2379
|
-
if (o.
|
|
2380
|
-
throw new Error("Expected
|
|
2381
|
-
}
|
|
2382
|
-
if (o.publicKey === undefined) {
|
|
2383
|
-
throw new Error("Expected publicKey in SchnorrVerifySignature serialization");
|
|
2384
|
-
}
|
|
2385
|
-
if (o.s === undefined) {
|
|
2386
|
-
throw new Error("Expected s in SchnorrVerifySignature serialization");
|
|
2387
|
-
}
|
|
2388
|
-
if (o.e === undefined) {
|
|
2389
|
-
throw new Error("Expected e in SchnorrVerifySignature serialization");
|
|
2329
|
+
export function fromPedersenHashResponse(o) {
|
|
2330
|
+
if (o.hash === undefined) {
|
|
2331
|
+
throw new Error("Expected hash in PedersenHashResponse serialization");
|
|
2390
2332
|
}
|
|
2391
2333
|
;
|
|
2392
2334
|
return {
|
|
2393
|
-
|
|
2394
|
-
public_key: fromGrumpkinPoint(o.publicKey),
|
|
2395
|
-
s: o.s,
|
|
2396
|
-
e: o.e,
|
|
2335
|
+
hash: o.hash,
|
|
2397
2336
|
};
|
|
2398
2337
|
}
|
|
2399
|
-
export function
|
|
2400
|
-
if (o.
|
|
2401
|
-
throw new Error("Expected
|
|
2338
|
+
export function fromPedersenHashBufferResponse(o) {
|
|
2339
|
+
if (o.hash === undefined) {
|
|
2340
|
+
throw new Error("Expected hash in PedersenHashBufferResponse serialization");
|
|
2402
2341
|
}
|
|
2403
2342
|
;
|
|
2404
2343
|
return {
|
|
2405
|
-
|
|
2344
|
+
hash: o.hash,
|
|
2406
2345
|
};
|
|
2407
2346
|
}
|
|
2408
|
-
export function
|
|
2409
|
-
if (o.
|
|
2410
|
-
throw new Error("Expected
|
|
2347
|
+
export function fromBlake2sResponse(o) {
|
|
2348
|
+
if (o.hash === undefined) {
|
|
2349
|
+
throw new Error("Expected hash in Blake2sResponse serialization");
|
|
2411
2350
|
}
|
|
2412
2351
|
;
|
|
2413
2352
|
return {
|
|
2414
|
-
|
|
2353
|
+
hash: o.hash,
|
|
2415
2354
|
};
|
|
2416
2355
|
}
|
|
2417
|
-
export function
|
|
2418
|
-
if (o.
|
|
2419
|
-
throw new Error("Expected
|
|
2356
|
+
export function fromBlake2sToFieldResponse(o) {
|
|
2357
|
+
if (o.field === undefined) {
|
|
2358
|
+
throw new Error("Expected field in Blake2sToFieldResponse serialization");
|
|
2420
2359
|
}
|
|
2421
2360
|
;
|
|
2422
2361
|
return {
|
|
2423
|
-
|
|
2362
|
+
field: o.field,
|
|
2424
2363
|
};
|
|
2425
2364
|
}
|
|
2426
|
-
export function
|
|
2427
|
-
if (o.
|
|
2428
|
-
throw new Error("Expected
|
|
2365
|
+
export function fromAesEncryptResponse(o) {
|
|
2366
|
+
if (o.ciphertext === undefined) {
|
|
2367
|
+
throw new Error("Expected ciphertext in AesEncryptResponse serialization");
|
|
2429
2368
|
}
|
|
2430
2369
|
;
|
|
2431
2370
|
return {
|
|
2432
|
-
|
|
2371
|
+
ciphertext: o.ciphertext,
|
|
2433
2372
|
};
|
|
2434
2373
|
}
|
|
2435
|
-
export function
|
|
2436
|
-
if (o.
|
|
2437
|
-
throw new Error("Expected
|
|
2374
|
+
export function fromAesDecryptResponse(o) {
|
|
2375
|
+
if (o.plaintext === undefined) {
|
|
2376
|
+
throw new Error("Expected plaintext in AesDecryptResponse serialization");
|
|
2438
2377
|
}
|
|
2439
2378
|
;
|
|
2440
2379
|
return {
|
|
2441
|
-
|
|
2380
|
+
plaintext: o.plaintext,
|
|
2442
2381
|
};
|
|
2443
2382
|
}
|
|
2444
|
-
export function
|
|
2445
|
-
if (o.
|
|
2446
|
-
throw new Error("Expected
|
|
2383
|
+
export function fromGrumpkinMulResponse(o) {
|
|
2384
|
+
if (o.point === undefined) {
|
|
2385
|
+
throw new Error("Expected point in GrumpkinMulResponse serialization");
|
|
2447
2386
|
}
|
|
2448
2387
|
;
|
|
2449
2388
|
return {
|
|
2450
|
-
|
|
2389
|
+
point: fromGrumpkinPoint(o.point),
|
|
2451
2390
|
};
|
|
2452
2391
|
}
|
|
2453
|
-
export function
|
|
2392
|
+
export function fromGrumpkinAddResponse(o) {
|
|
2454
2393
|
if (o.point === undefined) {
|
|
2455
|
-
throw new Error("Expected point in
|
|
2394
|
+
throw new Error("Expected point in GrumpkinAddResponse serialization");
|
|
2456
2395
|
}
|
|
2457
|
-
|
|
2458
|
-
|
|
2396
|
+
;
|
|
2397
|
+
return {
|
|
2398
|
+
point: fromGrumpkinPoint(o.point),
|
|
2399
|
+
};
|
|
2400
|
+
}
|
|
2401
|
+
export function fromGrumpkinBatchMulResponse(o) {
|
|
2402
|
+
if (o.points === undefined) {
|
|
2403
|
+
throw new Error("Expected points in GrumpkinBatchMulResponse serialization");
|
|
2459
2404
|
}
|
|
2460
2405
|
;
|
|
2461
2406
|
return {
|
|
2462
|
-
|
|
2463
|
-
scalar: o.scalar,
|
|
2407
|
+
points: o.points.map((v) => fromGrumpkinPoint(v)),
|
|
2464
2408
|
};
|
|
2465
2409
|
}
|
|
2466
|
-
export function
|
|
2467
|
-
if (o.
|
|
2468
|
-
throw new Error("Expected
|
|
2469
|
-
}
|
|
2470
|
-
if (o.scalar === undefined) {
|
|
2471
|
-
throw new Error("Expected scalar in Secp256k1Mul serialization");
|
|
2410
|
+
export function fromGrumpkinGetRandomFrResponse(o) {
|
|
2411
|
+
if (o.value === undefined) {
|
|
2412
|
+
throw new Error("Expected value in GrumpkinGetRandomFrResponse serialization");
|
|
2472
2413
|
}
|
|
2473
2414
|
;
|
|
2474
2415
|
return {
|
|
2475
|
-
|
|
2476
|
-
scalar: o.scalar,
|
|
2416
|
+
value: o.value,
|
|
2477
2417
|
};
|
|
2478
2418
|
}
|
|
2479
|
-
export function
|
|
2480
|
-
if (o.
|
|
2481
|
-
throw new Error("Expected
|
|
2419
|
+
export function fromGrumpkinReduce512Response(o) {
|
|
2420
|
+
if (o.value === undefined) {
|
|
2421
|
+
throw new Error("Expected value in GrumpkinReduce512Response serialization");
|
|
2482
2422
|
}
|
|
2483
2423
|
;
|
|
2484
2424
|
return {
|
|
2485
|
-
|
|
2425
|
+
value: o.value,
|
|
2486
2426
|
};
|
|
2487
2427
|
}
|
|
2488
2428
|
export function fromSecp256k1MulResponse(o) {
|
|
@@ -2494,236 +2434,224 @@ export function fromSecp256k1MulResponse(o) {
|
|
|
2494
2434
|
point: fromSecp256k1Point(o.point),
|
|
2495
2435
|
};
|
|
2496
2436
|
}
|
|
2497
|
-
export function
|
|
2498
|
-
if (o.
|
|
2499
|
-
throw new Error("Expected
|
|
2437
|
+
export function fromSecp256k1GetRandomFrResponse(o) {
|
|
2438
|
+
if (o.value === undefined) {
|
|
2439
|
+
throw new Error("Expected value in Secp256k1GetRandomFrResponse serialization");
|
|
2500
2440
|
}
|
|
2501
|
-
|
|
2502
|
-
|
|
2441
|
+
;
|
|
2442
|
+
return {
|
|
2443
|
+
value: o.value,
|
|
2444
|
+
};
|
|
2445
|
+
}
|
|
2446
|
+
export function fromSecp256k1Reduce512Response(o) {
|
|
2447
|
+
if (o.value === undefined) {
|
|
2448
|
+
throw new Error("Expected value in Secp256k1Reduce512Response serialization");
|
|
2503
2449
|
}
|
|
2504
2450
|
;
|
|
2505
2451
|
return {
|
|
2506
|
-
|
|
2507
|
-
y: o.y,
|
|
2452
|
+
value: o.value,
|
|
2508
2453
|
};
|
|
2509
2454
|
}
|
|
2510
|
-
export function
|
|
2511
|
-
if (o.
|
|
2512
|
-
throw new Error("Expected
|
|
2455
|
+
export function fromBn254FrSqrtResponse(o) {
|
|
2456
|
+
if (o.isSquareRoot === undefined) {
|
|
2457
|
+
throw new Error("Expected isSquareRoot in Bn254FrSqrtResponse serialization");
|
|
2513
2458
|
}
|
|
2514
|
-
if (o.
|
|
2515
|
-
throw new Error("Expected
|
|
2459
|
+
if (o.value === undefined) {
|
|
2460
|
+
throw new Error("Expected value in Bn254FrSqrtResponse serialization");
|
|
2516
2461
|
}
|
|
2517
2462
|
;
|
|
2518
2463
|
return {
|
|
2519
|
-
|
|
2520
|
-
|
|
2464
|
+
is_square_root: o.isSquareRoot,
|
|
2465
|
+
value: o.value,
|
|
2521
2466
|
};
|
|
2522
2467
|
}
|
|
2523
|
-
export function
|
|
2524
|
-
if (o.
|
|
2525
|
-
throw new Error("Expected
|
|
2468
|
+
export function fromBn254FqSqrtResponse(o) {
|
|
2469
|
+
if (o.isSquareRoot === undefined) {
|
|
2470
|
+
throw new Error("Expected isSquareRoot in Bn254FqSqrtResponse serialization");
|
|
2471
|
+
}
|
|
2472
|
+
if (o.value === undefined) {
|
|
2473
|
+
throw new Error("Expected value in Bn254FqSqrtResponse serialization");
|
|
2526
2474
|
}
|
|
2527
2475
|
;
|
|
2528
2476
|
return {
|
|
2529
|
-
|
|
2477
|
+
is_square_root: o.isSquareRoot,
|
|
2478
|
+
value: o.value,
|
|
2530
2479
|
};
|
|
2531
2480
|
}
|
|
2532
|
-
export function
|
|
2533
|
-
if (o.
|
|
2534
|
-
throw new Error("Expected
|
|
2481
|
+
export function fromBn254G1MulResponse(o) {
|
|
2482
|
+
if (o.point === undefined) {
|
|
2483
|
+
throw new Error("Expected point in Bn254G1MulResponse serialization");
|
|
2535
2484
|
}
|
|
2536
2485
|
;
|
|
2537
2486
|
return {
|
|
2538
|
-
|
|
2487
|
+
point: fromBn254G1Point(o.point),
|
|
2539
2488
|
};
|
|
2540
2489
|
}
|
|
2541
|
-
export function
|
|
2542
|
-
if (o.
|
|
2543
|
-
throw new Error("Expected
|
|
2490
|
+
export function fromBn254G2MulResponse(o) {
|
|
2491
|
+
if (o.point === undefined) {
|
|
2492
|
+
throw new Error("Expected point in Bn254G2MulResponse serialization");
|
|
2544
2493
|
}
|
|
2545
2494
|
;
|
|
2546
2495
|
return {
|
|
2547
|
-
|
|
2496
|
+
point: fromBn254G2Point(o.point),
|
|
2548
2497
|
};
|
|
2549
2498
|
}
|
|
2550
|
-
export function
|
|
2551
|
-
if (o.
|
|
2552
|
-
throw new Error("Expected
|
|
2499
|
+
export function fromBn254G1IsOnCurveResponse(o) {
|
|
2500
|
+
if (o.isOnCurve === undefined) {
|
|
2501
|
+
throw new Error("Expected isOnCurve in Bn254G1IsOnCurveResponse serialization");
|
|
2553
2502
|
}
|
|
2554
2503
|
;
|
|
2555
2504
|
return {
|
|
2556
|
-
|
|
2505
|
+
is_on_curve: o.isOnCurve,
|
|
2557
2506
|
};
|
|
2558
2507
|
}
|
|
2559
|
-
export function
|
|
2560
|
-
if (o.
|
|
2561
|
-
throw new Error("Expected
|
|
2562
|
-
}
|
|
2563
|
-
if (o.y === undefined) {
|
|
2564
|
-
throw new Error("Expected y in Secp256r1Point deserialization");
|
|
2508
|
+
export function fromBn254G1FromCompressedResponse(o) {
|
|
2509
|
+
if (o.point === undefined) {
|
|
2510
|
+
throw new Error("Expected point in Bn254G1FromCompressedResponse serialization");
|
|
2565
2511
|
}
|
|
2566
2512
|
;
|
|
2567
2513
|
return {
|
|
2568
|
-
|
|
2569
|
-
y: o.y,
|
|
2514
|
+
point: fromBn254G1Point(o.point),
|
|
2570
2515
|
};
|
|
2571
2516
|
}
|
|
2572
|
-
export function
|
|
2573
|
-
if (o.
|
|
2574
|
-
throw new Error("Expected
|
|
2575
|
-
}
|
|
2576
|
-
if (o.y === undefined) {
|
|
2577
|
-
throw new Error("Expected y in Secp256r1Point serialization");
|
|
2517
|
+
export function fromSchnorrComputePublicKeyResponse(o) {
|
|
2518
|
+
if (o.publicKey === undefined) {
|
|
2519
|
+
throw new Error("Expected publicKey in SchnorrComputePublicKeyResponse serialization");
|
|
2578
2520
|
}
|
|
2579
2521
|
;
|
|
2580
2522
|
return {
|
|
2581
|
-
|
|
2582
|
-
y: o.y,
|
|
2523
|
+
public_key: fromGrumpkinPoint(o.publicKey),
|
|
2583
2524
|
};
|
|
2584
2525
|
}
|
|
2585
|
-
export function
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
export function fromShutdown(o) {
|
|
2589
|
-
return {};
|
|
2590
|
-
}
|
|
2591
|
-
export function toShutdownResponse(o) {
|
|
2592
|
-
return {};
|
|
2593
|
-
}
|
|
2594
|
-
export function fromShutdownResponse(o) {
|
|
2595
|
-
return {};
|
|
2596
|
-
}
|
|
2597
|
-
export function toSrsInitGrumpkinSrs(o) {
|
|
2598
|
-
if (o.points_buf === undefined) {
|
|
2599
|
-
throw new Error("Expected points_buf in SrsInitGrumpkinSrs deserialization");
|
|
2526
|
+
export function fromSchnorrConstructSignatureResponse(o) {
|
|
2527
|
+
if (o.s === undefined) {
|
|
2528
|
+
throw new Error("Expected s in SchnorrConstructSignatureResponse serialization");
|
|
2600
2529
|
}
|
|
2601
|
-
if (o.
|
|
2602
|
-
throw new Error("Expected
|
|
2530
|
+
if (o.e === undefined) {
|
|
2531
|
+
throw new Error("Expected e in SchnorrConstructSignatureResponse serialization");
|
|
2603
2532
|
}
|
|
2604
2533
|
;
|
|
2605
2534
|
return {
|
|
2606
|
-
|
|
2607
|
-
|
|
2535
|
+
s: o.s,
|
|
2536
|
+
e: o.e,
|
|
2608
2537
|
};
|
|
2609
2538
|
}
|
|
2610
|
-
export function
|
|
2611
|
-
if (o.
|
|
2612
|
-
throw new Error("Expected
|
|
2613
|
-
}
|
|
2614
|
-
if (o.numPoints === undefined) {
|
|
2615
|
-
throw new Error("Expected numPoints in SrsInitGrumpkinSrs serialization");
|
|
2539
|
+
export function fromSchnorrVerifySignatureResponse(o) {
|
|
2540
|
+
if (o.verified === undefined) {
|
|
2541
|
+
throw new Error("Expected verified in SchnorrVerifySignatureResponse serialization");
|
|
2616
2542
|
}
|
|
2617
2543
|
;
|
|
2618
2544
|
return {
|
|
2619
|
-
|
|
2620
|
-
num_points: o.numPoints,
|
|
2545
|
+
verified: o.verified,
|
|
2621
2546
|
};
|
|
2622
2547
|
}
|
|
2623
|
-
export function
|
|
2624
|
-
if (o.
|
|
2625
|
-
throw new Error("Expected
|
|
2548
|
+
export function fromEcdsaSecp256k1ComputePublicKeyResponse(o) {
|
|
2549
|
+
if (o.publicKey === undefined) {
|
|
2550
|
+
throw new Error("Expected publicKey in EcdsaSecp256k1ComputePublicKeyResponse serialization");
|
|
2626
2551
|
}
|
|
2627
2552
|
;
|
|
2628
2553
|
return {
|
|
2629
|
-
|
|
2554
|
+
public_key: fromSecp256k1Point(o.publicKey),
|
|
2630
2555
|
};
|
|
2631
2556
|
}
|
|
2632
|
-
export function
|
|
2633
|
-
if (o.
|
|
2634
|
-
throw new Error("Expected
|
|
2557
|
+
export function fromEcdsaSecp256r1ComputePublicKeyResponse(o) {
|
|
2558
|
+
if (o.publicKey === undefined) {
|
|
2559
|
+
throw new Error("Expected publicKey in EcdsaSecp256r1ComputePublicKeyResponse serialization");
|
|
2635
2560
|
}
|
|
2636
2561
|
;
|
|
2637
2562
|
return {
|
|
2638
|
-
|
|
2563
|
+
public_key: fromSecp256r1Point(o.publicKey),
|
|
2639
2564
|
};
|
|
2640
2565
|
}
|
|
2641
|
-
export function
|
|
2642
|
-
if (o.
|
|
2643
|
-
throw new Error("Expected
|
|
2566
|
+
export function fromEcdsaSecp256k1ConstructSignatureResponse(o) {
|
|
2567
|
+
if (o.r === undefined) {
|
|
2568
|
+
throw new Error("Expected r in EcdsaSecp256k1ConstructSignatureResponse serialization");
|
|
2644
2569
|
}
|
|
2645
|
-
if (o.
|
|
2646
|
-
throw new Error("Expected
|
|
2570
|
+
if (o.s === undefined) {
|
|
2571
|
+
throw new Error("Expected s in EcdsaSecp256k1ConstructSignatureResponse serialization");
|
|
2647
2572
|
}
|
|
2648
|
-
if (o.
|
|
2649
|
-
throw new Error("Expected
|
|
2573
|
+
if (o.v === undefined) {
|
|
2574
|
+
throw new Error("Expected v in EcdsaSecp256k1ConstructSignatureResponse serialization");
|
|
2650
2575
|
}
|
|
2651
2576
|
;
|
|
2652
2577
|
return {
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2578
|
+
r: o.r,
|
|
2579
|
+
s: o.s,
|
|
2580
|
+
v: o.v,
|
|
2656
2581
|
};
|
|
2657
2582
|
}
|
|
2658
|
-
export function
|
|
2659
|
-
if (o.
|
|
2660
|
-
throw new Error("Expected
|
|
2583
|
+
export function fromEcdsaSecp256r1ConstructSignatureResponse(o) {
|
|
2584
|
+
if (o.r === undefined) {
|
|
2585
|
+
throw new Error("Expected r in EcdsaSecp256r1ConstructSignatureResponse serialization");
|
|
2661
2586
|
}
|
|
2662
|
-
if (o.
|
|
2663
|
-
throw new Error("Expected
|
|
2587
|
+
if (o.s === undefined) {
|
|
2588
|
+
throw new Error("Expected s in EcdsaSecp256r1ConstructSignatureResponse serialization");
|
|
2664
2589
|
}
|
|
2665
|
-
if (o.
|
|
2666
|
-
throw new Error("Expected
|
|
2590
|
+
if (o.v === undefined) {
|
|
2591
|
+
throw new Error("Expected v in EcdsaSecp256r1ConstructSignatureResponse serialization");
|
|
2667
2592
|
}
|
|
2668
2593
|
;
|
|
2669
2594
|
return {
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2595
|
+
r: o.r,
|
|
2596
|
+
s: o.s,
|
|
2597
|
+
v: o.v,
|
|
2673
2598
|
};
|
|
2674
2599
|
}
|
|
2675
|
-
export function
|
|
2676
|
-
if (o.
|
|
2677
|
-
throw new Error("Expected
|
|
2600
|
+
export function fromEcdsaSecp256k1RecoverPublicKeyResponse(o) {
|
|
2601
|
+
if (o.publicKey === undefined) {
|
|
2602
|
+
throw new Error("Expected publicKey in EcdsaSecp256k1RecoverPublicKeyResponse serialization");
|
|
2678
2603
|
}
|
|
2679
2604
|
;
|
|
2680
2605
|
return {
|
|
2681
|
-
|
|
2606
|
+
public_key: fromSecp256k1Point(o.publicKey),
|
|
2682
2607
|
};
|
|
2683
2608
|
}
|
|
2684
|
-
export function
|
|
2685
|
-
if (o.
|
|
2686
|
-
throw new Error("Expected
|
|
2609
|
+
export function fromEcdsaSecp256r1RecoverPublicKeyResponse(o) {
|
|
2610
|
+
if (o.publicKey === undefined) {
|
|
2611
|
+
throw new Error("Expected publicKey in EcdsaSecp256r1RecoverPublicKeyResponse serialization");
|
|
2687
2612
|
}
|
|
2688
2613
|
;
|
|
2689
2614
|
return {
|
|
2690
|
-
|
|
2615
|
+
public_key: fromSecp256r1Point(o.publicKey),
|
|
2691
2616
|
};
|
|
2692
2617
|
}
|
|
2693
|
-
export function
|
|
2694
|
-
if (o.
|
|
2695
|
-
throw new Error("Expected
|
|
2618
|
+
export function fromEcdsaSecp256k1VerifySignatureResponse(o) {
|
|
2619
|
+
if (o.verified === undefined) {
|
|
2620
|
+
throw new Error("Expected verified in EcdsaSecp256k1VerifySignatureResponse serialization");
|
|
2696
2621
|
}
|
|
2697
2622
|
;
|
|
2698
2623
|
return {
|
|
2699
|
-
|
|
2624
|
+
verified: o.verified,
|
|
2700
2625
|
};
|
|
2701
2626
|
}
|
|
2702
|
-
export function
|
|
2703
|
-
if (o.
|
|
2704
|
-
throw new Error("Expected
|
|
2627
|
+
export function fromEcdsaSecp256r1VerifySignatureResponse(o) {
|
|
2628
|
+
if (o.verified === undefined) {
|
|
2629
|
+
throw new Error("Expected verified in EcdsaSecp256r1VerifySignatureResponse serialization");
|
|
2705
2630
|
}
|
|
2706
2631
|
;
|
|
2707
2632
|
return {
|
|
2708
|
-
|
|
2633
|
+
verified: o.verified,
|
|
2709
2634
|
};
|
|
2710
2635
|
}
|
|
2711
|
-
export function
|
|
2712
|
-
if (o.
|
|
2713
|
-
throw new Error("Expected
|
|
2636
|
+
export function fromSrsInitSrsResponse(o) {
|
|
2637
|
+
if (o.dummy === undefined) {
|
|
2638
|
+
throw new Error("Expected dummy in SrsInitSrsResponse serialization");
|
|
2714
2639
|
}
|
|
2715
2640
|
;
|
|
2716
2641
|
return {
|
|
2717
|
-
|
|
2642
|
+
dummy: o.dummy,
|
|
2718
2643
|
};
|
|
2719
2644
|
}
|
|
2720
|
-
export function
|
|
2721
|
-
if (o.
|
|
2722
|
-
throw new Error("Expected
|
|
2645
|
+
export function fromSrsInitGrumpkinSrsResponse(o) {
|
|
2646
|
+
if (o.dummy === undefined) {
|
|
2647
|
+
throw new Error("Expected dummy in SrsInitGrumpkinSrsResponse serialization");
|
|
2723
2648
|
}
|
|
2724
2649
|
;
|
|
2725
2650
|
return {
|
|
2726
|
-
|
|
2651
|
+
dummy: o.dummy,
|
|
2727
2652
|
};
|
|
2728
2653
|
}
|
|
2729
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NiaW5kL2dlbmVyYXRlZC9hcGlfdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBK3FFbkMsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBb0IsRUFBYztJQUM3RCxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3pHLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUFDLENBQUM7SUFDekYsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUMzRixJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQUEsQ0FBQztJQUNsRyxPQUFPO1FBQ0wsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO1FBQ3hCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNSLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRztRQUNWLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtLQUNqQixDQUFDO0FBQUEsQ0FDSDtBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBYSxFQUFxQjtJQUMvRCxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3ZHLElBQUksQ0FB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
|
|
2654
|
+
export function fromShutdownResponse(o) {
|
|
2655
|
+
return {};
|
|
2656
|
+
}
|
|
2657
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NiaW5kL2dlbmVyYXRlZC9hcGlfdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBbWtDbkMsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxDQUFrQyxFQUE0QjtJQUN2RyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQzdHLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztJQUFDLENBQUM7SUFDL0csSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUFBLENBQUM7SUFDNUcsT0FBTztRQUNMLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztRQUNkLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtRQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7S0FDYixDQUFDO0FBQUEsQ0FDSDtBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBc0IsRUFBZ0I7SUFDbkUsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUMvRixJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3ZHLElBQUksQ0FBQyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFB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
|