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