@opaquecash/psr-chain 0.1.0 → 0.2.1

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/dist/index.d.ts CHANGED
@@ -11,4 +11,9 @@ export type { VerifyReputationArgs } from "./submit.js";
11
11
  export { normalizeRootToBytes32, proofDataToSolidityTuple, simulateVerifyReputation, submitVerifyReputation, verifyReputationView, mapVerifierRevert, } from "./submit.js";
12
12
  export type { ReputationAddressBook } from "./addresses.js";
13
13
  export { reputationVerifierAddress } from "./addresses.js";
14
+ export type { PsrV2Config } from "./registry-addresses.js";
15
+ export { getPsrV2Config, requirePsrV2Config, getPsrV2ChainIds, } from "./registry-addresses.js";
16
+ export type { EvmPsrWriteClients } from "./registry.js";
17
+ export { adaptiveCollect, fetchAllSchemas, fetchSchema, fetchAllAttestations, fetchAttestation, fetchSchemasForWallet, fetchAttestationsIssuedBy, isAuthorizedIssuer, getCurrentBlock, registerSchema, addDelegate, removeDelegate, updateResolver, deprecateSchema, attest, revoke, announceV2Attestation, } from "./registry.js";
18
+ export { SCHEMA_REGISTRY_ABI, ATTESTATION_ABI, ANNOUNCER_ABI, SCHEMA_REGISTERED_EVENT, ATTESTED_EVENT, } from "./registry-abi.js";
14
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,MAAM,EACN,MAAM,EACN,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -9,4 +9,7 @@ export { opaqueReputationVerifierAbi } from "./abi.js";
9
9
  export { fetchLatestValidRoot, isRootValid, fetchRootHistory, } from "./roots.js";
10
10
  export { normalizeRootToBytes32, proofDataToSolidityTuple, simulateVerifyReputation, submitVerifyReputation, verifyReputationView, mapVerifierRevert, } from "./submit.js";
11
11
  export { reputationVerifierAddress } from "./addresses.js";
