@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.
- package/LICENSE +21 -0
- package/README.md +370 -0
- package/dist/chains/evm/index.d.ts +2 -0
- package/dist/chains/evm/index.d.ts.map +1 -0
- package/dist/chains/evm/index.js +3 -0
- package/dist/chains/evm/index.js.map +1 -0
- package/dist/chains/evm/provider.d.ts +48 -0
- package/dist/chains/evm/provider.d.ts.map +1 -0
- package/dist/chains/evm/provider.js +446 -0
- package/dist/chains/evm/provider.js.map +1 -0
- package/dist/chains/index.d.ts +3 -0
- package/dist/chains/index.d.ts.map +1 -0
- package/dist/chains/index.js +4 -0
- package/dist/chains/index.js.map +1 -0
- package/dist/chains/solana/data-source.d.ts +17 -0
- package/dist/chains/solana/data-source.d.ts.map +1 -0
- package/dist/chains/solana/data-source.js +65 -0
- package/dist/chains/solana/data-source.js.map +1 -0
- package/dist/chains/solana/index.d.ts +8 -0
- package/dist/chains/solana/index.d.ts.map +1 -0
- package/dist/chains/solana/index.js +9 -0
- package/dist/chains/solana/index.js.map +1 -0
- package/dist/chains/solana/parsers.d.ts +11 -0
- package/dist/chains/solana/parsers.d.ts.map +1 -0
- package/dist/chains/solana/parsers.js +94 -0
- package/dist/chains/solana/parsers.js.map +1 -0
- package/dist/chains/solana/provider.d.ts +33 -0
- package/dist/chains/solana/provider.d.ts.map +1 -0
- package/dist/chains/solana/provider.js +407 -0
- package/dist/chains/solana/provider.js.map +1 -0
- package/dist/chains/solana/state.d.ts +55 -0
- package/dist/chains/solana/state.d.ts.map +1 -0
- package/dist/chains/solana/state.js +162 -0
- package/dist/chains/solana/state.js.map +1 -0
- package/dist/chains/solana/tools/atom.d.ts +45 -0
- package/dist/chains/solana/tools/atom.d.ts.map +1 -0
- package/dist/chains/solana/tools/atom.js +115 -0
- package/dist/chains/solana/tools/atom.js.map +1 -0
- package/dist/chains/solana/tools/validation.d.ts +45 -0
- package/dist/chains/solana/tools/validation.d.ts.map +1 -0
- package/dist/chains/solana/tools/validation.js +212 -0
- package/dist/chains/solana/tools/validation.js.map +1 -0
- package/dist/chains/solana/tools/wallet.d.ts +45 -0
- package/dist/chains/solana/tools/wallet.d.ts.map +1 -0
- package/dist/chains/solana/tools/wallet.js +103 -0
- package/dist/chains/solana/tools/wallet.js.map +1 -0
- package/dist/config/defaults.d.ts +68 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +247 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/env.d.ts +33 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +42 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/cache/agent-cache.d.ts +36 -0
- package/dist/core/cache/agent-cache.d.ts.map +1 -0
- package/dist/core/cache/agent-cache.js +87 -0
- package/dist/core/cache/agent-cache.js.map +1 -0
- package/dist/core/cache/data-source.d.ts +31 -0
- package/dist/core/cache/data-source.d.ts.map +1 -0
- package/dist/core/cache/data-source.js +6 -0
- package/dist/core/cache/data-source.js.map +1 -0
- package/dist/core/cache/index.d.ts +7 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +9 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/cache/lazy-cache.d.ts +30 -0
- package/dist/core/cache/lazy-cache.d.ts.map +1 -0
- package/dist/core/cache/lazy-cache.js +79 -0
- package/dist/core/cache/lazy-cache.js.map +1 -0
- package/dist/core/cache/slim-store.d.ts +66 -0
- package/dist/core/cache/slim-store.d.ts.map +1 -0
- package/dist/core/cache/slim-store.js +285 -0
- package/dist/core/cache/slim-store.js.map +1 -0
- package/dist/core/cache/sqlite-store.d.ts +99 -0
- package/dist/core/cache/sqlite-store.d.ts.map +1 -0
- package/dist/core/cache/sqlite-store.js +470 -0
- package/dist/core/cache/sqlite-store.js.map +1 -0
- package/dist/core/cache/sync-manager.d.ts +38 -0
- package/dist/core/cache/sync-manager.d.ts.map +1 -0
- package/dist/core/cache/sync-manager.js +213 -0
- package/dist/core/cache/sync-manager.js.map +1 -0
- package/dist/core/errors/index.d.ts +2 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +2 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/mcp-error.d.ts +39 -0
- package/dist/core/errors/mcp-error.d.ts.map +1 -0
- package/dist/core/errors/mcp-error.js +79 -0
- package/dist/core/errors/mcp-error.js.map +1 -0
- package/dist/core/interfaces/agent.d.ts +84 -0
- package/dist/core/interfaces/agent.d.ts.map +1 -0
- package/dist/core/interfaces/agent.js +40 -0
- package/dist/core/interfaces/agent.js.map +1 -0
- package/dist/core/interfaces/chain-provider.d.ts +50 -0
- package/dist/core/interfaces/chain-provider.d.ts.map +1 -0
- package/dist/core/interfaces/chain-provider.js +5 -0
- package/dist/core/interfaces/chain-provider.js.map +1 -0
- package/dist/core/interfaces/feedback.d.ts +46 -0
- package/dist/core/interfaces/feedback.d.ts.map +1 -0
- package/dist/core/interfaces/feedback.js +3 -0
- package/dist/core/interfaces/feedback.js.map +1 -0
- package/dist/core/interfaces/index.d.ts +6 -0
- package/dist/core/interfaces/index.d.ts.map +1 -0
- package/dist/core/interfaces/index.js +7 -0
- package/dist/core/interfaces/index.js.map +1 -0
- package/dist/core/interfaces/reputation.d.ts +47 -0
- package/dist/core/interfaces/reputation.d.ts.map +1 -0
- package/dist/core/interfaces/reputation.js +30 -0
- package/dist/core/interfaces/reputation.js.map +1 -0
- package/dist/core/interfaces/x402.d.ts +226 -0
- package/dist/core/interfaces/x402.d.ts.map +1 -0
- package/dist/core/interfaces/x402.js +120 -0
- package/dist/core/interfaces/x402.js.map +1 -0
- package/dist/core/parsers/common.d.ts +31 -0
- package/dist/core/parsers/common.d.ts.map +1 -0
- package/dist/core/parsers/common.js +185 -0
- package/dist/core/parsers/common.js.map +1 -0
- package/dist/core/parsers/index.d.ts +2 -0
- package/dist/core/parsers/index.d.ts.map +1 -0
- package/dist/core/parsers/index.js +2 -0
- package/dist/core/parsers/index.js.map +1 -0
- package/dist/core/registry/chain-registry.d.ts +26 -0
- package/dist/core/registry/chain-registry.d.ts.map +1 -0
- package/dist/core/registry/chain-registry.js +141 -0
- package/dist/core/registry/chain-registry.js.map +1 -0
- package/dist/core/registry/index.d.ts +3 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/core/registry/index.js +3 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/registry/tool-registry.d.ts +23 -0
- package/dist/core/registry/tool-registry.d.ts.map +1 -0
- package/dist/core/registry/tool-registry.js +66 -0
- package/dist/core/registry/tool-registry.js.map +1 -0
- package/dist/core/serializers/common.d.ts +20 -0
- package/dist/core/serializers/common.d.ts.map +1 -0
- package/dist/core/serializers/common.js +76 -0
- package/dist/core/serializers/common.js.map +1 -0
- package/dist/core/serializers/index.d.ts +2 -0
- package/dist/core/serializers/index.d.ts.map +1 -0
- package/dist/core/serializers/index.js +2 -0
- package/dist/core/serializers/index.js.map +1 -0
- package/dist/core/services/index.d.ts +3 -0
- package/dist/core/services/index.d.ts.map +1 -0
- package/dist/core/services/index.js +3 -0
- package/dist/core/services/index.js.map +1 -0
- package/dist/core/services/ipfs-service.d.ts +59 -0
- package/dist/core/services/ipfs-service.d.ts.map +1 -0
- package/dist/core/services/ipfs-service.js +84 -0
- package/dist/core/services/ipfs-service.js.map +1 -0
- package/dist/core/utils/tags.d.ts +38 -0
- package/dist/core/utils/tags.d.ts.map +1 -0
- package/dist/core/utils/tags.js +77 -0
- package/dist/core/utils/tags.js.map +1 -0
- package/dist/core/utils/value-encoding.d.ts +36 -0
- package/dist/core/utils/value-encoding.d.ts.map +1 -0
- package/dist/core/utils/value-encoding.js +196 -0
- package/dist/core/utils/value-encoding.js.map +1 -0
- package/dist/core/wallet/index.d.ts +2 -0
- package/dist/core/wallet/index.d.ts.map +1 -0
- package/dist/core/wallet/index.js +3 -0
- package/dist/core/wallet/index.js.map +1 -0
- package/dist/core/wallet/wallet-manager.d.ts +86 -0
- package/dist/core/wallet/wallet-manager.d.ts.map +1 -0
- package/dist/core/wallet/wallet-manager.js +783 -0
- package/dist/core/wallet/wallet-manager.js.map +1 -0
- package/dist/core/x402/index.d.ts +2 -0
- package/dist/core/x402/index.d.ts.map +1 -0
- package/dist/core/x402/index.js +3 -0
- package/dist/core/x402/index.js.map +1 -0
- package/dist/core/x402/proof-validator.d.ts +57 -0
- package/dist/core/x402/proof-validator.d.ts.map +1 -0
- package/dist/core/x402/proof-validator.js +103 -0
- package/dist/core/x402/proof-validator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/state/global-state.d.ts +98 -0
- package/dist/state/global-state.d.ts.map +1 -0
- package/dist/state/global-state.js +258 -0
- package/dist/state/global-state.js.map +1 -0
- package/dist/tools/definitions.d.ts +10 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +163 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/unified/agent.d.ts +5 -0
- package/dist/tools/unified/agent.d.ts.map +1 -0
- package/dist/tools/unified/agent.js +300 -0
- package/dist/tools/unified/agent.js.map +1 -0
- package/dist/tools/unified/cache.d.ts +5 -0
- package/dist/tools/unified/cache.d.ts.map +1 -0
- package/dist/tools/unified/cache.js +207 -0
- package/dist/tools/unified/cache.js.map +1 -0
- package/dist/tools/unified/collection.d.ts +5 -0
- package/dist/tools/unified/collection.d.ts.map +1 -0
- package/dist/tools/unified/collection.js +162 -0
- package/dist/tools/unified/collection.js.map +1 -0
- package/dist/tools/unified/config.d.ts +5 -0
- package/dist/tools/unified/config.d.ts.map +1 -0
- package/dist/tools/unified/config.js +217 -0
- package/dist/tools/unified/config.js.map +1 -0
- package/dist/tools/unified/crawler.d.ts +5 -0
- package/dist/tools/unified/crawler.d.ts.map +1 -0
- package/dist/tools/unified/crawler.js +212 -0
- package/dist/tools/unified/crawler.js.map +1 -0
- package/dist/tools/unified/feedback.d.ts +5 -0
- package/dist/tools/unified/feedback.d.ts.map +1 -0
- package/dist/tools/unified/feedback.js +274 -0
- package/dist/tools/unified/feedback.js.map +1 -0
- package/dist/tools/unified/ipfs.d.ts +5 -0
- package/dist/tools/unified/ipfs.d.ts.map +1 -0
- package/dist/tools/unified/ipfs.js +156 -0
- package/dist/tools/unified/ipfs.js.map +1 -0
- package/dist/tools/unified/oasf.d.ts +5 -0
- package/dist/tools/unified/oasf.d.ts.map +1 -0
- package/dist/tools/unified/oasf.js +167 -0
- package/dist/tools/unified/oasf.js.map +1 -0
- package/dist/tools/unified/registration.d.ts +5 -0
- package/dist/tools/unified/registration.d.ts.map +1 -0
- package/dist/tools/unified/registration.js +223 -0
- package/dist/tools/unified/registration.js.map +1 -0
- package/dist/tools/unified/reputation.d.ts +5 -0
- package/dist/tools/unified/reputation.d.ts.map +1 -0
- package/dist/tools/unified/reputation.js +121 -0
- package/dist/tools/unified/reputation.js.map +1 -0
- package/dist/tools/unified/wallet.d.ts +5 -0
- package/dist/tools/unified/wallet.d.ts.map +1 -0
- package/dist/tools/unified/wallet.js +434 -0
- package/dist/tools/unified/wallet.js.map +1 -0
- package/dist/tools/unified/write-operations.d.ts +5 -0
- package/dist/tools/unified/write-operations.d.ts.map +1 -0
- package/dist/tools/unified/write-operations.js +582 -0
- package/dist/tools/unified/write-operations.js.map +1 -0
- package/dist/tools/unified/x402.d.ts +5 -0
- package/dist/tools/unified/x402.d.ts.map +1 -0
- package/dist/tools/unified/x402.js +594 -0
- package/dist/tools/unified/x402.js.map +1 -0
- 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":"AAAA;;GAEG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,8BAA8B;IAC9B,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,oBAAoB;IACxC,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAE5B,4BAA4B;IAC5B,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IAEZ,qBAAqB;IACrB,qBAAqB,EAAE,yBAAyB;IAChD,kBAAkB,EAAE,sBAAsB;IAC1C,mBAAmB,EAAE,uBAAuB;IAC5C,gBAAgB,EAAE,oBAAoB;IACtC,aAAa,EAAE,iBAAiB;IAChC,iBAAiB,EAAE,qBAAqB;IACxC,qBAAqB,EAAE,yBAAyB;IAChD,oBAAoB,EAAE,wBAAwB;IAC9C,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;CACZ,CAAC;AAIX,mBAAmB;AACnB,MAAM,eAAe,GAA2B;IAC9C,gBAAgB;IAChB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,mCAAmC;IAClD,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,gDAAgD;IACjE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,4CAA4C;IACjE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,2CAA2C;IACzD,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,iCAAiC;IACpD,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,iDAAiD;IACrE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,mDAAmD;IAC7E,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,gDAAgD;IAChE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,0CAA0C;IAE9D,cAAc;IACd,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,gBAAgB;IAC3B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,cAAc;IAC1B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,eAAe;IAC5B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,gBAAgB;IAE5B,YAAY;IACZ,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,qDAAqD;IAClF,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,qCAAqC;IAC/D,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,wCAAwC;IACnE,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,6CAA6C;IACrE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,oDAAoD;IACzE,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,6BAA6B;IACtD,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,qCAAqC;IAClE,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,iCAAiC;IAC7D,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,mDAAmD;IAClE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,+BAA+B;CAC/C,CAAC;AAEF,sCAAsC;AACtC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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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"}
|