@quantulabs/8004-mcp 0.1.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.
Files changed (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/dist/chains/evm/index.d.ts +2 -0
  4. package/dist/chains/evm/index.d.ts.map +1 -0
  5. package/dist/chains/evm/index.js +3 -0
  6. package/dist/chains/evm/index.js.map +1 -0
  7. package/dist/chains/evm/provider.d.ts +48 -0
  8. package/dist/chains/evm/provider.d.ts.map +1 -0
  9. package/dist/chains/evm/provider.js +446 -0
  10. package/dist/chains/evm/provider.js.map +1 -0
  11. package/dist/chains/index.d.ts +3 -0
  12. package/dist/chains/index.d.ts.map +1 -0
  13. package/dist/chains/index.js +4 -0
  14. package/dist/chains/index.js.map +1 -0
  15. package/dist/chains/solana/data-source.d.ts +17 -0
  16. package/dist/chains/solana/data-source.d.ts.map +1 -0
  17. package/dist/chains/solana/data-source.js +65 -0
  18. package/dist/chains/solana/data-source.js.map +1 -0
  19. package/dist/chains/solana/index.d.ts +8 -0
  20. package/dist/chains/solana/index.d.ts.map +1 -0
  21. package/dist/chains/solana/index.js +9 -0
  22. package/dist/chains/solana/index.js.map +1 -0
  23. package/dist/chains/solana/parsers.d.ts +11 -0
  24. package/dist/chains/solana/parsers.d.ts.map +1 -0
  25. package/dist/chains/solana/parsers.js +94 -0
  26. package/dist/chains/solana/parsers.js.map +1 -0
  27. package/dist/chains/solana/provider.d.ts +33 -0
  28. package/dist/chains/solana/provider.d.ts.map +1 -0
  29. package/dist/chains/solana/provider.js +407 -0
  30. package/dist/chains/solana/provider.js.map +1 -0
  31. package/dist/chains/solana/state.d.ts +55 -0
  32. package/dist/chains/solana/state.d.ts.map +1 -0
  33. package/dist/chains/solana/state.js +162 -0
  34. package/dist/chains/solana/state.js.map +1 -0
  35. package/dist/chains/solana/tools/atom.d.ts +45 -0
  36. package/dist/chains/solana/tools/atom.d.ts.map +1 -0
  37. package/dist/chains/solana/tools/atom.js +115 -0
  38. package/dist/chains/solana/tools/atom.js.map +1 -0
  39. package/dist/chains/solana/tools/validation.d.ts +45 -0
  40. package/dist/chains/solana/tools/validation.d.ts.map +1 -0
  41. package/dist/chains/solana/tools/validation.js +212 -0
  42. package/dist/chains/solana/tools/validation.js.map +1 -0
  43. package/dist/chains/solana/tools/wallet.d.ts +45 -0
  44. package/dist/chains/solana/tools/wallet.d.ts.map +1 -0
  45. package/dist/chains/solana/tools/wallet.js +103 -0
  46. package/dist/chains/solana/tools/wallet.js.map +1 -0
  47. package/dist/config/defaults.d.ts +68 -0
  48. package/dist/config/defaults.d.ts.map +1 -0
  49. package/dist/config/defaults.js +247 -0
  50. package/dist/config/defaults.js.map +1 -0
  51. package/dist/config/env.d.ts +33 -0
  52. package/dist/config/env.d.ts.map +1 -0
  53. package/dist/config/env.js +42 -0
  54. package/dist/config/env.js.map +1 -0
  55. package/dist/config/index.d.ts +3 -0
  56. package/dist/config/index.d.ts.map +1 -0
  57. package/dist/config/index.js +3 -0
  58. package/dist/config/index.js.map +1 -0
  59. package/dist/core/cache/agent-cache.d.ts +36 -0
  60. package/dist/core/cache/agent-cache.d.ts.map +1 -0
  61. package/dist/core/cache/agent-cache.js +87 -0
  62. package/dist/core/cache/agent-cache.js.map +1 -0
  63. package/dist/core/cache/data-source.d.ts +31 -0
  64. package/dist/core/cache/data-source.d.ts.map +1 -0
  65. package/dist/core/cache/data-source.js +6 -0
  66. package/dist/core/cache/data-source.js.map +1 -0
  67. package/dist/core/cache/index.d.ts +7 -0
  68. package/dist/core/cache/index.d.ts.map +1 -0
  69. package/dist/core/cache/index.js +9 -0
  70. package/dist/core/cache/index.js.map +1 -0
  71. package/dist/core/cache/lazy-cache.d.ts +30 -0
  72. package/dist/core/cache/lazy-cache.d.ts.map +1 -0
  73. package/dist/core/cache/lazy-cache.js +79 -0
  74. package/dist/core/cache/lazy-cache.js.map +1 -0
  75. package/dist/core/cache/slim-store.d.ts +66 -0
  76. package/dist/core/cache/slim-store.d.ts.map +1 -0
  77. package/dist/core/cache/slim-store.js +285 -0
  78. package/dist/core/cache/slim-store.js.map +1 -0
  79. package/dist/core/cache/sqlite-store.d.ts +99 -0
  80. package/dist/core/cache/sqlite-store.d.ts.map +1 -0
  81. package/dist/core/cache/sqlite-store.js +470 -0
  82. package/dist/core/cache/sqlite-store.js.map +1 -0
  83. package/dist/core/cache/sync-manager.d.ts +38 -0
  84. package/dist/core/cache/sync-manager.d.ts.map +1 -0
  85. package/dist/core/cache/sync-manager.js +213 -0
  86. package/dist/core/cache/sync-manager.js.map +1 -0
  87. package/dist/core/errors/index.d.ts +2 -0
  88. package/dist/core/errors/index.d.ts.map +1 -0
  89. package/dist/core/errors/index.js +2 -0
  90. package/dist/core/errors/index.js.map +1 -0
  91. package/dist/core/errors/mcp-error.d.ts +39 -0
  92. package/dist/core/errors/mcp-error.d.ts.map +1 -0
  93. package/dist/core/errors/mcp-error.js +79 -0
  94. package/dist/core/errors/mcp-error.js.map +1 -0
  95. package/dist/core/interfaces/agent.d.ts +84 -0
  96. package/dist/core/interfaces/agent.d.ts.map +1 -0
  97. package/dist/core/interfaces/agent.js +40 -0
  98. package/dist/core/interfaces/agent.js.map +1 -0
  99. package/dist/core/interfaces/chain-provider.d.ts +50 -0
  100. package/dist/core/interfaces/chain-provider.d.ts.map +1 -0
  101. package/dist/core/interfaces/chain-provider.js +5 -0
  102. package/dist/core/interfaces/chain-provider.js.map +1 -0
  103. package/dist/core/interfaces/feedback.d.ts +46 -0
  104. package/dist/core/interfaces/feedback.d.ts.map +1 -0
  105. package/dist/core/interfaces/feedback.js +3 -0
  106. package/dist/core/interfaces/feedback.js.map +1 -0
  107. package/dist/core/interfaces/index.d.ts +6 -0
  108. package/dist/core/interfaces/index.d.ts.map +1 -0
  109. package/dist/core/interfaces/index.js +7 -0
  110. package/dist/core/interfaces/index.js.map +1 -0
  111. package/dist/core/interfaces/reputation.d.ts +47 -0
  112. package/dist/core/interfaces/reputation.d.ts.map +1 -0
  113. package/dist/core/interfaces/reputation.js +30 -0
  114. package/dist/core/interfaces/reputation.js.map +1 -0
  115. package/dist/core/interfaces/x402.d.ts +226 -0
  116. package/dist/core/interfaces/x402.d.ts.map +1 -0
  117. package/dist/core/interfaces/x402.js +120 -0
  118. package/dist/core/interfaces/x402.js.map +1 -0
  119. package/dist/core/parsers/common.d.ts +31 -0
  120. package/dist/core/parsers/common.d.ts.map +1 -0
  121. package/dist/core/parsers/common.js +185 -0
  122. package/dist/core/parsers/common.js.map +1 -0
  123. package/dist/core/parsers/index.d.ts +2 -0
  124. package/dist/core/parsers/index.d.ts.map +1 -0
  125. package/dist/core/parsers/index.js +2 -0
  126. package/dist/core/parsers/index.js.map +1 -0
  127. package/dist/core/registry/chain-registry.d.ts +26 -0
  128. package/dist/core/registry/chain-registry.d.ts.map +1 -0
  129. package/dist/core/registry/chain-registry.js +141 -0
  130. package/dist/core/registry/chain-registry.js.map +1 -0
  131. package/dist/core/registry/index.d.ts +3 -0
  132. package/dist/core/registry/index.d.ts.map +1 -0
  133. package/dist/core/registry/index.js +3 -0
  134. package/dist/core/registry/index.js.map +1 -0
  135. package/dist/core/registry/tool-registry.d.ts +23 -0
  136. package/dist/core/registry/tool-registry.d.ts.map +1 -0
  137. package/dist/core/registry/tool-registry.js +66 -0
  138. package/dist/core/registry/tool-registry.js.map +1 -0
  139. package/dist/core/serializers/common.d.ts +20 -0
  140. package/dist/core/serializers/common.d.ts.map +1 -0
  141. package/dist/core/serializers/common.js +76 -0
  142. package/dist/core/serializers/common.js.map +1 -0
  143. package/dist/core/serializers/index.d.ts +2 -0
  144. package/dist/core/serializers/index.d.ts.map +1 -0
  145. package/dist/core/serializers/index.js +2 -0
  146. package/dist/core/serializers/index.js.map +1 -0
  147. package/dist/core/services/index.d.ts +3 -0
  148. package/dist/core/services/index.d.ts.map +1 -0
  149. package/dist/core/services/index.js +3 -0
  150. package/dist/core/services/index.js.map +1 -0
  151. package/dist/core/services/ipfs-service.d.ts +59 -0
  152. package/dist/core/services/ipfs-service.d.ts.map +1 -0
  153. package/dist/core/services/ipfs-service.js +84 -0
  154. package/dist/core/services/ipfs-service.js.map +1 -0
  155. package/dist/core/utils/tags.d.ts +38 -0
  156. package/dist/core/utils/tags.d.ts.map +1 -0
  157. package/dist/core/utils/tags.js +77 -0
  158. package/dist/core/utils/tags.js.map +1 -0
  159. package/dist/core/utils/value-encoding.d.ts +36 -0
  160. package/dist/core/utils/value-encoding.d.ts.map +1 -0
  161. package/dist/core/utils/value-encoding.js +196 -0
  162. package/dist/core/utils/value-encoding.js.map +1 -0
  163. package/dist/core/wallet/index.d.ts +2 -0
  164. package/dist/core/wallet/index.d.ts.map +1 -0
  165. package/dist/core/wallet/index.js +3 -0
  166. package/dist/core/wallet/index.js.map +1 -0
  167. package/dist/core/wallet/wallet-manager.d.ts +86 -0
  168. package/dist/core/wallet/wallet-manager.d.ts.map +1 -0
  169. package/dist/core/wallet/wallet-manager.js +783 -0
  170. package/dist/core/wallet/wallet-manager.js.map +1 -0
  171. package/dist/core/x402/index.d.ts +2 -0
  172. package/dist/core/x402/index.d.ts.map +1 -0
  173. package/dist/core/x402/index.js +3 -0
  174. package/dist/core/x402/index.js.map +1 -0
  175. package/dist/core/x402/proof-validator.d.ts +57 -0
  176. package/dist/core/x402/proof-validator.d.ts.map +1 -0
  177. package/dist/core/x402/proof-validator.js +103 -0
  178. package/dist/core/x402/proof-validator.js.map +1 -0
  179. package/dist/index.d.ts +3 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +135 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/state/global-state.d.ts +98 -0
  184. package/dist/state/global-state.d.ts.map +1 -0
  185. package/dist/state/global-state.js +258 -0
  186. package/dist/state/global-state.js.map +1 -0
  187. package/dist/tools/definitions.d.ts +10 -0
  188. package/dist/tools/definitions.d.ts.map +1 -0
  189. package/dist/tools/definitions.js +163 -0
  190. package/dist/tools/definitions.js.map +1 -0
  191. package/dist/tools/unified/agent.d.ts +5 -0
  192. package/dist/tools/unified/agent.d.ts.map +1 -0
  193. package/dist/tools/unified/agent.js +300 -0
  194. package/dist/tools/unified/agent.js.map +1 -0
  195. package/dist/tools/unified/cache.d.ts +5 -0
  196. package/dist/tools/unified/cache.d.ts.map +1 -0
  197. package/dist/tools/unified/cache.js +207 -0
  198. package/dist/tools/unified/cache.js.map +1 -0
  199. package/dist/tools/unified/collection.d.ts +5 -0
  200. package/dist/tools/unified/collection.d.ts.map +1 -0
  201. package/dist/tools/unified/collection.js +162 -0
  202. package/dist/tools/unified/collection.js.map +1 -0
  203. package/dist/tools/unified/config.d.ts +5 -0
  204. package/dist/tools/unified/config.d.ts.map +1 -0
  205. package/dist/tools/unified/config.js +217 -0
  206. package/dist/tools/unified/config.js.map +1 -0
  207. package/dist/tools/unified/crawler.d.ts +5 -0
  208. package/dist/tools/unified/crawler.d.ts.map +1 -0
  209. package/dist/tools/unified/crawler.js +212 -0
  210. package/dist/tools/unified/crawler.js.map +1 -0
  211. package/dist/tools/unified/feedback.d.ts +5 -0
  212. package/dist/tools/unified/feedback.d.ts.map +1 -0
  213. package/dist/tools/unified/feedback.js +274 -0
  214. package/dist/tools/unified/feedback.js.map +1 -0
  215. package/dist/tools/unified/ipfs.d.ts +5 -0
  216. package/dist/tools/unified/ipfs.d.ts.map +1 -0
  217. package/dist/tools/unified/ipfs.js +156 -0
  218. package/dist/tools/unified/ipfs.js.map +1 -0
  219. package/dist/tools/unified/oasf.d.ts +5 -0
  220. package/dist/tools/unified/oasf.d.ts.map +1 -0
  221. package/dist/tools/unified/oasf.js +167 -0
  222. package/dist/tools/unified/oasf.js.map +1 -0
  223. package/dist/tools/unified/registration.d.ts +5 -0
  224. package/dist/tools/unified/registration.d.ts.map +1 -0
  225. package/dist/tools/unified/registration.js +223 -0
  226. package/dist/tools/unified/registration.js.map +1 -0
  227. package/dist/tools/unified/reputation.d.ts +5 -0
  228. package/dist/tools/unified/reputation.d.ts.map +1 -0
  229. package/dist/tools/unified/reputation.js +121 -0
  230. package/dist/tools/unified/reputation.js.map +1 -0
  231. package/dist/tools/unified/wallet.d.ts +5 -0
  232. package/dist/tools/unified/wallet.d.ts.map +1 -0
  233. package/dist/tools/unified/wallet.js +434 -0
  234. package/dist/tools/unified/wallet.js.map +1 -0
  235. package/dist/tools/unified/write-operations.d.ts +5 -0
  236. package/dist/tools/unified/write-operations.d.ts.map +1 -0
  237. package/dist/tools/unified/write-operations.js +582 -0
  238. package/dist/tools/unified/write-operations.js.map +1 -0
  239. package/dist/tools/unified/x402.d.ts +5 -0
  240. package/dist/tools/unified/x402.d.ts.map +1 -0
  241. package/dist/tools/unified/x402.js +594 -0
  242. package/dist/tools/unified/x402.js.map +1 -0
  243. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/services/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { IPFSClient } from '8004-solana';
2
+ import type { IPFSClientConfig, RegistrationFile } from '8004-solana';
3
+ export interface IIPFSService {
4
+ isConfigured(): boolean;
5
+ configure(config: IPFSClientConfig): void;
6
+ clearConfig(): void;
7
+ getConfig(): IPFSClientConfig | undefined;
8
+ addJson(data: Record<string, unknown>, name?: string): Promise<string>;
9
+ getJson<T = Record<string, unknown>>(cid: string): Promise<T>;
10
+ addRegistrationFile(registrationFile: RegistrationFile, chainId?: number, identityRegistryAddress?: string): Promise<string>;
11
+ getRegistrationFile(cid: string): Promise<RegistrationFile>;
12
+ }
13
+ /**
14
+ * Global IPFS service that can be used by all chain providers.
15
+ * This decouples IPFS storage from any specific chain implementation.
16
+ */
17
+ export declare class IPFSService implements IIPFSService {
18
+ private _client?;
19
+ private _config?;
20
+ /**
21
+ * Check if IPFS is configured with valid credentials
22
+ */
23
+ isConfigured(): boolean;
24
+ /**
25
+ * Configure the IPFS service with provider settings
26
+ */
27
+ configure(config: IPFSClientConfig): void;
28
+ /**
29
+ * Clear IPFS configuration
30
+ */
31
+ clearConfig(): void;
32
+ /**
33
+ * Get current configuration (for debugging/status)
34
+ */
35
+ getConfig(): IPFSClientConfig | undefined;
36
+ /**
37
+ * Add JSON data to IPFS and return CID
38
+ */
39
+ addJson(data: Record<string, unknown>, _name?: string): Promise<string>;
40
+ /**
41
+ * Get JSON data from IPFS by CID
42
+ */
43
+ getJson<T = Record<string, unknown>>(cid: string): Promise<T>;
44
+ /**
45
+ * Add registration file to IPFS
46
+ */
47
+ addRegistrationFile(registrationFile: RegistrationFile, chainId?: number, identityRegistryAddress?: string): Promise<string>;
48
+ /**
49
+ * Get registration file from IPFS by CID
50
+ */
51
+ getRegistrationFile(cid: string): Promise<RegistrationFile>;
52
+ /**
53
+ * Get the underlying IPFSClient (for advanced usage)
54
+ * @throws Error if not configured
55
+ */
56
+ getClient(): IPFSClient;
57
+ }
58
+ export type { IPFSClientConfig, RegistrationFile };
59
+ //# sourceMappingURL=ipfs-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfs-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/ipfs-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,YAAY,IAAI,OAAO,CAAC;IACxB,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,WAAW,IAAI,IAAI,CAAC;IACpB,SAAS,IAAI,gBAAgB,GAAG,SAAS,CAAC;IAC1C,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,mBAAmB,CACjB,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,CAAC,EAAE,MAAM,EAChB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC7D;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAmB;IAEnC;;OAEG;IACH,YAAY,IAAI,OAAO;IASvB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAMzC;;OAEG;IACH,WAAW,IAAI,IAAI;IAKnB;;OAEG;IACH,SAAS,IAAI,gBAAgB,GAAG,SAAS;IAIzC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7E;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAKnE;;OAEG;IACG,mBAAmB,CACvB,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,CAAC,EAAE,MAAM,EAChB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,MAAM,CAAC;IAKlB;;OAEG;IACG,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKjE;;;OAGG;IACH,SAAS,IAAI,UAAU;CASxB;AAGD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,84 @@
1
+ // Global IPFS Service - Chain-agnostic decentralized storage
2
+ // Supports Pinata, Filecoin, and local IPFS nodes
3
+ import { IPFSClient } from '8004-solana';
4
+ /**
5
+ * Global IPFS service that can be used by all chain providers.
6
+ * This decouples IPFS storage from any specific chain implementation.
7
+ */
8
+ export class IPFSService {
9
+ _client;
10
+ _config;
11
+ /**
12
+ * Check if IPFS is configured with valid credentials
13
+ */
14
+ isConfigured() {
15
+ if (!this._config)
16
+ return false;
17
+ return !!(this._config.pinataJwt ||
18
+ this._config.url ||
19
+ this._config.filecoinPinEnabled);
20
+ }
21
+ /**
22
+ * Configure the IPFS service with provider settings
23
+ */
24
+ configure(config) {
25
+ this._config = config;
26
+ // Reset client to force re-initialization with new config
27
+ this._client = undefined;
28
+ }
29
+ /**
30
+ * Clear IPFS configuration
31
+ */
32
+ clearConfig() {
33
+ this._config = undefined;
34
+ this._client = undefined;
35
+ }
36
+ /**
37
+ * Get current configuration (for debugging/status)
38
+ */
39
+ getConfig() {
40
+ return this._config ? { ...this._config } : undefined;
41
+ }
42
+ /**
43
+ * Add JSON data to IPFS and return CID
44
+ */
45
+ async addJson(data, _name) {
46
+ const client = this.getClient();
47
+ return client.addJson(data);
48
+ }
49
+ /**
50
+ * Get JSON data from IPFS by CID
51
+ */
52
+ async getJson(cid) {
53
+ const client = this.getClient();
54
+ return client.getJson(cid);
55
+ }
56
+ /**
57
+ * Add registration file to IPFS
58
+ */
59
+ async addRegistrationFile(registrationFile, chainId, identityRegistryAddress) {
60
+ const client = this.getClient();
61
+ return client.addRegistrationFile(registrationFile, chainId, identityRegistryAddress);
62
+ }
63
+ /**
64
+ * Get registration file from IPFS by CID
65
+ */
66
+ async getRegistrationFile(cid) {
67
+ const client = this.getClient();
68
+ return client.getRegistrationFile(cid);
69
+ }
70
+ /**
71
+ * Get the underlying IPFSClient (for advanced usage)
72
+ * @throws Error if not configured
73
+ */
74
+ getClient() {
75
+ if (!this._client) {
76
+ if (!this._config) {
77
+ throw new Error('IPFS not configured. Call ipfs_configure first.');
78
+ }
79
+ this._client = new IPFSClient(this._config);
80
+ }
81
+ return this._client;
82
+ }
83
+ }
84
+ //# sourceMappingURL=ipfs-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfs-service.js","sourceRoot":"","sources":["../../../src/core/services/ipfs-service.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,kDAAkD;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkBzC;;;GAGG;AACH,MAAM,OAAO,WAAW;IACd,OAAO,CAAc;IACrB,OAAO,CAAoB;IAEnC;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,CAAC,CAAC,CACP,IAAI,CAAC,OAAO,CAAC,SAAS;YACtB,IAAI,CAAC,OAAO,CAAC,GAAG;YAChB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAwB;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,0DAA0D;QAC1D,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAA6B,EAAE,KAAc;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAA8B,GAAW;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,CAAI,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,gBAAkC,EAClC,OAAgB,EAChB,uBAAgC;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAAW;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ERC-8004 standardized tags for feedback
3
+ */
4
+ export declare const Tag: {
5
+ readonly starred: "starred";
6
+ readonly reachable: "reachable";
7
+ readonly ownerVerified: "ownerverified";
8
+ readonly uptime: "uptime";
9
+ readonly successRate: "successrate";
10
+ readonly responseTime: "responsetime";
11
+ readonly blocktimeFreshness: "blocktimefreshness";
12
+ readonly revenues: "revenues";
13
+ readonly tradingYield: "tradingyield";
14
+ readonly day: "day";
15
+ readonly week: "week";
16
+ readonly month: "month";
17
+ readonly year: "year";
18
+ readonly x402ResourceDelivered: "x402-resource-delivered";
19
+ readonly x402DeliveryFailed: "x402-delivery-failed";
20
+ readonly x402DeliveryTimeout: "x402-delivery-timeout";
21
+ readonly x402QualityIssue: "x402-quality-issue";
22
+ readonly x402GoodPayer: "x402-good-payer";
23
+ readonly x402PaymentFailed: "x402-payment-failed";
24
+ readonly x402InsufficientFunds: "x402-insufficient-funds";
25
+ readonly x402InvalidSignature: "x402-invalid-signature";
26
+ readonly x402Evm: "exact-evm";
27
+ readonly x402Svm: "exact-svm";
28
+ };
29
+ export type TagValue = typeof Tag[keyof typeof Tag];
30
+ /**
31
+ * Check if a tag is a known standardized tag
32
+ */
33
+ export declare function isKnownTag(tag: string): boolean;
34
+ /**
35
+ * Get description for a tag
36
+ */
37
+ export declare function getTagDescription(tag: string): string | null;
38
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/core/utils/tags.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA6BN,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AAqCpD;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5D"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * ERC-8004 standardized tags for feedback
3
+ */
4
+ // Tag values (case-insensitive storage)
5
+ export const Tag = {
6
+ // Category tags (what metric)
7
+ starred: 'starred',
8
+ reachable: 'reachable',
9
+ ownerVerified: 'ownerverified',
10
+ uptime: 'uptime',
11
+ successRate: 'successrate',
12
+ responseTime: 'responsetime',
13
+ blocktimeFreshness: 'blocktimefreshness',
14
+ revenues: 'revenues',
15
+ tradingYield: 'tradingyield',
16
+ // Period tags (time window)
17
+ day: 'day',
18
+ week: 'week',
19
+ month: 'month',
20
+ year: 'year',
21
+ // x402 protocol tags
22
+ x402ResourceDelivered: 'x402-resource-delivered',
23
+ x402DeliveryFailed: 'x402-delivery-failed',
24
+ x402DeliveryTimeout: 'x402-delivery-timeout',
25
+ x402QualityIssue: 'x402-quality-issue',
26
+ x402GoodPayer: 'x402-good-payer',
27
+ x402PaymentFailed: 'x402-payment-failed',
28
+ x402InsufficientFunds: 'x402-insufficient-funds',
29
+ x402InvalidSignature: 'x402-invalid-signature',
30
+ x402Evm: 'exact-evm',
31
+ x402Svm: 'exact-svm',
32
+ };
33
+ // Tag descriptions
34
+ const tagDescriptions = {
35
+ // Category tags
36
+ [Tag.starred]: 'User starred/favorited this agent',
37
+ [Tag.reachable]: 'Agent endpoint is reachable (binary: 0 or 100)',
38
+ [Tag.ownerVerified]: 'Owner identity verified (binary: 0 or 100)',
39
+ [Tag.uptime]: 'Uptime percentage over the period (0-100)',
40
+ [Tag.successRate]: 'Success rate percentage (0-100)',
41
+ [Tag.responseTime]: 'Response time in milliseconds (lower is better)',
42
+ [Tag.blocktimeFreshness]: 'Block time freshness in seconds (lower is better)',
43
+ [Tag.revenues]: 'Revenues generated in USD (scaled by decimals)',
44
+ [Tag.tradingYield]: 'Trading yield percentage (-100 to +100+)',
45
+ // Period tags
46
+ [Tag.day]: '24-hour period',
47
+ [Tag.week]: '7-day period',
48
+ [Tag.month]: '30-day period',
49
+ [Tag.year]: '365-day period',
50
+ // x402 tags
51
+ [Tag.x402ResourceDelivered]: 'x402: Resource successfully delivered after payment',
52
+ [Tag.x402DeliveryFailed]: 'x402: Delivery failed after payment',
53
+ [Tag.x402DeliveryTimeout]: 'x402: Delivery timed out after payment',
54
+ [Tag.x402QualityIssue]: 'x402: Quality issue with delivered resource',
55
+ [Tag.x402GoodPayer]: 'x402: Client paid successfully (agent perspective)',
56
+ [Tag.x402PaymentFailed]: 'x402: Client payment failed',
57
+ [Tag.x402InsufficientFunds]: 'x402: Client had insufficient funds',
58
+ [Tag.x402InvalidSignature]: 'x402: Invalid payment signature',
59
+ [Tag.x402Evm]: 'x402: Payment on EVM chain (Base, Ethereum, etc.)',
60
+ [Tag.x402Svm]: 'x402: Payment on Solana (SVM)',
61
+ };
62
+ // All known tag values for validation
63
+ const allKnownTags = new Set(Object.values(Tag));
64
+ /**
65
+ * Check if a tag is a known standardized tag
66
+ */
67
+ export function isKnownTag(tag) {
68
+ return allKnownTags.has(tag.toLowerCase());
69
+ }
70
+ /**
71
+ * Get description for a tag
72
+ */
73
+ export function getTagDescription(tag) {
74
+ const normalized = tag.toLowerCase();
75
+ return tagDescriptions[normalized] ?? null;
76
+ }
77
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/core/utils/tags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Encode a decimal value (number|string) to (value: bigint, valueDecimals: number)
3
+ *
4
+ * Examples:
5
+ * "99.77" → { value: 9977n, valueDecimals: 2 }
6
+ * 99.77 → { value: 9977n, valueDecimals: 2 }
7
+ * 9977 → { value: 9977n, valueDecimals: 0 }
8
+ * "-5.5" → { value: -55n, valueDecimals: 1 }
9
+ *
10
+ * - Supports negatives (for yields, PnL, etc.)
11
+ * - Max 6 decimals (Solana program limit)
12
+ * - Clamps to i64 range
13
+ */
14
+ export interface EncodedValue {
15
+ value: bigint;
16
+ valueDecimals: number;
17
+ /** Original normalized decimal string */
18
+ normalized: string;
19
+ }
20
+ /**
21
+ * Encode a decimal value to (value, valueDecimals) for on-chain storage
22
+ *
23
+ * @param input - Decimal string ("99.77"), number (99.77), or bigint (9977n)
24
+ * @param explicitDecimals - If provided, use this instead of auto-detecting (for bigint/int inputs)
25
+ * @returns Encoded value with bigint and decimal precision
26
+ */
27
+ export declare function encodeReputationValue(input: string | number | bigint, explicitDecimals?: number): EncodedValue;
28
+ /**
29
+ * Decode (value, valueDecimals) back to a decimal string
30
+ *
31
+ * @param value - Raw bigint value
32
+ * @param valueDecimals - Decimal precision
33
+ * @returns Decimal string (e.g., "99.77")
34
+ */
35
+ export declare function decodeToDecimalString(value: bigint, valueDecimals: number): string;
36
+ //# sourceMappingURL=value-encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-encoding.d.ts","sourceRoot":"","sources":["../../../src/core/utils/value-encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAyED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAC/B,gBAAgB,CAAC,EAAE,MAAM,GACxB,YAAY,CAgFd;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAiBlF"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Encode a decimal value (number|string) to (value: bigint, valueDecimals: number)
3
+ *
4
+ * Examples:
5
+ * "99.77" → { value: 9977n, valueDecimals: 2 }
6
+ * 99.77 → { value: 9977n, valueDecimals: 2 }
7
+ * 9977 → { value: 9977n, valueDecimals: 0 }
8
+ * "-5.5" → { value: -55n, valueDecimals: 1 }
9
+ *
10
+ * - Supports negatives (for yields, PnL, etc.)
11
+ * - Max 6 decimals (Solana program limit)
12
+ * - Clamps to i64 range
13
+ */
14
+ const MAX_VALUE_DECIMALS = 6;
15
+ const I64_MAX = 9223372036854775807n;
16
+ const I64_MIN = -9223372036854775808n;
17
+ /**
18
+ * Strip leading zeros from a string, keeping at least one digit
19
+ */
20
+ function stripLeadingZeros(s) {
21
+ let i = 0;
22
+ while (i < s.length - 1 && s[i] === '0')
23
+ i++;
24
+ return s.slice(i);
25
+ }
26
+ /**
27
+ * Normalize a decimal string (handle exponential notation, trim zeros)
28
+ */
29
+ function normalizeDecimalString(input) {
30
+ const s = input.trim();
31
+ if (s.length === 0)
32
+ throw new Error('Empty value');
33
+ const lower = s.toLowerCase();
34
+ if (lower === 'nan' || lower === '+nan' || lower === '-nan') {
35
+ throw new Error('NaN not supported');
36
+ }
37
+ if (lower === 'infinity' || lower === '+infinity' || lower === '-infinity') {
38
+ throw new Error('Infinity not supported');
39
+ }
40
+ // Handle exponential notation (e.g., 1.23e-4)
41
+ if (/[eE]/.test(s)) {
42
+ const match = s.match(/^([+-]?)(\d+(?:\.\d+)?)[eE]([+-]?\d+)$/);
43
+ if (!match)
44
+ throw new Error(`Invalid numeric string: ${input}`);
45
+ const sign = match[1] === '-' ? '-' : '';
46
+ const mantissa = match[2];
47
+ const exp = parseInt(match[3], 10);
48
+ if (!Number.isFinite(exp))
49
+ throw new Error(`Invalid exponent: ${input}`);
50
+ const [intPartRaw, fracPartRaw = ''] = mantissa.split('.');
51
+ const digits = stripLeadingZeros((intPartRaw || '0') + fracPartRaw);
52
+ const fracLen = fracPartRaw.length;
53
+ const shift = exp - fracLen;
54
+ if (digits === '0')
55
+ return '0';
56
+ if (shift >= 0) {
57
+ return sign + digits + '0'.repeat(shift);
58
+ }
59
+ const pos = digits.length + shift;
60
+ if (pos > 0) {
61
+ return sign + digits.slice(0, pos) + '.' + digits.slice(pos);
62
+ }
63
+ return sign + '0.' + '0'.repeat(-pos) + digits;
64
+ }
65
+ // Plain decimal
66
+ if (!/^([+-])?(\d+)(\.\d+)?$/.test(s)) {
67
+ throw new Error(`Invalid numeric string: ${input}`);
68
+ }
69
+ let sign = '';
70
+ let body = s;
71
+ if (body[0] === '+')
72
+ body = body.slice(1);
73
+ if (body[0] === '-') {
74
+ sign = '-';
75
+ body = body.slice(1);
76
+ }
77
+ let [intPart, fracPart = ''] = body.split('.');
78
+ intPart = stripLeadingZeros(intPart || '0');
79
+ fracPart = fracPart.replace(/0+$/, '');
80
+ if (intPart === '0' && fracPart.length === 0)
81
+ return '0';
82
+ return sign + intPart + (fracPart.length ? '.' + fracPart : '');
83
+ }
84
+ /**
85
+ * Encode a decimal value to (value, valueDecimals) for on-chain storage
86
+ *
87
+ * @param input - Decimal string ("99.77"), number (99.77), or bigint (9977n)
88
+ * @param explicitDecimals - If provided, use this instead of auto-detecting (for bigint/int inputs)
89
+ * @returns Encoded value with bigint and decimal precision
90
+ */
91
+ export function encodeReputationValue(input, explicitDecimals) {
92
+ // If bigint with explicit decimals, use directly
93
+ if (typeof input === 'bigint') {
94
+ const decimals = explicitDecimals ?? 0;
95
+ if (!Number.isInteger(decimals) || decimals < 0 || decimals > MAX_VALUE_DECIMALS) {
96
+ throw new Error(`valueDecimals must be integer 0-${MAX_VALUE_DECIMALS}`);
97
+ }
98
+ let value = input;
99
+ if (value > I64_MAX)
100
+ value = I64_MAX;
101
+ if (value < I64_MIN)
102
+ value = I64_MIN;
103
+ return {
104
+ value,
105
+ valueDecimals: decimals,
106
+ normalized: decodeToDecimalString(value, decimals),
107
+ };
108
+ }
109
+ // If number is an integer with explicit decimals, use directly
110
+ if (typeof input === 'number' && Number.isInteger(input) && explicitDecimals !== undefined) {
111
+ const decimals = explicitDecimals;
112
+ if (!Number.isInteger(decimals) || decimals < 0 || decimals > MAX_VALUE_DECIMALS) {
113
+ throw new Error(`valueDecimals must be integer 0-${MAX_VALUE_DECIMALS}`);
114
+ }
115
+ // Reject unsafe integers to prevent silent precision loss
116
+ if (!Number.isSafeInteger(input)) {
117
+ throw new Error(`Integer ${input} exceeds safe integer range. Use bigint for large values.`);
118
+ }
119
+ let value = BigInt(input);
120
+ if (value > I64_MAX)
121
+ value = I64_MAX;
122
+ if (value < I64_MIN)
123
+ value = I64_MIN;
124
+ return {
125
+ value,
126
+ valueDecimals: decimals,
127
+ normalized: decodeToDecimalString(value, decimals),
128
+ };
129
+ }
130
+ // Otherwise, parse as decimal string
131
+ let normalized;
132
+ if (typeof input === 'number') {
133
+ if (!Number.isFinite(input))
134
+ throw new Error('Non-finite number not supported');
135
+ // Reject unsafe integers to prevent silent precision loss via toString()
136
+ if (Number.isInteger(input) && !Number.isSafeInteger(input)) {
137
+ throw new Error(`Integer ${input} exceeds safe integer range. Use bigint or string for large values.`);
138
+ }
139
+ normalized = normalizeDecimalString(input.toString());
140
+ }
141
+ else {
142
+ normalized = normalizeDecimalString(input);
143
+ }
144
+ if (normalized === '0') {
145
+ return { value: 0n, valueDecimals: 0, normalized };
146
+ }
147
+ const negative = normalized.startsWith('-');
148
+ const unsigned = negative ? normalized.slice(1) : normalized;
149
+ const [intPart, fracPart = ''] = unsigned.split('.');
150
+ // Limit decimals to max (truncate with rounding)
151
+ const decimals = Math.min(fracPart.length, MAX_VALUE_DECIMALS);
152
+ const kept = fracPart.slice(0, decimals);
153
+ const nextDigit = fracPart.length > decimals ? parseInt(fracPart[decimals], 10) : 0;
154
+ // Build scaled integer
155
+ const scaledStr = stripLeadingZeros((intPart || '0') + kept.padEnd(decimals, '0')) || '0';
156
+ let raw = BigInt(scaledStr);
157
+ // Round half-up
158
+ if (nextDigit >= 5)
159
+ raw = raw + 1n;
160
+ if (negative)
161
+ raw = -raw;
162
+ // Clamp to i64 range
163
+ if (raw > I64_MAX)
164
+ raw = I64_MAX;
165
+ if (raw < I64_MIN)
166
+ raw = I64_MIN;
167
+ return {
168
+ value: raw,
169
+ valueDecimals: decimals,
170
+ normalized,
171
+ };
172
+ }
173
+ /**
174
+ * Decode (value, valueDecimals) back to a decimal string
175
+ *
176
+ * @param value - Raw bigint value
177
+ * @param valueDecimals - Decimal precision
178
+ * @returns Decimal string (e.g., "99.77")
179
+ */
180
+ export function decodeToDecimalString(value, valueDecimals) {
181
+ if (valueDecimals === 0)
182
+ return value.toString();
183
+ const str = value.toString();
184
+ const isNegative = str.startsWith('-');
185
+ const absStr = isNegative ? str.slice(1) : str;
186
+ if (absStr.length <= valueDecimals) {
187
+ const padded = absStr.padStart(valueDecimals, '0');
188
+ const result = '0.' + padded;
189
+ return isNegative ? '-' + result : result;
190
+ }
191
+ const intPart = absStr.slice(0, -valueDecimals);
192
+ const fracPart = absStr.slice(-valueDecimals).replace(/0+$/, '');
193
+ const result = fracPart ? intPart + '.' + fracPart : intPart;
194
+ return isNegative ? '-' + result : result;
195
+ }
196
+ //# sourceMappingURL=value-encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-encoding.js","sourceRoot":"","sources":["../../../src/core/utils/value-encoding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { WalletManager, getWalletManager, setWalletManager, type WalletChainType, type WalletInfo, type WalletListResult, type WalletCreateResult, type WalletUnlockResult, type UnlockedWallet, } from './wallet-manager.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/wallet/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Wallet management exports
2
+ export { WalletManager, getWalletManager, setWalletManager, } from './wallet-manager.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/wallet/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAE5B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GAOjB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { Keypair } from '@solana/web3.js';
2
+ import { type PrivateKeyAccount } from 'viem/accounts';
3
+ export type WalletChainType = 'solana' | 'evm';
4
+ export interface WalletInfo {
5
+ name: string;
6
+ chainType: WalletChainType;
7
+ address: string;
8
+ publicKey: string;
9
+ createdAt: string;
10
+ isUnlocked: boolean;
11
+ }
12
+ export interface WalletListResult {
13
+ wallets: WalletInfo[];
14
+ unlockedCount: number;
15
+ }
16
+ export interface WalletCreateResult {
17
+ name: string;
18
+ chainType: WalletChainType;
19
+ address: string;
20
+ publicKey: string;
21
+ filePath: string;
22
+ message: string;
23
+ }
24
+ export interface WalletUnlockResult {
25
+ name: string;
26
+ chainType: WalletChainType;
27
+ address: string;
28
+ message: string;
29
+ }
30
+ export interface UnlockedWallet {
31
+ name: string;
32
+ chainType: WalletChainType;
33
+ address: string;
34
+ publicKey: string;
35
+ solanaKeypair?: Keypair;
36
+ evmAccount?: PrivateKeyAccount;
37
+ evmPrivateKey?: `0x${string}`;
38
+ }
39
+ export declare class WalletManager {
40
+ private readonly walletDir;
41
+ private readonly walletsPath;
42
+ private unlockedWallets;
43
+ private walletSessions;
44
+ private autoLockMs;
45
+ constructor(walletDir?: string);
46
+ setAutoLockTimeout(ms: number): void;
47
+ getAutoLockTimeout(): number;
48
+ private refreshAutoLock;
49
+ private autoLockWallet;
50
+ private secureWipe;
51
+ touchWallet(name: string): boolean;
52
+ private deriveKey;
53
+ private encrypt;
54
+ private decrypt;
55
+ private ensureDir;
56
+ private getWalletPath;
57
+ exists(name: string): Promise<boolean>;
58
+ private readWalletFile;
59
+ list(): Promise<WalletListResult>;
60
+ getInfo(name: string): Promise<WalletInfo | null>;
61
+ create(name: string, chainType: WalletChainType, password: string): Promise<WalletCreateResult>;
62
+ import(name: string, chainType: WalletChainType, privateKey: string, password: string): Promise<WalletCreateResult>;
63
+ private parseSolanaPrivateKey;
64
+ private parseEvmPrivateKey;
65
+ unlock(name: string, password: string): Promise<WalletUnlockResult>;
66
+ lock(name: string): boolean;
67
+ lockAll(): number;
68
+ isUnlocked(name: string): boolean;
69
+ getSessionInfo(): Array<{
70
+ name: string;
71
+ lastActivity: number;
72
+ chainType: WalletChainType;
73
+ }>;
74
+ getUnlockedWallet(name: string): UnlockedWallet;
75
+ getSolanaKeypair(name: string): Keypair;
76
+ getEvmAccount(name: string): PrivateKeyAccount;
77
+ getAnyUnlockedSolanaKeypair(): Keypair | null;
78
+ getAnyUnlockedEvmAccount(): PrivateKeyAccount | null;
79
+ getAnyUnlockedEvmPrivateKey(): `0x${string}` | null;
80
+ export(name: string, currentPassword: string, exportPassword?: string): Promise<string>;
81
+ delete(name: string, password: string): Promise<void>;
82
+ changePassword(name: string, currentPassword: string, newPassword: string): Promise<void>;
83
+ }
84
+ export declare function getWalletManager(): WalletManager;
85
+ export declare function setWalletManager(manager: WalletManager): void;
86
+ //# sourceMappingURL=wallet-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-manager.d.ts","sourceRoot":"","sources":["../../../src/core/wallet/wallet-manager.ts"],"names":[],"mappings":"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"}