@cmdoss/memwal-sdk 0.6.1 → 0.6.2

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.
Files changed (82) hide show
  1. package/ARCHITECTURE.md +547 -547
  2. package/BENCHMARKS.md +238 -238
  3. package/README.md +181 -181
  4. package/dist/ai-sdk/PDWVectorStore.d.ts.map +1 -1
  5. package/dist/ai-sdk/PDWVectorStore.js +4 -1
  6. package/dist/ai-sdk/PDWVectorStore.js.map +1 -1
  7. package/dist/browser.d.ts +5 -6
  8. package/dist/browser.d.ts.map +1 -1
  9. package/dist/browser.js +7 -6
  10. package/dist/browser.js.map +1 -1
  11. package/dist/client/ClientMemoryManager.d.ts +1 -0
  12. package/dist/client/ClientMemoryManager.d.ts.map +1 -1
  13. package/dist/client/ClientMemoryManager.js +5 -1
  14. package/dist/client/ClientMemoryManager.js.map +1 -1
  15. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  16. package/dist/client/SimplePDWClient.d.ts +23 -0
  17. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  18. package/dist/client/SimplePDWClient.js +15 -2
  19. package/dist/client/SimplePDWClient.js.map +1 -1
  20. package/dist/client/namespaces/IndexNamespace.d.ts +38 -9
  21. package/dist/client/namespaces/IndexNamespace.d.ts.map +1 -1
  22. package/dist/client/namespaces/IndexNamespace.js +77 -10
  23. package/dist/client/namespaces/IndexNamespace.js.map +1 -1
  24. package/dist/client/namespaces/SearchNamespace.d.ts.map +1 -1
  25. package/dist/client/namespaces/SearchNamespace.js +25 -14
  26. package/dist/client/namespaces/SearchNamespace.js.map +1 -1
  27. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
  28. package/dist/client/namespaces/consolidated/BlockchainNamespace.js +49 -1
  29. package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
  30. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +46 -0
  31. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  32. package/dist/client/namespaces/consolidated/StorageNamespace.js +34 -0
  33. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  34. package/dist/graph/GraphService.js +1 -1
  35. package/dist/permissions/ConsentRepository.browser.d.ts +56 -0
  36. package/dist/permissions/ConsentRepository.browser.d.ts.map +1 -0
  37. package/dist/permissions/ConsentRepository.browser.js +198 -0
  38. package/dist/permissions/ConsentRepository.browser.js.map +1 -0
  39. package/dist/services/GeminiAIService.d.ts.map +1 -1
  40. package/dist/services/GeminiAIService.js +283 -27
  41. package/dist/services/GeminiAIService.js.map +1 -1
  42. package/dist/services/MemoryIndexService.d.ts +31 -2
  43. package/dist/services/MemoryIndexService.d.ts.map +1 -1
  44. package/dist/services/MemoryIndexService.js +75 -3
  45. package/dist/services/MemoryIndexService.js.map +1 -1
  46. package/dist/services/storage/QuiltBatchManager.d.ts +10 -3
  47. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  48. package/dist/services/storage/QuiltBatchManager.js +49 -27
  49. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  50. package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
  51. package/dist/utils/rebuildIndexNode.js +109 -35
  52. package/dist/utils/rebuildIndexNode.js.map +1 -1
  53. package/dist/vector/NodeHnswService.d.ts.map +1 -1
  54. package/dist/vector/NodeHnswService.js +26 -7
  55. package/dist/vector/NodeHnswService.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/access/index.ts +8 -8
  58. package/src/aggregation/index.ts +8 -8
  59. package/src/ai-sdk/PDWVectorStore.ts +4 -1
  60. package/src/browser.ts +15 -10
  61. package/src/client/ClientMemoryManager.ts +6 -1
  62. package/src/client/SimplePDWClient.ts +40 -2
  63. package/src/client/namespaces/IndexNamespace.ts +89 -11
  64. package/src/client/namespaces/SearchNamespace.ts +27 -14
  65. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +55 -1
  66. package/src/client/namespaces/consolidated/StorageNamespace.ts +57 -0
  67. package/src/client/signers/DappKitSigner.ts +207 -207
  68. package/src/generated/pdw/capability.ts +319 -319
  69. package/src/generated/pdw/deps/sui/object.ts +12 -12
  70. package/src/generated/pdw/deps/sui/vec_map.ts +32 -32
  71. package/src/generated/pdw/memory.ts +1087 -1087
  72. package/src/generated/pdw/wallet.ts +123 -123
  73. package/src/generated/utils/index.ts +159 -159
  74. package/src/graph/GraphService.ts +1 -1
  75. package/src/permissions/ConsentRepository.browser.ts +249 -0
  76. package/src/permissions/index.ts +9 -9
  77. package/src/services/GeminiAIService.ts +283 -27
  78. package/src/services/MemoryIndexService.ts +85 -3
  79. package/src/services/storage/QuiltBatchManager.ts +55 -29
  80. package/src/utils/rebuildIndexNode.ts +126 -43
  81. package/src/vector/NodeHnswService.ts +29 -7
  82. package/src/wallet/index.ts +17 -17
