@cmdoss/memwal-sdk 0.6.2 → 0.8.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/ARCHITECTURE.md +547 -547
- package/BENCHMARKS.md +238 -238
- package/README.md +310 -181
- package/dist/ai-sdk/tools.d.ts +2 -2
- package/dist/ai-sdk/tools.js +2 -2
- package/dist/client/ClientMemoryManager.js +2 -2
- package/dist/client/ClientMemoryManager.js.map +1 -1
- package/dist/client/PersonalDataWallet.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.d.ts +29 -1
- package/dist/client/SimplePDWClient.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.js +45 -13
- package/dist/client/SimplePDWClient.js.map +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
- package/dist/client/namespaces/MemoryNamespace.d.ts +31 -0
- package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/MemoryNamespace.js +272 -39
- package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
- package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +12 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js +62 -4
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +67 -2
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.js +549 -16
- package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
- package/dist/config/ConfigurationHelper.js +61 -61
- package/dist/config/defaults.js +2 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/graph/GraphService.js +21 -21
- package/dist/graph/GraphService.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
- package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.js +37 -15
- package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
- package/dist/infrastructure/seal/SealService.d.ts +13 -5
- package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
- package/dist/infrastructure/seal/SealService.js +36 -34
- package/dist/infrastructure/seal/SealService.js.map +1 -1
- package/dist/langchain/createPDWRAG.js +30 -30
- package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
- package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.js +44 -4
- package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
- package/dist/services/CapabilityService.d.ts.map +1 -1
- package/dist/services/CapabilityService.js +30 -14
- package/dist/services/CapabilityService.js.map +1 -1
- package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
- package/dist/services/CrossContextPermissionService.js +9 -7
- package/dist/services/CrossContextPermissionService.js.map +1 -1
- package/dist/services/EmbeddingService.d.ts +28 -1
- package/dist/services/EmbeddingService.d.ts.map +1 -1
- package/dist/services/EmbeddingService.js +54 -0
- package/dist/services/EmbeddingService.js.map +1 -1
- package/dist/services/EncryptionService.d.ts.map +1 -1
- package/dist/services/EncryptionService.js +6 -5
- package/dist/services/EncryptionService.js.map +1 -1
- package/dist/services/GeminiAIService.js +309 -309
- package/dist/services/IndexManager.d.ts +5 -1
- package/dist/services/IndexManager.d.ts.map +1 -1
- package/dist/services/IndexManager.js +17 -40
- package/dist/services/IndexManager.js.map +1 -1
- package/dist/services/QueryService.js +1 -1
- package/dist/services/QueryService.js.map +1 -1
- package/dist/services/StorageService.d.ts +11 -0
- package/dist/services/StorageService.d.ts.map +1 -1
- package/dist/services/StorageService.js +73 -10
- package/dist/services/StorageService.js.map +1 -1
- package/dist/services/TransactionService.d.ts +20 -0
- package/dist/services/TransactionService.d.ts.map +1 -1
- package/dist/services/TransactionService.js +43 -0
- package/dist/services/TransactionService.js.map +1 -1
- package/dist/services/ViewService.js +2 -2
- package/dist/services/ViewService.js.map +1 -1
- package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
- package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
- package/dist/services/storage/QuiltBatchManager.js +410 -20
- package/dist/services/storage/QuiltBatchManager.js.map +1 -1
- package/dist/services/storage/index.d.ts +1 -1
- package/dist/services/storage/index.d.ts.map +1 -1
- package/dist/services/storage/index.js.map +1 -1
- package/dist/utils/LRUCache.d.ts +106 -0
- package/dist/utils/LRUCache.d.ts.map +1 -0
- package/dist/utils/LRUCache.js +281 -0
- package/dist/utils/LRUCache.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/memoryIndexOnChain.d.ts +212 -0
- package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
- package/dist/utils/memoryIndexOnChain.js +312 -0
- package/dist/utils/memoryIndexOnChain.js.map +1 -0
- package/dist/utils/rebuildIndexNode.d.ts +29 -0
- package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
- package/dist/utils/rebuildIndexNode.js +366 -98
- package/dist/utils/rebuildIndexNode.js.map +1 -1
- package/dist/vector/HnswWasmService.d.ts +20 -5
- package/dist/vector/HnswWasmService.d.ts.map +1 -1
- package/dist/vector/HnswWasmService.js +73 -40
- package/dist/vector/HnswWasmService.js.map +1 -1
- package/dist/vector/IHnswService.d.ts +10 -1
- package/dist/vector/IHnswService.d.ts.map +1 -1
- package/dist/vector/IHnswService.js.map +1 -1
- package/dist/vector/NodeHnswService.d.ts +16 -0
- package/dist/vector/NodeHnswService.d.ts.map +1 -1
- package/dist/vector/NodeHnswService.js +84 -5
- package/dist/vector/NodeHnswService.js.map +1 -1
- package/dist/vector/createHnswService.d.ts +1 -1
- package/dist/vector/createHnswService.js +1 -1
- package/dist/vector/index.d.ts +1 -1
- package/dist/vector/index.js +1 -1
- package/package.json +157 -157
- package/src/access/PermissionService.ts +635 -635
- package/src/aggregation/AggregationService.ts +389 -389
- package/src/ai-sdk/PDWVectorStore.ts +715 -715
- package/src/ai-sdk/index.ts +65 -65
- package/src/ai-sdk/tools.ts +460 -460
- package/src/ai-sdk/types.ts +404 -404
- package/src/batch/BatchManager.ts +597 -597
- package/src/batch/BatchingService.ts +429 -429
- package/src/batch/MemoryProcessingCache.ts +492 -492
- package/src/batch/index.ts +30 -30
- package/src/browser.ts +200 -200
- package/src/client/ClientMemoryManager.ts +987 -987
- package/src/client/PersonalDataWallet.ts +345 -345
- package/src/client/SimplePDWClient.ts +1289 -1222
- package/src/client/factory.ts +154 -154
- package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
- package/src/client/namespaces/BatchNamespace.ts +356 -356
- package/src/client/namespaces/CacheNamespace.ts +123 -123
- package/src/client/namespaces/CapabilityNamespace.ts +217 -217
- package/src/client/namespaces/ClassifyNamespace.ts +169 -169
- package/src/client/namespaces/ContextNamespace.ts +297 -297
- package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
- package/src/client/namespaces/EncryptionNamespace.ts +221 -221
- package/src/client/namespaces/GraphNamespace.ts +468 -468
- package/src/client/namespaces/IndexNamespace.ts +361 -361
- package/src/client/namespaces/MemoryNamespace.ts +1422 -1135
- package/src/client/namespaces/PermissionsNamespace.ts +254 -254
- package/src/client/namespaces/PipelineNamespace.ts +220 -220
- package/src/client/namespaces/SearchNamespace.ts +1049 -1049
- package/src/client/namespaces/StorageNamespace.ts +458 -458
- package/src/client/namespaces/TxNamespace.ts +260 -260
- package/src/client/namespaces/WalletNamespace.ts +243 -243
- package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
- package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -546
- package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
- package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
- package/src/client/namespaces/consolidated/index.ts +39 -39
- package/src/client/signers/KeypairSigner.ts +108 -108
- package/src/client/signers/UnifiedSigner.ts +110 -110
- package/src/client/signers/WalletAdapterSigner.ts +159 -159
- package/src/client/signers/index.ts +26 -26
- package/src/config/ConfigurationHelper.ts +412 -412
- package/src/config/defaults.ts +51 -51
- package/src/config/index.ts +8 -8
- package/src/config/validation.ts +70 -70
- package/src/core/index.ts +14 -14
- package/src/core/interfaces/IService.ts +307 -307
- package/src/core/interfaces/index.ts +8 -8
- package/src/core/types/capability.ts +297 -297
- package/src/core/types/index.ts +870 -870
- package/src/core/types/wallet.ts +270 -270
- package/src/core/types.ts +9 -9
- package/src/core/wallet.ts +222 -222
- package/src/embedding/index.ts +19 -19
- package/src/embedding/types.ts +357 -357
- package/src/errors/index.ts +602 -602
- package/src/errors/recovery.ts +461 -461
- package/src/errors/validation.ts +567 -567
- package/src/generated/pdw/capability.ts +319 -319
- package/src/graph/GraphService.ts +887 -887
- package/src/graph/KnowledgeGraphManager.ts +728 -728
- package/src/graph/index.ts +25 -25
- package/src/index.ts +498 -474
- package/src/infrastructure/index.ts +22 -22
- package/src/infrastructure/seal/EncryptionService.ts +628 -603
- package/src/infrastructure/seal/SealService.ts +613 -615
- package/src/infrastructure/seal/index.ts +9 -9
- package/src/infrastructure/sui/BlockchainManager.ts +627 -627
- package/src/infrastructure/sui/SuiService.ts +888 -888
- package/src/infrastructure/sui/index.ts +9 -9
- package/src/infrastructure/walrus/StorageManager.ts +604 -604
- package/src/infrastructure/walrus/WalrusStorageService.ts +612 -612
- package/src/infrastructure/walrus/index.ts +9 -9
- package/src/langchain/PDWEmbeddings.ts +145 -145
- package/src/langchain/PDWVectorStore.ts +456 -456
- package/src/langchain/createPDWRAG.ts +303 -303
- package/src/langchain/index.ts +47 -47
- package/src/permissions/ConsentRepository.browser.ts +249 -249
- package/src/permissions/ConsentRepository.ts +364 -364
- package/src/pipeline/MemoryPipeline.ts +862 -862
- package/src/pipeline/PipelineManager.ts +683 -683
- package/src/pipeline/index.ts +26 -26
- package/src/retrieval/AdvancedSearchService.ts +629 -629
- package/src/retrieval/MemoryAnalyticsService.ts +711 -711
- package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
- package/src/retrieval/MemoryRetrievalService.ts +904 -830
- package/src/retrieval/index.ts +42 -42
- package/src/services/BatchService.ts +352 -352
- package/src/services/CapabilityService.ts +464 -448
- package/src/services/ClassifierService.ts +465 -465
- package/src/services/CrossContextPermissionService.ts +486 -484
- package/src/services/EmbeddingService.ts +771 -706
- package/src/services/EncryptionService.ts +712 -711
- package/src/services/GeminiAIService.ts +753 -753
- package/src/services/IndexManager.ts +977 -1004
- package/src/services/MemoryIndexService.ts +1003 -1003
- package/src/services/MemoryService.ts +369 -369
- package/src/services/QueryService.ts +890 -890
- package/src/services/StorageService.ts +1182 -1111
- package/src/services/TransactionService.ts +838 -790
- package/src/services/VectorService.ts +462 -462
- package/src/services/ViewService.ts +484 -484
- package/src/services/index.ts +25 -25
- package/src/services/storage/BlobAttributesManager.ts +333 -333
- package/src/services/storage/KnowledgeGraphManager.ts +425 -425
- package/src/services/storage/MemorySearchManager.ts +387 -387
- package/src/services/storage/QuiltBatchManager.ts +1130 -660
- package/src/services/storage/WalrusMetadataManager.ts +268 -268
- package/src/services/storage/WalrusStorageManager.ts +287 -287
- package/src/services/storage/index.ts +57 -52
- package/src/types/index.ts +13 -13
- package/src/utils/LRUCache.ts +378 -0
- package/src/utils/index.ts +76 -68
- package/src/utils/memoryIndexOnChain.ts +507 -0
- package/src/utils/rebuildIndex.ts +290 -290
- package/src/utils/rebuildIndexNode.ts +771 -424
- package/src/vector/BrowserHnswIndexService.ts +758 -758
- package/src/vector/HnswWasmService.ts +731 -679
- package/src/vector/IHnswService.ts +233 -224
- package/src/vector/NodeHnswService.ts +833 -735
- package/src/vector/VectorManager.ts +478 -478
- package/src/vector/createHnswService.ts +135 -135
- package/src/vector/index.ts +56 -56
- package/src/wallet/ContextWalletService.ts +656 -656
- package/src/wallet/MainWalletService.ts +317 -317
|
@@ -1,243 +1,243 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wallet Namespace - Simplified Wallet Operations
|
|
3
|
-
*
|
|
4
|
-
* Provides basic wallet operations without HD wallet complexity.
|
|
5
|
-
* In the new capability-based architecture, wallet operations are minimal:
|
|
6
|
-
* - Get current wallet address
|
|
7
|
-
* - Check connection status
|
|
8
|
-
* - Query owned objects
|
|
9
|
-
*
|
|
10
|
-
* @module client/namespaces
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import type { ServiceContainer } from '../SimplePDWClient';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Wallet info
|
|
17
|
-
*/
|
|
18
|
-
export interface WalletInfo {
|
|
19
|
-
/** Wallet address */
|
|
20
|
-
address: string;
|
|
21
|
-
/** Whether wallet is connected */
|
|
22
|
-
connected: boolean;
|
|
23
|
-
/** Network the wallet is on */
|
|
24
|
-
network: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Object info
|
|
29
|
-
*/
|
|
30
|
-
export interface OwnedObject {
|
|
31
|
-
/** Object ID */
|
|
32
|
-
id: string;
|
|
33
|
-
/** Object type */
|
|
34
|
-
type: string;
|
|
35
|
-
/** Object version */
|
|
36
|
-
version: string;
|
|
37
|
-
/** Object digest */
|
|
38
|
-
digest: string;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Wallet Namespace
|
|
43
|
-
*
|
|
44
|
-
* Simplified wallet operations
|
|
45
|
-
*/
|
|
46
|
-
export class WalletNamespace {
|
|
47
|
-
constructor(private services: ServiceContainer) {}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Get current wallet address
|
|
51
|
-
*
|
|
52
|
-
* @returns Wallet address
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```typescript
|
|
56
|
-
* const address = await pdw.wallet.getAddress();
|
|
57
|
-
* console.log('Connected as:', address);
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
async getAddress(): Promise<string> {
|
|
61
|
-
return this.services.config.userAddress;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Check if wallet is connected/ready
|
|
66
|
-
*
|
|
67
|
-
* @returns Connection status
|
|
68
|
-
*/
|
|
69
|
-
async isConnected(): Promise<boolean> {
|
|
70
|
-
try {
|
|
71
|
-
const address = await this.getAddress();
|
|
72
|
-
return !!address && address.startsWith('0x');
|
|
73
|
-
} catch {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Get wallet info
|
|
80
|
-
*
|
|
81
|
-
* @returns Wallet information
|
|
82
|
-
*/
|
|
83
|
-
async getInfo(): Promise<WalletInfo> {
|
|
84
|
-
return {
|
|
85
|
-
address: this.services.config.userAddress,
|
|
86
|
-
connected: await this.isConnected(),
|
|
87
|
-
network: this.services.config.sui?.network || 'testnet',
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Get all owned objects of a specific type
|
|
93
|
-
*
|
|
94
|
-
* @param structType - Move struct type (e.g., "0x123::memory::Memory")
|
|
95
|
-
* @returns Array of owned objects
|
|
96
|
-
*
|
|
97
|
-
* @example
|
|
98
|
-
* ```typescript
|
|
99
|
-
* const memories = await pdw.wallet.getOwnedObjects(
|
|
100
|
-
* `${packageId}::memory::Memory`
|
|
101
|
-
* );
|
|
102
|
-
* ```
|
|
103
|
-
*/
|
|
104
|
-
async getOwnedObjects(structType: string): Promise<OwnedObject[]> {
|
|
105
|
-
const suiClient = this.services.config.sui?.client;
|
|
106
|
-
if (!suiClient) {
|
|
107
|
-
throw new Error('SuiClient not initialized');
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const response = await suiClient.getOwnedObjects({
|
|
111
|
-
owner: this.services.config.userAddress,
|
|
112
|
-
filter: {
|
|
113
|
-
StructType: structType,
|
|
114
|
-
},
|
|
115
|
-
options: {
|
|
116
|
-
showContent: true,
|
|
117
|
-
showType: true,
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
return response.data.map(obj => ({
|
|
122
|
-
id: obj.data?.objectId || '',
|
|
123
|
-
type: obj.data?.type || '',
|
|
124
|
-
version: obj.data?.version || '',
|
|
125
|
-
digest: obj.data?.digest || '',
|
|
126
|
-
}));
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Get all MemoryCap objects owned by user
|
|
131
|
-
*
|
|
132
|
-
* Convenience method for getting capability objects
|
|
133
|
-
*
|
|
134
|
-
* @returns Array of MemoryCap object IDs
|
|
135
|
-
*/
|
|
136
|
-
async getMemoryCaps(): Promise<OwnedObject[]> {
|
|
137
|
-
const packageId = this.services.config.sui?.packageId;
|
|
138
|
-
if (!packageId) {
|
|
139
|
-
throw new Error('Package ID not configured');
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return await this.getOwnedObjects(`${packageId}::capability::MemoryCap`);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Get all Memory objects owned by user
|
|
147
|
-
*
|
|
148
|
-
* @returns Array of Memory object IDs
|
|
149
|
-
*/
|
|
150
|
-
async getMemories(): Promise<OwnedObject[]> {
|
|
151
|
-
const packageId = this.services.config.sui?.packageId;
|
|
152
|
-
if (!packageId) {
|
|
153
|
-
throw new Error('Package ID not configured');
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
return await this.getOwnedObjects(`${packageId}::memory::Memory`);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Get SUI balance
|
|
161
|
-
*
|
|
162
|
-
* @returns Balance in MIST (smallest unit)
|
|
163
|
-
*/
|
|
164
|
-
async getBalance(): Promise<bigint> {
|
|
165
|
-
const suiClient = this.services.config.sui?.client;
|
|
166
|
-
if (!suiClient) {
|
|
167
|
-
throw new Error('SuiClient not initialized');
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const balance = await suiClient.getBalance({
|
|
171
|
-
owner: this.services.config.userAddress,
|
|
172
|
-
coinType: '0x2::sui::SUI',
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
return BigInt(balance.totalBalance);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Get formatted SUI balance
|
|
180
|
-
*
|
|
181
|
-
* @returns Balance in SUI (human readable)
|
|
182
|
-
*/
|
|
183
|
-
async getFormattedBalance(): Promise<string> {
|
|
184
|
-
const balanceMist = await this.getBalance();
|
|
185
|
-
const balanceSui = Number(balanceMist) / 1_000_000_000; // 1 SUI = 10^9 MIST
|
|
186
|
-
return `${balanceSui.toFixed(4)} SUI`;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Sign a message with the connected wallet
|
|
191
|
-
*
|
|
192
|
-
* @param message - Message to sign (string or bytes)
|
|
193
|
-
* @returns Signature as hex string
|
|
194
|
-
*/
|
|
195
|
-
async signMessage(message: string | Uint8Array): Promise<string> {
|
|
196
|
-
const signer = this.services.config.signer;
|
|
197
|
-
|
|
198
|
-
const messageBytes = typeof message === 'string'
|
|
199
|
-
? new TextEncoder().encode(message)
|
|
200
|
-
: message;
|
|
201
|
-
|
|
202
|
-
const result = await signer.signPersonalMessage(messageBytes);
|
|
203
|
-
|
|
204
|
-
// Result may have different shapes depending on signer type
|
|
205
|
-
if (typeof result === 'string') {
|
|
206
|
-
return result;
|
|
207
|
-
}
|
|
208
|
-
if (result && typeof result === 'object' && 'signature' in result) {
|
|
209
|
-
return result.signature as string;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
throw new Error('Unexpected signature format');
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Get object by ID
|
|
217
|
-
*
|
|
218
|
-
* @param objectId - Object ID to fetch
|
|
219
|
-
* @returns Object data or null
|
|
220
|
-
*/
|
|
221
|
-
async getObject(objectId: string): Promise<any | null> {
|
|
222
|
-
const suiClient = this.services.config.sui?.client;
|
|
223
|
-
if (!suiClient) {
|
|
224
|
-
throw new Error('SuiClient not initialized');
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
try {
|
|
228
|
-
const response = await suiClient.getObject({
|
|
229
|
-
id: objectId,
|
|
230
|
-
options: {
|
|
231
|
-
showContent: true,
|
|
232
|
-
showOwner: true,
|
|
233
|
-
showType: true,
|
|
234
|
-
},
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
return response.data || null;
|
|
238
|
-
} catch (error) {
|
|
239
|
-
console.error('Error fetching object:', error);
|
|
240
|
-
return null;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Wallet Namespace - Simplified Wallet Operations
|
|
3
|
+
*
|
|
4
|
+
* Provides basic wallet operations without HD wallet complexity.
|
|
5
|
+
* In the new capability-based architecture, wallet operations are minimal:
|
|
6
|
+
* - Get current wallet address
|
|
7
|
+
* - Check connection status
|
|
8
|
+
* - Query owned objects
|
|
9
|
+
*
|
|
10
|
+
* @module client/namespaces
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { ServiceContainer } from '../SimplePDWClient';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Wallet info
|
|
17
|
+
*/
|
|
18
|
+
export interface WalletInfo {
|
|
19
|
+
/** Wallet address */
|
|
20
|
+
address: string;
|
|
21
|
+
/** Whether wallet is connected */
|
|
22
|
+
connected: boolean;
|
|
23
|
+
/** Network the wallet is on */
|
|
24
|
+
network: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Object info
|
|
29
|
+
*/
|
|
30
|
+
export interface OwnedObject {
|
|
31
|
+
/** Object ID */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Object type */
|
|
34
|
+
type: string;
|
|
35
|
+
/** Object version */
|
|
36
|
+
version: string;
|
|
37
|
+
/** Object digest */
|
|
38
|
+
digest: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Wallet Namespace
|
|
43
|
+
*
|
|
44
|
+
* Simplified wallet operations
|
|
45
|
+
*/
|
|
46
|
+
export class WalletNamespace {
|
|
47
|
+
constructor(private services: ServiceContainer) {}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Get current wallet address
|
|
51
|
+
*
|
|
52
|
+
* @returns Wallet address
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const address = await pdw.wallet.getAddress();
|
|
57
|
+
* console.log('Connected as:', address);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
async getAddress(): Promise<string> {
|
|
61
|
+
return this.services.config.userAddress;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Check if wallet is connected/ready
|
|
66
|
+
*
|
|
67
|
+
* @returns Connection status
|
|
68
|
+
*/
|
|
69
|
+
async isConnected(): Promise<boolean> {
|
|
70
|
+
try {
|
|
71
|
+
const address = await this.getAddress();
|
|
72
|
+
return !!address && address.startsWith('0x');
|
|
73
|
+
} catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Get wallet info
|
|
80
|
+
*
|
|
81
|
+
* @returns Wallet information
|
|
82
|
+
*/
|
|
83
|
+
async getInfo(): Promise<WalletInfo> {
|
|
84
|
+
return {
|
|
85
|
+
address: this.services.config.userAddress,
|
|
86
|
+
connected: await this.isConnected(),
|
|
87
|
+
network: this.services.config.sui?.network || 'testnet',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Get all owned objects of a specific type
|
|
93
|
+
*
|
|
94
|
+
* @param structType - Move struct type (e.g., "0x123::memory::Memory")
|
|
95
|
+
* @returns Array of owned objects
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* const memories = await pdw.wallet.getOwnedObjects(
|
|
100
|
+
* `${packageId}::memory::Memory`
|
|
101
|
+
* );
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
async getOwnedObjects(structType: string): Promise<OwnedObject[]> {
|
|
105
|
+
const suiClient = this.services.config.sui?.client;
|
|
106
|
+
if (!suiClient) {
|
|
107
|
+
throw new Error('SuiClient not initialized');
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const response = await suiClient.getOwnedObjects({
|
|
111
|
+
owner: this.services.config.userAddress,
|
|
112
|
+
filter: {
|
|
113
|
+
StructType: structType,
|
|
114
|
+
},
|
|
115
|
+
options: {
|
|
116
|
+
showContent: true,
|
|
117
|
+
showType: true,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
return response.data.map(obj => ({
|
|
122
|
+
id: obj.data?.objectId || '',
|
|
123
|
+
type: obj.data?.type || '',
|
|
124
|
+
version: obj.data?.version || '',
|
|
125
|
+
digest: obj.data?.digest || '',
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Get all MemoryCap objects owned by user
|
|
131
|
+
*
|
|
132
|
+
* Convenience method for getting capability objects
|
|
133
|
+
*
|
|
134
|
+
* @returns Array of MemoryCap object IDs
|
|
135
|
+
*/
|
|
136
|
+
async getMemoryCaps(): Promise<OwnedObject[]> {
|
|
137
|
+
const packageId = this.services.config.sui?.packageId;
|
|
138
|
+
if (!packageId) {
|
|
139
|
+
throw new Error('Package ID not configured');
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return await this.getOwnedObjects(`${packageId}::capability::MemoryCap`);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Get all Memory objects owned by user
|
|
147
|
+
*
|
|
148
|
+
* @returns Array of Memory object IDs
|
|
149
|
+
*/
|
|
150
|
+
async getMemories(): Promise<OwnedObject[]> {
|
|
151
|
+
const packageId = this.services.config.sui?.packageId;
|
|
152
|
+
if (!packageId) {
|
|
153
|
+
throw new Error('Package ID not configured');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return await this.getOwnedObjects(`${packageId}::memory::Memory`);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get SUI balance
|
|
161
|
+
*
|
|
162
|
+
* @returns Balance in MIST (smallest unit)
|
|
163
|
+
*/
|
|
164
|
+
async getBalance(): Promise<bigint> {
|
|
165
|
+
const suiClient = this.services.config.sui?.client;
|
|
166
|
+
if (!suiClient) {
|
|
167
|
+
throw new Error('SuiClient not initialized');
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const balance = await suiClient.getBalance({
|
|
171
|
+
owner: this.services.config.userAddress,
|
|
172
|
+
coinType: '0x2::sui::SUI',
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
return BigInt(balance.totalBalance);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Get formatted SUI balance
|
|
180
|
+
*
|
|
181
|
+
* @returns Balance in SUI (human readable)
|
|
182
|
+
*/
|
|
183
|
+
async getFormattedBalance(): Promise<string> {
|
|
184
|
+
const balanceMist = await this.getBalance();
|
|
185
|
+
const balanceSui = Number(balanceMist) / 1_000_000_000; // 1 SUI = 10^9 MIST
|
|
186
|
+
return `${balanceSui.toFixed(4)} SUI`;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Sign a message with the connected wallet
|
|
191
|
+
*
|
|
192
|
+
* @param message - Message to sign (string or bytes)
|
|
193
|
+
* @returns Signature as hex string
|
|
194
|
+
*/
|
|
195
|
+
async signMessage(message: string | Uint8Array): Promise<string> {
|
|
196
|
+
const signer = this.services.config.signer;
|
|
197
|
+
|
|
198
|
+
const messageBytes = typeof message === 'string'
|
|
199
|
+
? new TextEncoder().encode(message)
|
|
200
|
+
: message;
|
|
201
|
+
|
|
202
|
+
const result = await signer.signPersonalMessage(messageBytes);
|
|
203
|
+
|
|
204
|
+
// Result may have different shapes depending on signer type
|
|
205
|
+
if (typeof result === 'string') {
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
if (result && typeof result === 'object' && 'signature' in result) {
|
|
209
|
+
return result.signature as string;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
throw new Error('Unexpected signature format');
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Get object by ID
|
|
217
|
+
*
|
|
218
|
+
* @param objectId - Object ID to fetch
|
|
219
|
+
* @returns Object data or null
|
|
220
|
+
*/
|
|
221
|
+
async getObject(objectId: string): Promise<any | null> {
|
|
222
|
+
const suiClient = this.services.config.sui?.client;
|
|
223
|
+
if (!suiClient) {
|
|
224
|
+
throw new Error('SuiClient not initialized');
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
try {
|
|
228
|
+
const response = await suiClient.getObject({
|
|
229
|
+
id: objectId,
|
|
230
|
+
options: {
|
|
231
|
+
showContent: true,
|
|
232
|
+
showOwner: true,
|
|
233
|
+
showType: true,
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
return response.data || null;
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.error('Error fetching object:', error);
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|