@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,185 @@
1
+ // Common parsers for tool arguments
2
+ import { invalidParamsError } from '../errors/mcp-error.js';
3
+ export function isRecord(value) {
4
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
5
+ }
6
+ export function getArgs(args) {
7
+ if (!isRecord(args)) {
8
+ throw invalidParamsError('Arguments must be an object');
9
+ }
10
+ return args;
11
+ }
12
+ export function readString(obj, key, required = false) {
13
+ const value = obj[key];
14
+ if (value === undefined || value === null) {
15
+ if (required) {
16
+ throw invalidParamsError(`Missing required parameter: ${key}`);
17
+ }
18
+ return undefined;
19
+ }
20
+ if (typeof value !== 'string') {
21
+ throw invalidParamsError(`Parameter ${key} must be a string`);
22
+ }
23
+ return value;
24
+ }
25
+ // Alias for optional string (more readable)
26
+ export function readStringOptional(obj, key) {
27
+ return readString(obj, key, false);
28
+ }
29
+ export function readNumber(obj, key, required = false) {
30
+ const value = obj[key];
31
+ if (value === undefined || value === null) {
32
+ if (required) {
33
+ throw invalidParamsError(`Missing required parameter: ${key}`);
34
+ }
35
+ return undefined;
36
+ }
37
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
38
+ throw invalidParamsError(`Parameter ${key} must be a finite number`);
39
+ }
40
+ return value;
41
+ }
42
+ export function readBoolean(obj, key, required = false) {
43
+ const value = obj[key];
44
+ if (value === undefined || value === null) {
45
+ if (required) {
46
+ throw invalidParamsError(`Missing required parameter: ${key}`);
47
+ }
48
+ return undefined;
49
+ }
50
+ if (typeof value !== 'boolean') {
51
+ throw invalidParamsError(`Parameter ${key} must be a boolean`);
52
+ }
53
+ return value;
54
+ }
55
+ export function readRecord(obj, key, required = false) {
56
+ const value = obj[key];
57
+ if (value === undefined || value === null) {
58
+ if (required) {
59
+ throw invalidParamsError(`Missing required parameter: ${key}`);
60
+ }
61
+ return undefined;
62
+ }
63
+ if (!isRecord(value)) {
64
+ throw invalidParamsError(`Parameter ${key} must be an object`);
65
+ }
66
+ return value;
67
+ }
68
+ export function readStringArray(obj, key, required = false) {
69
+ const value = obj[key];
70
+ if (value === undefined || value === null) {
71
+ if (required) {
72
+ throw invalidParamsError(`Missing required parameter: ${key}`);
73
+ }
74
+ return undefined;
75
+ }
76
+ if (!Array.isArray(value)) {
77
+ throw invalidParamsError(`Parameter ${key} must be an array`);
78
+ }
79
+ for (let i = 0; i < value.length; i++) {
80
+ if (typeof value[i] !== 'string') {
81
+ throw invalidParamsError(`Parameter ${key}[${i}] must be a string`);
82
+ }
83
+ }
84
+ return value;
85
+ }
86
+ export function readArray(obj, key, required = false) {
87
+ const value = obj[key];
88
+ if (value === undefined || value === null) {
89
+ if (required) {
90
+ throw invalidParamsError(`Missing required parameter: ${key}`);
91
+ }
92
+ return undefined;
93
+ }
94
+ if (!Array.isArray(value)) {
95
+ throw invalidParamsError(`Parameter ${key} must be an array`);
96
+ }
97
+ return value;
98
+ }
99
+ // BigInt parser
100
+ export function parseBigIntInput(value, fieldName) {
101
+ if (typeof value === 'bigint') {
102
+ return value;
103
+ }
104
+ if (typeof value === 'number') {
105
+ if (!Number.isFinite(value)) {
106
+ throw invalidParamsError(`Parameter ${fieldName} must be a finite number`);
107
+ }
108
+ return BigInt(Math.floor(value));
109
+ }
110
+ if (typeof value === 'string') {
111
+ try {
112
+ return BigInt(value);
113
+ }
114
+ catch {
115
+ throw invalidParamsError(`Parameter ${fieldName} is not a valid BigInt string`);
116
+ }
117
+ }
118
+ throw invalidParamsError(`Parameter ${fieldName} must be a number, string, or bigint`);
119
+ }
120
+ // Buffer parser
121
+ export function parseBuffer(value, fieldName) {
122
+ if (Buffer.isBuffer(value)) {
123
+ return value;
124
+ }
125
+ if (value instanceof Uint8Array) {
126
+ return Buffer.from(value);
127
+ }
128
+ if (typeof value === 'string') {
129
+ // Try hex first
130
+ if (value.startsWith('0x')) {
131
+ return Buffer.from(value.slice(2), 'hex');
132
+ }
133
+ // Check if it looks like hex (even length, all hex chars)
134
+ if (value.length % 2 === 0 && /^[0-9a-fA-F]+$/.test(value)) {
135
+ return Buffer.from(value, 'hex');
136
+ }
137
+ // Otherwise, assume base64
138
+ return Buffer.from(value, 'base64');
139
+ }
140
+ if (Array.isArray(value)) {
141
+ return Buffer.from(value);
142
+ }
143
+ if (isRecord(value) && 'data' in value) {
144
+ const encoding = value.encoding ?? 'base64';
145
+ return Buffer.from(value.data, encoding);
146
+ }
147
+ throw invalidParamsError(`Parameter ${fieldName} must be a Buffer, string, or array`);
148
+ }
149
+ // Chain parameter parsing
150
+ export function parseChainParam(obj) {
151
+ const chain = readString(obj, 'chain');
152
+ const chainType = readString(obj, 'chainType');
153
+ if (!chain && !chainType) {
154
+ return {};
155
+ }
156
+ // Parse chain parameter (can be prefix or full chain ID)
157
+ if (chain) {
158
+ if (chain === 'sol' || chain === 'solana') {
159
+ return { chainType: 'solana', chainPrefix: 'sol' };
160
+ }
161
+ if (chain.includes(':')) {
162
+ const [prefix, id] = chain.split(':');
163
+ return {
164
+ chainType: prefix === 'sol' ? 'solana' : 'evm',
165
+ chainPrefix: prefix,
166
+ chainId: id,
167
+ };
168
+ }
169
+ return {
170
+ chainType: 'evm',
171
+ chainPrefix: chain,
172
+ };
173
+ }
174
+ return { chainType };
175
+ }
176
+ // Pagination parsing
177
+ export function parsePagination(obj, defaults) {
178
+ const limit = readNumber(obj, 'limit') ?? defaults?.limit ?? 20;
179
+ const offset = readNumber(obj, 'offset') ?? defaults?.offset ?? 0;
180
+ return {
181
+ limit: Math.min(Math.max(1, limit), 100),
182
+ offset: Math.max(0, offset),
183
+ };
184
+ }
185
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/core/parsers/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './common.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/parsers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './common.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/parsers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { IChainProvider } from '../interfaces/chain-provider.js';
2
+ import type { ChainPrefix, ChainType } from '../interfaces/agent.js';
3
+ export declare class ChainRegistry {
4
+ private readonly providers;
5
+ private defaultChainId;
6
+ static getChainId(config: {
7
+ chainPrefix: ChainPrefix;
8
+ chainId?: string;
9
+ }): string;
10
+ register(provider: IChainProvider): void;
11
+ unregister(chainId: string): boolean;
12
+ get(chainId: string): IChainProvider | null;
13
+ getByPrefix(prefix: ChainPrefix): IChainProvider | null;
14
+ getDefault(): IChainProvider | null;
15
+ setDefault(chainId: string): void;
16
+ getAll(): IChainProvider[];
17
+ getAllByType(chainType: ChainType): IChainProvider[];
18
+ has(chainId: string): boolean;
19
+ size(): number;
20
+ initializeAll(): Promise<void>;
21
+ require(chainId?: string): IChainProvider;
22
+ resolveFromGlobalId(globalId: string): IChainProvider | null;
23
+ invalidateAll(): void;
24
+ clear(): void;
25
+ }
26
+ //# sourceMappingURL=chain-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-registry.d.ts","sourceRoot":"","sources":["../../../src/core/registry/chain-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGrE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,cAAc,CAAuB;IAG7C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAOjF,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAgBxC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUpC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI3C,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI;IAevD,UAAU,IAAI,cAAc,GAAG,IAAI;IAKnC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOjC,MAAM,IAAI,cAAc,EAAE;IAI1B,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,EAAE;IAIpD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,IAAI,IAAI,MAAM;IAKR,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBpC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc;IASzC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAyB5D,aAAa,IAAI,IAAI;IAcrB,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,141 @@
1
+ // Chain registry for multi-chain provider management
2
+ import { chainNotFoundError, McpError, McpErrorCode } from '../errors/mcp-error.js';
3
+ export class ChainRegistry {
4
+ providers = new Map();
5
+ defaultChainId = null;
6
+ // Get unique chain ID from config
7
+ static getChainId(config) {
8
+ if (config.chainPrefix === 'sol') {
9
+ return 'sol';
10
+ }
11
+ return `${config.chainPrefix}:${config.chainId ?? ''}`;
12
+ }
13
+ register(provider) {
14
+ // Use getConfig().chainId (numeric) instead of provider.chainId (formatted)
15
+ // to avoid double-prefixing for EVM chains
16
+ const config = provider.getConfig();
17
+ const chainId = ChainRegistry.getChainId({
18
+ chainPrefix: provider.chainPrefix,
19
+ chainId: config.chainId,
20
+ });
21
+ this.providers.set(chainId, provider);
22
+ // Set as default if first registered or if config says so
23
+ if (this.defaultChainId === null || config.isDefault) {
24
+ this.defaultChainId = chainId;
25
+ }
26
+ }
27
+ unregister(chainId) {
28
+ const deleted = this.providers.delete(chainId);
29
+ if (deleted && this.defaultChainId === chainId) {
30
+ // Set new default if available
31
+ const remaining = Array.from(this.providers.keys());
32
+ this.defaultChainId = remaining[0] ?? null;
33
+ }
34
+ return deleted;
35
+ }
36
+ get(chainId) {
37
+ return this.providers.get(chainId) ?? null;
38
+ }
39
+ getByPrefix(prefix) {
40
+ // For Solana, direct lookup
41
+ if (prefix === 'sol') {
42
+ return this.providers.get('sol') ?? null;
43
+ }
44
+ // For EVM, find first matching prefix
45
+ for (const [, provider] of this.providers) {
46
+ if (provider.chainPrefix === prefix) {
47
+ return provider;
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+ getDefault() {
53
+ if (!this.defaultChainId)
54
+ return null;
55
+ return this.providers.get(this.defaultChainId) ?? null;
56
+ }
57
+ setDefault(chainId) {
58
+ if (!this.providers.has(chainId)) {
59
+ throw chainNotFoundError(chainId);
60
+ }
61
+ this.defaultChainId = chainId;
62
+ }
63
+ getAll() {
64
+ return Array.from(this.providers.values());
65
+ }
66
+ getAllByType(chainType) {
67
+ return Array.from(this.providers.values()).filter(p => p.chainType === chainType);
68
+ }
69
+ has(chainId) {
70
+ return this.providers.has(chainId);
71
+ }
72
+ size() {
73
+ return this.providers.size;
74
+ }
75
+ // Initialize all providers
76
+ async initializeAll() {
77
+ const errors = [];
78
+ for (const [chainId, provider] of this.providers) {
79
+ try {
80
+ await provider.initialize();
81
+ }
82
+ catch (error) {
83
+ errors.push({
84
+ chainId,
85
+ error: error instanceof Error ? error : new Error(String(error)),
86
+ });
87
+ }
88
+ }
89
+ if (errors.length > 0) {
90
+ throw new McpError(McpErrorCode.CHAIN_CONNECTION_FAILED, `Failed to initialize ${errors.length} chain(s): ${errors.map(e => e.chainId).join(', ')}`, { errors: errors.map(e => ({ chainId: e.chainId, message: e.error.message })) });
91
+ }
92
+ }
93
+ // Get provider or throw
94
+ require(chainId) {
95
+ const provider = chainId ? this.get(chainId) : this.getDefault();
96
+ if (!provider) {
97
+ throw chainNotFoundError(chainId ?? 'default');
98
+ }
99
+ return provider;
100
+ }
101
+ // Resolve chain from global ID
102
+ resolveFromGlobalId(globalId) {
103
+ const parts = globalId.split(':');
104
+ const prefix = parts[0];
105
+ if (prefix === 'sol') {
106
+ return this.providers.get('sol') ?? null;
107
+ }
108
+ // For EVM, try to find matching chain
109
+ // Global ID format: "base:84532:1234" → chainId is parts[1] = "84532"
110
+ const chainIdFromGlobalId = parts[1];
111
+ for (const [, provider] of this.providers) {
112
+ // Compare with config.chainId (numeric) not provider.chainId (formatted)
113
+ const providerConfig = provider.getConfig();
114
+ if (provider.chainPrefix === prefix && providerConfig.chainId === chainIdFromGlobalId) {
115
+ return provider;
116
+ }
117
+ }
118
+ // Fallback to prefix-only match
119
+ return this.getByPrefix(prefix);
120
+ }
121
+ // Invalidate all providers (e.g., after network mode change)
122
+ // This tells providers to reconfigure their SDK/connection on next use
123
+ invalidateAll() {
124
+ for (const provider of this.providers.values()) {
125
+ // Check if provider has invalidateSdk method (EVM providers have it)
126
+ if ('invalidateSdk' in provider && typeof provider.invalidateSdk === 'function') {
127
+ provider.invalidateSdk();
128
+ }
129
+ // Solana providers may have invalidate method
130
+ if ('invalidate' in provider && typeof provider.invalidate === 'function') {
131
+ provider.invalidate();
132
+ }
133
+ }
134
+ }
135
+ // Clear all providers (for complete reset)
136
+ clear() {
137
+ this.providers.clear();
138
+ this.defaultChainId = null;
139
+ }
140
+ }
141
+ //# sourceMappingURL=chain-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-registry.js","sourceRoot":"","sources":["../../../src/core/registry/chain-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './chain-registry.js';
2
+ export * from './tool-registry.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './chain-registry.js';
2
+ export * from './tool-registry.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ export type ToolHandler = (args: unknown) => Promise<unknown>;
3
+ export interface IToolDefinition {
4
+ tool: Tool;
5
+ handler: ToolHandler;
6
+ aliases?: string[];
7
+ chainType?: 'solana' | 'evm' | 'any';
8
+ }
9
+ export declare class ToolRegistry {
10
+ private readonly tools;
11
+ private readonly aliases;
12
+ register(definition: IToolDefinition): void;
13
+ unregister(name: string): boolean;
14
+ get(name: string): IToolDefinition | null;
15
+ getHandler(name: string): ToolHandler | null;
16
+ has(name: string): boolean;
17
+ getAll(): Tool[];
18
+ getAllByChainType(chainType: 'solana' | 'evm' | 'any'): Tool[];
19
+ size(): number;
20
+ resolveName(name: string): string;
21
+ clear(): void;
22
+ }
23
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/core/registry/tool-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;CACtC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2C;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAW3C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAcjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAczC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAK5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,MAAM,IAAI,IAAI,EAAE;IAIhB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,EAAE;IAM9D,IAAI,IAAI,MAAM;IAKd,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKjC,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,66 @@
1
+ // Tool registry for managing MCP tool definitions and handlers
2
+ export class ToolRegistry {
3
+ tools = new Map();
4
+ aliases = new Map();
5
+ register(definition) {
6
+ this.tools.set(definition.tool.name, definition);
7
+ // Register aliases
8
+ if (definition.aliases) {
9
+ for (const alias of definition.aliases) {
10
+ this.aliases.set(alias, definition.tool.name);
11
+ }
12
+ }
13
+ }
14
+ unregister(name) {
15
+ const definition = this.tools.get(name);
16
+ if (!definition)
17
+ return false;
18
+ // Remove aliases
19
+ if (definition.aliases) {
20
+ for (const alias of definition.aliases) {
21
+ this.aliases.delete(alias);
22
+ }
23
+ }
24
+ return this.tools.delete(name);
25
+ }
26
+ get(name) {
27
+ // Check direct lookup
28
+ const direct = this.tools.get(name);
29
+ if (direct)
30
+ return direct;
31
+ // Check aliases
32
+ const canonicalName = this.aliases.get(name);
33
+ if (canonicalName) {
34
+ return this.tools.get(canonicalName) ?? null;
35
+ }
36
+ return null;
37
+ }
38
+ getHandler(name) {
39
+ const definition = this.get(name);
40
+ return definition?.handler ?? null;
41
+ }
42
+ has(name) {
43
+ return this.tools.has(name) || this.aliases.has(name);
44
+ }
45
+ getAll() {
46
+ return Array.from(this.tools.values()).map(d => d.tool);
47
+ }
48
+ getAllByChainType(chainType) {
49
+ return Array.from(this.tools.values())
50
+ .filter(d => !d.chainType || d.chainType === 'any' || d.chainType === chainType)
51
+ .map(d => d.tool);
52
+ }
53
+ size() {
54
+ return this.tools.size;
55
+ }
56
+ // Resolve name (handle aliases)
57
+ resolveName(name) {
58
+ return this.aliases.get(name) ?? name;
59
+ }
60
+ // Clear all tools and aliases
61
+ clear() {
62
+ this.tools.clear();
63
+ this.aliases.clear();
64
+ }
65
+ }
66
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/core/registry/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare function serialize(value: unknown): unknown;
2
+ export declare function formatOutput(value: unknown): string;
3
+ export declare function toMcpContent(value: unknown): Array<{
4
+ type: 'text';
5
+ text: string;
6
+ }>;
7
+ export declare function successResponse(data: unknown): {
8
+ content: Array<{
9
+ type: 'text';
10
+ text: string;
11
+ }>;
12
+ };
13
+ export declare function errorResponse(error: unknown): {
14
+ content: Array<{
15
+ type: 'text';
16
+ text: string;
17
+ }>;
18
+ isError: true;
19
+ };
20
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/core/serializers/common.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA8DjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAElF;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAEjG;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAM/G"}
@@ -0,0 +1,76 @@
1
+ // Common serializers for MCP output
2
+ export function serialize(value) {
3
+ if (value === null || value === undefined) {
4
+ return null;
5
+ }
6
+ // Handle PublicKey-like objects (Solana)
7
+ if (typeof value === 'object' &&
8
+ 'toBase58' in value &&
9
+ typeof value.toBase58 === 'function') {
10
+ return value.toBase58();
11
+ }
12
+ // Handle Buffer and Uint8Array
13
+ if (Buffer.isBuffer(value)) {
14
+ return value.toString('base64');
15
+ }
16
+ if (value instanceof Uint8Array) {
17
+ return Buffer.from(value).toString('base64');
18
+ }
19
+ // Handle BigInt
20
+ if (typeof value === 'bigint') {
21
+ return value.toString();
22
+ }
23
+ // Handle Date
24
+ if (value instanceof Date) {
25
+ return value.toISOString();
26
+ }
27
+ // Handle Map
28
+ if (value instanceof Map) {
29
+ const obj = {};
30
+ for (const [k, v] of value) {
31
+ obj[String(k)] = serialize(v);
32
+ }
33
+ return obj;
34
+ }
35
+ // Handle Set
36
+ if (value instanceof Set) {
37
+ return Array.from(value).map(serialize);
38
+ }
39
+ // Handle Array
40
+ if (Array.isArray(value)) {
41
+ return value.map(serialize);
42
+ }
43
+ // Handle plain objects
44
+ if (typeof value === 'object') {
45
+ const obj = {};
46
+ for (const [k, v] of Object.entries(value)) {
47
+ obj[k] = serialize(v);
48
+ }
49
+ return obj;
50
+ }
51
+ // Primitives pass through
52
+ return value;
53
+ }
54
+ export function formatOutput(value) {
55
+ if (typeof value === 'string') {
56
+ return value;
57
+ }
58
+ return JSON.stringify(serialize(value), null, 2);
59
+ }
60
+ // Format for MCP content response
61
+ export function toMcpContent(value) {
62
+ return [{ type: 'text', text: formatOutput(value) }];
63
+ }
64
+ // Success response helper
65
+ export function successResponse(data) {
66
+ return { content: toMcpContent(data) };
67
+ }
68
+ // Error response helper
69
+ export function errorResponse(error) {
70
+ const message = error instanceof Error ? error.message : String(error);
71
+ return {
72
+ content: [{ type: 'text', text: `Error: ${message}` }],
73
+ isError: true,
74
+ };
75
+ }
76
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/core/serializers/common.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yCAAyC;IACzC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,UAAU,IAAI,KAAK;QACnB,OAAQ,KAAoC,CAAC,QAAQ,KAAK,UAAU,EACpE,CAAC;QACD,OAAQ,KAAoC,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IAED,+BAA+B;IAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,cAAc;IACd,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED,aAAa;IACb,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa;IACb,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe;IACf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0BAA0B;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './common.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/serializers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './common.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/serializers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { IPFSService } from './ipfs-service.js';
2
+ export type { IIPFSService, IPFSClientConfig, RegistrationFile } from './ipfs-service.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/services/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Core services - chain-agnostic utilities
2
+ export { IPFSService } from './ipfs-service.js';
3
+ //# sourceMappingURL=index.js.map