@@ -1,319 +1,319 @@
1
- /**************************************************************
2
- * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
- **************************************************************/
4
-
5
-
6
- /**
7
- * Capability-based access control module for Personal Data Wallet
8
- *
9
- * This module implements the SEAL PrivateData pattern for simplified access
10
- * control using Move's capability pattern.
11
- *
12
- * Key benefits:
13
- *
14
- * - 1 user wallet instead of N HD wallets
15
- * - Object ownership = access permission (SEAL idiomatic)
16
- * - No global registry needed
17
- * - 60% gas savings vs allowlist pattern
18
- * - Type-safe access control
19
- *
20
- * Pattern combines:
21
- *
22
- * - Move Capability Pattern (object = proof of permission)
23
- * - SEAL PrivateData (nonce-based key derivation)
24
- * - PDW Requirements (app contexts)
25
- *
26
- * Reference:
27
- * https://github.com/MystenLabs/seal/blob/main/move/patterns/sources/private_data.move
28
- */
29
-
30
- import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
31
- import { bcs } from '@mysten/sui/bcs';
32
- import { type Transaction } from '@mysten/sui/transactions';
33
- import * as object from './deps/sui/object.js';
34
- const $moduleName = '@local-pkg/pdw::capability';
35
- export const MemoryCap = new MoveStruct({ name: `${$moduleName}::MemoryCap`, fields: {
36
- id: object.UID,
37
- /**
38
- * Random nonce for SEAL key derivation key_id = keccak256(package_id || owner ||
39
- * nonce)
40
- */
41
- nonce: bcs.vector(bcs.u8()),
42
- /** Application context (e.g., "MEMO", "HEALTH") */
43
- app_id: bcs.string()
44
- } });
45
- export const MemoryCapCreated = new MoveStruct({ name: `${$moduleName}::MemoryCapCreated`, fields: {
46
- cap_id: bcs.Address,
47
- owner: bcs.Address,
48
- app_id: bcs.string(),
49
- nonce: bcs.vector(bcs.u8()),
50
- created_at: bcs.u64()
51
- } });
52
- export const MemoryCapTransferred = new MoveStruct({ name: `${$moduleName}::MemoryCapTransferred`, fields: {
53
- cap_id: bcs.Address,
54
- from: bcs.Address,
55
- to: bcs.Address,
56
- app_id: bcs.string()
57
- } });
58
- export const MemoryCapBurned = new MoveStruct({ name: `${$moduleName}::MemoryCapBurned`, fields: {
59
- cap_id: bcs.Address,
60
- owner: bcs.Address,
61
- app_id: bcs.string()
62
- } });
63
- export const SealApproved = new MoveStruct({ name: `${$moduleName}::SealApproved`, fields: {
64
- cap_id: bcs.Address,
65
- owner: bcs.Address,
66
- app_id: bcs.string(),
67
- key_id: bcs.vector(bcs.u8())
68
- } });
69
- export interface CreateMemoryCapArguments {
70
- appId: RawTransactionArgument<string>;
71
- }
72
- export interface CreateMemoryCapOptions {
73
- package?: string;
74
- arguments: CreateMemoryCapArguments | [
75
- appId: RawTransactionArgument<string>
76
- ];
77
- }
78
- /**
79
- * Create a new memory capability for an app context
80
- *
81
- * This creates a MemoryCap object owned by the caller. The capability can be used
82
- * to:
83
- *
84
- * - Encrypt/decrypt memories for this app context
85
- * - Share access by transferring the capability
86
- *
87
- * @param app_id: Application identifier (e.g., "MEMO", "HEALTH") @param ctx:
88
- * Transaction context
89
- */
90
- export function createMemoryCap(options: CreateMemoryCapOptions) {
91
- const packageAddress = options.package ?? '@local-pkg/pdw';
92
- const argumentsTypes = [
93
- '0x0000000000000000000000000000000000000000000000000000000000000001::string::String'
94
- ] satisfies string[];
95
- const parameterNames = ["appId"];
96
- return (tx: Transaction) => tx.moveCall({
97
- package: packageAddress,
98
- module: 'capability',
99
- function: 'create_memory_cap',
100
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
101
- });
102
- }
103
- export interface SealApproveArguments {
104
- cap: RawTransactionArgument<string>;
105
- keyId: RawTransactionArgument<number[]>;
106
- }
107
- export interface SealApproveOptions {
108
- package?: string;
109
- arguments: SealApproveArguments | [
110
- cap: RawTransactionArgument<string>,
111
- keyId: RawTransactionArgument<number[]>
112
- ];
113
- }
114
- /**
115
- * SEAL-compliant approval function
116
- *
117
- * This function follows the SEAL PrivateData pattern:
118
- *
119
- * - Entry function that aborts on denial (SEAL requirement)
120
- * - Object holder can pass seal_approve
121
- * - Any dApp can call with user's connected wallet
122
- *
123
- * Flow:
124
- *
125
- * 1. Verify caller owns the capability (via object reference)
126
- * 2. Compute expected key_id from capability
127
- * 3. Validate provided key_id matches
128
- * 4. If valid, function returns (access granted)
129
- * 5. If invalid, function aborts (access denied)
130
- *
131
- * @param cap: Reference to the MemoryCap object @param key_id: SEAL key identifier
132
- * to validate @param ctx: Transaction context
133
- */
134
- export function sealApprove(options: SealApproveOptions) {
135
- const packageAddress = options.package ?? '@local-pkg/pdw';
136
- const argumentsTypes = [
137
- `${packageAddress}::capability::MemoryCap`,
138
- 'vector<u8>'
139
- ] satisfies string[];
140
- const parameterNames = ["cap", "keyId"];
141
- return (tx: Transaction) => tx.moveCall({
142
- package: packageAddress,
143
- module: 'capability',
144
- function: 'seal_approve',
145
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
146
- });
147
- }
148
- export interface TransferCapArguments {
149
- cap: RawTransactionArgument<string>;
150
- recipient: RawTransactionArgument<string>;
151
- }
152
- export interface TransferCapOptions {
153
- package?: string;
154
- arguments: TransferCapArguments | [
155
- cap: RawTransactionArgument<string>,
156
- recipient: RawTransactionArgument<string>
157
- ];
158
- }
159
- /**
160
- * Transfer capability to another address (for delegation/sharing)
161
- *
162
- * After transfer:
163
- *
164
- * - New owner can call seal_approve
165
- * - New owner can decrypt memories
166
- * - Original owner loses access
167
- *
168
- * @param cap: The capability to transfer (consumed) @param recipient: Address to
169
- * receive the capability
170
- */
171
- export function transferCap(options: TransferCapOptions) {
172
- const packageAddress = options.package ?? '@local-pkg/pdw';
173
- const argumentsTypes = [
174
- `${packageAddress}::capability::MemoryCap`,
175
- 'address'
176
- ] satisfies string[];
177
- const parameterNames = ["cap", "recipient"];
178
- return (tx: Transaction) => tx.moveCall({
179
- package: packageAddress,
180
- module: 'capability',
181
- function: 'transfer_cap',
182
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
183
- });
184
- }
185
- export interface BurnCapArguments {
186
- cap: RawTransactionArgument<string>;
187
- }
188
- export interface BurnCapOptions {
189
- package?: string;
190
- arguments: BurnCapArguments | [
191
- cap: RawTransactionArgument<string>
192
- ];
193
- }
194
- /**
195
- * Burn (delete) a capability
196
- *
197
- * This permanently revokes the capability. After burning:
198
- *
199
- * - No one can decrypt memories for this context
200
- * - Object is permanently deleted
201
- *
202
- * @param cap: The capability to burn (consumed)
203
- */
204
- export function burnCap(options: BurnCapOptions) {
205
- const packageAddress = options.package ?? '@local-pkg/pdw';
206
- const argumentsTypes = [
207
- `${packageAddress}::capability::MemoryCap`
208
- ] satisfies string[];
209
- const parameterNames = ["cap"];
210
- return (tx: Transaction) => tx.moveCall({
211
- package: packageAddress,
212
- module: 'capability',
213
- function: 'burn_cap',
214
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
215
- });
216
- }
217
- export interface GetAppIdArguments {
218
- cap: RawTransactionArgument<string>;
219
- }
220
- export interface GetAppIdOptions {
221
- package?: string;
222
- arguments: GetAppIdArguments | [
223
- cap: RawTransactionArgument<string>
224
- ];
225
- }
226
- /** Get the app_id from a capability */
227
- export function getAppId(options: GetAppIdOptions) {
228
- const packageAddress = options.package ?? '@local-pkg/pdw';
229
- const argumentsTypes = [
230
- `${packageAddress}::capability::MemoryCap`
231
- ] satisfies string[];
232
- const parameterNames = ["cap"];
233
- return (tx: Transaction) => tx.moveCall({
234
- package: packageAddress,
235
- module: 'capability',
236
- function: 'get_app_id',
237
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
238
- });
239
- }
240
- export interface GetNonceArguments {
241
- cap: RawTransactionArgument<string>;
242
- }
243
- export interface GetNonceOptions {
244
- package?: string;
245
- arguments: GetNonceArguments | [
246
- cap: RawTransactionArgument<string>
247
- ];
248
- }
249
- /** Get the nonce from a capability */
250
- export function getNonce(options: GetNonceOptions) {
251
- const packageAddress = options.package ?? '@local-pkg/pdw';
252
- const argumentsTypes = [
253
- `${packageAddress}::capability::MemoryCap`
254
- ] satisfies string[];
255
- const parameterNames = ["cap"];
256
- return (tx: Transaction) => tx.moveCall({
257
- package: packageAddress,
258
- module: 'capability',
259
- function: 'get_nonce',
260
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
261
- });
262
- }
263
- export interface GetCapIdArguments {
264
- cap: RawTransactionArgument<string>;
265
- }
266
- export interface GetCapIdOptions {
267
- package?: string;
268
- arguments: GetCapIdArguments | [
269
- cap: RawTransactionArgument<string>
270
- ];
271
- }
272
- /** Get the object ID of a capability */
273
- export function getCapId(options: GetCapIdOptions) {
274
- const packageAddress = options.package ?? '@local-pkg/pdw';
275
- const argumentsTypes = [
276
- `${packageAddress}::capability::MemoryCap`
277
- ] satisfies string[];
278
- const parameterNames = ["cap"];
279
- return (tx: Transaction) => tx.moveCall({
280
- package: packageAddress,
281
- module: 'capability',
282
- function: 'get_cap_id',
283
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
284
- });
285
- }
286
- export interface ComputeSealKeyIdArguments {
287
- cap: RawTransactionArgument<string>;
288
- owner: RawTransactionArgument<string>;
289
- }
290
- export interface ComputeSealKeyIdOptions {
291
- package?: string;
292
- arguments: ComputeSealKeyIdArguments | [
293
- cap: RawTransactionArgument<string>,
294
- owner: RawTransactionArgument<string>
295
- ];
296
- }
297
- /**
298
- * Compute the SEAL key_id for this capability
299
- *
300
- * This can be called off-chain to get the key_id needed for encryption. key_id =
301
- * keccak256(owner || nonce)
302
- *
303
- * @param cap: Reference to the capability @param owner: Owner address (needed for
304
- * key derivation) @return: The computed key_id bytes
305
- */
306
- export function computeSealKeyId(options: ComputeSealKeyIdOptions) {
307
- const packageAddress = options.package ?? '@local-pkg/pdw';
308
- const argumentsTypes = [
309
- `${packageAddress}::capability::MemoryCap`,
310
- 'address'
311
- ] satisfies string[];
312
- const parameterNames = ["cap", "owner"];
313
- return (tx: Transaction) => tx.moveCall({
314
- package: packageAddress,
315
- module: 'capability',
316
- function: 'compute_seal_key_id',
317
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
318
- });
319
- }
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+
6
+ /**
7
+ * Capability-based access control module for Personal Data Wallet
8
+ *
9
+ * This module implements the SEAL PrivateData pattern for simplified access
10
+ * control using Move's capability pattern.
11
+ *
12
+ * Key benefits:
13
+ *
14
+ * - 1 user wallet instead of N HD wallets
15
+ * - Object ownership = access permission (SEAL idiomatic)
16
+ * - No global registry needed
17
+ * - 60% gas savings vs allowlist pattern
18
+ * - Type-safe access control
19
+ *
20
+ * Pattern combines:
21
+ *
22
+ * - Move Capability Pattern (object = proof of permission)
23
+ * - SEAL PrivateData (nonce-based key derivation)
24
+ * - PDW Requirements (app contexts)
25
+ *
26
+ * Reference:
27
+ * https://github.com/MystenLabs/seal/blob/main/move/patterns/sources/private_data.move
28
+ */
29
+
30
+ import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
31
+ import { bcs } from '@mysten/sui/bcs';
32
+ import { type Transaction } from '@mysten/sui/transactions';
33
+ import * as object from './deps/sui/object.js';
34
+ const $moduleName = '@local-pkg/pdw::capability';
35
+ export const MemoryCap = new MoveStruct({ name: `${$moduleName}::MemoryCap`, fields: {
36
+ id: object.UID,
37
+ /**
38
+ * Random nonce for SEAL key derivation key_id = keccak256(package_id || owner ||
39
+ * nonce)
40
+ */
41
+ nonce: bcs.vector(bcs.u8()),
42
+ /** Application context (e.g., "MEMO", "HEALTH") */
43
+ app_id: bcs.string()
44
+ } });
45
+ export const MemoryCapCreated = new MoveStruct({ name: `${$moduleName}::MemoryCapCreated`, fields: {
46
+ cap_id: bcs.Address,
47
+ owner: bcs.Address,
48
+ app_id: bcs.string(),
49
+ nonce: bcs.vector(bcs.u8()),
50
+ created_at: bcs.u64()
51
+ } });
52
+ export const MemoryCapTransferred = new MoveStruct({ name: `${$moduleName}::MemoryCapTransferred`, fields: {
53
+ cap_id: bcs.Address,
54
+ from: bcs.Address,
55
+ to: bcs.Address,
56
+ app_id: bcs.string()
57
+ } });
58
+ export const MemoryCapBurned = new MoveStruct({ name: `${$moduleName}::MemoryCapBurned`, fields: {
59
+ cap_id: bcs.Address,
60
+ owner: bcs.Address,
61
+ app_id: bcs.string()
62
+ } });
63
+ export const SealApproved = new MoveStruct({ name: `${$moduleName}::SealApproved`, fields: {
64
+ cap_id: bcs.Address,
65
+ owner: bcs.Address,
66
+ app_id: bcs.string(),
67
+ key_id: bcs.vector(bcs.u8())
68
+ } });
69
+ export interface CreateMemoryCapArguments {
70
+ appId: RawTransactionArgument<string>;
71
+ }
72
+ export interface CreateMemoryCapOptions {
73
+ package?: string;
74
+ arguments: CreateMemoryCapArguments | [
75
+ appId: RawTransactionArgument<string>
76
+ ];
77
+ }
78
+ /**
79
+ * Create a new memory capability for an app context
80
+ *
81
+ * This creates a MemoryCap object owned by the caller. The capability can be used
82
+ * to:
83
+ *
84
+ * - Encrypt/decrypt memories for this app context
85
+ * - Share access by transferring the capability
86
+ *
87
+ * @param app_id: Application identifier (e.g., "MEMO", "HEALTH") @param ctx:
88
+ * Transaction context
89
+ */
90
+ export function createMemoryCap(options: CreateMemoryCapOptions) {
91
+ const packageAddress = options.package ?? '@local-pkg/pdw';
92
+ const argumentsTypes = [
93
+ '0x0000000000000000000000000000000000000000000000000000000000000001::string::String'
94
+ ] satisfies string[];
95
+ const parameterNames = ["appId"];
96
+ return (tx: Transaction) => tx.moveCall({
97
+ package: packageAddress,
98
+ module: 'capability',
99
+ function: 'create_memory_cap',
100
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
101
+ });
102
+ }
103
+ export interface SealApproveArguments {
104
+ cap: RawTransactionArgument<string>;
105
+ keyId: RawTransactionArgument<number[]>;
106
+ }
107
+ export interface SealApproveOptions {
108
+ package?: string;
109
+ arguments: SealApproveArguments | [
110
+ cap: RawTransactionArgument<string>,
111
+ keyId: RawTransactionArgument<number[]>
112
+ ];
113
+ }
114
+ /**
115
+ * SEAL-compliant approval function
116
+ *
117
+ * This function follows the SEAL PrivateData pattern:
118
+ *
119
+ * - Entry function that aborts on denial (SEAL requirement)
120
+ * - Object holder can pass seal_approve
121
+ * - Any dApp can call with user's connected wallet
122
+ *
123
+ * Flow:
124
+ *
125
+ * 1. Verify caller owns the capability (via object reference)
126
+ * 2. Compute expected key_id from capability
127
+ * 3. Validate provided key_id matches
128
+ * 4. If valid, function returns (access granted)
129
+ * 5. If invalid, function aborts (access denied)
130
+ *
131
+ * @param cap: Reference to the MemoryCap object @param key_id: SEAL key identifier
132
+ * to validate @param ctx: Transaction context
133
+ */
134
+ export function sealApprove(options: SealApproveOptions) {
135
+ const packageAddress = options.package ?? '@local-pkg/pdw';
136
+ const argumentsTypes = [
137
+ `${packageAddress}::capability::MemoryCap`,
138
+ 'vector<u8>'
139
+ ] satisfies string[];
140
+ const parameterNames = ["cap", "keyId"];
141
+ return (tx: Transaction) => tx.moveCall({
142
+ package: packageAddress,
143
+ module: 'capability',
144
+ function: 'seal_approve',
145
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
146
+ });
147
+ }
148
+ export interface TransferCapArguments {
149
+ cap: RawTransactionArgument<string>;
150
+ recipient: RawTransactionArgument<string>;
151
+ }
152
+ export interface TransferCapOptions {
153
+ package?: string;
154
+ arguments: TransferCapArguments | [
155
+ cap: RawTransactionArgument<string>,
156
+ recipient: RawTransactionArgument<string>
157
+ ];
158
+ }
159
+ /**
160
+ * Transfer capability to another address (for delegation/sharing)
161
+ *
162
+ * After transfer:
163
+ *
164
+ * - New owner can call seal_approve
165
+ * - New owner can decrypt memories
166
+ * - Original owner loses access
167
+ *
168
+ * @param cap: The capability to transfer (consumed) @param recipient: Address to
169
+ * receive the capability
170
+ */
171
+ export function transferCap(options: TransferCapOptions) {
172
+ const packageAddress = options.package ?? '@local-pkg/pdw';
173
+ const argumentsTypes = [
174
+ `${packageAddress}::capability::MemoryCap`,
175
+ 'address'
176
+ ] satisfies string[];
177
+ const parameterNames = ["cap", "recipient"];
178
+ return (tx: Transaction) => tx.moveCall({
179
+ package: packageAddress,
180
+ module: 'capability',
181
+ function: 'transfer_cap',
182
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
183
+ });
184
+ }
185
+ export interface BurnCapArguments {
186
+ cap: RawTransactionArgument<string>;
187
+ }
188
+ export interface BurnCapOptions {
189
+ package?: string;
190
+ arguments: BurnCapArguments | [
191
+ cap: RawTransactionArgument<string>
192
+ ];
193
+ }
194
+ /**
195
+ * Burn (delete) a capability
196
+ *
197
+ * This permanently revokes the capability. After burning:
198
+ *
199
+ * - No one can decrypt memories for this context
200
+ * - Object is permanently deleted
201
+ *
202
+ * @param cap: The capability to burn (consumed)
203
+ */
204
+ export function burnCap(options: BurnCapOptions) {
205
+ const packageAddress = options.package ?? '@local-pkg/pdw';
206
+ const argumentsTypes = [
207
+ `${packageAddress}::capability::MemoryCap`
208
+ ] satisfies string[];
209
+ const parameterNames = ["cap"];
210
+ return (tx: Transaction) => tx.moveCall({
211
+ package: packageAddress,
212
+ module: 'capability',
213
+ function: 'burn_cap',
214
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
215
+ });
216
+ }
217
+ export interface GetAppIdArguments {
218
+ cap: RawTransactionArgument<string>;
219
+ }
220
+ export interface GetAppIdOptions {
221
+ package?: string;
222
+ arguments: GetAppIdArguments | [
223
+ cap: RawTransactionArgument<string>
224
+ ];
225
+ }
226
+ /** Get the app_id from a capability */
227
+ export function getAppId(options: GetAppIdOptions) {
228
+ const packageAddress = options.package ?? '@local-pkg/pdw';
229
+ const argumentsTypes = [
230
+ `${packageAddress}::capability::MemoryCap`
231
+ ] satisfies string[];
232
+ const parameterNames = ["cap"];
233
+ return (tx: Transaction) => tx.moveCall({
234
+ package: packageAddress,
235
+ module: 'capability',
236
+ function: 'get_app_id',
237
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
238
+ });
239
+ }
240
+ export interface GetNonceArguments {
241
+ cap: RawTransactionArgument<string>;
242
+ }
243
+ export interface GetNonceOptions {
244
+ package?: string;
245
+ arguments: GetNonceArguments | [
246
+ cap: RawTransactionArgument<string>
247
+ ];
248
+ }
249
+ /** Get the nonce from a capability */
250
+ export function getNonce(options: GetNonceOptions) {
251
+ const packageAddress = options.package ?? '@local-pkg/pdw';
252
+ const argumentsTypes = [
253
+ `${packageAddress}::capability::MemoryCap`
254
+ ] satisfies string[];
255
+ const parameterNames = ["cap"];
256
+ return (tx: Transaction) => tx.moveCall({
257
+ package: packageAddress,
258
+ module: 'capability',
259
+ function: 'get_nonce',
260
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
261
+ });
262
+ }
263
+ export interface GetCapIdArguments {
264
+ cap: RawTransactionArgument<string>;
265
+ }
266
+ export interface GetCapIdOptions {
267
+ package?: string;
268
+ arguments: GetCapIdArguments | [
269
+ cap: RawTransactionArgument<string>
270
+ ];
271
+ }
272
+ /** Get the object ID of a capability */
273
+ export function getCapId(options: GetCapIdOptions) {
274
+ const packageAddress = options.package ?? '@local-pkg/pdw';
275
+ const argumentsTypes = [
276
+ `${packageAddress}::capability::MemoryCap`
277
+ ] satisfies string[];
278
+ const parameterNames = ["cap"];
279
+ return (tx: Transaction) => tx.moveCall({
280
+ package: packageAddress,
281
+ module: 'capability',
282
+ function: 'get_cap_id',
283
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
284
+ });
285
+ }
286
+ export interface ComputeSealKeyIdArguments {
287
+ cap: RawTransactionArgument<string>;
288
+ owner: RawTransactionArgument<string>;
289
+ }
290
+ export interface ComputeSealKeyIdOptions {
291
+ package?: string;
292
+ arguments: ComputeSealKeyIdArguments | [
293
+ cap: RawTransactionArgument<string>,
294
+ owner: RawTransactionArgument<string>
295
+ ];
296
+ }
297
+ /**
298
+ * Compute the SEAL key_id for this capability
299
+ *
300
+ * This can be called off-chain to get the key_id needed for encryption. key_id =
301
+ * keccak256(owner || nonce)
302
+ *
303
+ * @param cap: Reference to the capability @param owner: Owner address (needed for
304
+ * key derivation) @return: The computed key_id bytes
305
+ */
306
+ export function computeSealKeyId(options: ComputeSealKeyIdOptions) {
307
+ const packageAddress = options.package ?? '@local-pkg/pdw';
308
+ const argumentsTypes = [
309
+ `${packageAddress}::capability::MemoryCap`,
310
+ 'address'
311
+ ] satisfies string[];
312
+ const parameterNames = ["cap", "owner"];
313
+ return (tx: Transaction) => tx.moveCall({
314
+ package: packageAddress,
315
+ module: 'capability',
316
+ function: 'compute_seal_key_id',
317
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
318
+ });
319
+ }
@@ -1,13 +1,13 @@
1
- /**************************************************************
2
- * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
- **************************************************************/
4
-
5
-
6
- /** Sui object identifiers */
7
-
8
- import { MoveStruct } from '../../../utils/index.js';
9
- import { bcs } from '@mysten/sui/bcs';
10
- const $moduleName = '0x2::object';
11
- export const UID = new MoveStruct({ name: `${$moduleName}::UID`, fields: {
12
- id: bcs.Address
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+
6
+ /** Sui object identifiers */
7
+
8
+ import { MoveStruct } from '../../../utils/index.js';
9
+ import { bcs } from '@mysten/sui/bcs';
10
+ const $moduleName = '0x2::object';
11
+ export const UID = new MoveStruct({ name: `${$moduleName}::UID`, fields: {
12
+ id: bcs.Address
13
13
  } });