@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/dist/acps.d.ts CHANGED
@@ -1,364 +1,10 @@
1
- import { A as ACP, S as ShareLabel, a as StoredValueLabel, E as EventValueLabel, L as LabelledShare, V as ValidationResult, b as ACPPublic, c as ACPSignaturePrimaryType, d as EIP712Types, e as EIP712Message, f as SerializedACP } from './onchain-utils-D9Z33IP7.js';
2
- export { O as ACPAccessStatus, P as ACPHashFields, h as ACPMetadata, H as ACPOf, D as ACPPrivate, M as ACPScope, N as ACPScopeOptions, F as ACPType, l as ACPUtils, p as AclServedAddresses, C as CreateSelfACPOptions, g as CreateSharingACPOptions, k as EIP712Domain, B as EIP712Type, r as EthEncryptedData, Q as Expand, G as GenerateSealingKey, I as ImportACPOptions, I as ImportSharedACPOptions, j as IncomingShare, v as LabelVerification, R as RecipientACP, q as SealingKeyPair, J as SelfACP, C as SelfACPOptions, x as ShareLabelCheck, t as ShareLabelReadArg, w as ShareLabelVerifyMode, i as SharedACP, K as SharingACP, g as SharingACPOptions, U as UnlabelledLabel, o as clearAclServedAddresses, m as getAclAddress, n as getAclServedAddresses, s as seal, u as unsealWithPrivateKey, y as verifyShareLabel, z as verifyShareLabels } from './onchain-utils-D9Z33IP7.js';
3
- import { Hex, AbiParameterToPrimitiveType, Address, PublicClient, Abi, ContractFunctionName, ContractFunctionArgs, Log } from 'viem';
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, ACP_REVOKER_ABI, ACP_SHARE_REGISTRY_ABI, ACP_SHARE_TUPLE_ABI, ACP_STORE_DEFAULTS, type ChainShare, type DecodedShareMetadata, EIP712Message, EIP712Types, ERC7984_ABI, type EventValueDescription, EventValueLabel, ImportACPOptionsValidator, ImportACPValidator, LabelledShare, type PostedShare, type PostedShares, LAYOUT_VERSION as SHARE_METADATA_VERSION, SelfACPOptionsValidator, SelfACPValidator, SerializedACP, type ShareHeader, ShareLabel, type ShareLabelAbis, type ShareLabelArg, type ShareLabelDescription, type ShareLabelParam, SharingACPOptionsValidator, SharingACPValidator, SignatureTypes, SignatureUtils, type StoredValueDescription, StoredValueLabel, UNLABELLED, type UnlabelledDescription, type UnreadableShare, ValidationResult, ValidationUtils, type ViewFunctionLabelOptions, _acpStore, acpStore, addressNotZeroSchema, addressSchema, bytesNotEmptySchema, bytesSchema, clearStaleStore, computeShareId, contractsSchema, decodeShareAppKey, decodeShareMetadata, decodeShareMetadataFull, describeShareLabels, describeShareMetadata, encodeShareMetadata, eventLogLabel, getACP, getACPs, getActiveACP, getActiveACPHash, getSignatureTypesAndMessage, handlesSchema, readPostedShares, readShare, readSharesFor, removeACP, removeActiveACPHash, resetStore, setACP, setActiveACPHash, shareAppKey, shareIdOfChainShare, toChainShare, validateImportACP, validateImportACPOptions, validateSelfACP, validateSelfACPOptions, validateSharingACP, validateSharingACPOptions, viewFunctionLabel };
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-BQWHPIYU.js';
2
- import './chunk-XQ32JG3T.js';
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, ACP_SHARE_REGISTRY_ABI, readShare, readSharesFor, toChainShare, ACP_REVOKER_ABI, decodeShareAppKey, encodeShareMetadata } from './chunk-BQWHPIYU.js';
3
- import { sleep, getPublicClientChainID, getWalletClientAccount, validateBigIntInRange, toBigIntOrThrow, hexToBytes, toHexString, FheUintUTypes } from './chunk-6ZW76ZKB.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-XQ32JG3T.js';
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 revokeACP = async (acp, walletClient) => {
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 shareOnChain = async (acp, walletClient, registry, options = {}) => {
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
- address: registry,
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: computeShareId(acp) };
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
- address: registry,
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, CofheError } from './chunk-XQ32JG3T.js';
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
- const decryptedMessage = nacl.box.open(dataToDecrypt, nonce, ephemPublicKey, fromHexString(privateKey));
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 Error("Failed to decrypt message");
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
- publicClient.readContract({ address: aclAddress, abi: ACL_SERVED_ADDRESSES_ABI, functionName: "defaultRevokerContract" }).catch(() => void 0),
710
- publicClient.readContract({ address: aclAddress, abi: ACL_SERVED_ADDRESSES_ABI, functionName: "shareRegistry" }).catch(() => void 0)
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
- aclServedAddressesCache.set(chainId, resolved);
738
+ if (!transient)
739
+ aclServedAddressesCache.set(chainId, resolved);
717
740
  return resolved;
718
741
  };
719
742
 
@@ -1,4 +1,4 @@
1
- import { CofheError } from './chunk-XQ32JG3T.js';
1
+ import { CofheError } from './chunk-J23FYAI2.js';
2
2
  import 'viem';
3
3
 
4
4
  // core/types.ts