12
+ export { getPsrV2Config, requirePsrV2Config, getPsrV2ChainIds, } from "./registry-addresses.js";
13
+ export { adaptiveCollect, fetchAllSchemas, fetchSchema, fetchAllAttestations, fetchAttestation, fetchSchemasForWallet, fetchAttestationsIssuedBy, isAuthorizedIssuer, getCurrentBlock, registerSchema, addDelegate, removeDelegate, updateResolver, deprecateSchema, attest, revoke, announceV2Attestation, } from "./registry.js";
14
+ export { SCHEMA_REGISTRY_ABI, ATTESTATION_ABI, ANNOUNCER_ABI, SCHEMA_REGISTERED_EVENT, ATTESTED_EVENT, } from "./registry-abi.js";
12
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAI3D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,MAAM,EACN,MAAM,EACN,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * ABI fragments for the V2 PSR schema registry, attestation registry, and the stealth announcer.
3
+ * Only the fragments the SDK calls are included. Ported from
4
+ * `ethereum/frontend/src/lib/psr.ts` (behaviour must match the deployed V2 contracts).
5
+ */
6
+ /** `OpaqueSchemaRegistry` — register / manage schemas and read schema state. */
7
+ export declare const SCHEMA_REGISTRY_ABI: readonly [{
8
+ readonly type: "function";
9
+ readonly name: "computeSchemaId";
10
+ readonly stateMutability: "pure";
11
+ readonly inputs: readonly [{
12
+ readonly name: "authority";
13
+ readonly type: "address";
14
+ }, {
15
+ readonly name: "name";
16
+ readonly type: "string";
17
+ }];
18
+ readonly outputs: readonly [{
19
+ readonly type: "bytes32";
20
+ }];
21
+ }, {
22
+ readonly type: "function";
23
+ readonly name: "registerSchema";
24
+ readonly stateMutability: "nonpayable";
25
+ readonly inputs: readonly [{
26
+ readonly name: "name";
27
+ readonly type: "string";
28
+ }, {
29
+ readonly name: "fieldDefinitions";
30
+ readonly type: "string";
31
+ }, {
32
+ readonly name: "revocable";
33
+ readonly type: "bool";
34
+ }, {
35
+ readonly name: "resolver";
36
+ readonly type: "address";
37
+ }, {
38
+ readonly name: "schemaExpiryBlock";
39
+ readonly type: "uint256";
40
+ }];
41
+ readonly outputs: readonly [{
42
+ readonly type: "bytes32";
43
+ }];
44
+ }, {
45
+ readonly type: "function";
46
+ readonly name: "addDelegate";
47
+ readonly stateMutability: "nonpayable";
48
+ readonly inputs: readonly [{
49
+ readonly name: "schemaId";
50
+ readonly type: "bytes32";
51
+ }, {
52
+ readonly name: "delegate";
53
+ readonly type: "address";
54
+ }];
55
+ readonly outputs: readonly [];
56
+ }, {
57
+ readonly type: "function";
58
+ readonly name: "removeDelegate";
59
+ readonly stateMutability: "nonpayable";
60
+ readonly inputs: readonly [{
61
+ readonly name: "schemaId";
62
+ readonly type: "bytes32";
63
+ }, {
64
+ readonly name: "delegate";
65
+ readonly type: "address";
66
+ }];
67
+ readonly outputs: readonly [];
68
+ }, {
69
+ readonly type: "function";
70
+ readonly name: "updateResolver";
71
+ readonly stateMutability: "nonpayable";
72
+ readonly inputs: readonly [{
73
+ readonly name: "schemaId";
74
+ readonly type: "bytes32";
75
+ }, {
76
+ readonly name: "newResolver";
77
+ readonly type: "address";
78
+ }];
79
+ readonly outputs: readonly [];
80
+ }, {
81
+ readonly type: "function";
82
+ readonly name: "deprecateSchema";
83
+ readonly stateMutability: "nonpayable";
84
+ readonly inputs: readonly [{
85
+ readonly name: "schemaId";
86
+ readonly type: "bytes32";
87
+ }];
88
+ readonly outputs: readonly [];
89
+ }, {
90
+ readonly type: "function";
91
+ readonly name: "getSchema";
92
+ readonly stateMutability: "view";
93
+ readonly inputs: readonly [{
94
+ readonly name: "schemaId";
95
+ readonly type: "bytes32";
96
+ }];
97
+ readonly outputs: readonly [{
98
+ readonly name: "authority";
99
+ readonly type: "address";
100
+ }, {
101
+ readonly name: "resolver";
102
+ readonly type: "address";
103
+ }, {
104
+ readonly name: "revocable";
105
+ readonly type: "bool";
106
+ }, {
107
+ readonly name: "deprecated";
108
+ readonly type: "bool";
109
+ }, {
110
+ readonly name: "version";
111
+ readonly type: "uint8";
112
+ }, {
113
+ readonly name: "name";
114
+ readonly type: "string";
115
+ }, {
116
+ readonly name: "fieldDefinitions";
117
+ readonly type: "string";
118
+ }, {
119
+ readonly name: "createdAt";
120
+ readonly type: "uint256";
121
+ }, {
122
+ readonly name: "schemaExpiryBlock";
123
+ readonly type: "uint256";
124
+ }];
125
+ }, {
126
+ readonly type: "function";
127
+ readonly name: "getDelegates";
128
+ readonly stateMutability: "view";
129
+ readonly inputs: readonly [{
130
+ readonly name: "schemaId";
131
+ readonly type: "bytes32";
132
+ }];
133
+ readonly outputs: readonly [{
134
+ readonly type: "address[]";
135
+ }];
136
+ }, {
137
+ readonly type: "function";
138
+ readonly name: "isActive";
139
+ readonly stateMutability: "view";
140
+ readonly inputs: readonly [{
141
+ readonly name: "schemaId";
142
+ readonly type: "bytes32";
143
+ }];
144
+ readonly outputs: readonly [{
145
+ readonly type: "bool";
146
+ }];
147
+ }, {
148
+ readonly type: "function";
149
+ readonly name: "isAuthorizedIssuer";
150
+ readonly stateMutability: "view";
151
+ readonly inputs: readonly [{
152
+ readonly name: "schemaId";
153
+ readonly type: "bytes32";
154
+ }, {
155
+ readonly name: "candidate";
156
+ readonly type: "address";
157
+ }];
158
+ readonly outputs: readonly [{
159
+ readonly type: "bool";
160
+ }];
161
+ }];
162
+ /** `OpaqueAttestationRegistry` — attest / revoke and read attestation state. */
163
+ export declare const ATTESTATION_ABI: readonly [{
164
+ readonly type: "function";
165
+ readonly name: "attest";
166
+ readonly stateMutability: "nonpayable";
167
+ readonly inputs: readonly [{
168
+ readonly name: "schemaId";
169
+ readonly type: "bytes32";
170
+ }, {
171
+ readonly name: "stealthAddressHash";
172
+ readonly type: "bytes32";
173
+ }, {
174
+ readonly name: "data";
175
+ readonly type: "bytes";
176
+ }, {
177
+ readonly name: "expirationBlock";
178
+ readonly type: "uint256";
179
+ }, {
180
+ readonly name: "refUid";
181
+ readonly type: "bytes32";
182
+ }];
183
+ readonly outputs: readonly [{
184
+ readonly type: "bytes32";
185
+ }];
186
+ }, {
187
+ readonly type: "function";
188
+ readonly name: "revoke";
189
+ readonly stateMutability: "nonpayable";
190
+ readonly inputs: readonly [{
191
+ readonly name: "uid";
192
+ readonly type: "bytes32";
193
+ }];
194
+ readonly outputs: readonly [];
195
+ }, {
196
+ readonly type: "function";
197
+ readonly name: "getAttestation";
198
+ readonly stateMutability: "view";
199
+ readonly inputs: readonly [{
200
+ readonly name: "uid";
201
+ readonly type: "bytes32";
202
+ }];
203
+ readonly outputs: readonly [{
204
+ readonly name: "schemaId";
205
+ readonly type: "bytes32";
206
+ }, {
207
+ readonly name: "issuer";
208
+ readonly type: "address";
209
+ }, {
210
+ readonly name: "stealthAddressHash";
211
+ readonly type: "bytes32";
212
+ }, {
213
+ readonly name: "createdAt";
214
+ readonly type: "uint256";
215
+ }, {
216
+ readonly name: "expirationBlock";
217
+ readonly type: "uint256";
218
+ }, {
219
+ readonly name: "revocationBlock";
220
+ readonly type: "uint256";
221
+ }, {
222
+ readonly name: "refUid";
223
+ readonly type: "bytes32";
224
+ }, {
225
+ readonly name: "data";
226
+ readonly type: "bytes";
227
+ }];
228
+ }, {
229
+ readonly type: "function";
230
+ readonly name: "isValid";
231
+ readonly stateMutability: "view";
232
+ readonly inputs: readonly [{
233
+ readonly name: "uid";
234
+ readonly type: "bytes32";
235
+ }];
236
+ readonly outputs: readonly [{
237
+ readonly type: "bool";
238
+ }];
239
+ }];
240
+ /** `StealthAddressAnnouncer.announce` — used to publish a V2 attestation announcement. */
241
+ export declare const ANNOUNCER_ABI: readonly [{
242
+ readonly type: "function";
243
+ readonly name: "announce";
244
+ readonly stateMutability: "nonpayable";
245
+ readonly inputs: readonly [{
246
+ readonly name: "schemeId";
247
+ readonly type: "uint256";
248
+ }, {
249
+ readonly name: "stealthAddress";
250
+ readonly type: "address";
251
+ }, {
252
+ readonly name: "ephemeralPubKey";
253
+ readonly type: "bytes";
254
+ }, {
255
+ readonly name: "metadata";
256
+ readonly type: "bytes";
257
+ }];
258
+ readonly outputs: readonly [];
259
+ }];
260
+ export declare const SCHEMA_REGISTERED_EVENT: {
261
+ readonly name: "SchemaRegistered";
262
+ readonly type: "event";
263
+ readonly inputs: readonly [{
264
+ readonly type: "bytes32";
265
+ readonly name: "schemaId";
266
+ readonly indexed: true;
267
+ }, {
268
+ readonly type: "address";
269
+ readonly name: "authority";
270
+ readonly indexed: true;
271
+ }, {
272
+ readonly type: "string";
273
+ readonly name: "name";
274
+ }, {
275
+ readonly type: "bool";
276
+ readonly name: "revocable";
277
+ }, {
278
+ readonly type: "address";
279
+ readonly name: "resolver";
280
+ }];
281
+ };
282
+ export declare const ATTESTED_EVENT: {
283
+ readonly name: "Attested";
284
+ readonly type: "event";
285
+ readonly inputs: readonly [{
286
+ readonly type: "bytes32";
287
+ readonly name: "uid";
288
+ readonly indexed: true;
289
+ }, {
290
+ readonly type: "bytes32";
291
+ readonly name: "schemaId";
292
+ readonly indexed: true;
293
+ }, {
294
+ readonly type: "address";
295
+ readonly name: "issuer";
296
+ readonly indexed: true;
297
+ }, {
298
+ readonly type: "bytes32";
299
+ readonly name: "stealthAddressHash";
300
+ }, {
301
+ readonly type: "uint256";
302
+ readonly name: "expirationBlock";
303
+ }, {
304
+ readonly type: "bytes32";
305
+ readonly name: "refUid";
306
+ }];
307
+ };
308
+ //# sourceMappingURL=registry-abi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-abi.d.ts","sourceRoot":"","sources":["../src/registry-abi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,gFAAgF;AAChF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWR,CAAC;AAEzB,gFAAgF;AAChF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKJ,CAAC;AAEzB,0FAA0F;AAC1F,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;EAaF,CAAC;AAEzB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;CAEnC,CAAC;AACF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CAE1B,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * ABI fragments for the V2 PSR schema registry, attestation registry, and the stealth announcer.
3
+ * Only the fragments the SDK calls are included. Ported from
4
+ * `ethereum/frontend/src/lib/psr.ts` (behaviour must match the deployed V2 contracts).
5
+ */
6
+ import { parseAbiItem } from "viem";
7
+ /** `OpaqueSchemaRegistry` — register / manage schemas and read schema state. */
8
+ export const SCHEMA_REGISTRY_ABI = [
9
+ { type: "function", name: "computeSchemaId", stateMutability: "pure", inputs: [{ name: "authority", type: "address" }, { name: "name", type: "string" }], outputs: [{ type: "bytes32" }] },
10
+ { type: "function", name: "registerSchema", stateMutability: "nonpayable", inputs: [{ name: "name", type: "string" }, { name: "fieldDefinitions", type: "string" }, { name: "revocable", type: "bool" }, { name: "resolver", type: "address" }, { name: "schemaExpiryBlock", type: "uint256" }], outputs: [{ type: "bytes32" }] },
11
+ { type: "function", name: "addDelegate", stateMutability: "nonpayable", inputs: [{ name: "schemaId", type: "bytes32" }, { name: "delegate", type: "address" }], outputs: [] },
12
+ { type: "function", name: "removeDelegate", stateMutability: "nonpayable", inputs: [{ name: "schemaId", type: "bytes32" }, { name: "delegate", type: "address" }], outputs: [] },
13
+ { type: "function", name: "updateResolver", stateMutability: "nonpayable", inputs: [{ name: "schemaId", type: "bytes32" }, { name: "newResolver", type: "address" }], outputs: [] },
14
+ { type: "function", name: "deprecateSchema", stateMutability: "nonpayable", inputs: [{ name: "schemaId", type: "bytes32" }], outputs: [] },
15
+ { type: "function", name: "getSchema", stateMutability: "view", inputs: [{ name: "schemaId", type: "bytes32" }], outputs: [{ name: "authority", type: "address" }, { name: "resolver", type: "address" }, { name: "revocable", type: "bool" }, { name: "deprecated", type: "bool" }, { name: "version", type: "uint8" }, { name: "name", type: "string" }, { name: "fieldDefinitions", type: "string" }, { name: "createdAt", type: "uint256" }, { name: "schemaExpiryBlock", type: "uint256" }] },
16
+ { type: "function", name: "getDelegates", stateMutability: "view", inputs: [{ name: "schemaId", type: "bytes32" }], outputs: [{ type: "address[]" }] },
17
+ { type: "function", name: "isActive", stateMutability: "view", inputs: [{ name: "schemaId", type: "bytes32" }], outputs: [{ type: "bool" }] },
18
+ { type: "function", name: "isAuthorizedIssuer", stateMutability: "view", inputs: [{ name: "schemaId", type: "bytes32" }, { name: "candidate", type: "address" }], outputs: [{ type: "bool" }] },
19
+ ];
20
+ /** `OpaqueAttestationRegistry` — attest / revoke and read attestation state. */
21
+ export const ATTESTATION_ABI = [
22
+ { type: "function", name: "attest", stateMutability: "nonpayable", inputs: [{ name: "schemaId", type: "bytes32" }, { name: "stealthAddressHash", type: "bytes32" }, { name: "data", type: "bytes" }, { name: "expirationBlock", type: "uint256" }, { name: "refUid", type: "bytes32" }], outputs: [{ type: "bytes32" }] },
23
+ { type: "function", name: "revoke", stateMutability: "nonpayable", inputs: [{ name: "uid", type: "bytes32" }], outputs: [] },
24
+ { type: "function", name: "getAttestation", stateMutability: "view", inputs: [{ name: "uid", type: "bytes32" }], outputs: [{ name: "schemaId", type: "bytes32" }, { name: "issuer", type: "address" }, { name: "stealthAddressHash", type: "bytes32" }, { name: "createdAt", type: "uint256" }, { name: "expirationBlock", type: "uint256" }, { name: "revocationBlock", type: "uint256" }, { name: "refUid", type: "bytes32" }, { name: "data", type: "bytes" }] },
25
+ { type: "function", name: "isValid", stateMutability: "view", inputs: [{ name: "uid", type: "bytes32" }], outputs: [{ type: "bool" }] },
26
+ ];
27
+ /** `StealthAddressAnnouncer.announce` — used to publish a V2 attestation announcement. */
28
+ export const ANNOUNCER_ABI = [
29
+ {
30
+ type: "function",
31
+ name: "announce",
32
+ stateMutability: "nonpayable",
33
+ inputs: [
34
+ { name: "schemeId", type: "uint256" },
35
+ { name: "stealthAddress", type: "address" },
36
+ { name: "ephemeralPubKey", type: "bytes" },
37
+ { name: "metadata", type: "bytes" },
38
+ ],
39
+ outputs: [],
40
+ },
41
+ ];
42
+ export const SCHEMA_REGISTERED_EVENT = parseAbiItem("event SchemaRegistered(bytes32 indexed schemaId, address indexed authority, string name, bool revocable, address resolver)");
43
+ export const ATTESTED_EVENT = parseAbiItem("event Attested(bytes32 indexed uid, bytes32 indexed schemaId, address indexed issuer, bytes32 stealthAddressHash, uint256 expirationBlock, bytes32 refUid)");
44
+ //# sourceMappingURL=registry-abi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-abi.js","sourceRoot":"","sources":["../src/registry-abi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Bundled EVM PSR V2 deployments (schema registry, attestation registry, Groth16 verifier,
3
+ * reputation verifier), sourced from the generated `@opaquecash/deployments` registry.
4
+ */
5
+ import type { Address } from "viem";
6
+ /** Resolved V2 PSR contract bundle for one chain. */
7
+ export interface PsrV2Config {
8
+ schemaRegistry: Address;
9
+ attestationRegistry: Address;
10
+ groth16VerifierV2: Address;
11
+ reputationVerifierV2: Address;
12
+ /** Block the V2 PSR stack was deployed at; never scan logs before it. */
13
+ fromBlock: bigint;
14
+ }
15
+ /** Chain ids with a bundled V2 PSR deployment. */
16
+ export declare function getPsrV2ChainIds(): number[];
17
+ /** Resolve the bundled {@link PsrV2Config} for a chain, or `null` if none. */
18
+ export declare function getPsrV2Config(chainId: number | null | undefined): PsrV2Config | null;
19
+ /** Resolve the bundled {@link PsrV2Config} for a chain, or throw. */
20
+ export declare function requirePsrV2Config(chainId: number): PsrV2Config;
21
+ //# sourceMappingURL=registry-addresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-addresses.d.ts","sourceRoot":"","sources":["../src/registry-addresses.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CACnB;AAeD,kDAAkD;AAClD,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAGrF;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAQ/D"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Bundled EVM PSR V2 deployments (schema registry, attestation registry, Groth16 verifier,
3
+ * reputation verifier), sourced from the generated `@opaquecash/deployments` registry.
4
+ */
5
+ import { EVM_DEPLOYMENTS } from "@opaquecash/deployments";
6
+ const PSR_V2_CONFIGS = Object.fromEntries(Object.values(EVM_DEPLOYMENTS).map((d) => [
7
+ d.chainId,
8
+ {
9
+ schemaRegistry: d.contracts.opaqueSchemaRegistry,
10
+ attestationRegistry: d.contracts.opaqueAttestationRegistry,
11
+ groth16VerifierV2: d.contracts.groth16VerifierV2,
12
+ reputationVerifierV2: d.contracts.opaqueReputationVerifierV2,
13
+ fromBlock: d.psrFromBlock,
14
+ },
15
+ ]));
16
+ /** Chain ids with a bundled V2 PSR deployment. */
17
+ export function getPsrV2ChainIds() {
18
+ return Object.keys(PSR_V2_CONFIGS).map(Number);
19
+ }
20
+ /** Resolve the bundled {@link PsrV2Config} for a chain, or `null` if none. */
21
+ export function getPsrV2Config(chainId) {
22
+ if (chainId == null)
23
+ return null;
24
+ return PSR_V2_CONFIGS[chainId] ?? null;
25
+ }
26
+ /** Resolve the bundled {@link PsrV2Config} for a chain, or throw. */
27
+ export function requirePsrV2Config(chainId) {
28
+ const cfg = getPsrV2Config(chainId);
29
+ if (!cfg) {
30
+ throw new Error(`Opaque PSR: no V2 schema/attestation registry bundled for chainId ${chainId}. Supported: ${getPsrV2ChainIds().join(", ")}`);
31
+ }
32
+ return cfg;
33
+ }
34
+ //# sourceMappingURL=registry-addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-addresses.js","sourceRoot":"","sources":["../src/registry-addresses.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAY1D,MAAM,cAAc,GAAgC,MAAM,CAAC,WAAW,CACpE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACxC,CAAC,CAAC,OAAO;IACT;QACE,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,oBAA+B;QAC3D,mBAAmB,EAAE,CAAC,CAAC,SAAS,CAAC,yBAAoC;QACrE,iBAAiB,EAAE,CAAC,CAAC,SAAS,CAAC,iBAA4B;QAC3D,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,0BAAqC;QACvE,SAAS,EAAE,CAAC,CAAC,YAAY;KAC1B;CACF,CAAC,CACH,CAAC;AAEF,kDAAkD;AAClD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,OAAkC;IAC/D,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;AACzC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,qEAAqE,OAAO,gBAAgB,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5H,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * EVM PSR V2 registry client — schema + attestation CRUD over viem.
3
+ *
4
+ * Reads enumerate the `OpaqueSchemaRegistry` / `OpaqueAttestationRegistry` events (chunked,
5
+ * RPC-adaptive `getLogs`) and read per-id state; writes register/attest/revoke/delegate/deprecate
6
+ * and publish the post-attest V2 announcement. Returns the chain-neutral `SchemaV2` / `AttestationV2`
7
+ * shapes from `@opaquecash/psr-core`, so callers handle Ethereum and Solana identically.
8
+ *
9
+ * Ported from `ethereum/frontend/src/lib/psr.ts`.
10
+ */
11
+ import { type Address, type Hex, type PublicClient, type WalletClient } from "viem";
12
+ import { parseFieldDefs, type AttestationField, type AttestationV2, type SchemaV2 } from "@opaquecash/psr-core";
13
+ import type { PsrV2Config } from "./registry-addresses.js";
14
+ /** Clients needed for a PSR write (the wallet must carry an account + chain). */
15
+ export interface EvmPsrWriteClients {
16
+ publicClient: PublicClient;
17
+ walletClient: WalletClient;
18
+ /** The issuing/authoring account (also the schema authority for `computeSchemaId`). */
19
+ account: Address;
20
+ }
21
+ /**
22
+ * Collect logs over `[from, to]`, adapting the window to whatever the RPC allows: one call on
23
+ * permissive RPCs; on tiers that cap `eth_getLogs` it shrinks to the suggested range (parsed from
24
+ * the error) or halves it, so the scan completes instead of failing with a 400.
25
+ */
26
+ export declare function adaptiveCollect<T>(from: bigint, to: bigint, fetch: (f: bigint, t: bigint) => Promise<T[]>): Promise<T[]>;
27
+ /** Enumerate every registered V2 schema on this chain. */
28
+ export declare function fetchAllSchemas(publicClient: PublicClient, cfg: PsrV2Config): Promise<SchemaV2[]>;
29
+ /** Read one schema's full state by id, or `null` if it does not exist. */
30
+ export declare function fetchSchema(publicClient: PublicClient, cfg: PsrV2Config, schemaId: Hex): Promise<SchemaV2 | null>;
31
+ /** Enumerate every V2 attestation on this chain. */
32
+ export declare function fetchAllAttestations(publicClient: PublicClient, cfg: PsrV2Config): Promise<AttestationV2[]>;
33
+ /** Read one attestation's full state by uid, or `null` if it does not exist. */
34
+ export declare function fetchAttestation(publicClient: PublicClient, cfg: PsrV2Config, uid: Hex): Promise<AttestationV2 | null>;
35
+ /** Schemas where `wallet` is the authority OR an authorized delegate (case-insensitive). */
36
+ export declare function fetchSchemasForWallet(publicClient: PublicClient, cfg: PsrV2Config, wallet: Address): Promise<SchemaV2[]>;
37
+ /** Attestations issued by `wallet` (case-insensitive `issuer` match). */
38
+ export declare function fetchAttestationsIssuedBy(publicClient: PublicClient, cfg: PsrV2Config, wallet: Address): Promise<AttestationV2[]>;
39
+ /** On-chain check: is `candidate` the authority or a delegate of `schemaId`? */
40
+ export declare function isAuthorizedIssuer(publicClient: PublicClient, cfg: PsrV2Config, schemaId: Hex, candidate: Address): Promise<boolean>;
41
+ /** Current chain block number as a `number`. */
42
+ export declare function getCurrentBlock(publicClient: PublicClient): Promise<number>;
43
+ /** Register a new schema. Returns the tx hash and the derived `schemaId`. */
44
+ export declare function registerSchema(clients: EvmPsrWriteClients, cfg: PsrV2Config, args: {
45
+ name: string;
46
+ fieldDefinitions: string;
47
+ revocable: boolean;
48
+ resolver?: Address;
49
+ schemaExpiryBlock?: bigint;
50
+ }): Promise<{
51
+ txHash: Hex;
52
+ schemaId: Hex;
53
+ }>;
54
+ /** Authority-only: add a delegate to a schema. */
55
+ export declare function addDelegate(clients: EvmPsrWriteClients, cfg: PsrV2Config, schemaId: Hex, delegate: Address): Promise<Hex>;
56
+ /** Authority-only: remove a delegate from a schema. */
57
+ export declare function removeDelegate(clients: EvmPsrWriteClients, cfg: PsrV2Config, schemaId: Hex, delegate: Address): Promise<Hex>;
58
+ /** Authority-only: set or clear (`ZERO_ADDRESS`) a schema resolver. */
59
+ export declare function updateResolver(clients: EvmPsrWriteClients, cfg: PsrV2Config, schemaId: Hex, resolver: Address): Promise<Hex>;
60
+ /** Authority-only, irreversible: deprecate a schema (blocks new attestations). */
61
+ export declare function deprecateSchema(clients: EvmPsrWriteClients, cfg: PsrV2Config, schemaId: Hex): Promise<Hex>;
62
+ /**
63
+ * Issue an attestation. Encodes `fieldValues` per `fieldDefs` internally, waits for the receipt,
64
+ * and derives the `uid` from the mined block (matching the contract's `computeUid`).
65
+ */
66
+ export declare function attest(clients: EvmPsrWriteClients, cfg: PsrV2Config, args: {
67
+ schemaId: Hex;
68
+ stealthAddressHash: Hex;
69
+ fieldValues: Record<string, string>;
70
+ fieldDefs: readonly AttestationField[];
71
+ expirationBlock?: bigint;
72
+ refUid?: Hex;
73
+ }): Promise<{
74
+ txHash: Hex;
75
+ uid: Hex;
76
+ dataHex: Hex;
77
+ }>;
78
+ /** Authority-only: revoke an attestation by uid (schema must be revocable). */
79
+ export declare function revoke(clients: EvmPsrWriteClients, cfg: PsrV2Config, uid: Hex): Promise<Hex>;
80
+ /**
81
+ * Publish a V2 attestation announcement via the `StealthAddressAnnouncer` so the recipient's
82
+ * scanner can discover the trait. Build `metadata` with `encodeV2AttestationMetadata`.
83
+ */
84
+ export declare function announceV2Attestation(clients: EvmPsrWriteClients, announcer: Address, args: {
85
+ stealthAddress: Address;
86
+ ephemeralPubKey: Hex;
87
+ metadata: Hex;
88
+ }): Promise<Hex>;
89
+ /** Re-export so callers can reuse the field parser without reaching into psr-core. */
90
+ export { parseFieldDefs };
91
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,265 @@
1
+ /**
2
+ * EVM PSR V2 registry client — schema + attestation CRUD over viem.
3
+ *
4
+ * Reads enumerate the `OpaqueSchemaRegistry` / `OpaqueAttestationRegistry` events (chunked,
5
+ * RPC-adaptive `getLogs`) and read per-id state; writes register/attest/revoke/delegate/deprecate
6
+ * and publish the post-attest V2 announcement. Returns the chain-neutral `SchemaV2` / `AttestationV2`
7
+ * shapes from `@opaquecash/psr-core`, so callers handle Ethereum and Solana identically.
8
+ *
9
+ * Ported from `ethereum/frontend/src/lib/psr.ts`.
10
+ */
11
+ import { getAddress, } from "viem";
12
+ import { computeSchemaId, computeUid, encodeAttestationData, parseFieldDefs, ZERO_ADDRESS, ZERO_BYTES32, } from "@opaquecash/psr-core";
13
+ import { ANNOUNCER_ABI, ATTESTATION_ABI, ATTESTED_EVENT, SCHEMA_REGISTERED_EVENT, SCHEMA_REGISTRY_ABI, } from "./registry-abi.js";
14
+ /** Initial `getLogs` window; shrinks automatically when an RPC rejects the range. */
15
+ const LOG_CHUNK = 45000n;
16
+ // ---------------------------------------------------------------------------
17
+ // Adaptive log collection
18
+ // ---------------------------------------------------------------------------
19
+ /** Detects an RPC "block range too large" error and any suggested toBlock. */
20
+ function rangeError(e) {
21
+ const parts = [];
22
+ if (e && typeof e === "object") {
23
+ for (const k of ["message", "details", "shortMessage"]) {
24
+ const v = e[k];
25
+ if (typeof v === "string")
26
+ parts.push(v);
27
+ }
28
+ const cause = e.cause;
29
+ if (cause && typeof cause === "object") {
30
+ const cm = cause.message;
31
+ if (typeof cm === "string")
32
+ parts.push(cm);
33
+ }
34
+ }
35
+ const msg = parts.join(" ") || String(e);
36
+ if (/block range|10 block|range is too large|too large|too many results|limited|-32600|-32005/i.test(msg)) {
37
+ const m = /\[\s*(0x[0-9a-fA-F]+)\s*,\s*(0x[0-9a-fA-F]+)\s*\]/.exec(msg);
38
+ return { suggestTo: m ? BigInt(m[2]) : null };
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Collect logs over `[from, to]`, adapting the window to whatever the RPC allows: one call on
44
+ * permissive RPCs; on tiers that cap `eth_getLogs` it shrinks to the suggested range (parsed from
45
+ * the error) or halves it, so the scan completes instead of failing with a 400.
46
+ */
47
+ export async function adaptiveCollect(from, to, fetch) {
48
+ const out = [];
49
+ if (to < from)
50
+ return out;
51
+ let cursor = from;
52
+ let step = to - from + 1n < LOG_CHUNK ? to - from + 1n : LOG_CHUNK;
53
+ if (step < 1n)
54
+ step = 1n;
55
+ while (cursor <= to) {
56
+ const end = cursor + step - 1n > to ? to : cursor + step - 1n;
57
+ try {
58
+ out.push(...(await fetch(cursor, end)));
59
+ cursor = end + 1n;
60
+ }
61
+ catch (e) {
62
+ const r = rangeError(e);
63
+ if (!r)
64
+ throw e;
65
+ if (r.suggestTo !== null && r.suggestTo >= cursor && r.suggestTo < end) {
66
+ step = r.suggestTo - cursor + 1n;
67
+ }
68
+ else if (end > cursor) {
69
+ step = (end - cursor + 1n) / 2n;
70
+ if (step < 1n)
71
+ step = 1n;
72
+ }
73
+ else {
74
+ throw e;
75
+ }
76
+ }
77
+ }
78
+ return out;
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Reads
82
+ // ---------------------------------------------------------------------------
83
+ /** Enumerate every registered V2 schema on this chain. */
84
+ export async function fetchAllSchemas(publicClient, cfg) {
85
+ const latest = await publicClient.getBlockNumber();
86
+ const logs = await adaptiveCollect(cfg.fromBlock, latest, (f, t) => publicClient.getLogs({ address: cfg.schemaRegistry, event: SCHEMA_REGISTERED_EVENT, fromBlock: f, toBlock: t }));
87
+ const ids = new Set();
88
+ for (const l of logs)
89
+ if (l.args.schemaId)
90
+ ids.add(l.args.schemaId);
91
+ const schemas = await Promise.all([...ids].map((id) => fetchSchema(publicClient, cfg, id)));
92
+ return schemas.filter((s) => s != null);
93
+ }
94
+ /** Read one schema's full state by id, or `null` if it does not exist. */
95
+ export async function fetchSchema(publicClient, cfg, schemaId) {
96
+ try {
97
+ const [authority, resolver, revocable, deprecated, version, name, fieldDefinitions, createdAt, expiry] = (await publicClient.readContract({ address: cfg.schemaRegistry, abi: SCHEMA_REGISTRY_ABI, functionName: "getSchema", args: [schemaId] }));
98
+ const delegates = (await publicClient.readContract({ address: cfg.schemaRegistry, abi: SCHEMA_REGISTRY_ABI, functionName: "getDelegates", args: [schemaId] }));
99
+ return {
100
+ address: schemaId,
101
+ schemaId,
102
+ authority,
103
+ resolver,
104
+ revocable,
105
+ name,
106
+ fieldDefinitions,
107
+ version: Number(version),
108
+ delegates: [...delegates],
109
+ createdAt: Number(createdAt),
110
+ schemaExpirySlot: Number(expiry),
111
+ deprecated,
112
+ };
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }
118
+ /** Enumerate every V2 attestation on this chain. */
119
+ export async function fetchAllAttestations(publicClient, cfg) {
120
+ const latest = await publicClient.getBlockNumber();
121
+ const logs = await adaptiveCollect(cfg.fromBlock, latest, (f, t) => publicClient.getLogs({ address: cfg.attestationRegistry, event: ATTESTED_EVENT, fromBlock: f, toBlock: t }));
122
+ const uids = new Set();
123
+ for (const l of logs)
124
+ if (l.args.uid)
125
+ uids.add(l.args.uid);
126
+ const records = await Promise.all([...uids].map((uid) => fetchAttestation(publicClient, cfg, uid)));
127
+ return records.filter((a) => a != null);
128
+ }
129
+ /** Read one attestation's full state by uid, or `null` if it does not exist. */
130
+ export async function fetchAttestation(publicClient, cfg, uid) {
131
+ try {
132
+ const [schemaId, issuer, stealthAddressHash, createdAt, expiration, revocation, refUid, data] = (await publicClient.readContract({ address: cfg.attestationRegistry, abi: ATTESTATION_ABI, functionName: "getAttestation", args: [uid] }));
133
+ return {
134
+ address: uid,
135
+ uid,
136
+ schemaId,
137
+ issuer,
138
+ stealthAddressHash,
139
+ dataHex: data,
140
+ createdAt: Number(createdAt),
141
+ expirationSlot: Number(expiration),
142
+ revocationSlot: Number(revocation),
143
+ refUid,
144
+ };
145
+ }
146
+ catch {
147
+ return null;
148
+ }
149
+ }
150
+ /** Schemas where `wallet` is the authority OR an authorized delegate (case-insensitive). */
151
+ export async function fetchSchemasForWallet(publicClient, cfg, wallet) {
152
+ const w = wallet.toLowerCase();
153
+ const all = await fetchAllSchemas(publicClient, cfg);
154
+ return all.filter((s) => s.authority.toLowerCase() === w ||
155
+ s.delegates.some((d) => d.toLowerCase() === w));
156
+ }
157
+ /** Attestations issued by `wallet` (case-insensitive `issuer` match). */
158
+ export async function fetchAttestationsIssuedBy(publicClient, cfg, wallet) {
159
+ const w = wallet.toLowerCase();
160
+ const all = await fetchAllAttestations(publicClient, cfg);
161
+ return all.filter((a) => a.issuer.toLowerCase() === w);
162
+ }
163
+ /** On-chain check: is `candidate` the authority or a delegate of `schemaId`? */
164
+ export async function isAuthorizedIssuer(publicClient, cfg, schemaId, candidate) {
165
+ return (await publicClient.readContract({
166
+ address: cfg.schemaRegistry,
167
+ abi: SCHEMA_REGISTRY_ABI,
168
+ functionName: "isAuthorizedIssuer",
169
+ args: [schemaId, candidate],
170
+ }));
171
+ }
172
+ /** Current chain block number as a `number`. */
173
+ export async function getCurrentBlock(publicClient) {
174
+ return Number(await publicClient.getBlockNumber());
175
+ }
176
+ // ---------------------------------------------------------------------------
177
+ // Writes
178
+ // ---------------------------------------------------------------------------
179
+ function chainOf(walletClient) {
180
+ return walletClient.chain ?? null;
181
+ }
182
+ /** Register a new schema. Returns the tx hash and the derived `schemaId`. */
183
+ export async function registerSchema(clients, cfg, args) {
184
+ const txHash = await clients.walletClient.writeContract({
185
+ address: cfg.schemaRegistry,
186
+ abi: SCHEMA_REGISTRY_ABI,
187
+ functionName: "registerSchema",
188
+ args: [args.name, args.fieldDefinitions, args.revocable, args.resolver ?? ZERO_ADDRESS, args.schemaExpiryBlock ?? 0n],
189
+ account: clients.account,
190
+ chain: chainOf(clients.walletClient),
191
+ });
192
+ return { txHash, schemaId: computeSchemaId(clients.account, args.name) };
193
+ }
194
+ async function writeSchema(clients, cfg, fn, args) {
195
+ return clients.walletClient.writeContract({
196
+ address: cfg.schemaRegistry,
197
+ abi: SCHEMA_REGISTRY_ABI,
198
+ functionName: fn,
199
+ args: args,
200
+ account: clients.account,
201
+ chain: chainOf(clients.walletClient),
202
+ });
203
+ }
204
+ /** Authority-only: add a delegate to a schema. */
205
+ export async function addDelegate(clients, cfg, schemaId, delegate) {
206
+ return writeSchema(clients, cfg, "addDelegate", [schemaId, delegate]);
207
+ }
208
+ /** Authority-only: remove a delegate from a schema. */
209
+ export async function removeDelegate(clients, cfg, schemaId, delegate) {
210
+ return writeSchema(clients, cfg, "removeDelegate", [schemaId, delegate]);
211
+ }
212
+ /** Authority-only: set or clear (`ZERO_ADDRESS`) a schema resolver. */
213
+ export async function updateResolver(clients, cfg, schemaId, resolver) {
214
+ return writeSchema(clients, cfg, "updateResolver", [schemaId, resolver]);
215
+ }
216
+ /** Authority-only, irreversible: deprecate a schema (blocks new attestations). */
217
+ export async function deprecateSchema(clients, cfg, schemaId) {
218
+ return writeSchema(clients, cfg, "deprecateSchema", [schemaId]);
219
+ }
220
+ /**
221
+ * Issue an attestation. Encodes `fieldValues` per `fieldDefs` internally, waits for the receipt,
222
+ * and derives the `uid` from the mined block (matching the contract's `computeUid`).
223
+ */
224
+ export async function attest(clients, cfg, args) {
225
+ const dataHex = encodeAttestationData(args.fieldValues, args.fieldDefs);
226
+ const refUid = args.refUid ?? ZERO_BYTES32;
227
+ const txHash = await clients.walletClient.writeContract({
228
+ address: cfg.attestationRegistry,
229
+ abi: ATTESTATION_ABI,
230
+ functionName: "attest",
231
+ args: [args.schemaId, args.stealthAddressHash, dataHex, args.expirationBlock ?? 0n, refUid],
232
+ account: clients.account,
233
+ chain: chainOf(clients.walletClient),
234
+ });
235
+ const receipt = await clients.publicClient.waitForTransactionReceipt({ hash: txHash });
236
+ return { txHash, dataHex, uid: computeUid(args.schemaId, clients.account, args.stealthAddressHash, receipt.blockNumber) };
237
+ }
238
+ /** Authority-only: revoke an attestation by uid (schema must be revocable). */
239
+ export async function revoke(clients, cfg, uid) {
240
+ return clients.walletClient.writeContract({
241
+ address: cfg.attestationRegistry,
242
+ abi: ATTESTATION_ABI,
243
+ functionName: "revoke",
244
+ args: [uid],
245
+ account: clients.account,
246
+ chain: chainOf(clients.walletClient),
247
+ });
248
+ }
249
+ /**
250
+ * Publish a V2 attestation announcement via the `StealthAddressAnnouncer` so the recipient's
251
+ * scanner can discover the trait. Build `metadata` with `encodeV2AttestationMetadata`.
252
+ */
253
+ export async function announceV2Attestation(clients, announcer, args) {
254
+ return clients.walletClient.writeContract({
255
+ address: announcer,
256
+ abi: ANNOUNCER_ABI,
257
+ functionName: "announce",
258
+ args: [1n, getAddress(args.stealthAddress), args.ephemeralPubKey, args.metadata],
259
+ account: clients.account,
260
+ chain: chainOf(clients.walletClient),
261
+ });
262
+ }
263
+ /** Re-export so callers can reuse the field parser without reaching into psr-core. */
264
+ export { parseFieldDefs };
265
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opaquecash/psr-chain",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Viem integration for OpaqueReputationVerifier (roots, verify, submit)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,8 +19,19 @@
19
19
  "clean": "rm -rf dist"
20
20
  },
21
21
  "dependencies": {
22
- "@opaquecash/psr-core": "0.1.0",
22
+ "@opaquecash/deployments": "0.2.0",
23
+ "@opaquecash/psr-core": "0.2.1",
23
24
  "viem": "^2.21.0"
24
25
  },
25
- "sideEffects": false
26
+ "sideEffects": false,
27
+ "license": "Apache-2.0",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/opaquecash/sdk.git",
31
+ "directory": "packages/psr-chain"
32
+ },
33
+ "homepage": "https://docs.opaque.cash",
34
+ "publishConfig": {
35
+ "access": "public"
36
+ }
26
37
  }