@cofhe/sdk 1.0.0-alpha.0 → 1.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/acps/onchain-utils.ts +15 -10
- package/acps/sealing.ts +22 -2
- package/acps/test/aclServedAddresses.test.ts +65 -0
- package/acps/test/sealing.test.ts +51 -0
- package/core/acps.ts +64 -23
- package/core/client.ts +32 -1
- package/core/clientTypes.ts +22 -1
- package/core/test/acpsPrepare.test.ts +77 -0
- package/dist/acps.cjs +122 -99
- package/dist/acps.d.cts +4 -358
- package/dist/acps.d.ts +4 -358
- package/dist/acps.js +2 -2
- package/dist/{chunk-OL3DZN7A.js → chunk-2EO4JSR7.js} +65 -23
- package/dist/{chunk-BQWHPIYU.js → chunk-3L2IVPMI.js} +29 -6
- package/dist/{chunk-6ZW76ZKB.js → chunk-WJGTPW7K.js} +1 -1
- package/dist/{clientTypes-CcU5WvdV.d.ts → clientTypes-CnslFzxB.d.ts} +38 -2
- package/dist/{clientTypes-C0A9ji5O.d.cts → clientTypes-RXwLVWou.d.cts} +38 -2
- package/dist/core.cjs +250 -185
- package/dist/core.d.cts +3 -3
- package/dist/core.d.ts +3 -3
- package/dist/core.js +4 -4
- package/dist/node.cjs +184 -119
- package/dist/node.d.cts +2 -2
- package/dist/node.d.ts +2 -2
- package/dist/node.js +4 -4
- package/dist/{onchain-utils-D9Z33IP7.d.ts → onchain-utils-Ns56cBm0.d.cts} +359 -5
- package/dist/{onchain-utils-D9Z33IP7.d.cts → onchain-utils-Ns56cBm0.d.ts} +359 -5
- package/dist/web.cjs +184 -119
- package/dist/web.d.cts +2 -2
- package/dist/web.d.ts +2 -2
- package/dist/web.js +4 -4
- package/dist/zkProve.worker.js +2 -2
- package/package.json +1 -1
- package/dist/{chunk-XQ32JG3T.js → chunk-J23FYAI2.js} +13 -13
package/dist/acps.d.ts
CHANGED
|
@@ -1,364 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
3
|
-
import {
|
|
1
|
+
import { S as ShareLabel, a as StoredValueLabel, E as EventValueLabel, L as LabelledShare, A as ACP, V as ValidationResult, b as ACPPublic, c as ACPSignaturePrimaryType, d as EIP712Types, e as EIP712Message, f as SerializedACP } from './onchain-utils-Ns56cBm0.js';
|
|
2
|
+
export { a4 as ACPAccessStatus, a5 as ACPHashFields, h as ACPMetadata, _ as ACPOf, Y as ACPPrivate, a2 as ACPScope, a3 as ACPScopeOptions, Z as ACPType, l as ACPUtils, t as ACP_REVOKER_ABI, v as ACP_SHARE_REGISTRY_ABI, w as ACP_SHARE_TUPLE_ABI, p as AclServedAddresses, B as ChainShare, C as CreateSelfACPOptions, g as CreateSharingACPOptions, k as EIP712Domain, X as EIP712Type, r as EthEncryptedData, a6 as Expand, G as GenerateSealingKey, I as ImportACPOptions, I as ImportSharedACPOptions, j as IncomingShare, O as LabelVerification, P as PostedShare, F as PostedShares, a1 as RecipientACP, q as SealingKeyPair, $ as SelfACP, C as SelfACPOptions, D as ShareHeader, R as ShareLabelCheck, M as ShareLabelReadArg, Q as ShareLabelVerifyMode, i as SharedACP, a0 as SharingACP, g as SharingACPOptions, N as UnlabelledLabel, U as UnreadableShare, o as clearAclServedAddresses, y as computeShareId, m as getAclAddress, n as getAclServedAddresses, H as readPostedShares, K as readShare, J as readSharesFor, s as seal, z as shareIdOfChainShare, x as toChainShare, u as unsealWithPrivateKey, T as verifyShareLabel, W as verifyShareLabels } from './onchain-utils-Ns56cBm0.js';
|
|
3
|
+
import { Address, Hex, Abi, ContractFunctionName, ContractFunctionArgs, Log } from 'viem';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import * as zustand_middleware from 'zustand/middleware';
|
|
6
6
|
import * as zustand_vanilla from 'zustand/vanilla';
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* The on-chain sharing pieces: the share registry and revoker ABIs, the registry payload of a
|
|
10
|
-
* sharing ACP and its share id, and the read of a share from its `Shared` event. Exported so an
|
|
11
|
-
* app can send these writes through its own transaction path and still agree with the registry
|
|
12
|
-
* on ids.
|
|
13
|
-
*
|
|
14
|
-
* The registry is pointer-based: storage keeps a share header (issuer, expiration, recipient,
|
|
15
|
-
* revoker, and the block of its `Shared` event); the full payload and the metadata blob travel in
|
|
16
|
-
* that event. A reader takes headers from `sharesFor` / `getShare` and fetches the events with one
|
|
17
|
-
* single-block `getLogs` per block.
|
|
18
|
-
*/
|
|
19
|
-
declare const ACP_REVOKER_ABI: readonly [{
|
|
20
|
-
readonly name: "revokeSingle";
|
|
21
|
-
readonly type: "function";
|
|
22
|
-
readonly stateMutability: "nonpayable";
|
|
23
|
-
readonly inputs: readonly [{
|
|
24
|
-
readonly type: "uint256";
|
|
25
|
-
readonly name: "id";
|
|
26
|
-
}];
|
|
27
|
-
readonly outputs: readonly [];
|
|
28
|
-
}, {
|
|
29
|
-
readonly name: "revokeAllExisting";
|
|
30
|
-
readonly type: "function";
|
|
31
|
-
readonly stateMutability: "nonpayable";
|
|
32
|
-
readonly inputs: readonly [];
|
|
33
|
-
readonly outputs: readonly [];
|
|
34
|
-
}, {
|
|
35
|
-
readonly name: "disabled";
|
|
36
|
-
readonly type: "function";
|
|
37
|
-
readonly stateMutability: "view";
|
|
38
|
-
readonly inputs: readonly [{
|
|
39
|
-
readonly type: "address";
|
|
40
|
-
readonly name: "issuer";
|
|
41
|
-
}, {
|
|
42
|
-
readonly type: "uint256";
|
|
43
|
-
readonly name: "id";
|
|
44
|
-
}];
|
|
45
|
-
readonly outputs: readonly [{
|
|
46
|
-
readonly type: "bool";
|
|
47
|
-
}];
|
|
48
|
-
}];
|
|
49
|
-
declare const ACP_SHARE_REGISTRY_ABI: readonly [{
|
|
50
|
-
readonly name: "share";
|
|
51
|
-
readonly type: "function";
|
|
52
|
-
readonly stateMutability: "nonpayable";
|
|
53
|
-
readonly inputs: readonly [{
|
|
54
|
-
readonly type: "tuple";
|
|
55
|
-
readonly components: readonly [{
|
|
56
|
-
readonly type: "address";
|
|
57
|
-
readonly name: "issuer";
|
|
58
|
-
}, {
|
|
59
|
-
readonly type: "uint64";
|
|
60
|
-
readonly name: "expiration";
|
|
61
|
-
}, {
|
|
62
|
-
readonly type: "address";
|
|
63
|
-
readonly name: "recipient";
|
|
64
|
-
}, {
|
|
65
|
-
readonly type: "uint256";
|
|
66
|
-
readonly name: "revokerData";
|
|
67
|
-
}, {
|
|
68
|
-
readonly type: "address";
|
|
69
|
-
readonly name: "revokerContract";
|
|
70
|
-
}, {
|
|
71
|
-
readonly type: "uint8";
|
|
72
|
-
readonly name: "scope";
|
|
73
|
-
}, {
|
|
74
|
-
readonly type: "address[]";
|
|
75
|
-
readonly name: "contracts";
|
|
76
|
-
}, {
|
|
77
|
-
readonly type: "bytes32[]";
|
|
78
|
-
readonly name: "handles";
|
|
79
|
-
}, {
|
|
80
|
-
readonly type: "bytes32";
|
|
81
|
-
readonly name: "sealingKey";
|
|
82
|
-
}, {
|
|
83
|
-
readonly type: "bytes";
|
|
84
|
-
readonly name: "issuerSignature";
|
|
85
|
-
}, {
|
|
86
|
-
readonly type: "bytes";
|
|
87
|
-
readonly name: "recipientSignature";
|
|
88
|
-
}];
|
|
89
|
-
readonly name: "acp";
|
|
90
|
-
}, {
|
|
91
|
-
readonly type: "bytes";
|
|
92
|
-
readonly name: "metadata";
|
|
93
|
-
}];
|
|
94
|
-
readonly outputs: readonly [{
|
|
95
|
-
readonly type: "bytes32";
|
|
96
|
-
}];
|
|
97
|
-
}, {
|
|
98
|
-
readonly name: "removeShare";
|
|
99
|
-
readonly type: "function";
|
|
100
|
-
readonly stateMutability: "nonpayable";
|
|
101
|
-
readonly inputs: readonly [{
|
|
102
|
-
readonly type: "bytes32";
|
|
103
|
-
readonly name: "shareId";
|
|
104
|
-
}];
|
|
105
|
-
readonly outputs: readonly [];
|
|
106
|
-
}, {
|
|
107
|
-
readonly name: "sharesFor";
|
|
108
|
-
readonly type: "function";
|
|
109
|
-
readonly stateMutability: "view";
|
|
110
|
-
readonly inputs: readonly [{
|
|
111
|
-
readonly type: "address";
|
|
112
|
-
readonly name: "recipient";
|
|
113
|
-
}];
|
|
114
|
-
readonly outputs: readonly [{
|
|
115
|
-
readonly type: "bytes32[]";
|
|
116
|
-
readonly name: "shareIds";
|
|
117
|
-
}, {
|
|
118
|
-
readonly type: "tuple[]";
|
|
119
|
-
readonly components: readonly [{
|
|
120
|
-
readonly type: "address";
|
|
121
|
-
readonly name: "issuer";
|
|
122
|
-
}, {
|
|
123
|
-
readonly type: "uint64";
|
|
124
|
-
readonly name: "expiration";
|
|
125
|
-
}, {
|
|
126
|
-
readonly type: "address";
|
|
127
|
-
readonly name: "recipient";
|
|
128
|
-
}, {
|
|
129
|
-
readonly type: "uint64";
|
|
130
|
-
readonly name: "blockNumber";
|
|
131
|
-
}, {
|
|
132
|
-
readonly type: "address";
|
|
133
|
-
readonly name: "revokerContract";
|
|
134
|
-
}, {
|
|
135
|
-
readonly type: "uint256";
|
|
136
|
-
readonly name: "revokerData";
|
|
137
|
-
}];
|
|
138
|
-
readonly name: "headers";
|
|
139
|
-
}];
|
|
140
|
-
}, {
|
|
141
|
-
readonly name: "getShare";
|
|
142
|
-
readonly type: "function";
|
|
143
|
-
readonly stateMutability: "view";
|
|
144
|
-
readonly inputs: readonly [{
|
|
145
|
-
readonly type: "bytes32";
|
|
146
|
-
readonly name: "shareId";
|
|
147
|
-
}];
|
|
148
|
-
readonly outputs: readonly [{
|
|
149
|
-
readonly type: "tuple";
|
|
150
|
-
readonly components: readonly [{
|
|
151
|
-
readonly type: "address";
|
|
152
|
-
readonly name: "issuer";
|
|
153
|
-
}, {
|
|
154
|
-
readonly type: "uint64";
|
|
155
|
-
readonly name: "expiration";
|
|
156
|
-
}, {
|
|
157
|
-
readonly type: "address";
|
|
158
|
-
readonly name: "recipient";
|
|
159
|
-
}, {
|
|
160
|
-
readonly type: "uint64";
|
|
161
|
-
readonly name: "blockNumber";
|
|
162
|
-
}, {
|
|
163
|
-
readonly type: "address";
|
|
164
|
-
readonly name: "revokerContract";
|
|
165
|
-
}, {
|
|
166
|
-
readonly type: "uint256";
|
|
167
|
-
readonly name: "revokerData";
|
|
168
|
-
}];
|
|
169
|
-
}];
|
|
170
|
-
}, {
|
|
171
|
-
readonly name: "isShareValid";
|
|
172
|
-
readonly type: "function";
|
|
173
|
-
readonly stateMutability: "view";
|
|
174
|
-
readonly inputs: readonly [{
|
|
175
|
-
readonly type: "bytes32";
|
|
176
|
-
readonly name: "shareId";
|
|
177
|
-
}];
|
|
178
|
-
readonly outputs: readonly [{
|
|
179
|
-
readonly type: "bool";
|
|
180
|
-
}];
|
|
181
|
-
}, {
|
|
182
|
-
readonly name: "Shared";
|
|
183
|
-
readonly type: "event";
|
|
184
|
-
readonly inputs: readonly [{
|
|
185
|
-
readonly type: "address";
|
|
186
|
-
readonly name: "recipient";
|
|
187
|
-
readonly indexed: true;
|
|
188
|
-
}, {
|
|
189
|
-
readonly type: "address";
|
|
190
|
-
readonly name: "issuer";
|
|
191
|
-
readonly indexed: true;
|
|
192
|
-
}, {
|
|
193
|
-
readonly type: "bytes32";
|
|
194
|
-
readonly name: "shareId";
|
|
195
|
-
readonly indexed: true;
|
|
196
|
-
}, {
|
|
197
|
-
readonly type: "tuple";
|
|
198
|
-
readonly components: readonly [{
|
|
199
|
-
readonly type: "address";
|
|
200
|
-
readonly name: "issuer";
|
|
201
|
-
}, {
|
|
202
|
-
readonly type: "uint64";
|
|
203
|
-
readonly name: "expiration";
|
|
204
|
-
}, {
|
|
205
|
-
readonly type: "address";
|
|
206
|
-
readonly name: "recipient";
|
|
207
|
-
}, {
|
|
208
|
-
readonly type: "uint256";
|
|
209
|
-
readonly name: "revokerData";
|
|
210
|
-
}, {
|
|
211
|
-
readonly type: "address";
|
|
212
|
-
readonly name: "revokerContract";
|
|
213
|
-
}, {
|
|
214
|
-
readonly type: "uint8";
|
|
215
|
-
readonly name: "scope";
|
|
216
|
-
}, {
|
|
217
|
-
readonly type: "address[]";
|
|
218
|
-
readonly name: "contracts";
|
|
219
|
-
}, {
|
|
220
|
-
readonly type: "bytes32[]";
|
|
221
|
-
readonly name: "handles";
|
|
222
|
-
}, {
|
|
223
|
-
readonly type: "bytes32";
|
|
224
|
-
readonly name: "sealingKey";
|
|
225
|
-
}, {
|
|
226
|
-
readonly type: "bytes";
|
|
227
|
-
readonly name: "issuerSignature";
|
|
228
|
-
}, {
|
|
229
|
-
readonly type: "bytes";
|
|
230
|
-
readonly name: "recipientSignature";
|
|
231
|
-
}];
|
|
232
|
-
readonly name: "acp";
|
|
233
|
-
}, {
|
|
234
|
-
readonly type: "bytes";
|
|
235
|
-
readonly name: "metadata";
|
|
236
|
-
}];
|
|
237
|
-
}, {
|
|
238
|
-
readonly name: "ShareRemoved";
|
|
239
|
-
readonly type: "event";
|
|
240
|
-
readonly inputs: readonly [{
|
|
241
|
-
readonly type: "address";
|
|
242
|
-
readonly name: "recipient";
|
|
243
|
-
readonly indexed: true;
|
|
244
|
-
}, {
|
|
245
|
-
readonly type: "address";
|
|
246
|
-
readonly name: "issuer";
|
|
247
|
-
readonly indexed: true;
|
|
248
|
-
}, {
|
|
249
|
-
readonly type: "bytes32";
|
|
250
|
-
readonly name: "shareId";
|
|
251
|
-
readonly indexed: true;
|
|
252
|
-
}];
|
|
253
|
-
}];
|
|
254
|
-
declare const ACP_SHARE_TUPLE_ABI: readonly [{
|
|
255
|
-
readonly type: "tuple";
|
|
256
|
-
readonly components: readonly [{
|
|
257
|
-
readonly name: "issuer";
|
|
258
|
-
readonly type: "address";
|
|
259
|
-
}, {
|
|
260
|
-
readonly name: "expiration";
|
|
261
|
-
readonly type: "uint64";
|
|
262
|
-
}, {
|
|
263
|
-
readonly name: "recipient";
|
|
264
|
-
readonly type: "address";
|
|
265
|
-
}, {
|
|
266
|
-
readonly name: "revokerData";
|
|
267
|
-
readonly type: "uint256";
|
|
268
|
-
}, {
|
|
269
|
-
readonly name: "revokerContract";
|
|
270
|
-
readonly type: "address";
|
|
271
|
-
}, {
|
|
272
|
-
readonly name: "scope";
|
|
273
|
-
readonly type: "uint8";
|
|
274
|
-
}, {
|
|
275
|
-
readonly name: "contracts";
|
|
276
|
-
readonly type: "address[]";
|
|
277
|
-
}, {
|
|
278
|
-
readonly name: "handles";
|
|
279
|
-
readonly type: "bytes32[]";
|
|
280
|
-
}, {
|
|
281
|
-
readonly name: "sealingKey";
|
|
282
|
-
readonly type: "bytes32";
|
|
283
|
-
}, {
|
|
284
|
-
readonly name: "issuerSignature";
|
|
285
|
-
readonly type: "bytes";
|
|
286
|
-
}, {
|
|
287
|
-
readonly name: "recipientSignature";
|
|
288
|
-
readonly type: "bytes";
|
|
289
|
-
}];
|
|
290
|
-
}];
|
|
291
|
-
/** The on-chain payload for a sharing ACP: recipient-side fields empty. */
|
|
292
|
-
declare const toChainShare: (acp: ACP) => {
|
|
293
|
-
expiration: bigint;
|
|
294
|
-
revokerData: bigint;
|
|
295
|
-
sealingKey: `0x${string}`;
|
|
296
|
-
recipientSignature: Hex;
|
|
297
|
-
issuer: Hex;
|
|
298
|
-
recipient: Hex;
|
|
299
|
-
revokerContract: Hex;
|
|
300
|
-
scope: number;
|
|
301
|
-
contracts: Hex[];
|
|
302
|
-
handles: Hex[];
|
|
303
|
-
issuerSignature: Hex;
|
|
304
|
-
};
|
|
305
|
-
/** Mirrors the registry's `keccak256(abi.encode(acp))` share id. */
|
|
306
|
-
declare const computeShareId: (acp: ACP) => Hex;
|
|
307
|
-
/** The share id of a registry payload as read back from a `Shared` event. */
|
|
308
|
-
declare const shareIdOfChainShare: (share: ChainShare) => Hex;
|
|
309
|
-
/** A registry payload, as decoded from a `Shared` event (or passed to `share`). */
|
|
310
|
-
type ChainShare = AbiParameterToPrimitiveType<(typeof ACP_SHARE_TUPLE_ABI)[0]>;
|
|
311
|
-
/** What the registry stores of a share: the fields it checks, and the block of its `Shared` event. */
|
|
312
|
-
type ShareHeader = {
|
|
313
|
-
issuer: Address;
|
|
314
|
-
expiration: bigint;
|
|
315
|
-
recipient: Address;
|
|
316
|
-
/** Block of the `Shared` event (the L2 block on Arbitrum). */
|
|
317
|
-
blockNumber: bigint;
|
|
318
|
-
revokerContract: Address;
|
|
319
|
-
revokerData: bigint;
|
|
320
|
-
};
|
|
321
|
-
/** A share as posted: its payload and the metadata blob that came with it (`0x` when none). */
|
|
322
|
-
type PostedShare = {
|
|
323
|
-
shareId: Hex;
|
|
324
|
-
header: ShareHeader;
|
|
325
|
-
share: ChainShare;
|
|
326
|
-
metadata: Hex;
|
|
327
|
-
};
|
|
328
|
-
/** A share the registry lists but whose `Shared` event could not be read, and why. */
|
|
329
|
-
type UnreadableShare = {
|
|
330
|
-
shareId: Hex;
|
|
331
|
-
header: ShareHeader;
|
|
332
|
-
reason: string;
|
|
333
|
-
};
|
|
334
|
-
/** Shares read from their events, and those that could not be; each share is on its own. */
|
|
335
|
-
type PostedShares = {
|
|
336
|
-
posted: PostedShare[];
|
|
337
|
-
unreadable: UnreadableShare[];
|
|
338
|
-
};
|
|
339
|
-
/**
|
|
340
|
-
* Fetches the `Shared` events of shares from the blocks their headers name: one single-block
|
|
341
|
-
* `getLogs` per distinct block, filtered by registry and share ids, so any node answers it. Returns
|
|
342
|
-
* the shares in the order given; where a block holds several events for one share id, the last.
|
|
343
|
-
* Never fails as a whole: a share whose block the node cannot serve yet, whose event is missing
|
|
344
|
-
* from it, or whose event payload does not hash to its id is returned as `unreadable`, with the
|
|
345
|
-
* reason, and the rest are posted as usual.
|
|
346
|
-
*/
|
|
347
|
-
declare const readPostedShares: (publicClient: PublicClient, registry: Address, headers: readonly {
|
|
348
|
-
shareId: Hex;
|
|
349
|
-
header: ShareHeader;
|
|
350
|
-
}[]) => Promise<PostedShares>;
|
|
351
|
-
/**
|
|
352
|
-
* The importable shares addressed to `recipient` (unexpired, not revoked), read from their events;
|
|
353
|
-
* those whose event could not be read are listed apart, so one of them never hides the rest.
|
|
354
|
-
*/
|
|
355
|
-
declare const readSharesFor: (publicClient: PublicClient, registry: Address, recipient: Address) => Promise<PostedShares>;
|
|
356
|
-
/**
|
|
357
|
-
* One share by id, read from its event; null when the registry has no such share (unknown or
|
|
358
|
-
* removed). Throws, with the reason, when the registry lists it but its event could not be read.
|
|
359
|
-
*/
|
|
360
|
-
declare const readShare: (publicClient: PublicClient, registry: Address, shareId: Hex) => Promise<PostedShare | null>;
|
|
361
|
-
|
|
362
8
|
/**
|
|
363
9
|
* Byte layout of a share metadata blob, version 3. Integers are big-endian; sizes in bytes.
|
|
364
10
|
*
|
|
@@ -1056,4 +702,4 @@ declare const acpStore: {
|
|
|
1056
702
|
resetStore: () => void;
|
|
1057
703
|
};
|
|
1058
704
|
|
|
1059
|
-
export { ACP, ACPPublic, ACPSignaturePrimaryType,
|
|
705
|
+
export { ACP, ACPPublic, ACPSignaturePrimaryType, ACP_STORE_DEFAULTS, type DecodedShareMetadata, EIP712Message, EIP712Types, ERC7984_ABI, type EventValueDescription, EventValueLabel, ImportACPOptionsValidator, ImportACPValidator, LabelledShare, LAYOUT_VERSION as SHARE_METADATA_VERSION, SelfACPOptionsValidator, SelfACPValidator, SerializedACP, ShareLabel, type ShareLabelAbis, type ShareLabelArg, type ShareLabelDescription, type ShareLabelParam, SharingACPOptionsValidator, SharingACPValidator, SignatureTypes, SignatureUtils, type StoredValueDescription, StoredValueLabel, UNLABELLED, type UnlabelledDescription, ValidationResult, ValidationUtils, type ViewFunctionLabelOptions, _acpStore, acpStore, addressNotZeroSchema, addressSchema, bytesNotEmptySchema, bytesSchema, clearStaleStore, contractsSchema, decodeShareAppKey, decodeShareMetadata, decodeShareMetadataFull, describeShareLabels, describeShareMetadata, encodeShareMetadata, eventLogLabel, getACP, getACPs, getActiveACP, getActiveACPHash, getSignatureTypesAndMessage, handlesSchema, removeACP, removeActiveACPHash, resetStore, setACP, setActiveACPHash, shareAppKey, validateImportACP, validateImportACPOptions, validateSelfACP, validateSelfACPOptions, validateSharingACP, validateSharingACPOptions, viewFunctionLabel };
|
package/dist/acps.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ACPScope, ACPUtils, ACP_REVOKER_ABI, ACP_SHARE_REGISTRY_ABI, ACP_SHARE_TUPLE_ABI, ACP_STORE_DEFAULTS, ERC7984_ABI, GenerateSealingKey, ImportACPOptionsValidator, ImportACPValidator, LAYOUT_VERSION as SHARE_METADATA_VERSION, SelfACPOptionsValidator, SelfACPValidator, SharingACPOptionsValidator, SharingACPValidator, SignatureTypes, SignatureUtils, UNLABELLED, ValidationUtils, _acpStore, acpStore, addressNotZeroSchema, addressSchema, bytesNotEmptySchema, bytesSchema, clearAclServedAddresses, clearStaleStore, computeShareId, contractsSchema, decodeShareAppKey, decodeShareMetadata, decodeShareMetadataFull, describeShareLabels, describeShareMetadata, encodeShareMetadata, eventLogLabel, getACP, getACPs, getAclAddress, getAclServedAddresses, getActiveACP, getActiveACPHash, getSignatureTypesAndMessage, handlesSchema, readPostedShares, readShare, readSharesFor, removeACP, removeActiveACPHash, resetStore, seal, setACP, setActiveACPHash, shareAppKey, shareIdOfChainShare, toChainShare, unsealWithPrivateKey, validateImportACP, validateImportACPOptions, validateSelfACP, validateSelfACPOptions, validateSharingACP, validateSharingACPOptions, verifyShareLabel, verifyShareLabels, viewFunctionLabel } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { ACPScope, ACPUtils, ACP_REVOKER_ABI, ACP_SHARE_REGISTRY_ABI, ACP_SHARE_TUPLE_ABI, ACP_STORE_DEFAULTS, ERC7984_ABI, GenerateSealingKey, ImportACPOptionsValidator, ImportACPValidator, LAYOUT_VERSION as SHARE_METADATA_VERSION, SelfACPOptionsValidator, SelfACPValidator, SharingACPOptionsValidator, SharingACPValidator, SignatureTypes, SignatureUtils, UNLABELLED, ValidationUtils, _acpStore, acpStore, addressNotZeroSchema, addressSchema, bytesNotEmptySchema, bytesSchema, clearAclServedAddresses, clearStaleStore, computeShareId, contractsSchema, decodeShareAppKey, decodeShareMetadata, decodeShareMetadataFull, describeShareLabels, describeShareMetadata, encodeShareMetadata, eventLogLabel, getACP, getACPs, getAclAddress, getAclServedAddresses, getActiveACP, getActiveACPHash, getSignatureTypesAndMessage, handlesSchema, readPostedShares, readShare, readSharesFor, removeACP, removeActiveACPHash, resetStore, seal, setACP, setActiveACPHash, shareAppKey, shareIdOfChainShare, toChainShare, unsealWithPrivateKey, validateImportACP, validateImportACPOptions, validateSelfACP, validateSelfACPOptions, validateSharingACP, validateSharingACPOptions, verifyShareLabel, verifyShareLabels, viewFunctionLabel } from './chunk-3L2IVPMI.js';
|
|
2
|
+
import './chunk-J23FYAI2.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { hardhat as hardhat$1 } from './chunk-UKQAJK4N.js';
|
|
2
|
-
import { acpStore, clearAclServedAddresses, getAclServedAddresses, computeShareId, ACPUtils, getTaskManagerAddress, verifyShareLabels, decodeShareMetadata, shareAppKey,
|
|
3
|
-
import { sleep, getPublicClientChainID, getWalletClientAccount, validateBigIntInRange, toBigIntOrThrow, hexToBytes, toHexString, FheUintUTypes } from './chunk-
|
|
4
|
-
import { TFHE_RS_KEY_VERSION, CofheError, TFHE_RS_ZK_MAX_BITS, TFHE_RS_SAFE_SERIALIZATION_SIZE_LIMIT, MOCKS_THRESHOLD_NETWORK_ADDRESS, MOCKS_DECRYPT_RESULT_SIGNER_PRIVATE_KEY, MOCKS_ZK_VERIFIER_SIGNER_PRIVATE_KEY, MOCKS_ZK_VERIFIER_ADDRESS } from './chunk-
|
|
2
|
+
import { acpStore, clearAclServedAddresses, getAclServedAddresses, computeShareId, ACP_SHARE_REGISTRY_ABI, ACPUtils, getTaskManagerAddress, verifyShareLabels, decodeShareMetadata, shareAppKey, readShare, readSharesFor, toChainShare, ACP_REVOKER_ABI, decodeShareAppKey, encodeShareMetadata } from './chunk-3L2IVPMI.js';
|
|
3
|
+
import { sleep, getPublicClientChainID, getWalletClientAccount, validateBigIntInRange, toBigIntOrThrow, hexToBytes, toHexString, FheUintUTypes } from './chunk-WJGTPW7K.js';
|
|
4
|
+
import { TFHE_RS_KEY_VERSION, CofheError, TFHE_RS_ZK_MAX_BITS, TFHE_RS_SAFE_SERIALIZATION_SIZE_LIMIT, MOCKS_THRESHOLD_NETWORK_ADDRESS, MOCKS_DECRYPT_RESULT_SIGNER_PRIVATE_KEY, MOCKS_ZK_VERIFIER_SIGNER_PRIVATE_KEY, MOCKS_ZK_VERIFIER_ADDRESS } from './chunk-J23FYAI2.js';
|
|
5
5
|
import { createStore } from 'zustand/vanilla';
|
|
6
6
|
import { parseAbi, isAddressEqual, zeroAddress, recoverAddress, encodePacked, keccak256, createWalletClient, http, getAddress, parseSignature, serializeSignature } from 'viem';
|
|
7
7
|
import { hardhat } from 'viem/chains';
|
|
@@ -1409,23 +1409,25 @@ var getBlockRevokerData = async (publicClient) => {
|
|
|
1409
1409
|
}
|
|
1410
1410
|
return revokerData;
|
|
1411
1411
|
};
|
|
1412
|
-
var
|
|
1412
|
+
var prepareRevokeACP = (acp) => {
|
|
1413
1413
|
if (acp.revokerContract === zeroAddress || acp.revokerData === 0) {
|
|
1414
1414
|
throw new Error("ACP is not revocable: it has no revoker (revokerContract/revokerData unset)");
|
|
1415
1415
|
}
|
|
1416
|
+
return {
|
|
1417
|
+
address: acp.revokerContract,
|
|
1418
|
+
abi: ACP_REVOKER_ABI,
|
|
1419
|
+
functionName: "revokeSingle",
|
|
1420
|
+
args: [BigInt(acp.revokerData)]
|
|
1421
|
+
};
|
|
1422
|
+
};
|
|
1423
|
+
var revokeACP = async (acp, walletClient) => {
|
|
1424
|
+
const write = prepareRevokeACP(acp);
|
|
1416
1425
|
if (walletClient.account == null)
|
|
1417
1426
|
throw new Error("Missing walletClient account");
|
|
1418
1427
|
if (walletClient.account.address.toLowerCase() !== acp.issuer.toLowerCase()) {
|
|
1419
1428
|
throw new Error("Only the acp issuer can revoke it");
|
|
1420
1429
|
}
|
|
1421
|
-
return walletClient.writeContract({
|
|
1422
|
-
address: acp.revokerContract,
|
|
1423
|
-
abi: ACP_REVOKER_ABI,
|
|
1424
|
-
functionName: "revokeSingle",
|
|
1425
|
-
args: [BigInt(acp.revokerData)],
|
|
1426
|
-
account: walletClient.account,
|
|
1427
|
-
chain: walletClient.chain
|
|
1428
|
-
});
|
|
1430
|
+
return walletClient.writeContract({ ...write, account: walletClient.account, chain: walletClient.chain });
|
|
1429
1431
|
};
|
|
1430
1432
|
var revokeAllACPs = async (walletClient, publicClient, revokerContract) => {
|
|
1431
1433
|
if (walletClient.account == null)
|
|
@@ -1476,28 +1478,36 @@ var metadataOf = (acp, { labels, metadata, appKey }) => {
|
|
|
1476
1478
|
}
|
|
1477
1479
|
return encodeShareMetadata(labels, { issuer: acp.issuer, appKey });
|
|
1478
1480
|
};
|
|
1479
|
-
var
|
|
1481
|
+
var prepareShareOnChain = (acp, registry, options = {}) => {
|
|
1480
1482
|
if (acp.type !== "sharing") {
|
|
1481
1483
|
throw new Error(`Cannot share a '${acp.type}' ACP on-chain \u2014 only 'sharing' ACPs are shareable.`);
|
|
1482
1484
|
}
|
|
1483
1485
|
if (acp.issuerSignature === "0x") {
|
|
1484
1486
|
throw new Error("Cannot share an unsigned sharing ACP \u2014 sign it first.");
|
|
1485
1487
|
}
|
|
1488
|
+
return {
|
|
1489
|
+
write: {
|
|
1490
|
+
address: registry,
|
|
1491
|
+
abi: ACP_SHARE_REGISTRY_ABI,
|
|
1492
|
+
functionName: "share",
|
|
1493
|
+
args: [toChainShare(acp), metadataOf(acp, options)]
|
|
1494
|
+
},
|
|
1495
|
+
shareId: computeShareId(acp)
|
|
1496
|
+
};
|
|
1497
|
+
};
|
|
1498
|
+
var shareOnChain = async (acp, walletClient, registry, options = {}) => {
|
|
1499
|
+
const { write, shareId } = prepareShareOnChain(acp, registry, options);
|
|
1486
1500
|
if (walletClient.account == null)
|
|
1487
1501
|
throw new Error("Missing walletClient account");
|
|
1488
1502
|
if (walletClient.account.address.toLowerCase() !== acp.issuer.toLowerCase()) {
|
|
1489
1503
|
throw new Error("Only the ACP issuer can share it on-chain");
|
|
1490
1504
|
}
|
|
1491
|
-
const metadata = metadataOf(acp, options);
|
|
1492
1505
|
const txHash = await walletClient.writeContract({
|
|
1493
|
-
|
|
1494
|
-
abi: ACP_SHARE_REGISTRY_ABI,
|
|
1495
|
-
functionName: "share",
|
|
1496
|
-
args: [toChainShare(acp), metadata],
|
|
1506
|
+
...write,
|
|
1497
1507
|
account: walletClient.account,
|
|
1498
1508
|
chain: walletClient.chain ?? null
|
|
1499
1509
|
});
|
|
1500
|
-
return { txHash, shareId
|
|
1510
|
+
return { txHash, shareId };
|
|
1501
1511
|
};
|
|
1502
1512
|
var toIncomingShare = ({ shareId, share: s, metadata }) => ({
|
|
1503
1513
|
shareId,
|
|
@@ -1532,14 +1542,17 @@ var importFromChain = async (share, publicClient, walletClient, importOptions =
|
|
|
1532
1542
|
const { shareId: _shareId, appKey: _appKey, ...options } = share;
|
|
1533
1543
|
return importShared({ ...options, type: "sharing" }, publicClient, walletClient, importOptions);
|
|
1534
1544
|
};
|
|
1545
|
+
var prepareRemoveShare = (shareId, registry) => ({
|
|
1546
|
+
address: registry,
|
|
1547
|
+
abi: ACP_SHARE_REGISTRY_ABI,
|
|
1548
|
+
functionName: "removeShare",
|
|
1549
|
+
args: [shareId]
|
|
1550
|
+
});
|
|
1535
1551
|
var removeShareOnChain = async (shareId, walletClient, registry) => {
|
|
1536
1552
|
if (walletClient.account == null)
|
|
1537
1553
|
throw new Error("Missing walletClient account");
|
|
1538
1554
|
return walletClient.writeContract({
|
|
1539
|
-
|
|
1540
|
-
abi: ACP_SHARE_REGISTRY_ABI,
|
|
1541
|
-
functionName: "removeShare",
|
|
1542
|
-
args: [shareId],
|
|
1555
|
+
...prepareRemoveShare(shareId, registry),
|
|
1543
1556
|
account: walletClient.account,
|
|
1544
1557
|
chain: walletClient.chain ?? null
|
|
1545
1558
|
});
|
|
@@ -1566,14 +1579,17 @@ var acps = {
|
|
|
1566
1579
|
selectActiveACP,
|
|
1567
1580
|
removeActiveACP,
|
|
1568
1581
|
revokeACP,
|
|
1582
|
+
prepareRevokeACP,
|
|
1569
1583
|
revokeAllACPs,
|
|
1570
1584
|
isACPRevoked,
|
|
1571
1585
|
checkAccess,
|
|
1572
1586
|
shareOnChain,
|
|
1587
|
+
prepareShareOnChain,
|
|
1573
1588
|
getIncomingShares,
|
|
1574
1589
|
getShareFromChain,
|
|
1575
1590
|
importFromChain,
|
|
1576
1591
|
removeShareOnChain,
|
|
1592
|
+
prepareRemoveShare,
|
|
1577
1593
|
computeShareId,
|
|
1578
1594
|
applyACPDefaultsFromChain,
|
|
1579
1595
|
getAclServedAddresses,
|
|
@@ -3356,6 +3372,12 @@ function createCofheClientBase(opts) {
|
|
|
3356
3372
|
});
|
|
3357
3373
|
}
|
|
3358
3374
|
};
|
|
3375
|
+
const _requireIssuer = (acp, what) => {
|
|
3376
|
+
const sender = connectStore.getState().walletClient?.account?.address;
|
|
3377
|
+
if (sender == null || sender.toLowerCase() !== acp.issuer.toLowerCase()) {
|
|
3378
|
+
throw new Error(`Only the acp issuer can ${what}`);
|
|
3379
|
+
}
|
|
3380
|
+
};
|
|
3359
3381
|
async function connect(publicClient, walletClient) {
|
|
3360
3382
|
const state = connectStore.getState();
|
|
3361
3383
|
if (state.connected && state.publicClient === publicClient && state.walletClient === walletClient)
|
|
@@ -3523,6 +3545,11 @@ function createCofheClientBase(opts) {
|
|
|
3523
3545
|
const { walletClient } = connectStore.getState();
|
|
3524
3546
|
return acps.revokeACP(acp, walletClient);
|
|
3525
3547
|
},
|
|
3548
|
+
prepareRevokeACP: (acp) => {
|
|
3549
|
+
_requireConnected();
|
|
3550
|
+
_requireIssuer(acp, "revoke it");
|
|
3551
|
+
return acps.prepareRevokeACP(acp);
|
|
3552
|
+
},
|
|
3526
3553
|
revokeAllACPs: async (revokerContract) => {
|
|
3527
3554
|
_requireConnected();
|
|
3528
3555
|
const { publicClient, walletClient } = connectStore.getState();
|
|
@@ -3546,6 +3573,21 @@ function createCofheClientBase(opts) {
|
|
|
3546
3573
|
const sharingRegistry = await _resolveSharingRegistry(publicClient, chainId);
|
|
3547
3574
|
return acps.shareOnChain(acp, walletClient, sharingRegistry, { ...withAppKey(), ...options });
|
|
3548
3575
|
},
|
|
3576
|
+
prepareShareOnChain: async (acp, options) => {
|
|
3577
|
+
_requireConnected();
|
|
3578
|
+
_requireIssuer(acp, "share it on-chain");
|
|
3579
|
+
const { publicClient } = connectStore.getState();
|
|
3580
|
+
const chainId = await publicClient.getChainId();
|
|
3581
|
+
const sharingRegistry = await _resolveSharingRegistry(publicClient, chainId);
|
|
3582
|
+
return acps.prepareShareOnChain(acp, sharingRegistry, { ...withAppKey(), ...options });
|
|
3583
|
+
},
|
|
3584
|
+
prepareRemoveShare: async (shareId) => {
|
|
3585
|
+
_requireConnected();
|
|
3586
|
+
const { publicClient } = connectStore.getState();
|
|
3587
|
+
const chainId = await publicClient.getChainId();
|
|
3588
|
+
const sharingRegistry = await _resolveSharingRegistry(publicClient, chainId);
|
|
3589
|
+
return acps.prepareRemoveShare(shareId, sharingRegistry);
|
|
3590
|
+
},
|
|
3549
3591
|
getIncomingShares: async () => {
|
|
3550
3592
|
_requireConnected();
|
|
3551
3593
|
const { publicClient, walletClient } = connectStore.getState();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TASK_MANAGER_ID, COFHE_ADDRESS_BOOK_ADDRESS
|
|
1
|
+
import { CofheError, TASK_MANAGER_ID, COFHE_ADDRESS_BOOK_ADDRESS } from './chunk-J23FYAI2.js';
|
|
2
2
|
import { isAddress, getAddress, zeroAddress, isHex, parseAbi, keccak256, padHex, numberToHex, concatHex, toFunctionSelector, size, sliceHex, toHex, encodeAbiParameters, hexToBigInt, stringToHex, hexToNumber, toEventSignature, toFunctionSignature, decodeErrorResult, toEventSelector, decodeAbiParameters } from 'viem';
|
|
3
3
|
import nacl from 'tweetnacl';
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -86,9 +86,25 @@ var unsealWithPrivateKey = (privateKey, parsedData) => {
|
|
|
86
86
|
const nonce = parsedData.nonce instanceof Uint8Array ? parsedData.nonce : new Uint8Array(parsedData.nonce);
|
|
87
87
|
const ephemPublicKey = parsedData.public_key instanceof Uint8Array ? parsedData.public_key : new Uint8Array(parsedData.public_key);
|
|
88
88
|
const dataToDecrypt = parsedData.data instanceof Uint8Array ? parsedData.data : new Uint8Array(parsedData.data);
|
|
89
|
-
|
|
89
|
+
let decryptedMessage;
|
|
90
|
+
let cause;
|
|
91
|
+
try {
|
|
92
|
+
decryptedMessage = nacl.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(privateKey));
|
|
93
|
+
} catch (e) {
|
|
94
|
+
decryptedMessage = null;
|
|
95
|
+
cause = e instanceof Error ? e : void 0;
|
|
96
|
+
}
|
|
90
97
|
if (!decryptedMessage) {
|
|
91
|
-
throw new
|
|
98
|
+
throw new CofheError({
|
|
99
|
+
code: "SEAL_OUTPUT_FAILED" /* SealOutputFailed */,
|
|
100
|
+
message: "Failed to unseal decrypt response",
|
|
101
|
+
cause,
|
|
102
|
+
context: {
|
|
103
|
+
dataLength: dataToDecrypt.length,
|
|
104
|
+
nonceLength: nonce.length,
|
|
105
|
+
publicKeyLength: ephemPublicKey.length
|
|
106
|
+
}
|
|
107
|
+
});
|
|
92
108
|
}
|
|
93
109
|
return toBigInt(decryptedMessage);
|
|
94
110
|
};
|
|
@@ -705,15 +721,22 @@ var getAclServedAddresses = async (publicClient, chainId) => {
|
|
|
705
721
|
} catch {
|
|
706
722
|
return {};
|
|
707
723
|
}
|
|
724
|
+
let transient = false;
|
|
725
|
+
const readServedAddress = (functionName) => publicClient.readContract({ address: aclAddress, abi: ACL_SERVED_ADDRESSES_ABI, functionName }).catch((err) => {
|
|
726
|
+
if (revertErrorName(err, ACL_SERVED_ADDRESSES_ABI) === void 0)
|
|
727
|
+
transient = true;
|
|
728
|
+
return void 0;
|
|
729
|
+
});
|
|
708
730
|
const [defaultRevoker, shareRegistry] = await Promise.all([
|
|
709
|
-
|
|
710
|
-
|
|
731
|
+
readServedAddress("defaultRevokerContract"),
|
|
732
|
+
readServedAddress("shareRegistry")
|
|
711
733
|
]);
|
|
712
734
|
const resolved = {
|
|
713
735
|
defaultRevoker: defaultRevoker != null && defaultRevoker !== zeroAddress ? defaultRevoker : void 0,
|
|
714
736
|
shareRegistry: shareRegistry != null && shareRegistry !== zeroAddress ? shareRegistry : void 0
|
|
715
737
|
};
|
|
716
|
-
|
|
738
|
+
if (!transient)
|
|
739
|
+
aclServedAddressesCache.set(chainId, resolved);
|
|
717
740
|
return resolved;
|
|
718
741
|
};
|
|
719
742
|
|